English version is available here:
現在制作中の XeGrader plus では、ワールドワイド対応として個人ではなかなかあり得ない 24ヶ国語対応をしています。今回は、この 24ヶ国語対応をどのように実装して、どういう苦労があったかの話をしていきます。
- 多言語対応の仕様決め
このゲームの前身である MSX2版では、既に日本語と英語の切り替えは行っていました。ただ、設定画面などはなかったため、言語の対応はオープニングメッセージとタイトルロゴの表示切替だけで済んでいます。XeGrader plus は Steam で動かします。PC ベースで動作させるゲームでは、どうしたって設定画面が必要になります。ここは翻訳が大量に必要になります。
また、今回は画面下に選択項目の説明が表示されるような仕様にしています。そのため、対応が必要な文字数は、前作とは比較にならないほど、爆発的に多くなります。幸いにして Steam では、PC での動作ということもあり、メモリ不足に関してはほぼほぼ考慮しなくて済むため、メンテナンスしやすい仕様にしようと最初から決めていました。
考えた結果、以下の仕様で開発を進めることに
- デフォルトは英語
- 最初の起動で OS(Steam)に設定された言語を選択
- 未対応言語の場合は英語のままとする
- 設定画面で言語切替可能とする
- 各言語情報は自分で管理して外部ツールに頼らない
- 選択された言語は Steam cloud に保存する ※
※ ネットが使えない環境を考慮してローカルにもバックアップを保存する
- 各言語情報の格納方法
開発は Godot を使用しています。この Godot の GDScript には単なる配列の他に辞書配列もありましたので、この辞書を基本的には利用してデータを用意することにしました。辞書のキーは言語記号を用います。但し、標準的な言語記号だと例えば PT-BR ではマイナス記号が使われるため、データとしては個人的にはあまり好ましく感じないため、アンダースコアに置換するなどしています。
const LANGUAGE_LIST = [ "en", "ja", "fr", "de", "es", "latam", "pt", "it", "nl", "pl", "pt_br", "hu", "sv", "no", "fi", "et", "tr", "ro", "th", "id", "da", "cs", "vi", "ko", ]
これが今回採用した言語記号一覧です。並びに関しては、ai と相談して決めました。英語はデフォルトなので先頭、制作者たる私がいる日本が2番目、以下は欧州とアジアという感じで並べてあります。また、言語名の長さで多少前後の入れ替えなどもしています。フランス語やドイツ語は全般的に長いんですよね…。
この LANGUAGE_LIST のキーから文字を取り出せるようにしているのですが、使うたびにいちいちキーから取り出すのは、冗長に感じたため辞書データを取り出す専用のエントリを設けています。例えば、ゲーム開始直後のPrologue表示では…
#プロローグ var prologues: String: get: return _prologues[Common.language] var _prologues: Dictionary = { "en": "The Great Demon King of calamity, Varamos, ...
"ja": "災厄の大魔王バラモスが遂に復活を遂げた。... "fr": "Le Grand Roi Démon de la calamité, Varamos, ...
辞書データは _prologues ですが、公開プロパティとして prologues も用意して、ここから文字列を取り出すと、自動的に設定された言語(Common.language)の文字列が取り出せるようになっています。そのため、例えば print(MSG.prologues) と書くだけで、言語が自動的に切り替わるようになっています。




- 翻訳データについて
私は日本人なので、初期のメッセージは当然日本語で書いています。英語は多少は分かりますが、それ以外の言語は殆ど分かりません。Bonjour とかの「こんにちは」、S'il vous plaît とかの「お願いします」や、Merci beaucoup とかの「ありがとう」、この3種類だけで当該外国には行けるとは思ってて、実際、この3つだけでフランスのモン・サン・ミッシェルに観光に行ってきました。
今はスマホで ai による自動相互翻訳が出来る時代になりましたので便利ですよね。そこで、XeGrader plus でも ai 翻訳を活用することにしました。外国語を日本語に ai 翻訳してもそこまでおかしな日本語には変換されないことから、全く読めないよりカタコトでも自国の言葉で読めたほうが良いだろうという配慮からです。
ストアメッセージも ai 翻訳を活用して、最初のストア公開はほぼ ai 翻訳のみで構成しています。そして、予想された結果ではありますが、掲示板等で「AIなんて使うなよ」という反感は出ています。これは私には想定の範囲内でした。それよりもまずは各国語で公開するのが先です。
その後、各国の有志に翻訳の手伝いを呼びかけて、現在は 9ヶ国語は現地の人による翻訳に切り替わっています。これも公開があればこそだと思っています。現在ストアに正式に反映されている翻訳メッセージ言語は以下のとおりです。
English Japanese Français Deutsch Italiano Nederlands Polski Español (España) Español (Latinoamérica)
Português (Brasil) も翻訳進行中ですが、まだ完了していない状態です。

- 苦労した点
まず、文字の長さが全然異なる点です。表示領域はある程度決まっていますので、そこに入りき切らない場合は、表現方法を変えるか、フォントサイズをちょっとだけ小さくするか、極端な場合は英語表記を残すかとか、様々な判断が必要になりました。まあ、これは本業の仕事でもローカライズ作業でいつも苦労しているので、慣れているといえば慣れてはいますが…。
タイ語や韓国語は、実は最後まで導入を悩んだ言語になります。理由は、どうしても専用フォントの組み込みが必要になるためです。欧州言語に関しては、一種類のフォントで全てをカバー出来るので良かったのですが、これらの言語はどうしても専用になります。まあその意味では当然日本語も専用フォントになりますが、これは私が日本人だから仕方がないと割り切ってます。
フォントは組み込み可能なフリーのものが少なくて、結局、その殆どは Google Fonts に頼っています。
Google Fonts used in this game • WDXL Lubrifont JP N • Roboto Flex • Noto Sans Thai • Noto Sans Japanese • Noto Sans Korean • Noto Color Emoji • Ubuntu Mono • Bebas Neue
英語系に関してはこちらのフォントを使用しています。
Tagesschrift-Regular.ttf by Jan Gerner (Yanone) Licensed under the SIL Open Font License, Version 1.1 (26 February 2007)
また、レトロPC系で使用している門真さんのドットフォントも DLCでは引き続き使用することになります。
8×12-dot Japanese font k8x12S by Namu KADOMA Free to use, modify, and redistribute commercially or noncommercially. Provided "as is", without warranty.
そして、日本語のPrologueだけ、怖い雰囲気を出したかったので、別途購入したフォントを、画像化して使用しています。フォントデータそのものは盗難の恐れがあるため入っていません。
g_comickoinM_JISLimit.ttf by GYOKUEI / ZARASU.com Commercial and non-commercial use permitted under the author's original license. Redistribution or resale of the font file is prohibited.
これらのライセンス管理が案外大変でした。多言語を扱うということは、多種多様なフォントを扱うことになり、それらのフォントは別の人が作成した著作物になるため、厳格な管理が必要になります。この権利関係のとりまとめは仕事ではやっていますが、まさか個人制作物で同じようなことをすることになるとは…
あと、フランス語とかならまだなんとなく雰囲気は分かるのですが、タイ語とか韓国語になると全くの未知の言語でして何が書いてあるのかさっぱり分かりません。そのため、翻訳データが混ざってしまいますと、私では間違いに全く気がつくことが出来ません。その確認の意味でも、翻訳を確認する有志の手助けを必要としています。NEXT FES 6月をターゲットに考えていますので、3月中に有志が現れない場合は、このまま ai 翻訳で進めます。あなたの挙手を心からお待ちしております。
コメント