チェック・トラブル対処Read this article in English

ローカライズでよくあるバグ チェックリスト — 何を見て、なぜ起きるのか

ローカライズのバグはたいてい珍しいものではありません。プロジェクトや言語ペアが変わっても、同じ少数のパターンが同じような原因(スプレッドシートの編集ミス、マージ、翻訳に反映されなかった原文変更)で繰り返し発生します。ここでは、実際に気をつけるべきパターンを、ゲーム内でどう見えるか、どう混入しやすいか、スクリプトで検出できるのか人が意味を読む必要があるのか、という観点で整理します。

未翻訳・原文と同一の文字列

ゲーム内では、多言語対応済みの画面の中に原文(英語など)がそのまま混ざって見えます。ボタン、ツールチップ、時にはセリフ丸ごとということもあります。翻訳作業が終わったあとに追加された文字列や、翻訳者が飛ばした行が無言でフォールバックすることで発生します。

  • ゲーム内での見え方: 多言語画面の中に原文がそのまま出る
  • 混入原因: 翻訳完了後の文字列追加、または翻訳漏れの静かなフォールバック
  • 機械検出: 可能。訳文が原文と完全一致していることが強いシグナル(固有名詞など正当な例外はある)

プレースホルダーの不一致

`%s`や`{playerName}`のようなトークンが、値に置き換わらずそのまま画面に表示される、あるいはもっと悪い場合には、言語によってプレースホルダーの順序が変わることをコードが考慮しておらず、文の中で違う値が違う場所に入ってしまいます。翻訳者がトークンを打ち直して壊す、あるいは語順の違う言語で並び替えることで起こります。

  • ゲーム内での見え方: `{count}`のような生のトークンがそのまま表示、あるいは値の位置がずれる
  • 混入原因: 翻訳作業中にトークンが打ち直される・消える・順序が入れ替わる
  • 機械検出: 可能。エントリごとに原文と訳文のプレースホルダーの集合を比較する

タグの破損・不整合

太字・色・改行などのリッチテキストタグが壊れると、閉じタグが消えて段落全体が太字のまま続いてしまう、あるいはタグが解釈されずそのまま文字として表示される、といった形で現れます。原因はプレースホルダーと同様で、翻訳者がタグの周辺を編集する際に一部を消したり重複させたりすることです。

  • ゲーム内での見え方: 書式が止まるべき場所を越えて続く、あるいはタグの文字がそのまま表示される
  • 混入原因: 翻訳中にタグが編集・削除・並べ替えされる
  • 機械検出: 可能。原文と訳文でタグの数と対応を数えて照合できる

テキストのはみ出し(オーバーフロー)

訳文としては正しいのに、UIの枠に収まらず、文字が切れたり、変な位置で折り返されたり、隣の要素と重なったりする不具合です。同じ意味でも言語によって文字数・幅が大きく変わるため、短い言語向けに作られたレイアウトに長い言語を流し込むと露呈します。オーバーフローは半分だけ機械的に扱える問題です。長さや文字数が異常な文字列は自動でフラグを立てられますが、実際に特定のレイアウトを壊すかどうかは、多くの場合実際の画面を見て判断する必要があります。

文字化け

アクセント付き文字や非ラテン文字が、化けた記号や置換ボックス、はてなマークになって表示される不具合です。ファイルが誤った文字エンコーディングを想定した工程を通過することで発生します。スプレッドシートの書き出し、ツール間のコピー&ペースト、UTF-8を指定せずにファイルを読み込むスクリプトなどが典型です。取り込み時に置換文字や不正なバイト列をスキャンすれば機械的に検出できます。

キーの重複

同じファイル内に同じキーを持つエントリが2つ存在し、ローダーが最後に読んだ方が無言で勝ち、もう一方はエラーもクラッシュもなく静かに消えます。スプレッドシートのコピー&ペースト、同じキーを両方で追加したブランチのマージ、衝突チェックなしでファイルを連結する書き出し処理などが典型的な原因です。取り込み時に全ファイルの重複キーをスキャンすれば機械的に検出できます。

キーの欠落

重複の逆で、原文ファイルにはキーがあるのに、あるターゲット言語のファイルには対応するエントリが存在しない状態です。ゲームは実行時に原文へフォールバックするか、悪ければ空欄やキー名そのものを画面に表示します。原文ファイルに新しいキーが追加され、その更新がすべての言語ファイルに反映されなかったときに起こります。原文と各言語のキー集合を差分比較すれば容易に機械検出できます。

原文が変わったのに置き去りになった訳文

このリストの中で一番静かなバグです。キーは存在し、訳文も存在し、見た目には何も壊れていません。しかし翻訳後に原文が編集され(仕様変更や文言修正)、訳文はそれに追随していません。結果として、流暢で文法的に正しいのに、ゲームがもう実際にはしていない挙動を説明する訳文が残ります。表現がずれているかどうかの判断は人間の仕事ですが、「最後の翻訳より後に原文が変更された」という事実自体は機械的に追跡できるデータなので、少なくとも見落とされずにレビュー対象として浮かび上がらせることはできます。

関連記事