Autor:
    Criação:2026-08-23Última atualização:2026-09-28

    Documentação: Função getIntlayerAsync em intlayer

    Descrição

    A função getIntlayerAsync seleciona um dicionário pela sua chave e resolve seu conteúdo para uma localidade específica, carregando apenas essa localidade.

    É o equivalente assíncrono de getIntlayer, destinado aos locais onde um dicionário é lido fora da renderização, construtores de rota head / metadados, loaders, funções de servidor.

    Enquanto getIntlayer carrega o dicionário mesclado contendo cada localidade, os plugins de build (@intlayer/babel, @intlayer/swc) reescrevem esta chamada em getDictionaryAsync(loaderMap, key, locale), apontando para os chunks por localidade em .intlayer/dynamic_dictionaries/. O bundle portanto nunca carrega mais do que a localidade realmente solicitada.

    Sem esses plugins, uma build não otimizada, a chamada é resolvida através do registro de dicionário síncrono: o mesmo conteúdo, sem a divisão por localidade.

    Principais Funcionalidades:

    • As mesmas chaves digitadas, seletores e conteúdo retornado que getIntlayer
    • Carrega apenas o chunk da localidade solicitada em builds otimizadas
    • Chamadas simultâneas para o mesmo chunk compartilham um único carregamento
    • Seguro de usar em construtores de metadados async, loaders e funções de servidor

    Assinatura da função

    typescript
    getIntlayerAsync(
      key: DictionaryKeys,                        // Obrigatório
      localeOrSelector?: LocalesValues | DictionarySelector, // Opcional
      plugins?: Plugins[]                         // Opcional
    ): Promise<DeepTransformContent<...>>
    

    Parâmetros

    • key: DictionaryKeys

      • Descrição: A chave do dicionário a ser lida, conforme declarado em seus arquivos de conteúdo.
      • Tipo: DictionaryKeys, uma união de todas as chaves de dicionário declaradas.
      • Obrigatório: Sim
    • localeOrSelector: LocalesValues | DictionarySelector

      • Descrição: A localidade para interpretar o conteúdo, ou um objeto seletor para dicionários dinâmicos.
        • 'fr': uma localidade
        • { item: 2 }: um item de coleção (omita item para obter todos os itens como um array)
        • { variant: 'black-friday' }: uma variante nomeada (omita para a default)
        • { variant: { id: 'prod_abc', userId: '123' } }: uma variante estruturada
        • Qualquer seletor pode carregar uma localidade: { item: 2, locale: 'fr' }
      • Tipo: LocalesValues | DictionarySelector
      • Obrigatório: Não (opcional). Se omitido, é resolvido como em getIntlayer (locale da requisição, depois locale armazenado, depois defaultLocale). Por ser assíncrona, também pode aguardar o locale da requisição quando ele só pode ser lido de forma assíncrona: nos Server Components do Next.js, em generateMetadata e nos route handlers, ela lê os headers() e cookies() da requisição, como getLocale() de next-intlayer/server. Essa leitura faz a rota passar para renderização dinâmica, por isso só acontece quando o IntlayerProvider ainda não forneceu o locale.
    • plugins: Plugins[]

      • Descrição: Transformadores de nó customizados que substituem os plugins do interpretador base. Apenas para uso avançado.
      • Tipo: Plugins[]
      • Obrigatório: Não (opcional)

    Retorna

    • Tipo: Promise<Content>, uma promessa que resolve para o conteúdo interpretado do dicionário, tipado a partir da sua declaração.

    Exemplo de Uso

    Uso Básico

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

    getIntlayer vs getIntlayerAsync

    getIntlayergetIntlayerAsync
    ReturnsO conteúdoUma promise do conteúdo
    Dictionary loadedO dicionário mesclado (todos os locales)O chunk do locale solicitado apenas
    Best suited forRenderização, caminhos de código síncronosMetadata, loaders, funções de servidor
    Requires a plugin?NãoNão, a divisão por locale necessita dos plugins de build

    Ambas aceitam os mesmos argumentos e retornam o mesmo conteúdo: trocar uma pela outra só muda quando e quanto é carregado.

    Funções Relacionadas

    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>
      >
    >;