Lingo.dev + .yaml(Rails)
Lingo.dev CLI 使用基于语言环境的根键翻译 Ruby on Rails 的 YAML i18n 文件,以适配 Rails 的标准国际化工作流。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
在根键下管理 Rails 的特定语言环境内容,同时保留 YAML 结构和 Rails i18n 约定。
Rails i18n 结构
标准 Rails 组织方式
# config/locales/en.yml
en:
hello: "Hello world"
# 模型翻译
activerecord:
models:
user: "User"
post: "Post"
attributes:
user:
name: "Name"
email: "Email Address"
# 视图翻译
layouts:
application:
title: "My Rails App"
# 控制器/操作特定翻译
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
插值支持
zh:
welcome_message: "欢迎, %{name}!"
items_count:
zero: "没有项目"
one: "一个项目"
other: "%{count} 个项目"
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"]
}