
攻略ガイド / 開発の裏側
私たちがスマホゲームを14言語に翻訳した方法
私たちのAndroidゲームを14言語で出すまでに必要だったこと。テキストファイルの構成、複数形のルールとフォントが大切な理由、何度も繰り返された翻訳ミス、ヨーロッパのスマホでだけ起きるバグ、そして14言語が16のストア掲載情報になる理由です。
私たちの6つのゲームはすべて、14言語に完全翻訳されています。英語、ドイツ語、スペイン語、フランス語、クロアチア語、インドネシア語、イタリア語、日本語、韓国語、ポルトガル語、ロシア語、スロベニア語、トルコ語、繁体字中国語です。最初の4本、『Idle Ronin』『Idle Summoner』『Idle AI Factory』『Block Brain』には合わせて約2,100の英語テキストがあり、『Block Brain』の254から『Idle Ronin』の1,253まで、それぞれが13回翻訳されています。『Idle Restaurant: Miami』と『ONI Snakes』も同じ14言語でリリースしました。ここでは、そのために必要だったことと、次もまたやることを紹介します。
言語ごとに1つのテキストファイル、文脈つき
各ゲームは言語ごとにシンプルなテキストファイルを1つ持っています。1つのエントリは、@の付いた英語の原文の行と、そのあとに続く=の付いた訳文でできていて、ほとんどのエントリには翻訳者向けのコメントがあります。これは『Idle Summoner』の英語ファイルにある最初のモンスターです。
# monster name with its number in the summon chain (1-55); names appear on small labels
@ {0}. Slime
こうしたコメントは、私たちが加えたものの中でいちばん役に立ちました。『Idle Summoner』の英語ファイルには、258のテキストに対して156のコメントがあります。テキストが小さなラベルに表示されることや、{0}が数字であることを知っている翻訳者は、言葉だけから推測する翻訳者よりずっとミスが少なくなります。
英語のテキストそのものをキーにするとファイルは読みやすくなりますが、落とし穴もあります。両方の列で同じテキストだからといって、英語のまま残すべき名前とは限りません。『Idle Ronin』では、最初の1,185エントリのうち約680が英語のテキストと一致していました。英語のまま残すのは本物の固有名詞だけで、19体のガーディアンの名前、ユニット名、12の衣装がそれにあたり、ビルドスクリプトがまさにそれらをロックしています。
複数形のルールは省略できない
英語には1 unit、2 unitsの2つの形があります。もっと多くの形を持つ言語も多く、ルールもそれぞれ違います。私たちのLocコードは、Unicode CLDRの表にある整数の複数形ルールに従っています。
| 言語 | コードで使う形 |
|---|---|
| 英語、ドイツ語、スペイン語、イタリア語 | one、other |
| フランス語、ポルトガル語 | one(0と1)、other |
| クロアチア語 | one、few、other |
| ロシア語 | one、few、many |
| スロベニア語 | one、two、few、other |
| トルコ語、インドネシア語、日本語、韓国語、中国語 | 1つの形のみ |
意外に思われるのはスロベニア語です。2のための専用の形があるので、「2 enoti」と「5 enot」では語形が違います。コードが単数と複数しか知らなければ、これらの言語はどれもどこかで文法の誤りを表示してしまいます。
フォント:足りないと気づかなかった文字
『Idle Summoner』のテキスト用フォントは、Noto Sans KR Blackを削ったコピーで、č、š、ž、ć、西ヨーロッパのアクセント記号、トルコ語の文字、繁体字中国語が含まれていませんでした。足りない文字は端末のフォントで代用されるか、まったく表示されませんでした。そこで表で使うすべての文字を含めてフォントを作り直し、日本語用にNoto Sans JP、繁体字中国語用にNoto Sans TCを追加しました。ゲームのピクセルフォントのラベルは、そのフォントにある文字でテキストが書ける場合にだけ、そのフォントを使い続けます。
フォントが誤解を招くこともあります。『Idle Ronin』の韓国語フォントでは、大文字のNの形のせいで、ONとOFFが「OΠ」のように読めてしまいました。そこでこれらの切り替えを韓国語の켜기と끄기に変えました。そのほうがもともと読みやすいのです。
どの言語でも繰り返されたミス
どんな方法で翻訳しても、最初の訳がそのまま使えることはまれです。私たちの場合、ほぼすべての言語で同じいくつかのミスが繰り返されました。最初に見つけたのは、私たち自身によるスロベニア語訳のチェックでした。
- グラフィック設定の「Particle」が、「エフェクト」ではなく物理用語として訳されていた。
- ユニットの追加コピーを指す「Stack」が、英語のまま残されるか、「コピー」ではなく「山」と訳されていた。
- Treasure Chestという名前のモンスターを倒すミッションが、宝箱を壊すミッションとして訳されていた。
- 1、2語しか入らない行やバッジに、全文の長さで訳されたテキストが入っていた。
- 「FIGHT FLOOR {0}」に余計な動詞が入り、ボタンが長くなりすぎていた。
そこで、どの言語でもまさにそれらのテキストを書き出すチェッカーを作り、翻訳を始める前にそのリストを渡すようにしました。リストを手元に置いて訳した2言語は修正が不要でしたが、リストなしで訳した言語はそれぞれ約6か所の修正が必要でした。
ファイルだけでなく画面を確認する
ファイルがそろっていても、画面には英語が残っていることがあります。私たちのテスト方法はこうです。ゲームを別の言語に切り替え、画面に見えるテキストをすべて集めて、英語ファイルと比べます。英語のまま残っているものは、コードが一度も翻訳していないラベルです。『Idle Ronin』ではこの確認で、常に表示されているOPENボタンと、メニューを最初に開いたときの言語のまま固まっている設定ボタンが見つかりました。
次に、実際のスマホの解像度で収まるかを確認します。私たちは、いちばん長くなる言語と日本語、韓国語、中国語、ロシア語で、すべての画面を1080 x 2400で見ています。そして、誰も読めなくなるまで文字を縮めるより、テキストを短くするほうを選びます。
ヨーロッパでセーブを壊すカンマ
言葉とはまったく関係のないバグもあります。開発中のあるゲームでは、セーブデータが数値をカンマでつないでいます。ヨーロッパの多くの地域のように、小数をカンマで書く言語の端末では、7392.58が7392,58になり、余分なカンマで数値が2つに割れて、その後の値がすべて1つずつずれます。英語でテストしている開発者には決して見えません。修正は、起動時に数値の書式をインバリアントカルチャーに固定する1行と、すでに壊れたセーブでも読み込めるようにする保護です。
14言語、16のストア掲載情報
Google Playでは、スペイン語はスペインと中南米、ポルトガル語はポルトガルとブラジルで掲載情報が分かれています。ゲーム内の翻訳は言語ごとに1つですが、ストアの文章は市場ごとに、それぞれの検索キーワードで別々に書いています。その結果、1ゲームにつき16の掲載情報があり、それぞれにタイトル、簡単な説明、詳しい説明、スクリーンショットがあります。私たちのウェブサイトも同じ形をとっていて、その作り方は別の記事で紹介しています。
次もまたやること
- すべてのテキストに文脈のコメントを書く。
- 固有名詞は翻訳者の頭の中ではなく、ビルドでロックする。
- 最初の翻訳が届く前に複数形のルールを実装する。
- 表で使うすべての文字がフォントに入っているか確認する。
- 既知の問題テキストのリストを用意し、最初に渡す。
- 別の言語で画面を見て回り、残った英語を探す。
- セーブデータはインバリアントカルチャーで書き出す。
- 14ではなく、16のストア掲載情報を見込んでおく。
結果を見てみたいですか?『Idle Ronin』『Idle Summoner』『Idle AI Factory』『Block Brain』『Idle Restaurant: Miami』『ONI Snakes』で言語を切り替えてみてください。どれも14言語すべてに対応しています。
出典
- Unicode CLDR、Language Plural Rules。
- ONI Gamesのゲームコード、2026年9月:Idle Summoner(Loc.cs、LocFonts.cs、Localization/Summoner/en.txt)、Idle Ronin(Localization/Ronin)、Idle AI Factory(Localization/AIFactory)、Block Brain(Localization/Brain)。








