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. Vue i18n vs intlayer
    \n\n\n```\n\nEsta abordagem:\n\n- **Acelera o desenvolvimento** (declare uma vez; IDE/IA completa automaticamente).\n- **Limpa a base de código** (1 componente = 1 dicionário).\n- **Facilita duplicação/migração** (copie um componente e seu conteúdo juntos).\n- **Evita chaves mortas** (componentes não usados não importam conteúdo).\n- **Otimiza o carregamento** (componentes carregados sob demanda trazem seu conteúdo junto).\n\n---\n\n## Funcionalidades adicionais do Intlayer (relevantes para Vue)\n\n- **Suporte multiplataforma**: Funciona com Vue, Nuxt, Vite, React, Express e mais.\n- **Gerenciamento de conteúdo baseado em JavaScript**: Declare no código com total flexibilidade.\n- **Arquivo de declaração por localidade**: Defina todas as localidades e deixe as ferramentas gerarem o restante.\n- **Ambiente com tipagem segura**: Configuração forte de TS com autocompletar.\n- **Recuperação simplificada de conteúdo**: Um único hook/composable para buscar todo o conteúdo de um dicionário.\n- **Base de código organizada**: 1 componente = 1 dicionário na mesma pasta.\n- **Roteamento aprimorado**: Auxiliares para caminhos e metadados localizados do **Vue Router/Nuxt**.\n- **Suporte a Markdown**: Importe Markdown remoto/local por localidade; exponha frontmatter para o código.\n- **Editor Visual gratuito e CMS opcional**: Criação de conteúdo sem plataforma de localização paga; sincronização amigável ao Git.\n- **Conteúdo tree-shakable**: Envia apenas o que é usado; suporta carregamento preguiçoso.\n- **Compatível com renderização estática**: Não bloqueia SSG.\n- **Traduções com IA**: Traduza para 231 idiomas usando seu próprio provedor de IA/chave de API.\n- **Servidor MCP & extensão VSCode**: Automatize fluxos de trabalho i18n e autoria dentro do seu IDE.\n- **Interoperabilidade**: Integrações com **vue-i18n**, **react-i18next** e **react-intl** quando necessário.\n\n---\n\n## Quando escolher qual?\n\n- **Escolha vue-i18n** se você quiser a **abordagem padrão do Vue**, estiver confortável gerenciando catálogos/namespace por conta própria, e seu app for **pequeno a médio porte** (ou já depender do Nuxt i18n).\n- **Escolha Intlayer** se você valoriza **conteúdo escopado por componente**, **TypeScript rigoroso**, **garantias em tempo de build**, **tree-shaking**, e ferramentas completas para roteamento/SEO/editor - especialmente para **códigos Vue/Nuxt grandes e modulares**.\n\n---\n\n## Notas práticas de migração (vue-i18n → Intlayer)\n\n- **Comece por funcionalidade**: Mova uma rota/visualização/componente de cada vez para os dicionários locais do Intlayer.\n- **Ponte durante a migração**: Mantenha os catálogos vue-i18n em paralelo; substitua as consultas gradualmente.\n- **Ative verificações rigorosas**: Permita que a detecção em tempo de compilação identifique cedo chaves/locais ausentes.\n- **Adote auxiliares de roteador/SEO**: Padronize a detecção de localidade e as tags `hreflang`.\n- **Meça os pacotes**: Espere **reduções no tamanho dos pacotes** à medida que o conteúdo não utilizado é excluído.\n\n---\n\n## Conclusão\n\nTanto o **vue-i18n** quanto o **Intlayer** localizam bem aplicações Vue. A diferença está em **quanto você precisa construir por conta própria** para alcançar uma configuração robusta e escalável:\n\n- Com **Intlayer**, **conteúdo modular**, **TS rigoroso**, **segurança em tempo de build**, **bundles otimizados por tree-shaking** e **ferramentas para router/SEO/editor** vêm **prontos para usar**.\n- Se sua equipe prioriza **manutenibilidade e velocidade** em um app Vue/Nuxt multi-local, orientado a componentes, o Intlayer oferece a experiência **mais completa** atualmente.\n\nConsulte o documento ['Por que Intlayer?'](https://intlayer.org/doc/why) para mais detalhes.\n","about":"Comparação entre vue-i18n e Intlayer para internacionalização (i18n) em apps Vue/Nuxt","url":"https://intlayer.org/pt/blog/vue-i18n-vs-intlayer","datePublished":"11-08-2024","dateModified":"23-08-2025","keywords":"vue-i18n, Intlayer, Internacionalização, i18n, Blog, Vue, Nuxt, JavaScript","license":"https://raw.githubusercontent.com/aymericzip/intlayer/refs/heads/main/LICENSE","audience":{"@type":"Audience","audienceType":"Desenvolvedores, Gerentes de Conteúdo"}}
    Criação:2024-08-11Última atualização:2025-08-23
    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

    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

    vue-i18n VS Intlayer | Internacionalização (i18n) em Vue

    Este guia compara duas opções populares de i18n para Vue 3 (e Nuxt): vue-i18n e Intlayer. Focamos nas ferramentas modernas do Vue (Vite, Composition API) e avaliamos:

    1. Arquitetura & organização de conteúdo
    2. TypeScript & segurança
    3. Tratamento de traduções faltantes
    4. Roteamento & estratégia de URL
    5. Performance & comportamento de carregamento
    6. Experiência do desenvolvedor (DX), ferramentas & manutenção
    7. SEO & escalabilidade para grandes projetos
    resumo: Ambos podem localizar apps Vue. Se você deseja conteúdo com escopo de componente, tipos TypeScript rigorosos, verificações de chaves faltantes em tempo de build, dicionários otimizados por tree-shaking, e helpers integrados para roteamento/SEO além de Editor Visual & traduções com IA, Intlayer é a escolha mais completa e moderna.

    Posicionamento em alto nível

    • vue-i18n - A biblioteca i18n padrão para Vue. Formatação flexível de mensagens (estilo ICU), blocos SFC <i18n> para mensagens locais, e um grande ecossistema. Segurança e manutenção em larga escala ficam principalmente por sua conta.
    • Intlayer - Modelo de conteúdo centrado em componentes para Vue/Vite/Nuxt com tipagem TS rigorosa, verificações em tempo de build, tree-shaking, helpers para roteador e SEO, Editor Visual/CMS opcional e traduções assistidas por IA.

    Comparação de Recursos Lado a Lado (focada em Vue)

    Mostrar todo o conteúdo da tabela

    Abrir a tabela em um modal para ver todo o conteúdo claramente

    Recurso Intlayer vue-i18n
    Traduções próximas aos componentes ✅ Sim, conteúdo colocalizado por componente (ex.: MyComp.content.ts) ✅ Sim, via blocos SFC <i18n> (opcional)
    Integração com TypeScript ✅ Avançada, tipos estritos gerados automaticamente e autocompletar de chaves ✅ Boas tipagens; segurança estrita de chaves requer configuração/disciplinas adicionais
    Detecção de tradução ausente ✅ Avisos/erros em tempo de build e exposição no TS ⚠️ Fallbacks/avisos em tempo de execução
    Conteúdo rico (componentes/Markdown) ✅ Suporte direto para nós ricos e arquivos de conteúdo Markdown ⚠️ Limitado (componentes via <i18n-t>, Markdown via plugins externos)
    Tradução com IA ✅ Fluxos de trabalho integrados usando suas próprias chaves de provedores de IA ❌ Não integrado
    Editor Visual / CMS ✅ Editor Visual gratuito e CMS opcional ❌ Não integrado (use plataformas externas)
    Roteamento localizado ✅ Auxiliares para Vue Router/Nuxt para gerar caminhos localizados, URLs e hreflang ⚠️ Não é parte do núcleo (use Nuxt i18n ou configuração personalizada do Vue Router)
    Geração dinâmica de rotas ✅ Sim ❌ Não fornecido (Nuxt i18n fornece)
    Pluralização e formatação ✅ Padrões de enumeração; formatadores baseados em Intl ✅ Mensagens no estilo ICU; formatadores Intl
    Formatos de conteúdo ✅ .ts, .js, .json, .md, .txt (YAML em desenvolvimento) ✅ .json, .js (além de blocos SFC <i18n>)
    Suporte ICU ⚠️ Em desenvolvimento ✅ Sim
    Auxiliares de SEO (sitemap, robots, metadados) ✅ Auxiliares integrados (independente de framework) ❌ Não faz parte do núcleo (Nuxt i18n/comunidade)
    SSR/SSG ✅ Funciona com Vue SSR e Nuxt; não bloqueia a renderização estática ✅ Funciona com Vue SSR/Nuxt
    Tree-shaking (enviar apenas o conteúdo usado) ✅ Por componente em tempo de build ⚠️ Parcial; requer divisão manual de código/mensagens assíncronas
    Carregamento preguiçoso (Lazy loading) ✅ Por localidade / por dicionário ✅ Suporte a mensagens de localidade assíncronas
    Purgar conteúdo não utilizado ✅ Sim (em tempo de build) ❌ Não incorporado
    Manutenção em projetos grandes ✅ Incentiva estrutura modular, amigável a design systems ✅ Possível, mas requer disciplina rigorosa de arquivos/namespace
    Ecossistema / comunidade ⚠️ Menor, mas crescendo rapidamente ✅ Grande e madura no ecossistema Vue

    Comparação detalhada

    1) Arquitetura e escalabilidade

    • vue-i18n: Configurações comuns usam catálogos centralizados por localidade (opcionalmente divididos em arquivos/namespace). Blocos SFC <i18n> permitem mensagens locais, mas as equipes frequentemente retornam a catálogos compartilhados conforme os projetos crescem.
    • Intlayer: Promove dicionários por componente armazenados ao lado do componente que atendem. Isso reduz conflitos entre equipes, mantém o conteúdo descobrível e limita naturalmente a deriva/chaves não utilizadas.

    Por que isso importa: Em grandes aplicativos Vue ou sistemas de design, conteúdo modular escala melhor do que catálogos monolíticos.


    2) TypeScript & segurança

    • vue-i18n: Bom suporte a TS; tipagem estrita de chaves normalmente requer esquemas/genéricos personalizados e convenções cuidadosas.
    • Intlayer: Gera tipos estritos a partir do seu conteúdo, oferecendo autocompletar no IDE e erros em tempo de compilação para erros de digitação/chaves ausentes.

    Por que isso importa: Tipagem forte detecta problemas antes da execução.


    3) Tratamento de traduções ausentes

    • vue-i18n: Avisos/falhas em tempo de execução (ex.: fallback para localidade ou chave).
    • Intlayer: Detecção em tempo de build com avisos/erros entre localidades e chaves.

    Por que isso importa: Aplicação em tempo de build mantém a interface de produção limpa e consistente.


    4) Estratégia de roteamento e URLs (Vue Router/Nuxt)

    • Ambos podem funcionar com rotas localizadas.
    • Intlayer fornece auxiliares para gerar caminhos localizados, gerenciar prefixos de localidade e emitir <link rel="alternate" hreflang> para SEO. Com Nuxt, complementa o roteamento do framework.

    Por que isso importa: Menos camadas personalizadas e SEO mais limpo entre localidades.


    5) Desempenho e comportamento de carregamento

    • vue-i18n: Suporta mensagens de localidade assíncronas; evitar sobrecarregamento é sua responsabilidade (divida os catálogos com cuidado).
    • Intlayer: Elimina código morto na build e carrega preguiçosamente por dicionário/localidade. Conteúdo não utilizado não é enviado.

    Por que isso importa: Pacotes menores e inicialização mais rápida para apps Vue multilíngues.


    6) Experiência do desenvolvedor e ferramentas

    • vue-i18n: Documentação madura e comunidade consolidada; normalmente você dependerá de plataformas externas de localização para fluxos editoriais.
    • Intlayer: Oferece um Editor Visual gratuito, CMS opcional (compatível com Git ou externalizado), uma extensão para VSCode, utilitários CLI/CI e traduções assistidas por IA usando suas próprias chaves de provedor.

    Por que isso importa: Menor custo operacional e um ciclo de desenvolvimento–conteúdo mais curto.


    7) SEO, SSR & SSG

    • Ambos funcionam com Vue SSR e Nuxt.
    • Intlayer: Adiciona auxiliares de SEO (sitemaps/metadados/hreflang) que são independentes de framework e funcionam bem com builds Vue/Nuxt.

    Por que isso importa: SEO internacional sem configurações personalizadas complexas.


    Por que Intlayer? (Problema & abordagem)

    A maioria das pilhas i18n (incluindo vue-i18n) começa a partir de catálogos centralizados:

    bash
    Copiar código

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

    .├── locales│   ├── en.json│   ├── es.json│   └── fr.json└── src    └── components        └── MyComponent.vue

    Ou com pastas por localidade:

    bash
    Copiar código

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

    .├── locales│   ├── en│   │  ├── footer.json│   │  └── navbar.json│   ├── fr│   │  ├── footer.json│   │  └── navbar.json│   └── es│      ├── footer.json│      └── navbar.json└── src    └── components        └── MyComponent.vue

    Isso frequentemente desacelera o desenvolvimento conforme os apps crescem:

    1. Para um novo componente você cria/edita catálogos remotos, conecta namespaces e traduz (frequentemente via copiar/colar manual de ferramentas de IA).
    2. Ao modificar componentes você procura chaves compartilhadas, traduz, mantém as localidades sincronizadas, remove chaves obsoletas e alinha as estruturas JSON.

    Intlayer delimita o conteúdo por componente e mantém-no junto ao código, como já fazemos com CSS, histórias, testes e documentação:

    bash
    Copiar código

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

    .└── components    └── MyComponent        ├── MyComponent.content.ts        └── MyComponent.vue

    Declaração de conteúdo (por componente):

    ./components/MyComponent/myComponent.content.ts
    Copiar código

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

    import { t, type Dictionary } from "intlayer";const componentExampleContent = {  key: "component-example",  content: {    greeting: t({      en: "Hello World",      es: "Hola Mundo",      fr: "Bonjour le monde",    }),  },} satisfies Dictionary;export default componentExampleContent;

    Uso no Vue (Composition API):

    ./components/MyComponent/MyComponent.vue
    Copiar código

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

    <script setup lang="ts">import { useIntlayer } from "vue-intlayer"; // Integração Vueconst { greeting } = useIntlayer("component-example");</script><template>  <span>{{ greeting }}</span></template>

    Esta abordagem:

    • Acelera o desenvolvimento (declare uma vez; IDE/IA completa automaticamente).
    • Limpa a base de código (1 componente = 1 dicionário).
    • Facilita duplicação/migração (copie um componente e seu conteúdo juntos).
    • Evita chaves mortas (componentes não usados não importam conteúdo).
    • Otimiza o carregamento (componentes carregados sob demanda trazem seu conteúdo junto).

    Funcionalidades adicionais do Intlayer (relevantes para Vue)

    • Suporte multiplataforma: Funciona com Vue, Nuxt, Vite, React, Express e mais.
    • Gerenciamento de conteúdo baseado em JavaScript: Declare no código com total flexibilidade.
    • Arquivo de declaração por localidade: Defina todas as localidades e deixe as ferramentas gerarem o restante.
    • Ambiente com tipagem segura: Configuração forte de TS com autocompletar.
    • Recuperação simplificada de conteúdo: Um único hook/composable para buscar todo o conteúdo de um dicionário.
    • Base de código organizada: 1 componente = 1 dicionário na mesma pasta.
    • Roteamento aprimorado: Auxiliares para caminhos e metadados localizados do Vue Router/Nuxt.
    • Suporte a Markdown: Importe Markdown remoto/local por localidade; exponha frontmatter para o código.
    • Editor Visual gratuito e CMS opcional: Criação de conteúdo sem plataforma de localização paga; sincronização amigável ao Git.
    • Conteúdo tree-shakable: Envia apenas o que é usado; suporta carregamento preguiçoso.
    • Compatível com renderização estática: Não bloqueia SSG.
    • Traduções com IA: Traduza para 231 idiomas usando seu próprio provedor de IA/chave de API.
    • Servidor MCP & extensão VSCode: Automatize fluxos de trabalho i18n e autoria dentro do seu IDE.
    • Interoperabilidade: Integrações com vue-i18n, react-i18next e react-intl quando necessário.

    Quando escolher qual?

    • Escolha vue-i18n se você quiser a abordagem padrão do Vue, estiver confortável gerenciando catálogos/namespace por conta própria, e seu app for pequeno a médio porte (ou já depender do Nuxt i18n).
    • Escolha Intlayer se você valoriza conteúdo escopado por componente, TypeScript rigoroso, garantias em tempo de build, tree-shaking, e ferramentas completas para roteamento/SEO/editor - especialmente para códigos Vue/Nuxt grandes e modulares.

    Notas práticas de migração (vue-i18n → Intlayer)

    • Comece por funcionalidade: Mova uma rota/visualização/componente de cada vez para os dicionários locais do Intlayer.
    • Ponte durante a migração: Mantenha os catálogos vue-i18n em paralelo; substitua as consultas gradualmente.
    • Ative verificações rigorosas: Permita que a detecção em tempo de compilação identifique cedo chaves/locais ausentes.
    • Adote auxiliares de roteador/SEO: Padronize a detecção de localidade e as tags hreflang.
    • Meça os pacotes: Espere reduções no tamanho dos pacotes à medida que o conteúdo não utilizado é excluído.

    Conclusão

    Tanto o vue-i18n quanto o Intlayer localizam bem aplicações Vue. A diferença está em quanto você precisa construir por conta própria para alcançar uma configuração robusta e escalável:

    • Com Intlayer, conteúdo modular, TS rigoroso, segurança em tempo de build, bundles otimizados por tree-shaking e ferramentas para router/SEO/editor vêm prontos para usar.
    • Se sua equipe prioriza manutenibilidade e velocidade em um app Vue/Nuxt multi-local, orientado a componentes, o Intlayer oferece a experiência mais completa atualmente.

    Consulte o documento 'Por que Intlayer?' para mais detalhes.

    O que é internacionalização (i18n)?
    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.

      .├── locales│   ├── en.json│   ├── es.json│   └── fr.json└── src    └── components        └── MyComponent.vue
      .├── locales│   ├── en│   │  ├── footer.json│   │  └── navbar.json│   ├── fr│   │  ├── footer.json│   │  └── navbar.json│   └── es│      ├── footer.json│      └── navbar.json└── src    └── components        └── MyComponent.vue
      .└── components    └── MyComponent        ├── MyComponent.content.ts        └── MyComponent.vue
      import { t, type Dictionary } from "intlayer";const componentExampleContent = {  key: "component-example",  content: {    greeting: t({      en: "Hello World",      es: "Hola Mundo",      fr: "Bonjour le monde",    }),  },} satisfies Dictionary;export default componentExampleContent;
      <script setup lang="ts">import { useIntlayer } from "vue-intlayer"; // Integração Vueconst { greeting } = useIntlayer("component-example");</script><template>  <span>{{ greeting }}</span></template>