InícioAmbiente de testeVitrineAppDocBlog
    • Englishinglês
      EN
    • русскийrusso
      RU
    • 日本語japonês
      JA
    • françaisfrancês
      FR
    • 한국어coreano
      KO
    • 中文chinês
      ZH
    • españolespanhol
      ES
    • Deutschalemão
      DE
    • العربيةárabe
      AR
    • italianoitaliano
      IT
    • British Englishinglês (Reino Unido)
      EN-GB
    • portuguêsportuguês
      PT
    • हिन्दीhindi
      HI
    • Türkçeturco
      TR
    • polskipolonês
      PL
    • Indonesiaindonésio
      ID
    • Tiếng Việtvietnamita
      VI
    • українськаucraniano
      UK
    /
    Alt+←
    O que é internacionalização (i18n)?
    SEO e i18n
    Guia
    • i18n com next-i18next
    • i18n com next-intl
    Use Intlayer na sua solução
    • Automatizar next-i18next
    • Automatizar react-i18next
    • Automatizar next-intl
    • Automatizar react-intl
    • Automatizar vue-i18n
    Comparações
    • next-i18next vs next-intl vs Intlayer
    • react-i18next vs react-intl vs Intlayer
    Documentação
    1. Blog
    2. Intlayer with next intl
    Criação:2025-01-02Última atualização:2025-10-29
    Assistir ao vídeo tutorial

    Esta página tem um vídeo tutorial disponível.

    Referência esta documentação ao seu assistente AI favorito
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Faça sua pergunta e obtenha um resumo do documento referenciando esta página e o provedor AI de sua escolha

    Histórico de versões

    1. Adicionado plugin loadJSON
      v7.0.601/11/2025
    2. Alterado para plugin syncJSON
      v7.0.029/10/2025

    O conteúdo desta página foi traduzido com uma IA.

    Veja a última versão do conteúdo original em inglês
    Editar esta documentação

    Se você tiver uma ideia para melhorar esta documentação, sinta-se à vontade para contribuir enviando uma pull request no GitHub.

    Link do GitHub para a documentação
    Copiar

    Copiar o Markdown do documento para a área de transferência

    Como automatizar suas traduções JSON do next-intl usando Intlayer

    www.youtube.com

    O que é Intlayer?

    Intlayer é uma biblioteca inovadora e de código aberto para internacionalização, projetada para resolver as limitações das soluções tradicionais de i18n. Ela oferece uma abordagem moderna para o gerenciamento de conteúdo em aplicações Next.js.

    Veja uma comparação concreta com next-intl em nosso post no blog next-i18next vs. next-intl vs. Intlayer.

    Por que combinar Intlayer com next-intl?

    Embora o Intlayer forneça uma excelente solução i18n independente (veja nosso guia de integração com Next.js), você pode querer combiná-lo com next-intl por vários motivos:

    1. Base de código existente: Você possui uma implementação estabelecida do next-intl e deseja migrar gradualmente para a melhor experiência de desenvolvedor do Intlayer.
    2. Requisitos legados: Seu projeto requer compatibilidade com plugins ou fluxos de trabalho existentes do next-intl.
    3. Familiaridade da equipe: Sua equipe está confortável com o next-intl, mas deseja uma melhor gestão de conteúdo.

    Para isso, o Intlayer pode ser implementado como um adaptador para o next-intl, ajudando a automatizar suas traduções JSON em pipelines CLI ou CI/CD, testar suas traduções e muito mais.

    Este guia mostra como aproveitar o sistema superior de declaração de conteúdo do Intlayer, mantendo a compatibilidade com o next-intl.

    Índice

    Guia passo a passo para configurar o Intlayer com next-intl

    Passo 1: Instalar dependências

    Instale os pacotes necessários:

    bash
    Copiar código

    Copiar o código para a área de transferência

    npm install intlayer @intlayer/sync-json-plugin --save-devnpx intlayer init

    Descrição dos pacotes:

    • intlayer: Biblioteca principal para gerenciamento de internacionalização, declaração de conteúdo e construção
    • @intlayer/sync-json-plugin: Plugin para exportar declarações de conteúdo do Intlayer para o formato JSON compatível com next-intl

    Passo 2: Implemente o plugin Intlayer para encapsular o JSON

    Crie um arquivo de configuração do Intlayer para definir os locais suportados:

    Se você também quiser exportar dicionários JSON para o next-intl, adicione o plugin syncJSON:

    intlayer.config.ts
    Copiar código

    Copiar o código para a área de transferência

    import { Locales, type IntlayerConfig } from "intlayer";import { syncJSON } from "@intlayer/sync-json-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    defaultLocale: Locales.ENGLISH,  },  plugins: [    syncJSON({      format: "icu",      source: ({ key, locale }) => `./messages/${locale}/${key}.json`,    }),  ],};export default config;

    O plugin syncJSON irá automaticamente encapsular o JSON. Ele irá ler e escrever os arquivos JSON sem alterar a arquitetura do conteúdo.

    Se você quiser fazer coexistir esse JSON com arquivos de declaração de conteúdo do intlayer (.content files), o Intlayer procederá da seguinte forma:

    plaintext
    Copiar código

    Copiar o código para a área de transferência

    1. carregar tanto os arquivos JSON quanto os arquivos de declaração de conteúdo e transformá-los em um dicionário do intlayer.2. se houver conflitos entre o JSON e os arquivos de declaração de conteúdo, o Intlayer irá proceder à mesclagem de todos esses dicionários. Dependendo da prioridade dos plugins e da do arquivo de declaração de conteúdo (todos são configuráveis).

    Se alterações forem feitas usando o CLI para traduzir o JSON, ou usando o CMS, o Intlayer atualizará o arquivo JSON com as novas traduções.

    Para ver mais detalhes sobre o plugin syncJSON, por favor consulte a documentação do plugin syncJSON.

    (Opcional) Passo 3: Implementar traduções JSON por componente

    Por padrão, o Intlayer carregará, mesclará e sincronizará tanto os arquivos JSON quanto os arquivos de declaração de conteúdo. Veja a documentação de declaração de conteúdo para mais detalhes. Mas, se preferir, usando um plugin do Intlayer, você também pode implementar o gerenciamento por componente de JSON localizado em qualquer lugar da sua base de código.

    Para isso, você pode usar o plugin loadJSON.

    intlayer.config.ts
    Copiar código

    Copiar o código para a área de transferência

    import { Locales, type IntlayerConfig } from "intlayer";import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    defaultLocale: Locales.ENGLISH,  },  // Mantenha seus arquivos JSON atuais sincronizados com os dicionários do Intlayer  plugins: [    /**     * Carregará todos os arquivos JSON na pasta src que correspondem ao padrão {key}.i18n.json     */    loadJSON({      source: ({ key }) => `./src/**/${key}.i18n.json`,      locale: Locales.ENGLISH,      priority: 1, // Garante que esses arquivos JSON tenham precedência sobre os arquivos em `./locales/en/${key}.json`    }),    /**     * Carregará e escreverá a saída e as traduções de volta nos arquivos JSON no diretório de locais     */    syncJSON({      format: "icu",      source: ({ key, locale }) => `./messages/${locale}/${key}.json`,      priority: 0,    }),  ],};export default config;

    Isso carregará todos os arquivos JSON no diretório src que correspondem ao padrão {key}.i18n.json e os carregará como dicionários do Intlayer.

    Configuração do Git

    É recomendado ignorar os arquivos gerados automaticamente pelo Intlayer:

    .gitignore
    Copiar código

    Copiar o código para a área de transferência

    # Ignorar arquivos gerados pelo Intlayer.intlayer

    Esses arquivos podem ser regenerados durante seu processo de build e não precisam ser commitados no controle de versão.

    Extensão do VS Code

    Para uma melhor experiência de desenvolvimento, instale a extensão oficial Intlayer VS Code Extension:

    Instalar no VS Code Marketplace

    Automatizar react-i18next
    Automatizar react-intl
    Alt+→

    Nesta página

      As discussões são anônimas e regularmente revisadas para resolver problemas comuns. Sinta-se à vontade para compartilhar ideias de funcionalidades, feedback sobre a documentação ou qualquer coisa relacionada ao Intlayer, usamos essas informações para moldar nosso roadmap e melhorar o produto.

      npm install intlayer @intlayer/sync-json-plugin --save-devnpx intlayer init
      import { Locales, type IntlayerConfig } from "intlayer";import { syncJSON } from "@intlayer/sync-json-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    defaultLocale: Locales.ENGLISH,  },  plugins: [    syncJSON({      format: "icu",      source: ({ key, locale }) => `./messages/${locale}/${key}.json`,    }),  ],};export default config;
      1. carregar tanto os arquivos JSON quanto os arquivos de declaração de conteúdo e transformá-los em um dicionário do intlayer.2. se houver conflitos entre o JSON e os arquivos de declaração de conteúdo, o Intlayer irá proceder à mesclagem de todos esses dicionários. Dependendo da prioridade dos plugins e da do arquivo de declaração de conteúdo (todos são configuráveis).
      import { Locales, type IntlayerConfig } from "intlayer";import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";const config: IntlayerConfig = {  internationalization: {    locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],    defaultLocale: Locales.ENGLISH,  },  // Mantenha seus arquivos JSON atuais sincronizados com os dicionários do Intlayer  plugins: [    /**     * Carregará todos os arquivos JSON na pasta src que correspondem ao padrão {key}.i18n.json     */    loadJSON({      source: ({ key }) => `./src/**/${key}.i18n.json`,      locale: Locales.ENGLISH,      priority: 1, // Garante que esses arquivos JSON tenham precedência sobre os arquivos em `./locales/en/${key}.json`    }),    /**     * Carregará e escreverá a saída e as traduções de volta nos arquivos JSON no diretório de locais     */    syncJSON({      format: "icu",      source: ({ key, locale }) => `./messages/${locale}/${key}.json`,      priority: 0,    }),  ],};export default config;
      # Ignorar arquivos gerados pelo Intlayer.intlayer