レシピ: i18nファイルの翻訳
このレシピでは、Webアプリやモバイルアプリのローカライゼーションファイルを翻訳する方法を紹介します。yakuは文字列値を抽出・翻訳して書き戻します — キーと構造はLLMに触れられることはありません。
JSON i18nファイル
Section titled “JSON i18nファイル”フラット構造
Section titled “フラット構造”入力(locales/en.json):
{ "greeting": "Hello!", "farewell": "Goodbye!", "login": "Log in", "signup": "Sign up", "settings": "Settings"}yaku --to ja -f locales/en.json -o locales/ja.jsonyaku --to ko -f locales/en.json -o locales/ko.json出力(locales/ja.json):
{ "greeting": "こんにちは!", "farewell": "さようなら!", "login": "ログイン", "signup": "サインアップ", "settings": "設定"}yakuは深くネストされたJSONも処理できます:
{ "nav": { "home": "Home", "about": "About Us" }, "errors": { "404": "Page not found", "500": "Internal server error" }}yaku --to ja -f en.json -o ja.jsonすべてのキー、ネスト、数値、真偽値は保持されます。文字列値のみが翻訳されます。
YAML i18nファイル
Section titled “YAML i18nファイル”Rails形式のi18n
Section titled “Rails形式のi18n”入力(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 ja -f config/locales/en.yaml -o config/locales/ja.yaml出力(config/locales/ja.yaml):
en: activerecord: errors: messages: blank: "空白にはできません" invalid: "は無効です" taken: "はすでに使用されています" views: pagination: next: "次へ" previous: "前へ" first: "最初" last: "最後"1つのソースファイルを複数の言語に翻訳します:
#!/bin/bashSOURCE="locales/en.json"LANGUAGES=("ja" "zh-TW" "ko" "fr" "de" "es")
for lang in "${LANGUAGES[@]}"; do yaku --to "$lang" -f "$SOURCE" -o "locales/${lang}.json" echo "Generated locales/${lang}.json"doneUI用語の用語集
Section titled “UI用語の用語集”UI用語には正確で一貫した翻訳が必要です。用語集を作成しましょう:
ja: Sign up: サインアップ Log in: ログイン Log out: ログアウト Settings: 設定 Dashboard: ダッシュボード Profile: プロフィール
zh-TW: Sign up: 註冊 Log in: 登入 Log out: 登出 Settings: 設定 Dashboard: 儀表板yaku --to ja -f locales/en.json -o locales/ja.json# .yaku-glossary.yamlから用語集が自動的に読み込まれます- ソースロケールから翻訳する。 常に
en.json(またはソース言語)から翻訳し、別の翻訳済みファイルからは翻訳しないでください。 - UI一貫性のために用語集を使う。 ボタン、ラベル、ナビゲーション項目は、すべての場所で同じ用語を使うべきです。
- 複数形を確認する。 言語によって複数形の扱いが異なります。翻訳後にi18nフレームワークで複数形が正しく処理されているか確認してください。
- 補間変数に注意する。 i18nファイルに
{{name}}や%{count}のような変数が含まれている場合、出力で保持されているか確認してください。