Pular para o conteúdo principal

iOS (Swift)

O pacote Swift translate-projects-ios traduz o String Catalog do seu app (Localizable.xcstrings) para cada idioma que você configurar. As traduções são gravadas no mesmo catálogo, então Text("..."), String(localized:) e o Xcode continuam funcionando como sempre. Ele pode ser usado como plugin do Xcode ou pelo terminal, e não tem dependências.

Requisitos​

  • Xcode 15 ou superior (Swift 5.9 ou superior).
  • Um app com String Catalog (Localizable.xcstrings).
  • Um projeto e um API token do Translate Projects. Veja Primeiros passos.

1. Adicione o pacote​

No Xcode: File → Add Package Dependencies e cole a URL do repositório:

https://github.com/translate-projects/translate-projects-ios

Xcode baixando translate-projects-ios

Quando o Xcode perguntar a qual target adicionar o produto, deixe None: o pacote não vai dentro do seu app, ele só fornece o comando para traduzir.

Escolher produto com o target em None

2. Configura​

Crie translate-projects.json junto ao seu .xcodeproj (ou Package.swift):

translate-projects.json
{
"sourceLang": "es",
"targetLangs": ["en", "pt-BR", "fr"],
"file": "MyApp/Localizable.xcstrings",
"tokenFile": ".translate-projects-token"
}
OpçãoObrigatórioDescrição
sourceLangSimIdioma base do catálogo. Deve ser o idioma padrão do projeto.
targetLangsSimIdiomas de destino, com os códigos da API (en, pt-BR, zh-Hans).
fileNãoCaminho do catálogo. Se o projeto tiver um único .xcstrings, ele é encontrado automaticamente.
tokenFileNãoArquivo com o API token (somente o token ou uma linha TRANSLATE_PROJECTS_API_KEY=...). Sem ele, usa-se a variável de ambiente TRANSLATE_PROJECTS_API_KEY.

Adicione o arquivo de token ao .gitignore: nunca o envie para o repositório.

3. Traduzir​

No Xcode: clique com o botão direito no projeto no navegador → TranslateProjects. Na primeira vez, o Xcode pede permissão para gravar no projeto e se conectar à rede.

Pelo terminal ou no CI:

Terminal
git clone https://github.com/translate-projects/translate-projects-ios
swift run -c release --package-path translate-projects-ios translate-projects-ios --directory .

Se o seu projeto for um pacote Swift:

Terminal
swift package --allow-writing-to-package-directory --allow-network-connections all translate

Todas as opções também existem como flags: --source es --langs en,pt-BR --file ... --token-file .... Com --force, todos os idiomas são traduzidos novamente.

Arquivos que são gerados​

MyApp/
├── Localizable.xcstrings ← As traduções são adicionadas aqui
└── Localizable.translate-projects.json ← cache, faça commit dela

Faça commit dos dois arquivos. Compilar o app nunca chama a API: apenas o comando de traduzir.

O que é respeitado​

  • Os placeholders (%@, %lld, %1$@, %.2f, %#@nombre@): se uma tradução perder ou alterar algum deles, ela não é gravada e o app exibe o texto original.
  • Os plurais, as variações por dispositivo e as substituições. Cada idioma recebe suas próprias categorias de plural (pt-BR: one, many, other).
  • Os textos marcados como "Don't translate" e os obsoletos não são enviados. Os comentários são mantidos.
  • Textos sem letras ("", "$9.300", "%@") não são enviados.
  • As edições manuais: se você alterar uma tradução no Xcode, ela será mantida nas próximas execuções até que o texto original mude. --force as sobrescreve.

Cache​

Uma segunda execução sem textos novos faz duas requisições e não traduz nada. Se alguém corrigir uma tradução no painel do Translate Projects, a próxima execução a baixa sem --force; suas edições manuais no arquivo continuam tendo prioridade. Se alguns textos mudarem, somente esses são enviados e somente os idiomas desatualizados são traduzidos. Mais detalhes em Cache e erros.

Erros comuns​

  • Falta o token (MISSING_API_KEY: set TRANSLATE_PROJECTS_API_KEY): Adicione tokenFile em translate-projects.json ou exporte a variável.
  • Vários catálogos (Several .xcstrings files): indica qual traduzir com file ou --file.
  • sourceLanguage diferente: sourceLang deve corresponder ao idioma base do catálogo e ao idioma padrão do projeto.
  • Textos sem tradução (strings without translation, run again to resume): revisa se o projeto tem o modelo e a chave de IA configurados e execute novamente: só são solicitados os que estão faltando.
Grátis

🚀 Automatize suas traduções de graça​

Translate Projects é gratuito. Você cria seu projeto, conecta a chave do seu provedor de IA e paga apenas a ele pelo que gastar.

  • Sem planos nem cartão de crédito: Todos os recursos estão disponíveis desde o primeiro dia.
  • Use sua própria IA: Claude, OpenAI, DeepSeek ou Gemini. Sua chave é armazenada criptografada.
  • Rede de traduções compartilhada: Se um texto já foi traduzido, você o recebe instantaneamente sem gastar sua chave.
  • Painel de administração: Revise e edite todas as suas traduções em um único lugar.

Criar conta grátis →

Suporte

Estamos aqui para ajudar você​

Se você tiver alguma dúvida, precisar de ajuda ou quiser contribuir, não hesite em entrar em contato comigo. Estou à sua disposição para apoiá-lo no que precisar.

Apoie o Projeto​

Se este projeto foi útil para você, convido você a me pagar um café. Seu apoio me ajuda a continuar melhorando e criando conteúdo de valor. Obrigado por estar aqui! ☕

Buy me a coffee