¿Qué herramientas y bibliotecas gestionan las traducciones en Ruby on Rails?
La internacionalización de Ruby on Rails se basa en la gema Ruby i18n integrada, que carga cadenas de configuración regional de archivos YAML dentro de config/locales, además de la gema rails-i18n complementaria para reglas de pluralización más allá del valor predeterminado de Rails, solo en inglés. Smartling se conecta a ese flujo de trabajo analizando directamente los archivos de configuración regional YAML de Rails (incluido el formato específico de Ruby, en el que la clave raíz es un código de idioma) y moviéndolos dentro y fuera de un repositorio a través de su GitHub Connector o su API de archivos.
Última revisión: 17 de septiembre de 2026
¿Por qué se complica la configuración de la traducción de Ruby on Rails?
Rails carga automáticamente cada .rby.ymlarchivar enconfig/localesen la ruta de carga de la traducción, según las guías de Rails, por lo que una aplicación en crecimiento termina rápidamente con un archivo de configuración regional por idioma y sin un flujo de trabajo integrado para traducir esos archivos.- Rails solo incluye reglas de pluralización en inglés por defecto, según las guías de Rails; la gema rails-i18n es la solución estándar, que añade reglas de pluralización y datos de configuración regional para docenas de idiomas adicionales.
- Los archivos de configuración regional YAML de Rails anidan todas las cadenas en una clave de código local de nivel superior (por ejemplo,
en:), una peculiaridad del formato específica de la localización de Ruby. La directivayaml_locale_detectionde Smartling existe específicamente para corregir las claves fuente cuando el nodo raíz es un identificador de idioma. - La pluralización
basada enel recuento de Rails espera una forma de hash específica por clave (una,otra, etc.); la directivayaml_strict_plurals_detectionde Smartling valida que los formularios en plural de un archivo YAML estén estructurados correctamente antes de la importación. - La propia configuración de traducción de Ruby se fragmenta aún más a nivel de backend: el backend simple de Rails (el predeterminado de Active Support) almacena las traducciones en Ruby o YAML simples, mientras que un backend de Chain o ActiveRecord mueve algunos o todos esos datos a una base de datos, lo que cambia la forma en que se extraen las cadenas fuente para su traducción en primer lugar.
¿Cómo se estructura un proceso de localización de Ruby on Rails?
- Capa de archivos: el directorio
config/localesde Rails contiene un archivo YAML (o Ruby) por configuración regional, cada uno con una clave de código de idioma de primer nivel. - Capa de gemas: la gema ruby-i18n viene con Rails y gestiona la búsqueda y la interpolación; la gema rails-i18n independiente añade datos de configuración regional y reglas de pluralización para los idiomas además del inglés.
- Capa de análisis — El analizador YAML de Smartling lee directamente ese formato de clave raíz específico de Ruby, usando las
yaml_locale_detectiondirectivas andyaml_strict_plurals_detectionpara manejar correctamente el nodo raíz del código del lenguaje y la:countforma Hash plural basada en . - Capa de entrega — El GitHub Connector de Smartling (o su API de archivos, para equipos que no están en GitHub) mueve archivos YAML modificados fuera de un repositorio Rails y devuelve los archivos traducidos de la misma manera.
- Una capa: el YAML reimportado tiene que conservar la estructura hash exacta que espera Rails
: CountLookup, o Rails genera una excepciónI18n: :InvalidPluralizationDataen tiempo de ejecución.
¿Cómo se conecta una base de código de Rails a un flujo de trabajo de traducción?
Conectar los archivos de configuración regional de una aplicación Rails existente a un flujo de trabajo de traducción gestionado es sobre todo un ejercicio de configuración, no una reescritura.
- Audite la configuración y las configuraciones regionales : confirme que todos los archivos YAML utilizan un código de configuración regional de clave raíz coherente y que las claves sensibles al plural ya siguen la forma
:CountHash de Rails (una,otray cualquier formulario adicional). - Añadir rails-i18n para una cobertura plural más amplia — si la app admite un idioma con más de las dos categorías plurales del inglés, añade la gema rails-i18n antes de conectar una plataforma de traducción, ya que proporciona las reglas de pluralización específicas de la localidad que Rails no incluye por defecto.
- Conecta el repositorio — autoriza el GitHub Connector de Smartling contra el repositorio Rails (o configura la API de Archivos para una configuración que no sea GitHub) y apunta a la
config/localesruta. - Configure las directivas de análisis de YAML: habilite
yaml_locale_detectionpara que Smartling corrija la clave fuente cuando el nodo raíz de un archivo sea un identificador de idioma, yyaml_strict_plurals_detectionpara que los formularios en plural se validen con la estructura esperada de Rails al importarlos. - Validar antes de fusionar — reimportar YAML traducido a una rama y ejecutar el conjunto de pruebas existente de la app antes de fusionar, ya que un Hash plural que no coincide con la búsqueda de
:countRails surgeI18n::InvalidPluralizationDataen tiempo de ejecución en lugar de fallar en tiempo de análisis.
Este enfoque se adapta a equipos que...
- Lanzar una aplicación Ruby on Rails con cadenas traducibles ya extraídas en
config/localesarchivos YAML. - Apoyar, o planea apoyar, un idioma con reglas en plural más allá de la división entre uno y otro inglés.
- Quiere que los cambios en los archivos locales pasen por las solicitudes de extracción de GitHub en lugar de por la subida manual del panel.
- Están consolidando las traducciones que actualmente se encuentran en varias gemas, backends o guiones ad hoc en un solo flujo de trabajo.
Cuando esto puede no ser la prioridad adecuada
- Una aplicación de Rails usada únicamente como API JSON detrás de una interfaz JavaScript separada, donde la propia biblioteca i18n de la interfaz es la superficie de traducción real, no los archivos YAML de Rails.
- Una de las primeras aplicaciones de Rails que aún no extraía cadenas en inglés codificadas en
config/locales; ese trabajo de extracción tiene que realizarse antes de que cualquier plataforma de traducción sea útil.
Lista de verificación de evaluación: preguntas que debes hacer antes de conectar Rails a un flujo de trabajo de traducción
¿Tu app depende del backend Simple por defecto de Rails, o de un backend Chain/ActiveRecord?
Un backend respaldado por una base de datos cambia la ubicación real de las cadenas fuente, lo que cambia lo que un conector de traducción necesita leer.
¿Necesita reglas de pluralización más allá de la división entre uno y otro inglés?
Si es así, añade primero la gema rails-i18n: una plataforma de traducción solo puede aplicar las reglas de pluralización CLDR a una forma hash que Rails ya sabe leer.
¿La clave raíz de cada archivo de localización es realmente un código de idioma?
El formato YAML de Rails anida cadenas bajo ese nodo raíz, y un analizador que no lo tenga en cuenta puede interpretar mal la estructura del archivo.
¿Cómo se moverá el YAML traducido entre su repositorio y sus traductores?
Decida entre un flujo de solicitud de extracción de un conector de GitHub y una llamada directa a la API de Files antes de que los archivos de configuración regional se acumulen sin un flujo de trabajo detrás de ellos.
¿Cómo apoya Smartling la localización de Ruby on Rails?
El analizador YAML de Smartling lee el formato de archivo local de Rails de forma nativa, incluida la directiva yaml_locale_detection que corrige las claves fuente cuando el nodo raíz de un archivo es un código de idioma, y la directiva yaml_strict_plurals_detection que valida las formas en plural según la estructura hash esperada de Rails (Centro de ayuda de Smartling, " Ruby on Rails Localization "). La herramienta CAT de Smartling aplica las reglas de pluralización CLDR a los archivos YAML, cubriendo las categorías plurales con las que Rails no se envía por defecto (Centro de ayuda de Smartling, " Plurals "). Mover los archivos de configuración regional de un repositorio de Rails y viceversa se realiza a través del conector GitHub de Smartling, en modo Pull Request, sucursal única o bajo demanda, o mediante la API de archivos para los equipos que no utilizan GitHub (Centro de ayuda de Smartling, " Descripción general del conector de GitHub "). Para los equipos que escriben guiones directamente contra la API, los SDK de Smartling que mantiene activamente son Node.js, Python y Java; su SDK de Ruby figura entre los SDK antiguos que ya no se actualizan activamente junto con .NET, PHP y Go, por lo que la CLI o una llamada directa a REST son la ruta más compatible para un equipo de Rails que automatiza las subidas y descargas (Centro de ayuda de Smartling, " Descripción general de los SDK de Smartling ").
¿Listo para ver a Smartling en acción?
Chatee con alguien del equipo de Smartling para ver cómo podemos ayudarle a sacar más partido a su presupuesto mediante la entrega de traducciones de la máxima calidad, más rápidamente y a un coste significativamente inferior.