La CLI de Lingo.dev traduce archivos nativos de recursos móviles —Xcode .strings, XML de Android, ARB de Flutter y JSON de React Native— 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 gestiona los plurales de forma nativa.
Resumen de plataformas#
| Plataforma | Formato nativo | Bucket de la 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 determina qué modelo 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 encaje con la configuración de tu proyecto.
String Catalogs (.xcstrings): el formato moderno de Xcode, introducido en Xcode 15. Un único archivo JSON contiene todos los idiomas, y Xcode lo actualiza automáticamente cuando añades nuevas cadenas. La CLI modifica este archivo directamente; no necesita ningún marcador de posición [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 en directorios [locale].lproj/. Si tu proyecto también usa .stringsdict para los plurales, añade 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 internacionalización de Xcode.
Ejecutar 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é ha cambiado desde la última ejecución mediante el lockfile, traduce solo el delta y escribe los resultados en los archivos del idioma de destino.
Apunta a una plataforma concreta 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 gestiona los 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 de plural correctas para cada idioma de destino.
Notas para traductores
Las cadenas de móvil suelen ser breves y muy dependientes del contexto. Usa notas para traductores en los archivos .xcstrings de Xcode para dar al motor de localización contexto sobre dónde aparece una cadena: «texto de botón en el flujo de pago» se traduce de forma distinta a «elemento del menú de navegación».
