Morrowindの日本語化が古すぎるので、最新の中華版OpenMWを参考に、というかほぼ流用してMorrowindを日本語化できないかの試み。
これはその備忘録。
- 現在の日本語版の仕様
- 表示される文章(INFO)だけを訳す。
- システムが参照する検索キー(DIALトピックやCELL名)は英語のまま残す。
- 会話の中に英語の単語(Topic)が混ざるが、バグは起きにくい。
- 目指す道(中国語版と同じ道)
- 表示される文章だけでなく、システム内部の検索キー(DIAL)まで日本語化する。
- 画面の隅々まで日本語になる没入感があるが、「リンク切れ」という致命的なバグと常に隣り合わせになる。
dwing4g/openmwを使う
dwing4g/openmw は、ただのOpenMWではなく、中国語(マルチバイト文字)を正しく表示・入力・制御するためにエンジン自体を改造したカスタムビルド。
こいつを、いわば乗っ取って無理やり日本語対応させてしまおうってわけです。
UTF-8が使えるなら、日本語も正常表示させられる。
とりあえず、そのまま素の状態で序盤の導入を日本語化してみたい。
じつは、中国語版のMorrowindでは、すでに完全な翻訳が完了していて、Nexusで配布されている。
Unofficial Chinese Localisation for Morrowind by Pack Rat EN-CN
である。
これをリバースエンジニアリングして、2026年版の最新の日本語版を作ろう。
YAMPTを使ってリバースエンジニアリングする
YAMPT(ローカライズツール)で翻訳されたespとオリジナルの英語esmを比較して、どこをどう翻訳しているかを見てみる。

- みていくと、中華版ではespをGB2312(中国語文字エンコード)で翻訳していることがわかった。
- ただ、OpenMWがすでにUTF-8での表示に対応していた。
わざわざShift-JISで翻訳していく意味もないので、ここは素直にUTF-8のまま作業していく方針に決めた。
恐ろしい中国語版の翻訳作業量
中華版のespの翻訳をUTF-8に戻して眺めていると、とんでもないことに気づいた。

あろうことか、中国版は「完全翻訳(Hard Translation)」を目指すあまり、ゲームの内部で参照キーとして使われる「トピック名(DIAL)」全体を中国語に書き換えてしまっている。
つまりこの段階で、中国版のデータ構造は改造されすぎていて、ただ翻訳箇所を抽出しても意味がないことがわかった。
もしこのXMLを日本語に翻訳して注入しても、英語版のゲーム側には「中国語のキー」なんて存在しないため、マッチングせず一行も翻訳が反映されない。
どうすればいいか?
中国の同志たちが成し遂げたなら、我々にもできるはずだ
トピック(DIAL)も、ダイアログも、すべて日本語化した「完全日本語版(Full Translation)」を目指す。
まず、これを成し遂げるためにやるべきことを考える。
- 辞書(Glossary)を作る
まずトピックだけを抽出して翻訳し、「英日対訳リスト」を作る。
(例:advancement = 昇進, background = 生い立ち…) - さらに辞書を作る
FNAMやRNAM、DIALも抽出し、さらに辞書を拡充させていく - 本文を翻訳する
INFO(会話)やBNAM(プレイヤーの選択肢)を、作成した対訳リストに基づいて翻訳する
簡単そうですね。
とにかく、何ができるか考えてみよう。
実データを見ながら、日本語化の障害を調べていくことにした。
CELL名は翻訳できない?
.epsの中身を見ていると、中国語版CELL名1,440件のうち、わずか17件しか翻訳していない(98.8%がMISSING)。
これは、場所名を翻訳すると、ゲームが進行不能になる(詰む)確率が極めて高いから、ということらしい。
なぜ「トピック(DIAL)」は翻訳していいのに、「場所(CELL)」はダメなのか?
スクリプトが「場所の名前」を文字で指定しているから
これが最大の理由。
Morrowindのプログラム(スクリプト)の中には、以下のような命令がたくさん書かれている。
命令例:
Player->PositionCell 0, 0, 0, 0, “Balmora, Guild of Mages”
(プレイヤーを「Balmora, Guild of Mages」という名前のセルに移動させろ)
もし、CELLデータを翻訳して、場所の名前を 「バルモラ、魔術師ギルド」 に書き換えたとする。
- ゲーム内
場所の名前は「バルモラ、魔術師ギルド」(日本語)になった - スクリプト
スクリプトは英語で書かれているままなので、「Balmora, Guild of Mages」を探せ、と命令する - 結果
「そんな場所(英語名)は見つからない」 となり、テレポートが発動しない
クエストで飛ばされるはずのイベントが起きず、ゲームが進行不能になる。
だが、中国語版ではCELL名も含めた「完全翻訳」を成し遂げている。
調べていくと、中国語版はMorrowind.celを使用してセル名を翻訳していることがわかった。
中国語MODのCELL翻訳の仕組み
| 翻訳対象 | 方法 |
|---|---|
| セル名(場所名)1,423箇所 | .celファイル で翻訳 → ESPでは全部MISSING |
| FNAM, INFO, TEXT, BNAM等 | ESP で翻訳 |
- CELL_glossary.tsvの 1,423件のMISSINGが、.celの1,423件と完全に一致(カバー率100%)
- 中国語ESPのCELLレコードは1,226件中1,216件がMISSING
- つまり 意図的にESPではセル名を翻訳せず、
.celに任せている
.celの3,723行中、ユニークなセル名は1,423。同じセル名が複数回出現するのは、Morrowindのセルがインテリアで複数回参照されるため(テレポートや移動先の参照など)。
つまり日本語版でもMorrowind.celを作る必要がある。
TSVで差分を取る
問題点がわかったので、各espの中身(オリジナルの英語版と、完成している中国語版)を比較して、キーの判定や翻訳する箇所としない箇所の差分(diff)を取得し、TSV化してまとめた。
つまり、
- どのキーの
- どの文章を
- どこだけ
- どのように
翻訳しているか、というのを機械的にまとめて、作業しやすくしたわけです。
これは完成されている中国語版というお手本があるからできることであり、イチからこれを作成した中国の有志たちには頭が上がりません。

これで、あとは原文と中国語版を参考に、機械的に日本語化作業ができる。
Claude Haikuで翻訳を進める
英語→日本語の翻訳では、圧倒的にClaude Haikuが強い。APIのコストはかかるが、30,000行強あるMorrowindのダイアログすべてを手動で翻訳してたら、数カ月はかかってしまう。
なので、Pythonでバッチ翻訳スクリプトを作って、Morrowindでよく使われる用語などをプロンプトで渡しつつ、機械的に翻訳をさせることにした。

1,000件程度で0.19ドル(約30円)なので、基本的にはこれで下地をつくっていくことにした。
ただし精度はいまいちだった。
| カテゴリ | 件数 | 深刻度 |
|---|---|---|
| 用語集違反 | ~17箇所 | 高 |
| 訳語の混在 | ~30箇所+ | 高 |
| 中国語残留 | ~25箇所 | 高 |
| 文法・表現 | ~5箇所 | 中 |
AIが中国語参照訳に引きずられて「附魔」「狼人」「尸化病」等がそのまま残っていることも多かった。
用語厳守と中国語残留を防止しつつ、プロンプトを改良しながら進めることにしたが、入力が増えたのでコストが3倍に増えてしまった。
ただスピードは早い。中国の同士が何年もかけて作り上げたものを数日で完成させようというのだから、コスパはめちゃめちゃ良い。

DIALラインは2,098行で、100円くらいだった。
だが、かなり翻訳は改善されたものの、まだ精度が悪かった。
ここで得られたデータをもとにプロンプトで渡す用語集をさらに拡張して、プロンプトも改善した。
ツイッターでAIにわたすプロンプトはmd形式がいいよと聞いたのでそれも実施。
さらに素で翻訳→上から用語集や校正ルールを用いて修正をかけて、その変更ログをOpusに食わせてチェックをさせるようにした。

これでベースであるFNAM等の大まかな土台が完成。
細かくOpusで修正をかけながら、表記ゆれの修正とマスターを整備して、完全に辞書化する。

これでINFO(会話)、TEXT(本)以外のファイルの翻訳は完了。
マスターをもとにSonnetでINFOの翻訳を開始
INFOは30,000行以上あり、どうやってもコストがかかるので、なるべく修正が出ないように最初からSonnetで高品質な翻訳をさせていく。
1バッチにつき20行の翻訳を実行し、20バッチ(400行)ごとにレビューしてプロンプトを改善
30,000行すべてを翻訳するには、最低でも1,500バッチの処理が必要。

こればかりは時間がかかってしまう…。
つづく
コメント