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"]
}