A CLI do Lingo.dev traduz arquivos nativos de recursos mobile — Xcode .strings, Android XML, Flutter ARB e React Native JSON — usando um engine de localização configurado. Cada plataforma tem um tipo de bucket específico, que entende o formato do arquivo, preserva a estrutura e lida com plurais de forma nativa.
Visão geral das plataformas#
| Plataforma | Formato nativo | Bucket da CLI | Caminho de arquivo típico |
|---|---|---|---|
| iOS (Xcode) | .strings | xcode-strings | [locale].lproj/Localizable.strings |
| iOS (Xcode) | .stringsdict | xcode-stringsdict | [locale].lproj/Localizable.stringsdict |
| iOS (Xcode) | .xcstrings | xcode-xcstrings | Localizable.xcstrings |
| Android | strings.xml | android | app/src/main/res/values-[locale]/strings.xml |
| Flutter | .arb | flutter | lib/l10n/app_[locale].arb |
| React Native | .json | json | src/locales/[locale].json |
Pré-requisitos#
Cada execução da CLI envia o conteúdo por um engine de localização — a configuração que define qual modelo de LLM, glossário, voz da marca e instruções serão aplicados. Crie um no dashboard do Lingo.dev e gere uma chave de API.
Configure sua plataforma#
O Xcode oferece suporte a três formatos de localização. Use aquele que corresponde à configuração do seu projeto.
String Catalogs (.xcstrings) — o formato moderno do Xcode, introduzido no Xcode 15. Um único arquivo JSON reúne todos os idiomas, e o Xcode o atualiza automaticamente quando você adiciona novas strings. A CLI altera esse arquivo diretamente — nenhum placeholder [locale] é necessário.
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.15",
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"xcode-xcstrings": {
"include": ["MyApp/Localizable.xcstrings"]
}
}
}Arquivos legados .strings — um arquivo por idioma em diretórios [locale].lproj/. Se o seu projeto também usa .stringsdict para plurais, adicione os dois buckets.
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.15",
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"xcode-strings": {
"include": ["MyApp/[locale].lproj/Localizable.strings"]
},
"xcode-stringsdict": {
"include": ["MyApp/[locale].lproj/Localizable.stringsdict"]
}
}
}Consulte a documentação de localização da Apple para configurar a infraestrutura de i18n do Xcode.
Executando traduções#
Traduza todos os arquivos de recursos com um único comando:
npx lingo.dev@latest runA CLI lê os arquivos do idioma de origem, calcula o que mudou desde a última execução usando o lockfile, traduz apenas o delta e grava os resultados nos arquivos do idioma de destino.
Direcione a tradução para uma plataforma específica quando seu projeto tiver vários tipos de recurso:
npx lingo.dev@latest run --bucket android
npx lingo.dev@latest run --bucket xcode-xcstringsPlurais e convenções de cada plataforma#
Cada plataforma mobile lida com formas plurais de um jeito diferente — iOS usa .stringsdict ou regras de String Catalog, Android usa elementos XML <plurals> e Flutter usa ICU MessageFormat em arquivos ARB. A CLI preserva a estrutura plural nativa de cada plataforma durante a tradução e gera as categorias de plural corretas para cada idioma de destino.
Notas para tradutores
Strings mobile costumam ser curtas e depender bastante de contexto. Use notas para tradutores em arquivos .xcstrings do Xcode para dar ao engine de localização mais contexto sobre onde uma string aparece — "rótulo de botão no fluxo de checkout" é traduzido de forma diferente de "item de menu de navegação".
