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
    • हिन्दीHíndi
      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 i18next
    Creation:2025-08-23Last update:2025-10-29
    Watch the video tutorial

    This page has a video tutorial available.

    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 e reescrita abrangente
      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
    Edit this doc

    If you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.

    GitHub link to the documentation
    Copy

    Copy doc Markdown to clipboard

    Internacionalização (i18n) Next.js com next-i18next e Intlayer

    www.youtube.com

    Índice

    O que é o next-i18next?

    next-i18next é um dos frameworks de internacionalização (i18n) mais populares para aplicações Next.js. Construído sobre o poderoso ecossistema i18next, ele oferece uma solução abrangente para gerenciar traduções, localização e troca de idiomas em projetos Next.js.

    No entanto, o next-i18next apresenta alguns desafios:

    • Configuração complexa: Configurar o next-i18next requer múltiplos arquivos de configuração e uma configuração cuidadosa das instâncias i18n no lado do servidor e do cliente.
    • Traduções dispersas: Os arquivos de tradução geralmente são armazenados em diretórios separados dos componentes, dificultando a manutenção da consistência.
    • Gerenciamento manual de namespaces: Os desenvolvedores precisam gerenciar manualmente os namespaces e garantir o carregamento adequado dos recursos de tradução.
    • Segurança de tipos limitada: O suporte ao TypeScript requer configuração adicional e não fornece geração automática de tipos para traduções.

    O que é o 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 o next-intl em nosso post no blog next-i18next vs. next-intl vs. Intlayer.

    Por que combinar o Intlayer com o next-i18next?

    Enquanto o Intlayer oferece uma excelente solução i18n independente (veja nosso guia de integração com Next.js), você pode querer combiná-lo com o next-i18next por várias razões:

    1. Base de código existente: Você possui uma implementação consolidada do next-i18next 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 i18next.
    3. Familiaridade da equipe: Sua equipe está confortável com o next-i18next, mas deseja um melhor gerenciamento de conteúdo.

    Para isso, o Intlayer pode ser implementado como um adaptador para o next-i18next para ajudar a automatizar suas traduções JSON em CLI ou pipelines de 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 enquanto mantém a compatibilidade com o next-i18next.


    Guia Passo a Passo para Configurar o Intlayer com next-i18next

    Passo 1: Instalar Dependências

    Instale os pacotes necessários usando seu gerenciador de pacotes preferido:

    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

    Explicações dos pacotes:

    • intlayer: Biblioteca principal para declaração e gerenciamento de conteúdo
    • @intlayer/sync-json-plugin: Plugin para sincronizar declarações de conteúdo do Intlayer para o formato JSON do i18next

    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 i18next, 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({      source: ({ key, locale }) => `./public/locales/${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 os 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 Intlayer.2. se houver conflitos entre o JSON e os arquivos de declaração de conteúdo, o Intlayer realizará a mesclagem de todos esses dicionários. Isso dependerá da prioridade dos plugins e da prioridade do arquivo de declaração de conteúdo (tudo é configurável).

    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 irá carregar, mesclar e sincronizar tanto os arquivos JSON quanto os arquivos de declaração de conteúdo. Veja a documentação da 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 `./public/locales/en/${key}.json`    }),    /**     * Irá carregar e gravar a saída e as traduções de volta nos arquivos JSON no diretório de locales     */    syncJSON({      source: ({ key, locale }) => `./public/locales/${locale}/${key}.json`,      priority: 0,    }),  ],};export default config;

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


    Configuração do Git

    Exclua arquivos gerados do controle de versão:

    .gitignore
    Copiar código

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

    # Ignorar arquivos gerados pelo Intlayer.intlayer

    Esses arquivos são automaticamente regenerados durante o processo de build e não precisam ser commitados no seu repositório.

    Extensão VS Code

    Para uma melhor experiência do desenvolvedor, instale a extensão oficial Intlayer para VS Code:

    Instalar a partir do VS Code Marketplace

    i18n com next-intl
    Automatizar react-i18next
    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({      source: ({ key, locale }) => `./public/locales/${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 Intlayer.2. se houver conflitos entre o JSON e os arquivos de declaração de conteúdo, o Intlayer realizará a mesclagem de todos esses dicionários. Isso dependerá da prioridade dos plugins e da prioridade do arquivo de declaração de conteúdo (tudo é configurável).
      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 `./public/locales/en/${key}.json`    }),    /**     * Irá carregar e gravar a saída e as traduções de volta nos arquivos JSON no diretório de locales     */    syncJSON({      source: ({ key, locale }) => `./public/locales/${locale}/${key}.json`,      priority: 0,    }),  ],};export default config;
      # Ignorar arquivos gerados pelo Intlayer.intlayer