Traducir Catálogos de Cadenas de Xcode (.xcstrings)
Un Catálogo de Cadenas contiene todos los idiomas en un solo archivo JSON que solo Xcode debería editar manualmente. KAERIS añade los nuevos idiomas a ese mismo archivo y deja todo lo demás tal como estaba.
KAERIS ha traducido esta página y revisado cada línea traduciéndola de vuelta. Un hablante nativo aún no la ha revisado. Original en inglés
Cómo se construye un Catálogo de Cadenas
Un archivo, strings, luego la clave, luego localizations, luego el idioma. Cada idioma contiene un stringUnit o variations para plurales. El archivo también incluye comment, extractionState y shouldTranslate. Una clave sin entrada para el idioma fuente es su propio texto fuente.
{
"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"
}
Qué tener en cuenta en las traducciones .xcstrings
No leerlo como JSON plano
Si se aplana como JSON genérico se convierte en claves como
strings.welcome.localizations.en…, que parecen traducidas y que Xcode no puede leer. KAERIS tiene su propio lector para este formato.Variaciones plurales por idioma
El inglés tiene
oneyother; el ruso también necesitafewymany, el árabe las seis formas. El README describe la expansión;%lldpermanece donde estaba.Lo que Xcode escribió debe permanecer
Los comentarios, estados de extracción, idiomas ya en el archivo y todo lo marcado con
shouldTranslate: falsese mantienen intactos.Especificadores de formato
%@,%lld,%1$@se comparan con la fuente después de la traducción.
Una ejecución real: traducido al alemán y verificado
Una ejecución real, 27 de octubre de 2026, nada editado a mano: kaeris translate Localizable.xcstrings --langs de con kaeris 0.2.35, 2.4 segundos, modelo openai/gpt-4.1-mini (el modelo de reserva del servicio respondió este trabajo). Abajo, el archivo alemán que escribió y lo que kaeris check dice sobre él.
{
"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
Lo que KAERIS hace con él
Un archivo, actualizado en el lugar
kaeris translate Localizable.xcstrings --langs de,fr,jaescribe los idiomas en el catálogo. No hay un archivo por idioma.Plurales como ICU para el modelo
En la comprobación, una variación plural se lee como un plural ICU, por lo que una forma perdida es visible.
Chequeo gratuito para este formato
El chequeo gratuito en /check lee este formato y funciona sin clave ni cuenta. El comando de terminal
kaeris checktambién lo lee: soporta los 13 formatos desde kaeris 0.2.35, con las mismas reglas y sin enviar nada a ningún lado.
Ejecuta en tres pasos
Instala el CLI
Ejecuta
pip install kaeris.Traducir el catálogo
Ejecute
kaeris translate Localizable.xcstrings --langs de,fr,ja. El catálogo se actualiza en el lugar.Comprobar el resultado
Suba el catálogo en la página de comprobación gratuita; lee la fuente y las traducciones desde un solo archivo.
pip install kaeris kaeris translate Localizable.xcstrings --langs de,fr,ja --verify
Preguntas
¿Sobrescribe mis traducciones existentes?
Los idiomas ya en el archivo, los comentarios y los estados de extracción se mantienen intactos, como dice el README de la CLI.
¿Cómo se manejan los plurales?
Las variaciones plurales se expanden a las categorías que cada idioma necesita: el inglés one/other se convierte en one/few/many/other en ruso y seis formas en árabe.
¿Es gratis?
Sí, sin cuenta: 10.000 caracteres por archivo y hasta 8 idiomas por ejecución. Una clave API gratuita eleva el límite de archivos a 50.000 caracteres. La licencia vitalicia cuesta $79 una vez, con tu propia clave OpenRouter; los planes mensuales empiezan en $19. Precios
¿Puedo ejecutarlo desde la terminal o en CI?
Sí. pip install kaeris, luego kaeris translate Localizable.xcstrings --langs de,ja. Véase también iOS. La GitHub Action ejecuta la misma traducción en un pull request. Documentación CLI · GitHub Action
Seguir adelante
Referencia CLI · Referencia de verificación · Traducir en el navegador · Verificación gratuita · Convertir formatos · Pseudo-localización
Otros formatos: JSON · YAML · .po · ARB · XLIFF · .strings · .properties · .resx · CSV · Markdown · Fluent · Android XML