Traduzir Catálogos de Strings do Xcode (.xcstrings)
Um Catálogo de Strings armazena todos os idiomas em um único arquivo JSON que apenas o Xcode deve editar manualmente. O KAERIS adiciona os novos idiomas a esse mesmo arquivo e deixa todo o resto nele como estava.
KAERIS traduziu esta página e verificou cada linha traduzindo-a de volta. Um falante nativo ainda não revisou. Original em inglês
Como um Catálogo de Strings é construído
Um arquivo, strings, depois a chave, depois localizations, depois o idioma. Cada idioma contém uma stringUnit ou variations para plurais. O arquivo também carrega comment, extractionState e shouldTranslate. Uma chave sem entrada para o idioma de origem é seu próprio texto de origem.
{
"sourceLanguage" : "en",
"strings" : {
"Welcome back, %@!" : {
"comment" : "Greeting on the home screen",
"extractionState" : "manual",
"localizations" : {
"en" : { "stringUnit" : { "state" : "translated", "value" : "Welcome back, %@!" } }
}
},
"%lld items" : {
"localizations" : {
"en" : {
"variations" : {
"plural" : {
"one" : { "stringUnit" : { "state" : "translated", "value" : "%lld item" } },
"other" : { "stringUnit" : { "state" : "translated", "value" : "%lld items" } }
}
}
}
}
},
"Cancel" : { }
},
"version" : "1.0"
}
O que observar nas traduções de .xcstrings
Não leia como JSON puro
Achato como JSON genérico, ele se torna chaves como
strings.welcome.localizations.en…, que parece traduzido e que o Xcode não consegue ler. O KAERIS tem seu próprio leitor para o formato.Variações de plural por idioma
O inglês tem
oneeother; o russo também precisa defewemany, o árabe de todos os seis. O README descreve a expansão;%lldpermanece onde estava.O que o Xcode escreveu deve permanecer
Comentários, estados de extração, idiomas já no arquivo e qualquer coisa marcada como
shouldTranslate: falsesão mantidos intactos.Especificadores de formato
%@,%lld,%1$@são comparados com a origem após a tradução.
Uma execução real: traduzido para Alemão e verificado
Uma execução real, 27 de outubro de 2026, nada editado manualmente: kaeris translate Localizable.xcstrings --langs de com kaeris 0.2.35, 2,4 segundos, modelo openai/gpt-4.1-mini (o modelo de fallback do serviço respondeu a este trabalho). Abaixo, o arquivo alemão que ele escreveu e o que kaeris check diz sobre ele.
{
"sourceLanguage": "en",
"strings": {
"Welcome back, %@!": {
"comment": "Greeting on the home screen",
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Welcome back, %@!"
}
},
"de": {
"stringUnit": {
"state": "translated",
"value": "Willkommen zurück, %@!"
}
}
}
},
"%lld items": {
"localizations": {
"en": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld item"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%lld items"
}
}
}
}
},
"de": {
"variations": {
"plural": {
"one": {
"stringUnit": {
"state": "translated",
"value": "%lld Artikel"
}
},
"other": {
"stringUnit": {
"state": "translated",
"value": "%lld Artikel"
}
}
}
}
}
}
},
"Cancel": {
"localizations": {
"de": {
"stringUnit": {
"state": "translated",
"value": "Abbrechen"
}
}
}
}
},
"version": "1.0"
}
$ kaeris check --source Localizable.xcstrings --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
O que o KAERIS faz com isso
Um arquivo, atualizado no local
kaeris translate Localizable.xcstrings --langs de,fr,jaescreve os idiomas no catálogo. Não há um arquivo por idioma.Plurais como ICU para o modelo
Na verificação, uma variação de plural é lida como um plural ICU, de modo que uma forma perdida fica visível.
Verificação gratuita para este formato
A verificação gratuita em /check lê este formato e executa sem chave ou conta. O comando de terminal
kaeris checktambém o lê: ele aceita todos os 13 formatos desde kaeris 0.2.35, com as mesmas regras e nada enviado para lugar nenhum.
Execute em três etapas
Instale o CLI
Execute
pip install kaeris.Traduzir o catálogo
Execute
kaeris translate Localizable.xcstrings --langs de,fr,ja. O catálogo é atualizado no local.Verificar o resultado
Faça o upload do catálogo na página de verificação gratuita; ele lê a origem e as traduções do único arquivo.
pip install kaeris kaeris translate Localizable.xcstrings --langs de,fr,ja --verify
Perguntas
Ele sobrescreve minhas traduções existentes?
Idiomas já presentes no arquivo, comentários e estados de extração são mantidos intactos, como diz o README da CLI.
Como os plurais são tratados?
Variações de plural são expandidas para as categorias que cada idioma necessita: o inglês one/other se torna one/few/many/other em russo e seis formas em árabe.
É gratuito?
Sim, sem conta: 10.000 caracteres por arquivo e até 8 idiomas por execução. Uma chave API gratuita eleva o limite para 50.000 caracteres. A licença vitalícia custa $79 uma vez, usando sua própria chave OpenRouter; planos mensais começam em $19. Preços
Posso rodar pelo terminal ou em CI?
Sim. pip install kaeris, então kaeris translate Localizable.xcstrings --langs de,ja. Veja também iOS. O GitHub Action executa a mesma tradução em um pull request. Docs da CLI · GitHub Action
Continue
Referência do CLI · Referência de verificação · Traduzir no navegador · Verificação gratuita · Converter formatos · Pseudo-localização
Outros formatos: JSON · YAML · .po · ARB · XLIFF · .strings · .properties · .resx · CSV · Markdown · Fluent · Android XML