Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
現在は修正済みです
原因は、作業所のシートの名前を「翻訳方法」から「概要」に変えたため、リンクを自動生成するスクリプトが動いていなかったことでした
下記ページから最新のアンパッカー「ExportTool-v1.8.2」をダウンロード
http://larian.com/forums/ubbthreads.php?ubb=showflat&Number=604285
下記ファイルを別のフォルダへコピー
C:\Program Files (x86)\Steam\steamapps\common\Divinity Original Sin 2\Data\Localization\English.pak
アンパッカーの「ConverterApp.exe」を使用して「English.pak」をアンパック
しようとしたらエラーで起動できなかったので、「ExportTool-v1.8.1」でアンパック
「english.xml」が抽出できた。中身を見ると、テキスト量は81141行。
さらに「Subtitles」というフォルダが生成され、ムービーとオリジンのイントロの情報が書かれたファイルが取得できた。
しばらくしたらチェックが終了し起動できるようになったので、「ExportTool-v1.8.2」でアンパックしなおし。
製品版で日本語化が可能かどうか確かめる
下記ページから前作の有志日本語化ファイル「Original Sin Classic and Enhanced.rar」をダウンロード
https://ux.getuploader.com/fackman/
試しに「Divinity Original Sin Classic」用のフォントデータを、同様の場所にコピー
翻訳データ「english.xml」を、最新のものを作業所のリンクからダウンロード
https://docs.google.com/spreadsheets/d/1hcaUYPUYmqgA4qDtQtP5qYpW7K_OnbpxSHxZ9WD1aE0/edit?usp=sharing
ゲームを起動したところ、問題なく日本語化できた
http://steamcommunity.com/sharedfiles/filedetails/?id=1135508152
フォントデータについては、前作のものを再配布するわけにはいかないので、そのうちよさげなものを探す予定。ttfファイルになっているので、多分普通のフォントファイルが使えるはず。
それと今まで気づかなかったが、前作の「Divinity Original Sin Enhanced Edition」の場合は「Classic」とは異なり、フォントも翻訳データも「pak」形式で配布されている。これの作り方もおいおい調べよう。
製品版のテキストとアーリーアクセス版のテキストで、変更があった部分を自作のプログラムを使って解析する
プログラムは昨年作成した「DiffXMLforDivinityOriginalSin2」を使用。このプログラムでは、下記のテキストを調べて出力する
このプログラムはそのうち中身を整理してGitHubとかに公開する予定
今回アンパックしたテキストデータを「new_english.xml」、バックアップしておいたv3.0.76.796のデータを「old_english.xml」、作業所からダウンロードした進捗データ付きのものを「old_japanese_progress.xml」とリネームして指定のフォルダに入れる
プログラムを実行してしばらくすると、解析結果のファイルが出力される
解析結果は下記の通り
この「衝突」は、テキストが変更されたもののうちで、すでに翻訳済みのもの。テキスト変更が軽微(誤字修正)であれば、翻訳テキストをそのまま使えるが、大幅に変更されている場合は訳しなおしが必要となる。
1628行も手動のチェックが必要か... 大変だ...
新旧のテキストファイルと最新の翻訳ファイルを使って、作業所を更新するためのデータを生成する。
このために作った自作プログラム「UpdateXMLforDivinityOriginalSin2」の挙動がちょっと怪しいので、実際に作業所を更新する前に、テストでデータ生成をしてみて、プログラムにバグがないか確認する
同じ「new_english.xml」、「old_english.xml」、「old_japanese_progress.xml」をフォルダにまとめ、プログラムを実行してしばらく待つ。
カウント数の結果は下記の通り
要修正のテキスト数がだいぶ多いのと、「ID差替え重複」が何を意味しているのかさっぱり思い出せないので、プログラムを読み直してみる
これまでは「衝突」(テキストが変更されたもののうちで、すでに翻訳済みのもの)の翻訳済みかどうかの判定を、旧バージョンの英語ファイルと翻訳ファイルのテキストが異なっているかで判断していた。これを進捗が「✕」以外かどうかに変更する
修正前:if(content_old_en.Text != content_old_ja.Text)
修正後:if (content_old_ja.Progress != "✕")
修正前の方法だと、一部翻訳したが進捗を「✕」のままにしているテキストまで考慮できるが、例えば「[レッドプリンス] ~」のように、固有名詞を一括で変換したものまで拾い上げてしまう
修正後の方法だと、一部翻訳したが進捗を「✕」のままにしているテキストの一部は失われるが、手動での修正作業が大幅に減る
メリットデメリットを考慮して、修正後の方法で行くことにする
修正の結果、下記の結果に
前述の「ID差替え重複」について、プログラムを読んで理解した範囲では、下記のようなものらしい
新バージョンの中で旧バージョンにはないユニークIDを持つテキスト(つまり新たに追加されたテキスト)と、新バージョンで削除されたテキストを比較し、複数マッチングした場合
...自分で説明しつつ、よくわからない
実際「要修正(ID差替え重複)」は15箇所しかないので、自分で一つずつチェックして直すことにする
下手にマージプログラムをいじると、別のバグが生じる可能性もあるので
アンパッカーで簡単に取り出すことができる「english.xml」にはテキストとユニークIDしか含まれておらず、このままでは翻訳作業が困難なため、ゲームデータを解析し、ユニークIDが使われている箇所のデータを抜き出すことで、テキストの話者や種類などの情報を抽出する作業を行う
ちなみに「テキスト」や「ユニークID」が何なのかを補足しておくと、以下のようなもの
まずはゲームデータをアンパックする。下記フォルダ内の「Origins.pak」と「Origins_1.pak」を別フォルダにコピーし、「ExportTool-v1.8.2」で「Origins.pak」を展開する
C:\Program Files (x86)\Steam\steamapps\common\Divinity Original Sin 2\Data
すると「Mods」「Projects」「Public」の3つのフォルダが生成される
例えばこの中の「Mods\DivinityOrigins_1301db3d-1f54-4e98-9be5-5094030916e4\Story\Dialogs\FortJoy」フォルダにある「FTJ_AD_BeachCrab.lsj」をテキストエディタで開くと、下記のような情報が書かれている
"TagText" : [
{
"TagText" : {
"handle" : "h07e16253gfd76g41c5gb563g122d64255adf",
"type" : 28,
"value" : "Muah ha ha!"
},
"stub" : {"type" : 19, "value" : 1}
},
この「handle」がユニークID、「value」がテキストになっている。またファイル名の「FTJ_AD_BeachCrab」は話者とエリア名などを表している
またこのフォルダが「Dialogs」なので、このテキストは会話セリフということがわかる
これらのデータを抽出することで、それぞれのテキストの種類と話者などのデータを取り出すことができる
ただし、バージョンによってこれらのファイルの場所が変わったり追加されたりするので(現在の作業所の「種類」列と「名前」列に空白があるのはそのため)、手動でフォルダ構成などを確認した後に、それに合わせて修正した自作プログラムで抽出する流れになる
ので多少時間がかかる
公式のMOD作成ツール「Divinity Engine 2」が公開され、この中の「Dialog Editor」を使うと、セリフのつながりがわかります
そのうち使い方を調べて、どこかのページにまとめておきます
このツールでセリフの話者などの情報は確認できるが、その情報を一括で出力するような機能はないと思われるので、とりあえず今まで通りの方法でデータを抽出することにする
ダイアログ以外のファイルについては、pakからアンパックした状態でlsfとlsbというバイナリ形式になっているので、「ExportTool-v1.8.2」で一括でlsfファイルおよびlsbファイルからlsxファイルへ変換する
以前に作成した解析プログラム「ExtractIDforDivinityOriginalSin2」を読みつつ、最新のフォルダ構成を確認する
ざっと確認した限りでは各データのフォルダは下記の通りか
中身を精査していないので、製品版では使われていないデータがあるかもしれない
上記のうち「クエスト2」と「ムービー字幕」は前バージョンまではなかったため、以前作ったプログラムでは抽出できない。これらはそれほど量が多くないのと、今プログラムをいじるとミスが発生しそうなので、とりあえず後回しにする
プログラムを修正して実行すると、問題なくデータを抽出できた
前節のプログラムで抽出したデータは、ユニークIDとそれにまつわる話者などのデータ、
原文のテキストデータは、テキストとユニークIDのデータなので、
それぞれのユニークIDをマッチングさせることで、テキストと話者などのデータを結びつける必要がある
これを行う自作プログラム「MergeIDforDivinityOriginalSin2」の動作を確認する
前節のプログラムで抽出した「ID_*.xml」ファイルと、最新のテキストデータ「english.xml」を指定のフォルダにまとめ、プログラムを実行する
この処理がえらく時間がかかる。なれないことをしてバグが入るのを恐れて、全探索して処理しているので、計算量がひどいことになっている。試しに2000~3000行までにかかった時間を計ってみたら、3分30秒かかったので、全体ではだいたい280分=4.7時間か... まあ丸一日かかるわけじゃないので、許容範囲かな...
ゆっくり待つ...
メモ:ゲームにホットフィックスが入ったらしいので、本番の更新作業をするときは、最新のpakファイルのアンパックから始めるのを忘れないように
作業所の更新作業に時間がかかってしまうなと思ったけれど、よく考えたらIDデータの抽出作業については翻訳データは使ってないわけだから、事前にプログラムを動かしておけば更新作業自体はすぐ終わるか
これで作業所の更新に必要な作業の確認ができたので、お知らせで作業予定を告知し、最新のゲームデータをアンパックし、ID情報の計算プログラムだけ実行しておく
明日の作業所更新に向けて、最新のゲームファイルからテキストデータとIDデータの抽出を行う
念のためSteamのゲームプロパティから「ゲームファイルの整合性を確認」を実行し、あとは前述の方法と同じなので省略