Para añadir un idioma a una aplicación Flutter, solo tienes que traducir un archivo: el ARB de plantilla. Todo lo demás, incluidas las clases Dart, se genera a partir de él.
Esta guía se centra en ese archivo, app_en.arb, y en los tres elementos que suelen dar problemas: los metadatos @, los marcadores de posición y los plurales. Para otros formatos de aplicaciones, consulta cómo traducir los archivos de idioma de tu aplicación.
Qué es un archivo ARB
Un archivo ARB es un archivo JSON con una convención añadida. La herramienta de localización de Flutter lee los archivos ARB de lib/l10n de forma predeterminada, usa app_en.arb como plantilla y genera las clases Dart al ejecutar flutter gen-l10n. Cada archivo contiene un idioma.
Las entradas se organizan en pares: una clave con su texto y una entrada @ que la describe. Solo se traduce el texto.
¿Qué opción deberías usar?
| Para qué va bien | Limitaciones | |
|---|---|---|
| AI Glot | Para añadir uno o cinco idiomas, mantener un glosario coherente y traducir en cada versión | No hace falta para diez cadenas |
| Una plataforma de gestión de traducciones (Crowdin, Lokalise, Phrase, Localizely) | Para equipos con revisores y conexión a un repositorio | Primero tienes que crear un proyecto y conectar el repositorio |
| DeepL | Para archivos XLIFF, que figuran en su lista | ARB no aparece en esa lista, así que primero tienes que convertirlo |
| ChatGPT, Claude u otro asistente | Para traducir unas pocas cadenas | Tienes que redactar el prompt y añadir el glosario en cada conversación. Cada ejecución puede cambiar una clave, romper un {placeholder} o alterar un plural ICU, así que tienes que comparar todos los archivos |
| Un profesional autónomo o una agencia | Para los textos de las tiendas App Store y Play Store | El proceso es lento, se cobra por palabra y, además, tienes que preparar el archivo |
Contrata a un profesional para la ficha de la tienda y la primera pantalla. Usa un motor de traducción para el resto de etiquetas y mensajes.
Por qué AI Glot encaja con los archivos ARB
- Las claves y los metadatos
@forman parte de la estructura. Puedes dejarlos tal cual. - Se conservan los marcadores de posición y la sintaxis ICU.
{name}y{count, plural, ...}permanecen en el mensaje, mientras se traducen las palabras de cada opción. - Varios idiomas en un mismo encargo, en lugar de traducir las mismas cadenas cinco veces.
- Un mismo glosario para todos los idiomas y para los archivos que añadas más adelante.
- Un plan antes de gastar, con una muestra que puedes revisar.
El recorrido de un archivo
- 1Subirapp_en.arb tal cualHasta 8 MB
- 2Dinos qué necesitasIdiomas y qué conservarGratis
- 3Leer el planCadenas, idiomas y costeGratis
- 4AprobarEl único paso que genera gastoConsume créditos
- 5DescargarUn archivo ARB por idiomaSuéltalo aquí
Cómo es una entrada traducida
{ "@@locale": "en", "@@locale": "fr", "welcome": "Welcome back, {name}", "welcome": "Bon retour, {name}", "@welcome": { "description": "Greeting on the home screen" }, "cartItems": "{count, plural, one{1 item} other{{count} items}}" "cartItems": "{count, plural, one{1 article} other{{count} articles}}"}Qué debes comprobar después
Plurales en idiomas con más formas. El inglés necesita dos ramas. El ruso y el árabe necesitan más, y el mensaje traducido puede requerir ramas que no existen en el texto original en inglés. Revisa esos mensajes una vez.
@@locale. Si no pediste que se actualizara, se mantiene como estaba. Así que cámbialo a la configuración regional de destino antes de publicar.
Longitud. Comprueba las pantallas con las cadenas más largas para ver si el texto se sale de algún botón o tarjeta.
Cómo hacerlo, paso a paso
1. Prueba un archivo gratis. El traductor de ARB no requiere cuenta y admite archivos de hasta 2 MB y 5,000 palabras.
2. Sube app_en.arb en la aplicación o envíalo desde la línea de comandos, más abajo.
3. Explica lo que necesitas en una frase.
Translate this file into French, German and Spanish.
Leave the @ metadata entries alone. Set @@locale to the target language.
La frase determina qué se traduce en todo el archivo. Las reglas de redacción, como «mantén exactamente todos los {placeholder} y la sintaxis de plural ICU» o «usa un registro informal», van en la segunda casilla, durante la aprobación, porque se aplican a cada mensaje tal como se redacta.
4. Añade un glosario con el nombre de la aplicación, los nombres de las funciones y las palabras que siempre utilizas de la misma forma. Cómo crear uno.
5. Lee el plan y elige un nivel de calidad.
Lite ofrece aproximadamente tres veces más palabras por crédito y es más rápido: ideal para una primera versión en una nueva configuración regional. Standard es para las cadenas que lee primero el usuario. En Standard, un crédito equivale a una palabra.
6. Aprueba y descarga.
7. Coloca los archivos en lib/l10n, junto a app_en.arb, y ejecuta:
flutter gen-l10n
Un archivo, varias configuraciones regionales
Los nombres de archivo y las cantidades son solo un ejemplo. Un archivo ARB contiene un idioma, así que cada configuración regional tiene su propio archivo.
Tres formas de usarlo
Desde la línea de comandos es la opción que suelen elegir los desarrolladores de Flutter, porque se ejecuta de nuevo con cada lanzamiento:
id=$(aiglot batches create lib/l10n/app_en.arb \
--instruction "Translate into French. Leave the @ metadata entries alone. Set @@locale to the target language." \
--json | jq -r '.data.id')
aiglot batches get "$id" --json | jq '.data.plan'
aiglot batches approve "$id" --quality lite \
--instructions "Keep every {placeholder} and ICU plural syntax exactly as written."
aiglot batches download "$id" --output lib/l10n/app_fr.arb
Con tu agente de IA: conecta AI Glot como servidor MCP. El agente puede leer tu proyecto, proponer términos para el glosario, ejecutar el trabajo, guardar los archivos en lib/l10n y ejecutar flutter gen-l10n por ti.
En la aplicación: sube el archivo, haz clic y descárgalo. Ideal para un trabajo puntual.
Si quieres integrar la API, consulta la documentación de la API.
En Precios puedes consultar cuánto cuesta un volumen mayor. Además, una cuenta gratuita incluye créditos para procesar un archivo real.
Los límites indicados aquí son los vigentes en el momento de redactar este texto: 8 MB por archivo ARB, y 2 MB y 5,000 palabras en la herramienta gratuita. Los valores predeterminados de Flutter proceden de la documentación oficial de Flutter y pueden cambiar. La lista de DeepL procede de su propia documentación. Los nombres de archivo y el número de cadenas de los diagramas son ejemplos. En tu plan aparecen los datos reales de tu archivo, y puedes consultarlos gratis.
