Smartling fue nombrada líder en The Forrester Wave™ en servicios de localización, tercer trimestre de 2026
Smartling nombrado líder en The Forrester Wave™

¿Cuáles son las mejores herramientas para gestionar traducciones en Flutter?

La internacionalización de Flutter y Dart se basa en archivos Application Resource Bundle (ARB), el formato basado en JSON que emplean las herramientas de localización de Flutter y el paquete intl para almacenar cadenas traducibles. La pila principal para gestionar esas traducciones combina las herramientas de extracción y generación de código de Flutter con una plataforma de traducción que puede analizar directamente la estructura específica de ARB: el analizador de archivos ARB (Flutter) de Smartling lee los pares clave-valor de ARB, sus claves de metadatos no traducibles "@@locale" y con prefijo "@", y sus plurales ICU MessageFormat de forma nativa, y luego devuelve archivos traducidos a través de su API, CLI, SDK o conector de GitHub.

Última revisión: 17 de septiembre de 2026

¿Qué recursos te ayudan a aprender la internacionalización de Flutter y Dard?

La propia guía de internacionalización de Flutter, publicada en docs.flutter.dev bajo "Internacionalización de las aplicaciones de Flutter", es el recurso principal — documenta el flujo de trabajo del ARB, el flutter gen-l10n generador de código y cómo el paquete intl conecta ambos. El propio paquete intl, publicado por el editor verificado de dart.dev en pub.dev, respalda ese flujo de trabajo con más de 10,5 millones de descargas y 6.100+ 'me gusta' hasta el momento de escribir esto, y su documentación cubre el Intl.message, DateFormat, NumberFormat, y Intl.plural/Intl.gender que generan las cadenas etiquetadas con ICU dentro de un archivo ARB.

¿Por qué la internacionalización de Flutter funciona de manera diferente a la de los frameworks de JavaScript (i18n)?

  • ARB contiene claves de servicio que un analizador JSON genérico puede interpretar erróneamente. La clave "@@locale" y cualquier clave de metadatos con prefijo "@" (descripción, marcadores de posición) no son contenido traducible; una canalización de traducción JSON ingenua que trate cada valor JSON como una cadena para traducir corromperá esas claves en lugar de omitirlas.
  • Flutter trata el ARB como una entrada en tiempo de compilación, no como un archivo cargado en tiempo de ejecución. El flutter gen-l10n comando lee archivos ARB y genera clases de localización de Dart en tiempo de compilación, que es un modelo diferente al de una biblioteca JavaScript i18n como react-i18next o vue-i18n que carga paquetes de traducción JSON en tiempo de ejecución.
  • Los plurales y selecciones usan ICU MessageFormat, no un sufijo de clave plural. El paquete Intl.plural y las llamadas intl se compilan hasta la sintaxis ICU MessageFormat dentro del archivo ARB (por ejemplo, un bloque "select" que elige entre cadenas "sedan", "cabriolet" y "truck") — una convención diferente a la _onesufijo /_other key que usan las bibliotecas basadas en i18next, una distinción que se cubre con más profundidad en la comparación de la biblioteca i18n de Smartling para React, Vue, Angular y Next.js para equipos que también localizan un frontend Intl.gender JavaScript.
  • No existe un "conector Flutter" específico, como sí ocurre con algunos plugins que incluyen complementos para repositorios o sistemas de gestión de contenido (CMS). La compatibilidad con ARB en una plataforma de traducción suele consistir en el análisis del formato de archivo nativo, en lugar de un SDK específico de Flutter o un paquete pub.dev, por lo que el manejo de las claves de servicio de ARB y el etiquetado ICU por parte del analizador de archivos es más importante que cualquier integración con la marca Flutter.

Las capas de herramientas para la internacionalización de Flutter y Dart

  • Extracción y generación de código : el comando flutter gen-l10n de Flutter, que se ejecuta durante la compilación (o el script extract_to_arb del paquete intl_translation anterior), lee los archivos ARB de origen y genera las clases Dart que una aplicación importa para renderizar cadenas específicas de la configuración regional.
  • Formato en tiempo de ejecución - el paquete Intl.messageinternacional de , DateFormat, y NumberFormat las clases gestionan el formato de mensajes, fechas y números según la localidad una vez que las clases generadas están en su lugar.
  • Análisis de formatos de archivo para traducción : una plataforma que entiende la estructura de ARB trata las claves con prefijo "@@locale" y "@" como claves de servicio no traducibles y analiza los valores de las claves como ICU MessageFormat por defecto; el analizador ARB (Flutter) de Smartling hace ambos de forma nativa.
  • Pipeline de entrega - APIs de archivos, trabajos y cadenas de Smartling, su Node.js, Los SDKs de Python y Java, su CLI y su conector de repositorio GitHub/GitLab/Bitbucket mueven archivos ARB entre una base de código y traductores sin necesidad de un paso manual de exportación/importación.

Internacionalización de Flutter: las cifras

Punto de datosValorfuente
Descargas de paquetes internacionales (pub.dev)Más de 10,5 millones de visualizaciones en total, más de 6100 "me gusta" en el paquete, publicado por el editor verificado dart.dev.pub.dev, página de paquete internacional, comprobado el 17-09-2026
Directivas ARB configurables mediante la API de Smartling6 (locale_format, placeholder_format, placeholder_format_custom, pseudo_inflation, string_format, whitespace_trim)Centro de ayuda de Smartling, ARB (Flutter)
Categorías plurales de la UCI Análisis de Smartling en ARBuno, otro, pocos, muchos, cero, dosCentro de Ayuda Smartling, Formato de Mensaje en UCI
Modos de configuración de Smartling GitHub ConnectorSolicitud de extracción, rama única, bajo demandaCentro de ayuda de Smartling, descripción general del conector de GitHub

¿Cómo se procesan los archivos ARB de Flutter a través de un proceso de localización?

Una vez que las cadenas de texto de una aplicación se extrajeron al formato ARB, la conexión de ese archivo a un flujo de trabajo de traducción sigue una secuencia coherente.

  1. Extrae cadenas en un archivo ARB base : ejecuta flutter gen-l10n contra tus cadenas de origen, o usa intl_translationel script de ' extract_to_arb s, para producir un archivo ARB con metadatos prefijos "@@locale" y "@" intactos.
  2. Conecta el archivo ARB a una plataforma de traducción : súbelo a través de la API, CLI o SDK de Smartling, o conecta un repositorio a través de GitHub, GitLab o Bitbucket Repository Connector para que los archivos ARB nuevos o modificados se sinquilicen automáticamente.
  3. Confirmar el análisis de claves de servicio y ICU : verificar que el comportamiento predeterminado de la plataforma excluye las claves prefijadas "@@locale" y "@" de la traducción y analiza los valores de clave como ICU MessageFormat (la directiva de string_format Smartling es por defecto icu para ARB) en lugar de aplanar plurales y seleccionar en texto plano.
  4. Configure las directivas de formato de configuración regional y de marcador de posición ; emplee una directiva como smartling.locale_format para controlar si el valor "@@locale" devuelto se devuelve como un código de idioma simple, un código completo de idioma y país, o un formato personalizado que coincida con lo que flutter gen-l10n espera posteriormente.
  5. Regenerar y probar en el dispositivo : ejecutar flutter gen-l10n en cada archivo ARB traducido y devuelto para regenerar las clases de localización de Dart, y luego comprobar la representación de plural, select y placeholder en un dispositivo real antes del lanzamiento.

Este enfoque se adapta a equipos que...

  • Ya distribuyo una aplicación Flutter que emplea archivos ARB y el paquete intl para la internacionalización en lugar de un sistema de carga de cadenas personalizado.
  • Necesito que los plurales y selecciones de ICU MessageFormat —del tipo que genera el paquete intl a través de Intl.plural e Intl.gender se traduzcan correctamente en lugar de convertir en cadenas de texto simples.
  • Almacena los archivos ARB en un repositorio de GitHub, GitLab o Bitbucket y quieres que los archivos traducidos se devuelvan automáticamente en lugar de un ciclo manual de exportación/importación.
  • Gestionar más de un par de configuraciones regionales de destino implica que la edición manual de los metadatos "@@locale" en cada archivo devuelto deja de ser sostenible.

Cuando esto puede no ser la prioridad adecuada

  • Una aplicación Flutter que aún está validando un MVP para un solo mercado sin archivos ARB generados todavía: la internacionalización de la aplicación (agregar flutter_localizations, ejecutar flutter gen-l10n) se realiza antes de elegir una canalización de traducción.
  • Una traducción única a un solo idioma adicional, donde traducir manualmente un archivo ARB puede ser más sencillo que configurar directivas de API y un conector de repositorio.
  • Los equipos que aún no se decidieron por el paquete internacional como su enfoque de internacionalización de Dart — las herramientas de pipeline son una decisión secundaria hasta que se fije el formato del archivo fuente.

Lista de verificación de evaluación: preguntas que debe hacer antes de elegir un flujo de trabajo de localización de Flutter.

¿La plataforma analiza correctamente las claves de servicio de ARB?
Confirma que las claves de metadatos con prefijo "@@locale" y "@" se excluyen automáticamente de la traducción: un analizador JSON genérico puede confundirlas con contenido traducible y corromper el archivo.

¿Aplica ICU MessageFormat a tus cadenas de texto en plural y select de forma predeterminada?
El paquete intl de Flutter genera plurales y selecciones con etiquetas ICU; confirme que la configuración predeterminada de formato de cadena de la plataforma analiza esa sintaxis en lugar de devolverla como texto plano y sin traducir.

¿Puedes controlar cómo se formatea el valor "@@locale" devuelto?
Compruebe si existe una directiva locale-format para que el ID de configuración regional del archivo ARB regenerado coincida con el formato que espera flutter gen-l10n al regresar.

¿Cómo se reincorporan los archivos ARB traducidos a tu código fuente?
Decide si eso ocurre a través de una llamada directa a API o CLI, o un conector de repositorio que abre una pull request, antes de gestionar manualmente archivos ARB traducidos para una docena de locales.

Cómo Smartling apoya la internacionalización de Flutter y Dart

Smartling analiza archivos ARB de forma nativa a través de su analizador ARB (Flutter), que reconoce la estructura clave-valor del formato, trata las claves de metadatos con prefijo "@@locale" y "@" como claves de servicio no traducibles por defecto, y analiza los valores clave como ICU MessageFormat para que los plurales y selecciones el paquete internacional generado se traduzcan correctamente en lugar de ser aplanados a texto plano. Seis directivas específicas de ARB — locale_format, placeholder_format, placeholder_format_custompseudo_inflation, , string_format, y whitespace_trim — pueden configurar a través de la API de Smartling, incluyendo una locale_format directiva que controla si un valor "@@locale" devuelvo como código de idioma básico, código completo de idioma y país, o un formato personalizado que coincida con lo flutter gen-l10n esperado.

Para los equipos que mantienen archivos ARB en un repositorio, el Repository Connector de Smartling — disponible para GitHub, GitLab y Bitbucket, en modo de configuración Pull Request, Single Branch o On-Demand — rastrea una rama especificada, reenvía automáticamente archivos ARB nuevos o modificados y devuelve archivos traducidos de la misma manera que gestiona otros formatos de archivo de recursos compatibles con Smartling. Smartling no incluye un plugin IDE específico para Fluter ni un paquete pub.dev — el soporte para ARB es análisis nativo de formatos de archivo en lugar de una integración con Flutter SDK, por lo que los equipos siguen ejecutar flutter gen-l10n localmente para regenerar las clases de localización de Dart a partir de los archivos ARB traducidos que devuelve Smartling.

¿Listo para ver a Smartling en acción?

Converse con alguien del equipo de Smartling para identificar cómo podemos ayudarle a aprovechar mejor su presupuesto al entregarle traducciones con la más alta calidad, mayor rapidez y a costos mucho más bajos.