見出し画像

How to use "XUnity.AutoTranslator"

はじめに

今回はUnity製ゲームで単言語や日本語化が難しい(言語ファイルが特殊)ものをリアルタイムで自動翻訳しプレイできる「XUnity Auto Translator」を紹介したいと思います。

リアルタイムで自動翻訳されるため少し日本語が表示されるまでに時間を要しますが、一度翻訳された部分はすぐに表示されますし、また翻訳ファイルが保存されているので自分で翻訳を変更したり、同じ環境さえあればその翻訳ファイルを配布することも可能です。

とは言え、特にフォントの問題が原因になりますが、すべてのものに対応できるというものではないことを覚えておいてください。ご自身でその部分を解決できればもちろん使用できますが、ハードルがかなり高くなります。

ダウンロード

オープンソースで公開されており、githubで公開されています。

ダウンロード自体は右の「Releases」リンクから行います。現在は5.1.0が登場しています。多数の種類がありますが、今回はXUnity.AutoTranslator-ReiPatcher-5.1.0.zipを利用します。
またTMP_Font_AssetBundles.zipもダウンロードしておいてください。これはTextMeshProで作成されたフォントにも対応するためのフォントアセットです(ダイナミックフォントの場合は不要)。ダウンロードが終了したら、圧縮ファイルを適当なフォルダに展開(解凍)しておいてください。

  • SetupReiPatcherAndAutoTranslator.exe

  • arialuni_sdf_u2018

  • arialuni_sdf_u2019

上記のファイルが展開されたことを確認しておいてください(以下、XUATファイル群

インストール

画像
使用するゲーム「Oaken Demo版」

今回はサンプルゲームとして「Oaken」を使用したいと思います。なぜこのゲームなのかと言えば、Demo版があるという点につきます。Demo版であれば誰でもXUnity.AutoTranslatorが体験できます。利用に値するかどうかを判断するにはやはりご自身で使用するのが一番だと思いますので、是非試して体験していただければと思います。

画像
フォルダ構成

Steamクライアントを使いOaken Demoのプロパティを開いてローカルファイルタブ内の「参照…」ボタンを押すか、ゲーム名を選択し右クリックでコンテキストメニューを表示し「管理→ローカルファイルの閲覧」でゲームフォルダーを開きます。その開いたフォルダへXUATファイル群をコピーします。

コピーが完了したら「SetupReiPatcherAndAutoTranslator.exe」をダブルクリックして1回だけ実行します。DOS窓が開きインストールが始まります。DOS窓の一番下に「Setup completed. Press any key to exit.」と表示されたら何かキーを押して閉じます。

上図のファイル構成の中に

  • ReiPatcherフォルダ

  • Oaken (Patch and Run)

が追加されます。Oaken (Patch and Run)をダブルクリックして実行します。この作業は最初の1回だけです。DOSが一瞬表示され、ゲームが開始されますがすぐにゲームを終了してください(ゲームによりSteamクライアントから起動しない場合、終了することがあります。このゲームも同様です)。この作業でさらにAutoTranslatorフォルダが追加されます。

画像
新たに追加されたフォルダ構成

代替フォント

標準でダウンロードできるフォントはゴシックしかなく容量も大きいため代替フォントを用意しました。別途記事を記載していますのでそちらをご覧ください。

Config.iniの編集

テキストエディタ(使い慣れたものであれば何でも構いません)でConfig.iniを開きます。たくさんの項目がありますが、最初に変更するのは4項目ほどです。

[General]
Language=en
FromLanguage=ja
(略)
[Behaviour]
MaxCharactersPerTranslation=200

Config.iniより

最初に5~7行目の項目(開いた直後は上参照)を
Language=ja
FromLanguage=en
に変更します。

続いて25行目の項目を
MaxCharactersPerTranslation=2000
に変更します(200のままだと長文が翻訳されないため)。

OverrideFontTextMeshPro=
FallbackFontTextMeshPro=

Config.iniより

次に37~38行目(開いた直後は上参照)を

OverrideFontTextMeshPro=arialuni_sdf_u2018
FallbackFontTextMeshPro=arialuni_sdf_u2018
に変更します。

または

OverrideFontTextMeshPro=arialuni_sdf_u2019
FallbackFontTextMeshPro=arialuni_sdf_u2019
に変更します。

この2つの違いはTextMeshProのver.違いによるものです。比較的最近のゲームであればarialuni_sdf_u2019を指定すればほぼ大丈夫だと思われます。

2022/08/25追記:
少し前までu2018/u2019を両方記載するような説明をしていましたが、FallbackFontの意味合いが私の理解しているものと違う可能性が出てきたため、両方を同じにしています。片方だけでいいのではないか?と思われますが、一部のゲームで両方書いておかないと□(通称豆腐)が表示されたための処置です。

変更が終了したら保存をして閉じてください。
(ダイナミックフォントの場合は上の処理は不要ですが、先に指定しておくと後から作業をしなくていいのでお勧めです)
そして、Steamクライアントからいつも通りにゲームを起動してください。

画像
「新しいゲーム」を始めた後のスクリーンショット

前述のとおり、翻訳はリアルタイムで行われます。そのためまずは標準の言語(英語でプレイしていれば英語)が表示されます。テキスト量が少なければ比較的早めに日本語に置き換わります。

画像
上のダイアログでは翻訳が済んでいない英語が表示。
少しのタイムラグの後、日本語に翻訳されます。

このツールの優れている部分は一度翻訳が済んだ箇所は再翻訳をせず保存されている日本語テキストを表示するという点です。

画像
jaフォルダが新たに生成(日本語に翻訳するのでja)

この翻訳されたテキストはTranslationフォルダ内に保存されています。
この中の「_AutoGeneratedTranslations.txt」というテキストファイルに

原文=翻訳文

という形でデータが構築されていきます。

画像
_AutoGeneratedTranslations.txt

リアルタイム翻訳なので随時データが更新され続けていきます。一度翻訳されたものはこのファイルから取り込まれます。つまり、このファイル自体を再編集することでより精度の高い翻訳にすることも可能です。

画像
編集しなおしたゲーム初期画面

上図は「新しいゲーム」を「新規ゲーム」、「バツ」を「×」、「私たちの不一致に参加~~」を「私たちのDiscordに参加~~」に変更したものです。

最初のプレイではリアルタイム翻訳のため煩わしさを感じるかもしれませんが、二度目以降はそのようなことはありませんし、テキストが抽出できればそれを利用して先に翻訳をしておけばそんな煩わしさもありません。

テキストがあってもフォントを作る技術がなくてもこのツールでフォントの置き換えができますので比較的誰でも日本語化してゲームがプレイできたり、単言語(英語だけ対応)対応も日本語化が可能になります。フォントもnGUIにも対応しているそうなので古いゲームでも日本語化ができる可能性があります(私は未確認)。

最後に

このツールを利用して日本語化を配布する場合はXUnity Auto Translatorをインストールしてもらい、AutoTranslatorフォルダを圧縮し特定の場所へコピーしてもらうだけで済むと思います。仮に翻訳漏れがあってもその場でリアルタイム翻訳がされるので問題はありません。

2022/08/26追記
テキストにタグ(文字を装飾するためのものなど)が含まれる場合、場合によりうまく翻訳できないことがあります。それらは全体から見れば少ないと思いますので、後から_AutoGeneratedTranslations.txtを再編集するしかないかもしれません。

いいなと思ったら応援しよう!

お~るげーむず(仮)
内容が気になりましたらぜひサポートをお願いします。そのサポートが継続の力になります。よろしくお願いします。

ピックアップされています

memo

  • 2本

コメント

ログイン または 会員登録 するとコメントできます。
How to use "XUnity.AutoTranslator"|お~るげーむず(仮)
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1