Ren'Py翻訳私的覚え書き

備忘録的な性質強め、というか……(後述)

前提いろいろ

Ren'Pyというノベルゲームエンジンの翻訳機能まわりの話です。
Lucid9: Inciting Incident(以下L9)
このゲームの翻訳をしようとしていろいろ悩んでいる過程の諸々であり、あまり一般的なRen'Pyに関しての内容ではありません。
Doki Doki Literature Club!(以下DDLC)
Doki Doki Literature Club v1.1.1 非公式日本語化パッチ
同じRen'Pyのバージョン6.99.14.3で作られたゲームであり、既に完成した日本語化パッチが作られているため、こちらを大いに参考にさせてもらっております。
以下図がいくつか出てきますが、説明の簡略化のため一部厳密には実情とは異なる表現が存在します。

基本的な翻訳

デフォ処理

Ren'Pyのスクリプトはlabelというブロックに分かれています。その中にセリフやら選択肢やらいろんなスクリプト操作やらが書かれており、それらを順番に呼び出すことでゲームが進行していく形になります。

Ren'Py付属の翻訳機能(ランチャー→翻訳の生成→翻訳の生成)を使うと、翻訳対象になるセリフと一部の文字列を自動で抽出して翻訳ファイル化してくれます。それらひとつひとつを翻訳してテキストとして入力、全部翻訳が終わったらそれを原作ゲームのフォルダに放り込むだけでゲーム自体が翻訳されます。カンタン!

但しRen'Pyが扱うことのできるスクリプトは非常に幅が広く、複雑な書かれ方をしていたりすると抽出してくれないセリフがたまにあったりします(例:原文赤字部分)。そのため、なんとかしないと右側の処理のように抽出されなかったセリフだけ未訳のままになってしまう、ということが起こってしまいます。

これをどうするかというと、実は少し前までL9はRen'Pyのバージョンが少し古かった(6.99.9)ことが原因で、原文を書き換えることでしか対応できませんでした。そうするとパッチ適用時に原作ゲームのファイルを上書き置換する操作が必要になり、せっかく翻訳ファイルを放り込むだけで翻訳できるようになってるゲームエンジンなのになんだかなー、という個人的な蟠りがありました。
しかし最近になってバージョンが6.99.14.3に上がったことで今までできなかった手法を取れるようになり、選択肢が増えました。

labelの置換

label単純

6.99.14.3で新しくlabelまるごとの翻訳(置換)ができるようになりました。(正確には6.99.9ではおそらくエンジン側のバグで正常に動かなかったものと思われます)

自動抽出されないセリフが含まれているscene2の翻訳をまるごと置き換える形で行うことで、原文のscene2が呼び出されたときtranslate labelで置き換えたものが読み込まれる形になり、ゲーム上で表示されるものがすべて翻訳できます。labelひとつをすべて正確に書き換えることになるので、ただ翻訳した文章を入力するだけでよかった前項の作業より多少手間にはなりますが、結果オーライです。

しかしDDLCのパッチではこの形式の置換は採用されていません。それは、置換されたlabelの途中で言語を変更できなくなるからです(未確認ですがおそらく原文の同じlabelの最初に戻ってしまうと思います)。
これは、言語がjapaneseの状態だと原文のscene2が読み込まれず、言語がNone(デフォルト)状態だとtranslate labelの方が読み込まれないため、各々のlabel内でどこまで読み進めたかという位置情報に互換性がないからです。

DDLC日本語化方式

画像3

その問題をDDLCがどう解決しているのかというと、自動抽出されないセリフを含むlabelのすべてのセリフをlabel化するという手法を取っています。scene2のすべてのセリフをlabelを呼び出す書式に置換し、現在の言語のセリフlabelを呼び出すようにしているわけです。これによって、いつ言語を変更しても正しく対応するセリフに変更されるようになっているわけです。

パッチの作者さん曰く「無理やり」とのことです。

さてどうしよう

どうして今更こんなことをまとめたかというと、今後のL9パッチの形式をどうするか悩んでいるからです。目下のところ思いつくのは3方針。

1.今まで通り
原文書き換え、ファイル上書き型のパッチ。
メリット
・作業するテキスト量が最小で楽
・一本道なので想定外の事態が起きにくい
デメリット
・ゲーム内での言語変更が物理的に不可能
・せっかくのRen'Pyだというのに上書きを必要とするのが気に入らない(こだわり)

2.DDLC方式
メリット
・ファイルを追加/削除するだけのパッチになる
・ゲームプレイ中の言語変更が可能
・完成系かつ知名度の高いお手本があるので、何か起きても調べたら事例がすぐ出てくる
デメリット
・ほぼ全文イチから書き換え直し、作業量がパネェ
・実装が無理やり、スマートじゃない(こだわり)

3.translate機能だけでなんとかする
メリット
・ファイルを追加/削除するだけのパッチになる
・スクリプトがそれなりにきれいになる(こだわり)
デメリット
・自動抽出されないセリフを含むlabel中での言語変更が物理的に不可能
→言語変更オプションをタイトル画面のみにして制限する等で対策可?
・言語変更に応じたセーブロード時の処理が面倒なことになる

デメリットが総じて面倒なだけか要らないこだわりしかない辺りに自分の怠惰さをありありと感じますが、趣味としてやってる以上作業にも楽しさを追求していきたい(真顔)。まあ、単純にDDLCの数十倍のテキスト量になるので現実的な話として作業量が段違いすぎるというのはあります。

個人的には今のところ独自性を出せる3に惹かれつつありますが、そもそもまだ翻訳自体が最後まで終わっていない(二年半かかって全体の2/3も進んでいない)ので、それが終わるまでぼちぼち悩んだりラジバンダリするつもりです。


以上、ただの個人の日記でした。

この記事が気に入ったらサポートをしてみませんか?