対応エンジン · Ren'Py
Ren'Py は支配的な Python ベースのビジュアルノベルエンジンで、インディーのキネティックノベルから長寿の成人向け VN まで、あらゆるものに使われています。RuneTranslate は 3 つのモードで翻訳します:ソース駆動プロジェクト(game/**/*.rpy)、コンパイル済みのみのリリース(.rpyc、バンドルの unrpyc サイドカーでデコンパイル)、アーカイブのみのリリース(.rpa、自動難読化キー検出付きのバンドル rpatool サイドカーで展開)。say / ナレーション / メニューの行に加えて _() / __() / _p() の UI 文字列を抽出します。エクスポート時に、セリフとメニューは実行時に適用されます:生成された .rpy が各ソース行を内容照合(config.say_menu_text_filter)で game/rt_translations.json のマップと突き合わせ、ゲームの言語をあなたの翻訳に強制します — Ren'Py のネイティブな id ベースの tl/ ブロックは意図的に使いません。その id は常に再現できるとは限らないからです。_() の UI 文字列だけが本物の game/tl/translated/translation.rpy ブロックとして書かれます。非ラテンのターゲットには、RuneTranslate は CJK / タイ語 / アラビア語対応のフォントをバンドルし、ゲームのフォントを config.font_replacement_map を通してルーティングするので、翻訳されたテキストがボックスとしてレンダリングされることはありません。何も再パックされません — 追加の .rpy ファイルと JSON は元のものの隣の game/ に置かれます。Supporter ティアの用語集と組み合わせて、長い VN 全体でキャラクター名と特徴的な用語を固定しましょう。
Ren'Py の VN はキャラクターの声で生き死にします — そしてヒロインが 3 つのシーンで 'Alice' / 'Aris' / 'Arisu' と呼ばれると、読者の没入を素早く壊します。すべてのキャラクター名、主人公のニックネームのバリエーション、地名、造語の世界観用語を用語集で固定しましょう。マスクはプロバイダー非依存なので、予算重視の実行で DeepL を使っていても、セリフの多い本編章で Claude を使っていても、用語は同一のままです。 用語集の基本 →
RuneTranslate をゲーム実行ファイルを含むフォルダに向けます。エンジン検出はプロジェクトをソース駆動(.rpy あり)、コンパイル済み(.rpyc のみ)、アーカイブ(.rpa のみ)に自動分類します。バンドルの unrpyc と rpatool サイドカーが自動的に実行されます — Python のインストール不要。
ターゲット言語(30 以上のうち 1 つ)とプロバイダーを選びます。Anthropic Claude と OpenAI GPT-4o は、トーン、レジスター、オノマトペを統計的 MT よりよく保持するので、Ren'Py のセリフに最も強いです。DeepL は長い描写ナレーションに堅実な次点です。
RuneTranslate はすべての翻訳可能な行(セリフ、選択肢テキスト、画面ラベル、UI 文字列)を抽出し、バッチ化します。Ren'Py 固有のタグ([[player_name]]、{color=#fff}…{/color}、{b}…{/b})は翻訳中マスクされるので、LLM はそれらを不透明なプレースホルダーとして扱い、その後そのまま復元されます。
RuneTranslate はいくつかの小さなファイルを game/ に置きます:rt_translations.json マップと、各ソース行を実行時に内容照合(config.say_menu_text_filter)してあなたの翻訳に言語を強制する生成された .rpy。これにより、.rpa を再パックせずにセリフとメニューが翻訳されて表示されます。_() の UI 文字列は game/tl/translated/translation.rpy に置かれ、ターゲットが必要とする場合は CJK / 非ラテンフォントがバンドルされます。翻訳器を再実行しても手編集した行は保持されます。