Ir al contenido

Receta: Traducir archivos i18n

Esta receta muestra cómo traducir archivos de localización para aplicaciones web y móviles. yaku extrae los valores de cadena, los traduce y los escribe de vuelta — las claves y la estructura nunca son tocadas por el LLM.

Entrada (locales/en.json):

{
"greeting": "Hello!",
"farewell": "Goodbye!",
"login": "Log in",
"signup": "Sign up",
"settings": "Settings"
}
Ventana de terminal
yaku --to es -f locales/en.json -o locales/es.json
yaku --to ja -f locales/en.json -o locales/ja.json

Salida (locales/es.json):

{
"greeting": "¡Hola!",
"farewell": "¡Adiós!",
"login": "Iniciar sesión",
"signup": "Registrarse",
"settings": "Configuración"
}

yaku maneja JSON profundamente anidado:

{
"nav": {
"home": "Home",
"about": "About Us"
},
"errors": {
"404": "Page not found",
"500": "Internal server error"
}
}
Ventana de terminal
yaku --to es -f en.json -o es.json

Todas las claves, anidamiento, números y booleanos se preservan. Solo los valores de cadena se traducen.

Entrada (config/locales/en.yaml):

en:
activerecord:
errors:
messages:
blank: "can't be blank"
invalid: "is invalid"
taken: "has already been taken"
views:
pagination:
next: "Next"
previous: "Previous"
first: "First"
last: "Last"
Ventana de terminal
yaku --to es -f config/locales/en.yaml -o config/locales/es.yaml

Salida (config/locales/es.yaml):

en:
activerecord:
errors:
messages:
blank: "no puede estar en blanco"
invalid: "no es válido"
taken: "ya ha sido tomado"
views:
pagination:
next: "Siguiente"
previous: "Anterior"
first: "Primero"
last: "Último"

Traduzca un archivo fuente a múltiples idiomas:

#!/bin/bash
SOURCE="locales/en.json"
LANGUAGES=("es" "zh-TW" "ja" "ko" "fr" "de")
for lang in "${LANGUAGES[@]}"; do
yaku --to "$lang" -f "$SOURCE" -o "locales/${lang}.json"
echo "Generado locales/${lang}.json"
done

Uso de un glosario para términos de interfaz

Sección titulada «Uso de un glosario para términos de interfaz»

Los términos de interfaz a menudo necesitan traducciones precisas y consistentes. Cree un glosario:

.yaku-glossary.yaml
es:
Sign up: Registrarse
Log in: Iniciar sesión
Log out: Cerrar sesión
Settings: Configuración
Dashboard: Panel de control
Profile: Perfil
ja:
Sign up: サインアップ
Log in: ログイン
Log out: ログアウト
Settings: 設定
Dashboard: ダッシュボード
Ventana de terminal
yaku --to es -f locales/en.json -o locales/es.json
# El glosario se carga automáticamente desde .yaku-glossary.yaml
  • Traduzca desde el idioma fuente. Siempre traduzca desde en.json (o su idioma fuente), no desde otro archivo ya traducido.
  • Use un glosario para consistencia de interfaz. Botones, etiquetas y elementos de navegación deben usar los mismos términos en todas partes.
  • Revise la pluralización. Algunos idiomas manejan los plurales de forma diferente. Verifique que las formas plurales se manejen correctamente en su framework de i18n después de la traducción.
  • Cuidado con las variables de interpolación. Si sus archivos i18n contienen variables como {{name}} o %{count}, verifique que se preserven en la salida.