XUnity.AutoTranslator の使い方 覚書
XUnity.AutoTranslator を使ってSuzerainの日本語化をしています。
ゲーム内ファイルで日本語化できる部分はそちらで行っているのですが、テキストが散らばっており、集めるのが大変な物やややこしいものはXUnity.AutoTranslatorに頼っています。
今日はXUnity.AutoTranslatorの小技を少し紹介します。
この画面ですが、XUnity.AutoTranslatorを使わないと下のように成ります。
オルソホーカーが英語になっています。
XUnity.AutoTranslatorのテキストフォルダ内の_AutoGeneratedTranslations.txtは
<color%3D#C4BD97>Orso Hawker:</color> 「誓いの時が来ました。」 2313\r\n\r\n=<color%3D#C4BD97>オルソ・ホーカー</color> 「誓いの時が来ました。」 2313\r\n\r\n
となっています。
つまり
「誓いの時が来ました。」の部分はテキストファイルであるのですが、<color%3D#C4BD97>Orso Hawker:</color>の部分は自動で後から付け足されているのです。
全部、XUnity.AutoTranslatorから吸い出したものを翻訳するのであれば問題ありませんが、ゲーム内のテキストを翻訳してXUnity.AutoTranslator用日本語ファイルを作る場合、非常にめんどくさい事になります。(テキストの話者を全て判別し、全て頭につけていく必要があります。
こういう時に便利なのが吸い出したテキストを分割する機能です。
XUnity.AutoTranslatorの説明のSplitter Regexと言うことろの項目です。
これが今回私が使っているスプリッターです。
人物の分解は12行目です。
(これはエクセル表なのでA=BでXUnity.AutoTranslator用ファイルにする必要があります。)
詳しく知るには、正規表現というものを学習する必要があります。
私もよくわかっていませんのであくまで、参考例として試行錯誤してください。
ひとまず、この12行目を解説します。
これで、<color%3D#C4BD97>Orso Hawker:</color> 「誓いの時が来ました。」…を2つに分けます。
sr:"^(<color%3D#[A-F0-9]+>[\S\s]+:</color>) ([\S\s]+)$" $1 $2 sr"" $1 $2 で ””内を$1 $2 に分けます。つまり1つの文章を2つに分けてそれぞれを処理してくれます。 前半が、^(<color%3D#[A-F0-9]+>[\S\s]+:</color>) 後半が、([\S\s]+)$ です。 ^() は前からのひとくくりという意味です。 <color%3D# は決まったテキストです。 [A-F0-9]+ はA-F0-9が繰り返される(+が繰り返し)という意味です。 > は決まったテキスト [\S\s]+: は、制御文字(改行など)と、非制御文字(ABCあいうなど)が繰り返すと言う意味です。 </color> は決まったテキスト これで <color%3D#C4BD97>Orso Hawker:</color>の部分が表現できます。 後半は ()$ は後ろからのひとくくりという意味です。 ([\S\s]+) は先ほども出ましたが、制御文字(改行など)と、非制御文字(ABCあいうなど)が繰り返すと言う意味です。 これで「誓いの時が来ました。」…の部分を表現できます。 前半の部分は10行目と、15行目からのものが対応します。 後半は、現在は日本語にしてありますが、同じように 英語=日本語で翻訳ファイルを作ってあげます。 --------------------------------------------------------- 6行目の r:"You have ([0-9]+) unread newspapers."=$1つの新聞が未読です。 これは([0-9]+)の部分が数字の繰り返しであれば、$1として右のように翻訳されます。 説明のRegex Usageの部分です。 XUnity.AutoTranslatorは多機能で、まだまだ色々な事ができます。 フック機能とクリップボード機能でエクセルの翻訳行へ自動で飛ぶなども可能になります。 サンプル動画です。
日本語化している人なら、これが便利なのはわかるはず。 |