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
- "Atualizar o uso da API useIntlayer do Solid para acesso direto a propriedades"v8.9.004/05/2026
- "Adicionar comando init"v7.5.930/12/2025
- "Histórico inicial"v5.5.1029/06/2025
O conteúdo desta página foi traduzido com uma IA.
Veja a última versão do conteúdo original em inglêsIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Traduza seu aplicativo Expo e React Native | Internacionalização (i18n)
Veja o Modelo de Aplicação no GitHub.
Por que Intlayer em vez de alternativas?
Comparado com soluções principais como react-native-localize ou i18next, Intlayer é uma solução que vem com otimizações integradas como:
O Intlayer é otimizado para funcionar perfeitamente com React Native e Expo, oferecendo escopo de conteúdo em nível de componente, suporte a TypeScript e todos os recursos necessários para dimensionar a internacionalização (i18n) em aplicativos móveis.
Definir o escopo do conteúdo do seu aplicativo facilita a manutenção de aplicativos de grande escala. Você pode duplicar ou excluir uma única pasta de recursos sem o fardo mental de revisar toda a base de código de seu conteúdo. Além disso, o Intlayer é totalmente tipado (fully typed) para garantir a precisão do seu conteúdo.
A co-localização de conteúdo reduz o contexto necessário pelos Large Language Models (LLMs). O Intlayer também vem com um conjunto de ferramentas, como uma CLI para testar traduções ausentes,LSP, MCP, e habilidades do agente, para tornar a experiência do desenvolvedor (DX) ainda mais tranquila para os agentes de IA.
Use a automação para traduzir seu pipeline de CI/CD usando o LLM de sua escolha às custas de seu provedor de IA. O Intlayer também oferece um compilador para automatizar a extração de conteúdo, bem como uma plataforma web para ajudar a traduzir em segundo plano.
Conectar arquivos JSON enormes a componentes pode levar a problemas de desempenho e reatividade. O Intlayer otimiza o carregamento do seu conteúdo no momento da construção.
Mais do que apenas uma solução i18n, o Intlayer fornece um [editor visual] auto-hospedado(/pt/doc/concept/editor) e um CMS completo para ajudá-lo a gerenciar seu conteúdo multilíngue em tempo real, facilitando a colaboração com tradutores, redatores e outros membros da equipe. O conteúdo pode ser armazenado local e/ou remotamente.
Em vez de carregar arquivos JSON enormes em suas páginas, carregue apenas o conteúdo necessário. O Intlayer ajuda a reduzir o tamanho do seu pacote e visualização em até 50%.
instalar dependências
Consulte Modelo de aplicativo no GitHub.
No seu projeto React Native, instale os seguintes pacotes:
bashCopiar códigoCopiar o código para a área de transferência
npm instalar camada interna reagir-intlayernpm install --save-dev react-native-intlayerinicialização da camada interna npxPacotes
camada interna
O kit de ferramentas principal i18n para configuração, conteúdo de dicionário, geração de tipos e comandos CLI.react-intlayer
Integração React que fornece os provedores de contexto e ganchos React que você usará no React Native para obter e alternar localidades.react-native-intlayer
Integração React Native que fornece o plugin Metro para integração do Intlayer com o empacotador React Native.
Instalar Dependências
No seu projeto React Native, instale os seguintes pacotes:
bashCopiar códigoCopiar o código para a área de transferência
npm install intlayer react-intlayernpm install --save-dev react-native-intlayernpx intlayer initPacotes
intlayer
O kit de ferramentas i18n principal para configuração, conteúdo do dicionário, geração de tipos e comandos CLI.react-intlayer
Integração React que fornece os provedores de contexto e hooks React que você usará no React Native para obter e trocar localidades.react-native-intlayer
Integração React Native que fornece o plugin Metro para integrar o Intlayer com o bundler do React Native.
Criar uma Configuração Intlayer
Na raiz do seu projeto (ou em qualquer lugar conveniente), crie um arquivo de configuração do Intlayer. Pode ser algo assim:
intlayer.config.tsCopiar códigoCopiar o código para a área de transferência
/** * Se os tipos Locales não estiverem disponíveis, tente definir moduleResolution como "bundler" no seu tsconfig.json */ import { Locales, type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { internationalization: { locales: [ Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH, // ... Adicione quaisquer outras localidades que você precisar ], defaultLocale: Locales.ENGLISH, }, }; export default config;Dentro desta configuração, você pode:
- Configurar sua lista de localidades suportadas.
- Definir uma localidade padrão.
- Posteriormente, você pode adicionar opções mais avançadas (por exemplo, logs, diretórios personalizados de conteúdo, etc.).
- Veja a documentação de configuração do Intlayer para mais informações.
Adicione o plugin Metro
Metro é um empacotador para React Native. É o empacotador padrão para projetos React Native criados com o comando
react-native init. Para usar o Intlayer com o Metro, você precisa adicionar o plugin ao seu arquivometro.config.js:metro.config.jsCopiar códigoCopiar o código para a área de transferência
const { getDefaultConfig } = require("expo/metro-config");const { configMetroIntlayer } = require("react-native-intlayer/metro");module.exports = (async () => { const defaultConfig = getDefaultConfig(__dirname); return await configMetroIntlayer(defaultConfig);})();Adicione o provedor Intlayer
Para manter sincronizada a linguagem do usuário em toda a sua aplicação, você precisa envolver seu componente raiz com o componente
IntlayerProviderdoreact-intlayer-native.Certifique-se de usar o provedor do
react-native-intlayerem vez doreact-intlayer. A exportação doreact-native-intlayerinclui polyfills para a API web.app/_layout.tsxCopiar códigoCopiar o código para a área de transferência
import { Stack } from "expo-router"; import { getLocales } from "expo-localization"; import { IntlayerProvider } from "react-native-intlayer"; import { type FC } from "react"; const getDeviceLocale = () => getLocales()[0]?.languageTag; const RootLayout: FC = () => { return ( <IntlayerProvider defaultLocale={getDeviceLocale()}> <Stack> <Stack.Screen name="(tabs)" options={{ headerShown: false }} /> </Stack> </IntlayerProvider> ); }; export default RootLayout;Declare Seu Conteúdo
Crie arquivos de declaração de conteúdo em qualquer lugar do seu projeto (comumente dentro de
src/), usando qualquer um dos formatos de extensão que o Intlayer suporta:.content.json.content.ts.content.tsx.content.js.content.jsx.content.mjs.content.mjx.content.cjs.content.cjx- etc.
Exemplo (TypeScript com nós TSX para React Native):
src/app.content.tsxCopiar códigoCopiar o código para a área de transferência
import { t, type Dictionary } from "intlayer"; import type { ReactNode } from "react"; /** * Dicionário de conteúdo para nosso domínio "app" */ import { t, type Dictionary } from "intlayer"; const homeScreenContent = { key: "home-screen", content: { title: t({ en: "Welcome!", fr: "Bienvenue!", es: "¡Bienvenido!", }), }, } satisfies Dictionary; export default homeScreenContent;Para detalhes sobre declarações de conteúdo, veja a documentação de conteúdo do Intlayer.
Use o Intlayer em Seus Componentes
Use o hook
useIntlayerem componentes filhos para obter conteúdo localizado.Exemplo
app/(tabs)/index.tsxCopiar códigoCopiar o código para a área de transferência
import { Image, StyleSheet, Platform } from "react-native"; import { useIntlayer } from "intlayer"; import { HelloWave } from "@/components/HelloWave"; import ParallaxScrollView from "@/components/ParallaxScrollView"; import { ThemedText } from "@/components/ThemedText"; import { ThemedView } from "@/components/ThemedView"; import { type FC } from "react"; const HomeScreen = (): FC => { const { title, steps } = useIntlayer("home-screen"); return ( <ParallaxScrollView headerBackgroundColor={{ light: "#A1CEDC", dark: "#1D3D47" }} headerImage={ <Image source={require("@/assets/images/partial-react-logo.png")} style={styles.reactLogo} /> } > <ThemedView style={styles.titleContainer}> <ThemedText type="title">{title}</ThemedText> <HelloWave /> </ThemedView> </ParallaxScrollView> ); }; const styles = StyleSheet.create({ titleContainer: { flexDirection: "row", alignItems: "center", gap: 8, }, }); export default HomeScreen;Ao usar
content.someKeyem props baseadas em string (por exemplo, otitlede um botão ou oschildrende um componenteText), chamecontent.someKey.valuepara obter a string real.Se a sua aplicação já existe, você pode usar o Intlayer Compiler em conjunto com o comando extract para converter milhares de componentes em um segundo.
Alterar o Locale do App
OpcionalPara trocar os locales dentro dos seus componentes, você pode usar o método
setLocaledo hookuseLocale:src/components/LocaleSwitcher.tsxCopiar códigoCopiar o código para a área de transferência
import { type FC } from "react"; import { View, Text, TouchableOpacity, StyleSheet } from "react-native"; import { getLocaleName } from "intlayer"; import { useLocale } from "react-intlayer"; export const LocaleSwitcher: FC = () => { const { setLocale, availableLocales } = useLocale(); return ( <View style={styles.container}> {availableLocales.map((locale) => ( <TouchableOpacity key={locale} style={styles.button} onPress={() => setLocale(locale)} > <Text style={styles.text}>{getLocaleName(locale)}</Text> </TouchableOpacity> ))} </View> ); }; const styles = StyleSheet.create({ container: { flexDirection: "row", justifyContent: "center", alignItems: "center", gap: 8, }, button: { paddingVertical: 6, paddingHorizontal: 12, borderRadius: 6, backgroundColor: "#ddd", }, text: { fontSize: 14, fontWeight: "500", color: "#333", }, });Isto provoca uma nova renderização de todos os componentes que utilizam conteúdo do Intlayer, mostrando agora as traduções para a nova localidade.
Veja a documentação de
useLocalepara mais detalhes.
Configurar TypeScript (se usar TypeScript)
O Intlayer gera definições de tipos numa pasta oculta (por defeito .intlayer) para melhorar a autocompletação e detetar erros de tradução:
Copiar o código para a área de transferência
// tsconfig.json{ // ... sua configuração TS existente "include": [ "src", // seu código fonte ".intlayer/types/**/*.ts", // <-- garantir que os tipos gerados automaticamente estejam incluídos // ... qualquer outra coisa que você já inclua ],}Isto é o que habilita funcionalidades como:
- Autocompletar para as chaves do seu dicionário.
- Verificação de tipos que avisa se você acessar uma chave inexistente ou incompatível com o tipo.
Configuração do Git
Para evitar o commit de arquivos gerados automaticamente pelo Intlayer, adicione o seguinte ao seu .gitignore:
Copiar o código para a área de transferência
# Ignorar os arquivos gerados pelo Intlayer.intlayerExtensão VS Code
Para melhorar sua experiência de desenvolvimento com o Intlayer, você pode instalar a Extensão oficial Intlayer para VS Code.
Instalar a partir do VS Code Marketplace
Esta extensão oferece:
- Autocompletar para chaves de tradução.
- Detecção de erros em tempo real para traduções ausentes.
- Visualizações inline do conteúdo traduzido.
- Ações rápidas para criar e atualizar traduções facilmente.
Para mais detalhes sobre como usar a extensão, consulte a documentação da Extensão Intlayer para VS Code.
Ir Além
- Editor Visual: Use o Editor Visual Intlayer para gerenciar traduções visualmente.
- Integração com CMS: Você também pode externalizar e buscar o conteúdo do seu dicionário a partir de um CMS.
- Comandos CLI: Explore o Intlayer CLI para tarefas como extrair traduções ou verificar chaves faltantes.
Aproveite para construir seus aplicativos React Native com i18n totalmente potencializado através do Intlayer!