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êsSe 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çãoCopiar o Markdown do documento para a área de transferência
Novo Intlayer v9 - O que há de novo?
Bem-vindo ao Intlayer v9! Este grande lançamento marca um marco enorme na simplificação do caminho de migração para o Intlayer com Compat Adapter Packages para as principais bibliotecas de i18n (react-i18next, next-intl, vue-i18n, etc.) e adiciona suporte para estruturas de conteúdo ricas: Collections, Variants e Dynamic Records.
Tabela de conteúdos
Compat Adapter Packages
Migrar para o Intlayer a partir de bibliotecas i18n populares agora é mais fácil do que nunca. Criamos cinco pacotes de compatibilidade que expõem as mesmas APIs públicas que as bibliotecas i18n padrão, mas delegam todo o trabalho de tradução para o Intlayer em runtime.
Expor a Mesma API Pública com Strict Typing
Ao substituir os imports, você obtém todos os benefícios do Intlayer (incluindo type safety em tempo de compilação contra seus dicionários reais) com o mínimo de alterações no código:
@intlayer/i18next@intlayer/react-i18next@intlayer/next-intl@intlayer/next-i18next@intlayer/vue-i18n
Por exemplo, basta alterar:
Copiar o código para a área de transferência
para:
Copiar o código para a área de transferência
Suas chaves agora serão strictly typed (fortemente tipadas) contra seus dicionários Intlayer, oferecendo auto-complete completo de dot-path na sua IDE!
Plugins de Alias de Bundler (Vite, Next.js, Turbopack)
Para permitir a migração sem reescrever todas as suas declarações de import manualmente, cada pacote de compatibilidade inclui um plugin de bundler personalizado (Vite ou Next.js) sob o subcaminho /plugin.
Esses plugins reescrevem automaticamente os imports existentes (ex: react-i18next ou next-intl) para seus equivalentes @intlayer/* em tempo de build.
Exemplo de Next.js (Webpack / Turbopack)
Em vez de withIntlayer, envolva sua configuração do Next.js com o plugin de compatibilidade:
Copiar o código para a área de transferência
Exemplo de Vite (React, Vue, Solid, Svelte)
Copiar o código para a área de transferência
Mutualized Runtime Resolver
Todos os adaptadores de compatibilidade agora roteiam a resolução de tradução através de um único parser de runtime altamente otimizado: @intlayer/core/messageFormat.
- Interpolate Message: Resolve
{{var}}padrão (espaços em branco e dot-paths), argumentos formatados em ICU ({v, number, percent}etc.) e templates simples{var}. - Message Node Resolver: Resolve nós aninhados:
insert(),plural()(regras de plural CLDR),enu()(enumeração),gender(), tags HTML, arrays e nós de funções chamáveis. - Tokenized Tag Parser: Suporta tags XML/HTML inline e tags numeradas (ex:
<1>children</1>) para habilitar renderização de rich-text nativamente.
Especificação de Recursos: Collections, Variants & Dynamic Records
O Intlayer v9 vai além de objetos estáticos de chave-valor, permitindo que os dicionários declarem estruturas de layout dinâmicas que são totalmente tipadas de ponta a ponta.
1. Collections
Defina uma lista gerenciada por CMS de itens ordenados (ex: FAQs, produtos ou listas de blog):
Copiar o código para a área de transferência
Uso:
Copiar o código para a área de transferência
2. Variants
Entregue testes A/B, cabeçalhos sazonais, feature flags ou landing pages personalizadas:
Copiar o código para a área de transferência
Uso:
Copiar o código para a área de transferência
3. Dynamic Records
Defina dicionários cujas entradas são carregadas dinamicamente em runtime via IDs de consulta:
Copiar o código para a área de transferência
Uso:
Copiar o código para a área de transferência
Carregamento Dinâmico & Otimizações de Tamanho de Bundle
Para manter os bundles extremamente pequenos, o Intlayer v9 suporta dynamic lazy loading.
Na sua configuração, defina importMode como 'dynamic' ou 'fetch':
Copiar o código para a área de transferência
Em tempo de build, o @intlayer/swc e o @intlayer/babel escaneiam seus arquivos e substituem as chamadas de useIntlayer / getIntlayer por wrappers tree-shakeable (useDictionary / useDictionaryDynamic). Apenas o conteúdo necessário para o item da coleção, variante ou locale selecionado é carregado, evitando que seu bundle de produção contenha traduções não utilizadas.
Notas de migração da v8
Se você estiver atualizando da v8, observe que a v9 não inclui breaking changes. Mas aqui estão as principais mudanças:
- Locales & Dialects: Se estiver usando dependências externas de i18n, adicione seus respectivos plugins de compatibilidade na sua configuração ou setup do bundler para reescrever os imports automaticamente.
- Custom Selectors: Ao chamar
useIntlayer, o segundo parâmetro agora é reservado para um objeto de opções contendo{ locale, item, variant, id }. Se você passava anteriormente uma string de locale diretamente, ainda pode fazer isso, mas o uso do objeto de opções é recomendado para seleções avançadas.