|
Documentação
Marcar uma demonstraçãoPlataforma
PlataformaMCPCLIAPIWorkflows
Guias
Changelog

Localização

  • Visão geral
  • API de Tradução
  • Localização de aplicações web
  • Localização de Apps Mobile
  • iOS com String Catalogs
  • Android com strings.xml
  • Localização de emails
  • Conteúdo Estático (ex.: .md, .json)
  • Next.js com Markdoc
  • Rails com i18n

Workflows

  • Configuração do motor com MCP
  • Triagem do Jira
  • CI/CD

Localização de apps iOS com Xcode String Catalogs

A CLI da Lingo.dev traduz Xcode String Catalogs (.xcstrings) através de um motor de localização configurado. Os String Catalogs são o formato moderno de localização da Apple, introduzido no Xcode 15, que guarda todos os idiomas num único ficheiro JSON. A CLI altera este ficheiro no local — sem necessidade de diretórios por idioma.

Este guia acompanha todo o processo de localização de uma app iOS: configurar a CLI, traduzir localmente e automatizar com a GitHub App para que as traduções sejam entregues a cada push.

Repositório de demonstração

Faça clone ou fork de lingodotdev/ios-app-localization-example para acompanhar. O repositório inclui um projeto Xcode funcional com String Catalogs e uma configuração da CLI do Lingo.dev.

Como funcionam os String Catalogs#

Antes do Xcode 15, a localização no iOS exigia gerir ficheiros .strings e .stringsdict separados em vários diretórios [locale].lproj/. Os String Catalogs substituem esta abordagem por um único ficheiro Localizable.xcstrings que o Xcode mantém automaticamente.

Quando marca uma string como localizável em SwiftUI ou UIKit, o Xcode deteta-a durante a compilação e adiciona uma entrada ao String Catalog. Cada entrada inclui a string de origem, as respetivas traduções para cada idioma configurado e um campo de comentário opcional que dá contexto aos tradutores.

Aspeto.strings legadoString Catalogs .xcstrings
Número de ficheirosUm por idioma e por tabelaUm ficheiro, todos os idiomas
FormatoTexto de chave-valorJSON estruturado
Suporte de pluraisFicheiro .stringsdict separadoRegras de plural integradas
Integração com o XcodeExportação/importação manualDeteção automática
Notas para tradutoresNão suportadoCampo de comentário por entrada

A CLI deteta o formato .xcstrings pela extensão do ficheiro, analisa esta estrutura JSON, traduz cada entrada através do motor de localização e escreve as traduções de volta no mesmo ficheiro, preservando comentários, regras de plural e metadados.

Pré-requisitos#

1

Criar um motor de localização

Cada tradução faz passar o conteúdo por um motor de localização — a configuração que determina que modelo LLM, glossário, voz da marca e regras se aplicam. Crie um no painel do Lingo.dev e gere uma chave de API.

2

Verificar o Node.js

A CLI requer Node.js 22 ou superior:

bash
node -v
3

Ativar a localização no Xcode

No seu projeto Xcode, vá a Project Settings > Info > Localizations e adicione os idiomas de destino. O Xcode cria as entradas do String Catalog para cada idioma que adicionar. Consulte a documentação de localização da Apple para mais detalhes.

Instalar e configurar a CLI#

Instale a CLI, autentique-se e configure o projeto. Consulte o Quickstart para ver o guia completo.

bash
npm install -g @lingo.dev/cli
lingo login

Execute lingo init na raiz do projeto e responda às instruções (idioma de origem, idiomas de destino e o padrão de ficheiro que aponta para o seu String Catalog) e, em seguida, execute lingo link para associar o projeto à sua organização e motor. Em conjunto, estes comandos escrevem um .lingo/config.json:

json
{
  "orgId": "org_...",
  "engineId": "eng_...",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [{ "pattern": "MyApp/Localizable.xcstrings" }]
}

Faça commit de .lingo/config.json — é a fonte de verdade do que será traduzido. O formato .xcstrings é detetado pela extensão do ficheiro. Como os String Catalogs armazenam todos os idiomas num único ficheiro, não é necessário qualquer marcador de posição de idioma no padrão: a CLI lê as entradas no idioma de origem e escreve todos os idiomas de destino de volta no mesmo ficheiro. Consulte a referência de configuração para ver o esquema completo.

Vários String Catalogs

Se o seu projeto usar vários ficheiros String Catalog (por exemplo, um por target de framework), adicione uma entrada files para cada um:

json
{
  "files": [
    { "pattern": "MyApp/Localizable.xcstrings" },
    { "pattern": "MyAppWidgets/Localizable.xcstrings" }
  ]
}

Traduzir localmente#

Na raiz do projeto, execute a primeira tradução:

bash
lingo push --backfill-missing

A CLI lê o seu String Catalog, traduz todas as entradas em falta através do seu motor de localização, aguarda que a execução termine e escreve os resultados de volta no ficheiro .xcstrings. Abra o ficheiro no Xcode para ver as traduções preenchidas para cada idioma configurado.

Depois de editar as strings de origem, um simples lingo push traduz apenas o delta — as entradas cuja origem não mudou são ignoradas no servidor e controladas através do lockfile:

bash
lingo push

Notas para tradutores#

Os String Catalogs suportam um campo de comentário por entrada, que a CLI inclui nos pedidos de tradução. Estes comentários dão contexto ao motor de localização — desambiguam termos, especificam o tom ou descrevem onde uma string aparece na UI.

No Xcode, selecione uma string no editor de String Catalog e adicione um comentário no painel do inspetor. O comentário é guardado no JSON .xcstrings:

json
{
  "sourceLanguage": "en",
  "strings": {
    "Set": {
      "comment": "Refers to a collection of items, not the verb",
      "localizations": { }
    }
  }
}

A CLI envia este comentário juntamente com a string, orientando o modelo para a interpretação correta. "Set", sem contexto, pode tornar-se um verbo em muitas línguas — o comentário elimina essa ambiguidade. Consulte Translator Notes para ver mais padrões.

Plurais#

Os String Catalogs tratam formas de plural de forma nativa através das regras de plural CLDR. Quando define uma variação de plural no Xcode, o String Catalog armazena regras para cada categoria de plural (zero, one, two, few, many, other) exigida pelo idioma de destino.

A CLI preserva esta estrutura durante a tradução e gera as categorias de plural corretas para cada idioma de destino. O inglês usa duas categorias (one e other), mas o árabe precisa de seis, o polaco de quatro e o japonês de uma. O motor de localização trata automaticamente estas diferenças.

Automatizar com a GitHub App#

Instale a Lingo.dev GitHub App no seu repositório para Localização Contínua — sem runner de CI, segredo de API key ou lockfile para gerir. Depois de instalada e apontada para o seu .lingo/config.json (com o respetivo engineId), reage automaticamente a pushes e pull requests: deteta strings de origem alteradas, traduz-as através do seu motor e faz commit do .xcstrings atualizado de volta para a branch ou abre um pull request.

Prefere executá-lo por conta própria?

Também pode executar lingo push no seu próprio job de CI (em qualquer runner com Node.js) e fazer commit dos resultados, autenticando com LINGO_API_KEY. Consulte CI/CD Workflows para ver os padrões baseados em runner.

Verificar antes de fazer deploy#

Use lingo check como gate de deployment para garantir que nenhuma string por traduzir chega à produção. O comando assinala traduções em falta ou desatualizadas e termina com um estado diferente de zero quando ainda há trabalho por fazer:

bash
lingo check

Adicione-o como uma etapa de CI separada antes da build.

Próximos passos#

Localização de apps móveis
Visão geral de todas as plataformas móveis — iOS, Android, Flutter, React Native
Workflows de CI/CD
GitHub App e padrões de CI baseados em runner
Glossários
Proteja nomes de marca e termos técnicos da tradução
Translator Notes
Dê contexto para melhorar a precisão da tradução

Esta página foi útil?

Max PrilutskiyMax Prilutskiy·Atualizado há 8 dias·5 min de leitura