【Baldur’s Gate 3】MOD日本語化・翻訳作業補助ツール作った

アップデート(9/10)で追加・改善した2つのポイント

1) 比較ビューの強化(見やすさ・作業スピードを最優先)

  • 3カラム表示: 原文(XML)/ 状態(例: JAなし)/ 備考(verEN, verJA, JAプレビュー)で一覧性アップ
  • XMLハイライト: Prismを使ってタグや属性が読み取りやすい(折り返し表示で横スクロール不要)
  • 列境界線&等幅フォント: ラインがそろい、差分の把握が速い
  • JA欠落だけコピー: 「JAなしの行」だけをワンクリでクリップボードへ(改行は1つに正規化)
  • EN補完行の強調: 「JA欠落をENで補完」後、補完された行が薄い青で自動ハイライト
  • 全幅切替ボタン: 画面幅をワイドにして一気にレビュー。状態は自動保存
目次

はじめに

BG3 の MOD を日本語化していると、

  • 統一された訳を作りづらい(固有名詞がそもそも多すぎる)
  • 固有名詞をひとつずつ探すのに手間がかかりすぎる
  • EN/JA の .loca.xml を突き合わせて辞書化するのが面倒

この辺を一気に解決するために、ローカル専用の翻訳補助ツールを作りました。

とりあえず自分はこれあればBG3以下DnD系の翻訳に困ることはないかなと…。

導入とインストール

GitHub
GitHub - mattarilightcha/BG3-Translation-DB-Tool Contribute to mattarilightcha/BG3-Translation-DB-Tool development by creating an account on GitHub.

上記のリリースページから、ソースコードをダウンロードしてください。

Source code(zip)というやつです。

① Python の準備

  • 必要バージョン:3.11以上(3.12や3.13でもOK)
    → Pythonっていうプログラムを動かすための“エンジン”みたいなもの。これがないと始まらない。

👉 Python公式サイト

  • Windows の人は「Add Python to PATH」にチェックを入れてインストール。
    • これを忘れると、次の手順がうまくいかないので注意!

② 仮想環境を作る

ツールを入れたフォルダの中コマンド操作をする。
(※コマンドプロンプトでもPowerShellでもOK。mac/Linuxはターミナル)

Windows の場合

  1. ツールを展開したフォルダを右クリック → 「ターミナルで開く」
  2. こんなコマンドを順に入力(コピペでOK):
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install --upgrade pip
pip install -r requirements.txt

macOS / Linux の場合

python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

これで「必要な部品(ライブラリ)」が揃う。

※もしエラーで lxml が入らないときは:

pip install --only-binary=:all: lxml==5.2.2

または requirements.txtlxml の行を消して再トライ。

③ サーバーを起動する

いよいよツールを動かす!

Windows の場合

  • フォルダにある run_dev.bat をダブルクリック(開発用)
    または run_prod.bat(本番用)
  • どっちでも動くから、どっちでもいいです。

macOS / Linux の場合

ターミナルで:

uvicorn api.main:app --reload

👉 起動すると自動でブラウザが開いて、
http://127.0.0.1:8000/ui/ が表示される。
これが翻訳DBの操作画面です。

対訳データーベースを取り込んであるので、そのまま準備なしで使えます。

このツールは MODを自動翻訳するツールではありません
翻訳そのものは Gemini などの AI 翻訳サービスに任せる想定です。

ただし、AI翻訳には大きな弱点があります。
それは 固有名詞や専門用語がバラついて統一されない こと。
キャラ名や呪文名、ゲーム特有の用語が毎回違う訳にされてしまうのです。

補助としてどのように使うか?

やることはシンプルで、
固有名詞やよく使われる単語を「対訳リスト(TSV)」として抽出・管理すること です。

  • MODや公式訳ファイルをインポートしてDB化
  • よく出てくる単語・固有名詞を検索・照会
  • 対訳TSV(英語→日本語) として一括エクスポート
  • 翻訳依頼時に、このTSVを「翻訳指示」と一緒にAIへ渡す

こうすることで、AI翻訳のスピードは活かしつつ、
固有名詞の精度・統一性を最大化 できます。

イメージで言うと…

AI翻訳は速いけど雑な通訳さん。
名前や専門用語をしょっちゅう間違える。

そこでこのツールが “カンペ(用語集)” を用意する。
「この人は“田中”、この魔法は“ファイアボール”って呼んで!」とメモを渡す感じです。

結果、

  • 速さはAI任せ
  • 精度は辞書でカバー
    という翻訳環境が完成します。

MOD日本語化ワークフロー(AI+Translation DB Tool)

1. AI環境の準備

翻訳に使うAIは何でもよいですが、おすすめは Google AI Studio
理由はシンプル:

  • 無料で使える
  • ほぼ無制限に大量の作業を投げられる
  • 長文データも処理できる

つまり「MOD翻訳のような大規模作業」に最適です。

2. MODの英語版言語ファイルを用意

翻訳元となるのは、MODに含まれている 英語版の言語ファイル
拡張子はだいたい .loca.xml とかで、
ゲーム内のセリフやUIテキストが全部ここに入っています。
bg3-modders-multitoolなどで.pak解凍して、Translationフォルダから引っ張ってこよう!

たいていEnglish/〇〇.loca.xmlみたいな感じで入ってる。
locaついてなくても言語ファイルなので、翻訳していこう。

3. 固有名詞リストをAIに作らせる

その 英語版xmlファイルの中身を丸ごとコピーしてAIに貼り付け、こう指示します:

「このテキストから固有名詞やゲーム内で頻出するであろう名詞を抜き出してください。
出力はテキストベースで、改行区切りのリストにしてください。」

AIはキャラ名、呪文名、スキル、能力値などを抽出し、
固有名詞リスト を返してくれます。

4. リストをTranslation DB Toolで照会

  1. 抽出したリストをコピー
  2. Translation DB Tool の「照会」タブにペースト
  3. 「照会」ボタンを押す

すると、リストの単語に対応する 既存の日本語訳(公式訳や過去訳) があれば一覧表示されます。

デフォルトでは候補が3つまで表示されます。とりあえず3つくらい候補を投げておけば、翻訳が安定するからです。

5. 対訳TSVを作る

照会結果はワンクリックで TSVコピー できます。
さらに「プロンプトタブ」で設定した 翻訳指示文(カンペ)」 が自動で先頭に差し込まれます。

つまり出力されるのは:

  • 翻訳指示文(プロンプト)
  • 固有名詞対訳リスト(TSV)

という AIに渡すための翻訳セット になります。
プロンプトは自分で好きなように編集してください。

私がよく使うプロンプトを置いておきます。ちょっと指示が硬すぎて使いづらいときもありますが。

あなたはプロのローカライザーです。
ゲーム内テキスト(XML)の翻訳を担当してください。
以下の制約と要件を必ず守ってください。

---

入力前提
- 入力は <contentList> 配下の <content> 要素群
- 翻訳対象は <content> 内部テキストのみ
- 空の <content> はそのまま出力(変更禁止)

---

翻訳ルール
1. 提供される「候補辞書(TSV)」と「翻訳資料」を最優先で適用
   - 確定訳 → 必ず採用
   - 候補のみ → 文脈一致度が高いものを優先
   - 辞書に無い場合のみ推測可
2. 固有名詞・スキル名・ゲーム用語は必ず統一
3. 原文の意味を正確に保持し、自然な日本語に翻訳する
4. 語調は常体(〜する)で統一

---

出力要件(厳守)
- XML構造を完全に保持(宣言 / タグ / 属性 / 改行位置を壊さない)
- タグ名・属性名・属性値は変更禁止
- Tooltip 属性値は翻訳しない(原文のまま)
- プレースホルダ [n] は同順・同数で保持
- 出力は必ず **XMLのみ**
- ★ 必ずコードハイライトで出力すること
- ★ すべてのXMLタグ(例: </LSTag>)は 文字エスケープして出力すること(例: </LSTag>)

---

禁止事項
- XML以外の出力(説明・前置き・後置き含む)
- タグや属性の改変 / 並び替え
- プレースホルダ [n] の削除や改変
- 意訳しすぎてゲーム効果を変える翻訳
- 存在しない <content> を勝手に生成
- 内部思考や補足文を出力すること

---

QAチェック(出力直前に自己確認)
- [構造] XML妥当性(タグ閉じ/属性保持/改行維持)
- [タグ] 内部テキストのみ翻訳、それ以外は原文通り
- [占位] プレースホルダ [n] を完全保持
- [禁則] XML以外を出していない
- [強調] ★ タグは必ずエスケープされているか確認

6. AIに本番翻訳させる

作成した プロンプト+TSV+原文 をAIに渡して翻訳開始。
AIは用語リストに従い、固有名詞や専門用語を統一して翻訳してくれます。

7. 翻訳を別会話でチェック

翻訳が出揃ったら、AIに校正させるのも効果的
ただし会話は分けるのがコツ。

  • 会話1:固有名詞抽出(リスト作成)
  • 会話2:翻訳(TSV+プロンプトで仮翻訳)
  • 会話3:チェックし本翻訳(原文+翻訳を突き合わせ、不自然な日本語や誤訳を指摘させる)

こうすることで、誤訳や変な日本語をかなり減らせます。

検索機能

シンプルに英文の公式訳を探す際に使います。
sizeで候補数を増減できます。

データベースへの翻訳インポート機能

作成した翻訳ファイル(日本語/英語)をそれぞれ全く同じ行数、同じUUIDで作成していることが前提ですが、訳の資料として既存データーベースへ追加できます。

一度翻訳したMODがアップデートされた場合などに、固有名詞がブレることを防ぐことができます。

比較(xml差分)機能

翻訳対象の英語XMLと日本語XMLを突き合わせて、各 <content> 単位で差分を表示します。出力は「原文」「状態」「備考」の3カラム構成です。

英語版XMLと日本語版XMLを貼り付けるだけで、「どこが翻訳されていて、どこがまだ未翻訳なのか」を一目で確認できます。つまりMODがアップデートされた時に、「言語ファイルに新しいテキストが追加されたか」「既存の翻訳に影響があるか」を素早くチェックできます。

こんな時に便利

  • MODの新バージョンがリリースされた
  • 「翻訳ファイルも更新が必要?それとも前のバージョンのまま使える?」
  • 「新しく追加されたテキストだけ翻訳したい」

使い方

  • 新バージョンの英語XMLを左の欄に貼り付け
  • 旧バージョンの翻訳済みの日本語XMLを右の欄に貼り付け
  • 「比較する」ボタンを押す

UUIDで差分を見るので、新たな項目があればハイライトされます。

結果の見方

  • 「一致」:旧バージョンから変わらず、翻訳済みの部分
  • 「JAなし」新バージョンで追加された部分これが重要!翻訳が必要)
  • 「本文差異」:翻訳されているであろうヤツ
  • 「ENなし」:削除されたテキスト

ですが、例えばアプデで効果が変わった呪文とか出てきた場合、単に「本文差異」になるので、こういうのが気になる場合は、「新バージョンの原文xml」と「旧バージョンの原文xml」を突き合わせて、同じUUIDで内容に変更があるヤツをチェックしておく必要があります。

便利な機能

  • 「JAなしをコピー」:未翻訳の部分だけをまとめてコピー。AIや翻訳ツールにそのまま貼り付けて翻訳作業ができます
  • 「JA欠落をENで補完」:空っぽの翻訳欄に英語を仮置き

翻訳照合(MODと公式の突き合わせ)

MOD英語XMLに含まれるテキストを、公式の英語/日本語ファイルと照らし合わせ、既存の公式訳を自動で拾い上げます。MODのテキストの中に「公式ゲームと全く同じ文言」が含まれていないかを事前チェックし、無駄な翻訳作業と公式訳との不整合を防ぐ機能です。

なぜ重要?

  • MODに公式と同じテキストがある場合、すでにゲーム内に公式訳が存在するが、UUIDが違うのでチェックが困難
  • それを知らずに独自翻訳すると→公式訳と表現が食い違う→プレイヤーが混乱
  • 事前に見つけておけば→翻訳作業をスキップ公式訳をそのまま流用

基本の流れ

  1. MODの英語XMLを指定(これ大事。変更を加えてないオリジナルのファイルということ)
  2. 公式の EN / JA ディレクトリを指定(空欄でもOK。未入力時は自動で既定パス data\bundles\bg3_official\EnglishまたはJapanese を参照するようになってる)
  3. 「照合して生成」を実行

出力結果

  • matched.xml: 照合に成功した行(既に公式訳が存在するもの)
  • unmatched.xml: 公式にないテキスト(MOD独自部分→翻訳が必要)
  • review.csv: fuzzy一致を有効にした場合の検証用ファイル。似ているが完全一致ではないもの(要確認)

とくにfuzzy一致機能を使う場合、便利なのですが気を付けないといけない点が多いので下記をよく読んでください。

fuzzy一致について(詳細解説)

fuzzy一致とは?

「完全に同じではないが、似ているテキスト」も候補として検出する機能です。公式テキストとMODテキストが微妙に違うけれど実質的には同じ内容の場合を拾い上げます。

なぜfuzzy一致が必要?

ケース1:句読点や記号の違い

公式:"Cast a spell that deals 2d6 fire damage."
MOD: "Cast a spell that deals 2d6 fire damage"

→末尾のピリオドの有無だけで「別物」扱いされてしまう

ケース2:スペースや改行の違い

公式:"Restores 50 hit points immediately."
MOD: "Restores  50  hit points immediately."

→スペースが多いだけで「一致しない」判定

ケース3:大文字小文字の違い

公式:"magic Missile"
MOD: "Magic Missile"

→実質同じなのに「不一致」になる

ケース4:軽微な表現変更

公式:"Deals 1d8 piercing damage to target."
MOD: "Deals 1d8 piercing damage to the target."

→”target”と”the target”で本質的には同じ

cutoff値の意味

cutoff = 0.8(既定値)

  • 80%以上似ていれば候補として表示
  • 推奨設定:ほとんどのケースでこれで十分

cutoff = 0.9(厳密)

  • 90%以上の類似度が必要
  • 誤候補は減るが、有用な候補も見逃しやすい

cutoff = 0.7(緩い)

  • 70%以上で候補表示
  • より多くの候補が出るが、関係ない文章も混入しやすい

fuzzy一致は「公式訳の見逃し防止」と「翻訳作業の最適化」のための保険機能です。完璧を求めず、cutoff 0.8で一度走らせ、review.csvで気になる候補だけチェックするのが実用的な使い方です。

比較へ移行ボタンについて

MOD照合の結果を、そのまま比較タブで確認することができるボタンです。ファイルを手動でコピペする手間が省けます。

具体的な使い方

Step 1:MOD照合を実行

  • MODの英語XMLと公式データを照合
  • matched.xmlunmatched.xmlreview.csvが生成される

Step 2:「比較へ移行」をクリック

  • matched.xmlが自動で比較画面に読み込まれる
  • 左欄:元のMOD英語テキスト
  • 右欄:公式訳が適用されたバージョン

Step 3:即座に差分確認

  • 「JAなし」:まだ翻訳が必要な部分
  • 「一致」:公式訳が適用済みの部分
  • 一目で「どこが埋まって、どこが残っているか」が分かる

おわりに

翻訳は最終的に「遊ぶ人の体験」を左右する部分。
キャラ名やスキル名が毎回バラバラだと immersion(没入感)が崩れてしまいます。
逆に、統一された自然な日本語が流れると、それだけでゲームの楽しさが倍増します。

このツールを使いこなして、
AIのスピード×辞書の精度×人のチェック という三位一体の翻訳環境を作り、
ぜひ快適な日本語化MODライフを楽しんでください。

寄付も受け付けてます

何卒宜しくお願い致します🥺

この記事が気に入ったら
フォローしてね!

コメント

コメント一覧 (2件)

  • 1. 匿名 2025/09/10(水) 14:35:02 ID:dbKfl}1 返信する

    セール中にバルダーズクエスト3買ったので助かります!洋ゲーのmodって凄い作品ばっかりなのに日本語でプレイできないのだけがネックなんですよね。翻訳してくれている人には感謝しかないんですが、自分でも簡単な翻訳が出来るツールがあればと思っていたので……。本当にベストタイミングでした!

    • 2. [まったりライトちゃん] 2025/09/11(木) 00:00:52 ID:j9.,+hv 返信する

      ありがとうございます!
      ちょうど良いタイミングで使っていただけて嬉しいです。
      また機能追加したりしてるんで、たまに見に来て下さい。

返信先: 匿名

目次