翻訳用語集 101 — 機械翻訳全体でキャラクター名と用語を固定する
機械翻訳は固有名詞を平板化します。翻訳用語集は、あらゆるバッチ・あらゆるプロバイダーにわたってソース→ターゲットの用語ペアを強制置換します — だからヒロインの名前は第1章でも第47章でも同じに読めます。RuneTranslate のプレースホルダーマスクの仕組み、TM と用語集が連携する場面、そして翻訳者間で用語集を共有する CSV ワークフロー。
200行の日本語ビジュアルノベルを DeepL にかけると、ヒロインの名前が Alice と出てきます。次の200行を流すと Aris に。その次のバッチは Arisu に決めます。第4章になる頃には、どの場面を読むかによって彼女の名前は3つになっています。
これは長編ナラティブゲームにおける機械翻訳の、群を抜いて最も多い失敗パターンです — 文法の悪さでも、ぎこちない言い回しでもなく、一貫しない固有名詞です。プロバイダーはバッチ間の記憶を持たず、名前を見るたびに最もそれらしいローマ字表記をただ推測するだけ。40時間の RPG 全体にわたると、この揺れは読める翻訳を、まるで4人の別々の人が訳したかのように感じさせてしまいます。
翻訳用語集がこれを解決します。ソースからターゲットへの用語ペアを一度だけ定義すれば — アリス → Alice、勇者 → Hero、魔王 → Demon Lord — あらゆるプロバイダーのあらゆる翻訳バッチがそれを尊重します。プロバイダーはそれらの用語を生の形で目にすることすらありません。この記事はまさにそれについてです。
用語集とは実際に何なのか
RuneTranslate における用語集は、3列のルールのリストです:
- source — 固定したいソース言語の部分文字列(既定では日本語。対応するあらゆるソース言語)(例:
勇者) - target — 出力でどう表示させたいか(例:
Hero) - targetLang — このルールが適用される出力言語(なので、英語 + スペイン語 + ドイツ語をまとめてカバーする1つの用語集を持てます)
典型的なビジュアルノベルのキャスト一覧向けにこれを30個追加すれば、固有名詞の揺れという問題群を丸ごと一気に消し去れます。
プレースホルダーマスクの仕組み(プロバイダー非依存)
用語集を強制する素朴な方法は、プロバイダーの実行後にターゲット用語を差し込む正規表現を書くことです。それは DeepL では一応動きますが、LLM プロバイダーでは失敗します。LLM は翻訳した用語の周りで文をすでに言い換えており、正規表現による置換は宙ぶらりんの冠詞や妙な大文字化を残してしまいます。
RuneTranslate は用語集の用語を、プロバイダーに届く前にマスクします。ランナーはバッチ化された各ソース文字列を走査し、用語集のソースをすべて数値プレースホルダー — [[G0]]、[[G1]] など — に置き換えます。プロバイダーには、誤訳しようのない不透明なトークンだけが見えます。戻り道では、それらのプレースホルダーがあなたのターゲット用語に置き換えられ、その上にエンジンタグのマスク(RPG Maker のコード、KAG タグ、Ren'Py の補間)が復元されます。
その結果、用語集の用語は DeepL でも、OpenAI GPT-4o でも、Anthropic Claude でも、無料の Google Translate でも同一にレンダリングされます。同じマスク、同じ復元ステップ、同じ最終出力です。
優先順位 — TM が用語集に勝ち、用語集がプロバイダーに勝つ
翻訳バッチがランナー内部でどう処理されるかを知っておく価値があります。なぜ用語集の編集がプロバイダーのクレジットを消費しないのか、そして翻訳メモリが用語集とどう連携するのかを説明してくれるからです:
- 翻訳メモリ(TM)のショートカット。 この完全に同じソース文字列を過去のいずれかのプロジェクトですでに翻訳していれば、キャッシュされた翻訳が即座に提供されます — プロバイダー呼び出しゼロ、コストゼロ。そのユニットはプロバイダーが見る前にバッチから取り除かれます。
- 用語集マスクが、TM で提供されなかったユニットに適用されます。
- プロバイダー呼び出しがマスクされたテキストに対して行われます。これがお金がかかる/割り当てに算入される唯一のステップです。
- 復元 — 用語集のプレースホルダーがあなたのターゲット用語になり、その上にエンジンタグが復元されます。
- TM への書き込み — 最終的に翻訳された行がキャッシュされ、次にこの日本語を見たときはステップ1に無料で戻ります。
TM のヒットは最大のコスト削減、用語集は最大の品質向上です。両者は組み合わさって相乗効果を生みます。行を一度手で編集すれば TM にキャッシュされ、用語集はキャッシュヒットでも新規バッチでも固有名詞を一貫させます。
TM と用語集の相互作用(バイパスガード)
知っておく価値のある微妙なエッジケースが1つあります。3か月前に 勇者 を含む100行を用語集なしで翻訳し、TM がそれらを Warrior / Champion / Hero とランダムにキャッシュしていた — そして今 勇者 → Hero を用語集に追加したら、どうなるでしょう?
素朴に考えれば、次に 勇者 を見たとき TM は依然として Warrior を返すでしょう — 結局それがキャッシュされたものだからです。RuneTranslate はこれに備えます。TM ヒットの時点で、用語集のソースが現在のユニットに現れ、かつキャッシュされたターゲットが用語集のターゲット表記を含まない場合、そのキャッシュヒットはバイパスされ、そのユニットは新規のプロバイダー呼び出しへと落ちていきます。実行終了時のサマリーには「N 個のユニットが用語集の変更を反映するためにキャッシュをバイパスしました」という行が表示されるので、それが起きたことが分かります。
正味の効果: 古いプロジェクトに新しい用語集エントリを追加しても、古びた翻訳に縛られることはありません。影響を受けたユニットに対して翻訳パスを再実行するだけです。
用語集を作る — 何を追加するか
典型的なプロジェクトでは、影響の大きさ順に並べましょう:
- まずキャスト一覧。 名前のある全キャラクター。可能なら wiki / VNDB / ゲーム自身のクレジット画面から引いてきます。これだけで長編ゲームの揺れの80%が消えます。
- 次に場所。 町、ダンジョン、地域、王国。特に、ローマ字表記が複数あり得る漢字で書かれたものは何でも。
- 3番目に必殺技 / スキル。 ボスの攻撃名、繰り返し出る呪文名、特殊技名。RPG や戦闘の多い VN では重要です。
- 4番目に世界固有の用語。 ゲームが種族 / クラス / アーティファクト / 通貨に使う造語。
追加すべきでないもの: ありふれた語。剣 → sword は誤検出のもとです — 剣 を含むあらゆる複合語(魔剣、聖剣、剣士)を固定してしまい、それらはプロバイダーが自力で問題なく訳せたはずのものです。用語集エントリは文字どおりの部分文字列一致なので、固定したい固有名詞に固有となるだけの十分な長さを保ちましょう。
CSV のインポート / エクスポート — 用語集を共有する
共同作業者とファン翻訳プロジェクトを訳していますか? 設定の用語集タブには CSV をインポートと CSV をエクスポートのボタンがあり、あなたのエントリを RFC-4180 の CSV ファイルで往復させます:
source,target,targetLang
勇者,Hero,en
アリス,Alice,en
魔王,Demon Lord,en
村人A,Villager A,en
勇者,Héroe,es
ヘッダー行は必須です。カンマ、引用符、改行を含むフィールドは二重引用符で囲まれ、埋め込まれた引用符は "" としてエスケープされます。インポート時は任意の BOM 付き UTF-8(Excel は既定で UTF-8-BOM として書き出します)。空行やサポートされていない targetLang コードの行は、行ごとの理由を添えてスキップされます。
インポートには Merge モード(CSV の行を現在の用語集の上に追加し、source+言語で重複排除、競合時は CSV を優先)と Replace モード(既存を消去し CSV の内容だけを使う)があります。Merge は部分的な用語集を共有する共同作業者に適した既定値で、Replace はアーカイブ / バックアップの復元に適しています。
現在の制限
- 文字どおりの部分文字列一致のみ。 正規表現もワイルドカードもありません。
勇者よと勇者だの両方を固定する必要があるなら、今のところは2つのエントリを追加します。 - ターゲット言語ごとのペア。 用語集エントリは1つの出力言語に紐づきます。「source=勇者, targets=Hero (en) + Héroe (es) + Held (de)」を1行で定義することはできません — 3行を追加します。CSV フォーマットはこれを自然にサポートします。
- Supporter / Pro ティア限定。 無料ティアでは用語集カードは表示されますが、エントリは翻訳実行に影響しません。案内ダイアログは Patreon を指し示します。
まとめ
機械翻訳のあらゆる品質レバーの中で、用語集は労力に対する効果の比率が最も高いものです — 10分かけて作れば、後から一貫しない名前を手で直す何時間もを節約できます。キャスト一覧から始め、まず一次パスを出力し、結果を読み進めて揺れに気づくたびに用語を追加していきましょう。
トーンをうまく扱えるプロバイダー(VN には Anthropic Claude が私の既定です)と組み合わせれば、あなたの出力はすでに「読める機械翻訳」の閾値を超え、「軽い手直しでファン翻訳として公開できる」領域に入っています。
実際のプロジェクトで用語集を試すには RuneTranslate をダウンロード。これは Supporter($3/mo)の機能で、無料ティアはエンジン + プロバイダーについて引き続き完全に開放されています。
RuneTranslate を試してみませんか?
無料プランですべてのエンジンとすべての翻訳プロバイダーが使えます。Supporter(月額 $3)ならフルスピードで翻訳できます。
Windows 版をダウンロード