La CLI de Lingo.dev traduce archivos de recursos móviles nativos —Xcode .strings, Android XML, Flutter ARB y React Native JSON— con un motor de localización configurado. Cada plataforma tiene un tipo de bucket específico que entiende el formato de archivo, conserva la estructura y maneja los plurales de forma nativa.
Resumen de plataformas#
| Plataforma | Formato nativo | Bucket de CLI | Ruta de archivo habitual |
|---|---|---|---|
| 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 |
Requisitos previos#
Cada ejecución de la CLI envía el contenido a través de un motor de localización: la configuración que define qué modelo de LLM, glosario, voz de marca e instrucciones se aplican. Crea uno en el panel de Lingo.dev y genera una API key.
Configura tu plataforma#
Xcode admite tres formatos de localización. Usa el que mejor se ajuste a la configuración de tu proyecto.
String Catalogs (.xcstrings): el formato moderno de Xcode, introducido en Xcode 15. Un solo archivo JSON contiene todos los idiomas, y Xcode lo actualiza automáticamente cuando agregas nuevas cadenas. La CLI modifica este archivo directamente; no hace falta el placeholder [locale].
{
"$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"]
}
}
}Archivos heredados .strings: un archivo por idioma dentro de directorios [locale].lproj/. Si tu proyecto también usa .stringsdict para plurales, agrega ambos 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"]
}
}
}Consulta la documentación de localización de Apple para configurar la infraestructura de i18n de Xcode.
Ejecuta las traducciones#
Traduce todos los archivos de recursos con un solo comando:
npx lingo.dev@latest runLa CLI lee los archivos del idioma de origen, calcula qué cambió desde la última ejecución con el lockfile, traduce solo el delta y escribe los resultados en los archivos del idioma de destino.
Apunta a una plataforma específica cuando tu proyecto incluya varios tipos de recursos:
npx lingo.dev@latest run --bucket android
npx lingo.dev@latest run --bucket xcode-xcstringsPlurales y convenciones de cada plataforma#
Cada plataforma móvil maneja las formas plurales de forma distinta: iOS usa .stringsdict o las reglas de String Catalog, Android usa elementos XML <plurals> y Flutter usa ICU MessageFormat en archivos ARB. La CLI conserva la estructura plural nativa de cada plataforma durante la traducción y genera las categorías plurales correctas para cada idioma de destino.
Notas para traductores
Las cadenas móviles suelen ser cortas y depender mucho del contexto. Usa notas para traductores en archivos .xcstrings de Xcode para darle al motor de localización contexto sobre dónde aparece una cadena: "etiqueta de botón en el flujo de pago" se traduce distinto de "elemento del menú de navegación".
