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.
Archivos i18n de JSON
Sección titulada «Archivos i18n de JSON»Estructura plana
Sección titulada «Estructura plana»Entrada (locales/en.json):
{ "greeting": "Hello!", "farewell": "Goodbye!", "login": "Log in", "signup": "Sign up", "settings": "Settings"}yaku --to es -f locales/en.json -o locales/es.jsonyaku --to ja -f locales/en.json -o locales/ja.jsonSalida (locales/es.json):
{ "greeting": "¡Hola!", "farewell": "¡Adiós!", "login": "Iniciar sesión", "signup": "Registrarse", "settings": "Configuración"}Estructura anidada
Sección titulada «Estructura anidada»yaku maneja JSON profundamente anidado:
{ "nav": { "home": "Home", "about": "About Us" }, "errors": { "404": "Page not found", "500": "Internal server error" }}yaku --to es -f en.json -o es.jsonTodas las claves, anidamiento, números y booleanos se preservan. Solo los valores de cadena se traducen.
Archivos i18n de YAML
Sección titulada «Archivos i18n de YAML»Estilo Rails de i18n
Sección titulada «Estilo Rails de i18n»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"yaku --to es -f config/locales/en.yaml -o config/locales/es.yamlSalida (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"Traducción por lotes
Sección titulada «Traducción por lotes»Traduzca un archivo fuente a múltiples idiomas:
#!/bin/bashSOURCE="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"doneUso 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:
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: ダッシュボードyaku --to es -f locales/en.json -o locales/es.json# El glosario se carga automáticamente desde .yaku-glossary.yamlConsejos
Sección titulada «Consejos»- 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.