Lingo.dev + .yaml (Rails)

Lingo.dev CLI는 Rails의 표준 국제화 워크플로우를 위한 로케일 기반 루트 키를 사용하여 Ruby on Rails YAML i18n 파일을 번역합니다. CLI는 모든 Rails 번역을 중앙 집중식 로케일 파일에서 관리하고, 모델/뷰/컨트롤러에 대한 Rails의 중첩 키 규칙을 유지하며, 로케일 간에 YAML 앵커와 별칭이 작동하도록 보장하고, Rails의 t() 헬퍼와 원활하게 통합되며, Rails i18n 모범 사례를 정확히 따릅니다.

빠른 설정

Rails 로케일 파일 구성:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "yaml-root-key": {
      "include": ["config/locales/*.yml"]
    }
  }
}

Rails i18n 파일 번역

npx lingo.dev@latest i18n

YAML 구조와 Rails i18n 규칙을 유지하면서 루트 키 아래의 Rails 로케일별 콘텐츠를 관리합니다.

Rails i18n 구조

표준 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"

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"

Rails 통합 기능

헬퍼 메소드 호환성

Rails i18n 헬퍼와 원활하게 작동합니다:

  • t('users.index.title')
  • I18n.t('hello')
  • <%= t('.edit') %> (지연 조회)
  • User.model_name.human

보간법 지원

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"

고급 구성

다중 Rails 로케일 파일

"yaml-root-key": {
  "include": [
    "config/locales/*.yml",
    "config/locales/**/*.yml"
  ]
}

Rails 시스템 키 잠금

"yaml-root-key": {
  "include": ["config/locales/*.yml"],
  "lockedKeys": ["number", "time", "date", "datetime"]
}