Lingo.dev + .yaml (Rails)
Lingo.dev CLI traduce archivos YAML i18n de Ruby on Rails utilizando claves raíz basadas en locale para el flujo de trabajo de internacionalización estándar de Rails. El CLI gestiona todas las traducciones de Rails en archivos de locale centralizados, mantiene las convenciones de claves anidadas de Rails para modelos/vistas/controladores, garantiza que los anclajes y alias YAML funcionen en todos los locales, se integra perfectamente con los helpers t() de Rails, y sigue exactamente las mejores prácticas de i18n de Rails.
Configuración rápida
Configura para archivos de locale de Rails:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"yaml-root-key": {
"include": ["config/locales/*.yml"]
}
}
}
Traducir archivos i18n de Rails
npx lingo.dev@latest run
Gestiona contenido específico de locale de Rails bajo claves raíz mientras preserva la estructura YAML y las convenciones i18n de Rails.
Estructura i18n de Rails
Organización estándar de Rails
# config/locales/en.yml
en:
hello: "Hello world"
# Model translations
activerecord:
models:
user: "User"
post: "Post"
attributes:
user:
name: "Name"
email: "Email Address"
# View translations
layouts:
application:
title: "My Rails App"
# Controller/action specific
users:
index:
title: "All Users"
new_user: "New User"
show:
edit: "Edit User"
delete: "Delete User"
es:
hello: "Hola mundo"
activerecord:
models:
user: "Usuario"
post: "Publicación"
attributes:
user:
name: "Nombre"
email: "Dirección de Correo"
layouts:
application:
title: "Mi Aplicación Rails"
users:
index:
title: "Todos los Usuarios"
new_user: "Nuevo Usuario"
show:
edit: "Editar Usuario"
delete: "Eliminar Usuario"
Mensajes de validación de Rails
en:
activerecord:
errors:
messages:
blank: "can't be blank"
too_short: "is too short (minimum is %{count} characters)"
too_long: "is too long (maximum is %{count} characters)"
taken: "has already been taken"
es:
activerecord:
errors:
messages:
blank: "no puede estar en blanco"
too_short: "es demasiado corto (mínimo %{count} caracteres)"
too_long: "es demasiado largo (máximo %{count} caracteres)"
taken: "ya está en uso"
Características de integración con Rails
Compatibilidad con métodos helper
Funciona perfectamente con los helpers i18n de Rails:
t('users.index.title')I18n.t('hello')<%= t('.edit') %>(búsqueda lazy)User.model_name.human
Soporte de interpolación
en:
welcome_message: "Welcome, %{name}!"
items_count:
zero: "No items"
one: "One item"
other: "%{count} items"
es:
welcome_message: "¡Bienvenido, %{name}!"
items_count:
zero: "Sin artículos"
one: "Un artículo"
other: "%{count} artículos"
Configuración avanzada
Múltiples archivos de locale de Rails
"yaml-root-key": {
"include": [
"config/locales/*.yml",
"config/locales/**/*.yml"
]
}
Bloquear claves del sistema de Rails
"yaml-root-key": {
"include": ["config/locales/*.yml"],
"lockedKeys": ["number", "time", "date", "datetime"]
}