5.0 KiB
Locale Atlas — すべての MOD のすべての翻訳キー
Locale Atlas は、インストール済み全 MOD のローカライズを地図にします。どの MOD がどの言語でどのキーを宣言しているか、キーがどこで使われているか——シナリオ、C# コード、JSON データ、コレクション、シーン、マニフェスト——そして何がおかしいか。問題を 2 種類に分けます:
- エラー — 壊れたテキスト。使われているのにどこにも宣言されていないキー、空の値、同じ MOD 内で 2 つの異なる値を持つキー、ローダーが読めないファイル、壊れたエンコーディング;
- 警告 — 翻訳の欠け。ある言語で欠けているキー。この場合、ゲームはテキストがある言語へフォールバックするので、何も壊れません。警告には足すべき行が示されます。
実行方法
godot --path . -- --locale-atlas --locale-out=res://tests/artifacts/locale_atlas --with-test-suites
インストール済みの全 MOD を読み、report.md と report.json を --locale-out フォルダーに書き込み、サマリー行をログに出し、エラーがあれば終了コード 1 で終わります。テストランナーでは locale_atlas テストです。report.md の本文はロシア語、問題の説明は英語です。
現在の MOD のきれいな実行:
locale atlas: 2284 key(s), 156 need attention, 0 error(s), 801 warning(s)
欠けと壊れを並べて見る
2 種類を見せるために、小説テンプレートの MOD に 1 回の実行のための変更を 2 か所加えました。
欠けている翻訳。 町の質問のスペイン語行を locale/scenarios_es.properties から削除しました。アトラスは、足すべき行とともに警告を報告します:
| warning | `my_novel_game` | `my_novel/town/prompt` | es | `locale/scenarios_en.properties:2` | declared in en, ja, ko, ru, vi, zh but not in 'es' | `locale/scenarios_es.properties: my_novel/town/prompt = Where to go?` |
スペイン語のプレイヤーにはそれでも質問が見えます——ただし別の言語で——。つまりこれは欠けであり、壊れではありません。
壊れた参照。 町のシナリオで、ある回答のキーのつづりを間違えました:
option "Go into the bar" key=my_novel/town/opt_baar -> :bar
このキーは使われているのにどのファイルにも宣言されておらず、アトラスは言語ごとにエラーを報告し、シナリオの行を指します:
| error | `my_novel_game` | `my_novel/town/opt_baar` | ru | `scenarios/my_novel_town.scenario:7` | referenced (scenario, 1×) but declared in no locale file | `locale/scenarios_ru.properties: my_novel/town/opt_baar = …` |
実行は 7 error(s) で終わり、失敗しました。キーを再び opt_bar とつづり、スペイン語行を戻せば、またきれいになります。
レポートの中身
- エンコーディング — ローカライズファイルごとのエンコーディング、改行、キー数。非 UTF-8、U+FFFD、制御文字、文字化け(mojibake)、CR のみの改行はエラーです。
- 注意が必要なキー — キーごとに 1 行。言語ごとの印(
✓宣言済み、∅空、—欠落)、宣言場所、参照している箇所、そして何がおかしいか。 - 問題 — MOD・キー・言語・直す場所・足すべき正確な行つきの、エラーと警告。
その他の警告: BOM、混在する改行、同じ値で 2 回現れる同じキー、一部の言語だけでキーを上書きする MOD、言語間で異なる {0} プレースホルダー、英語テキスト内のキリル文字、値の中の ???、mod_<id>_name と mod_<id>_desc のない MOD。
キーはどこから来るか
key=の付いた.scenario行。シナリオテキストの翻訳はlocale/scenarios_<lang>.propertiesへ;- C# の
Translate("…")、Tr("…")、Locale = "…"; - JSON データのテキスト欄(
Name、Description、titleなど)、コレクションの"@key"; .tscnシーンで自動翻訳されるtextとtooltip_text;- マニフェストの
mod_<id>_nameとmod_<id>_desc。
ローカライズファイルは MOD の locale/ フォルダー直下になければなりません。サブフォルダー内のファイルはゲームに読まれず、エラーです。
何かがおかしいとき
- 英語では正しく見えるキーにエラー。 シナリオ行は自分のテキストを運ぶので、つづりを間違えたキーの翻訳がどこにも見つからないまま、ある言語では正しく読めることがあります。
- 何百もの警告。 これらは翻訳の欠けです。各行が、足すべきファイルと行を示します。