Автор:
    Дата створення:2026-08-23Останнє оновлення:2026-09-28

    Документація: функція getIntlayerAsync в intlayer

    Опис

    Функція getIntlayerAsync вибирає один словник за його ключем і розв'язує його вміст для заданої локалі, завантажуючи тільки цю локаль.

    Це асинхронний аналог getIntlayer, призначений для місць, де словник читається поза рендеруванням, маршрути head / конструктори метаданих, лодери, серверні функції.

    Де getIntlayer завантажує об'єднаний словник, що містить кожну локаль, плагіни збірки (@intlayer/babel, @intlayer/swc) переписують цей виклик у getDictionaryAsync(loaderMap, key, locale), спрямовуючи його на фрагменти для кожної локалі в .intlayer/dynamic_dictionaries/. Таким чином, пакет ніколи не містить нічого, крім фактично запитаної локалі.

    Без цих плагінів, необоптимізована збірка, виклик розв'язується через синхронний реєстр словників: той же вміст, але без поділу по локалях.

    Ключові особливості:

    • Ті самі типізовані ключі, селектори та повернений вміст, що й у getIntlayer
    • Завантажує тільки запитаний фрагмент локалі в оптимізованих збірках
    • Одночасні виклики для одного й того ж фрагмента діляться одним завантаженням
    • Безпечна для використання в асинхронних конструкторах метаданих, лодерах та серверних функціях

    Сигнатура функції

    typescript
    getIntlayerAsync(
      key: DictionaryKeys,                        // Обов'язковий
      localeOrSelector?: LocalesValues | DictionarySelector, // Необов'язковий
      plugins?: Plugins[]                         // Необов'язковий
    ): Promise<DeepTransformContent<...>>
    

    Параметри

    • key: DictionaryKeys

      • Опис: Ключ словника для читання, як оголошено у ваших файлах вмісту.
      • Тип: DictionaryKeys, об'єднання всіх оголошених ключів словника.
      • Обов'язково: Так
    • localeOrSelector: LocalesValues | DictionarySelector

      • Опис: Локаль для інтерпретації вмісту або об'єкт селектора для динамічних словників.
        • 'fr': локаль
        • { item: 2 }: елемент колекції (пропустіть item, щоб отримати кожен елемент як масив)
        • { variant: 'black-friday' }: названий варіант (пропустіть для default)
        • { variant: { id: 'prod_abc', userId: '123' } }: структурований варіант
        • Будь-який селектор може містити локаль: { item: 2, locale: 'fr' }
      • Тип: LocalesValues | DictionarySelector
      • Обов'язково: Ні (необов'язково). Якщо не вказано, визначається так само, як у getIntlayer (локаль запиту, потім збережена локаль, потім defaultLocale). Оскільки функція асинхронна, вона також може дочекатися локалі запиту, коли її можна прочитати лише асинхронно: у Server Components Next.js, generateMetadata та route handlers вона читає headers() і cookies() запиту, як getLocale() з next-intlayer/server. Таке читання переводить маршрут у динамічний рендеринг, тому воно відбувається, лише якщо IntlayerProvider ще не надав локаль.
    • plugins: Plugins[]

      • Опис: Користувацькі трансформатори вузлів, що замінюють базові плагіни інтерпретатора. Тільки для розширеного використання.
      • Тип: Plugins[]
      • Обов'язково: Ні (Опціонально)

    Повертає

    • Тип: Promise<Content>, promise, що розв'язується в інтерпретований вміст словника, типізований на основі вашої декларації.

    Приклад використання

    Базове використання

    typescript
    import { getIntlayerAsync } from "intlayer";
    
    const { title } = await getIntlayerAsync("app", "fr"); // "Bonjour"
    

    getIntlayer vs getIntlayerAsync

    getIntlayergetIntlayerAsync
    ReturnsВмістPromise вмісту
    Dictionary loadedОб'єднаний словник (усі локалі)Фрагмент тільки запитаної локалі
    Best suited forRendering, синхронні кодові шляхиMetadata, loaders, серверні функції
    Requires a plugin?NoNo, розділення за локалями потребує build plugins

    Обидві функції приймають однакові аргументи та повертають один і той же вміст: перемикання між ними змінює лише коли та скільки завантажується.

    Пов'язані функції

    TypeScript

    typescript
    function getIntlayerAsync<
      const T extends DictionaryKeys,
      const A extends LocalesValues | DictionarySelector = DeclaredLocales,
    >(
      key: T,
      localeOrSelector?: A,
      plugins?: Plugins[]
    ): Promise<
      DeepTransformContent<
        DictionaryRegistryResult<T, A>,
        IInterpreterPluginState,
        ExtractSelectorLocale<A>
      >
    >;