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