Lingo.dev + .yaml (Rails)
Lingo.dev CLI переводит YAML-файлы локализации Ruby on Rails, используя корневые ключи для стандартного i18n Rails. CLI централизует все переводы 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 run
Управляет контентом, специфичным для локали Rails, под корневыми ключами, сохраняя структуру YAML и стандарты 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
Совместимость с helper-методами
Работает без проблем с 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"]
}