STEAM GROUP
Divinity: Original Sin 2 日本語化プロジ DOS2日本語化
STEAM GROUP
Divinity: Original Sin 2 日本語化プロジ DOS2日本語化
3
IN-GAME
104
ONLINE
Founded
September 12, 2017
Language
Japanese
Location
Japan 
kengo700 Sep 14, 2017 @ 8:06am
作業履歴
作業所や本グループの管理作業について、「お知らせ」に載せるほどではない細かい内容は、このスレッドに追記していきます
Last edited by kengo700; Sep 15, 2017 @ 3:50am
< >
Showing 1-15 of 109 comments
kengo700 Sep 14, 2017 @ 8:08am 
有志翻訳Wikiページでご指摘いただいた通り、作業場の翻訳ファイルのリンク先がNot Foundになっていました

現在は修正済みです

原因は、作業所のシートの名前を「翻訳方法」から「概要」に変えたため、リンクを自動生成するスクリプトが動いていなかったことでした
kengo700 Sep 15, 2017 @ 3:59am 
テキストデータの抽出作業

下記ページから最新のアンパッカー「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」というフォルダが生成され、ムービーとオリジンのイントロの情報が書かれたファイルが取得できた。
kengo700 Sep 15, 2017 @ 4:03am 
「ConverterApp.exe」のエラーはアンチウィルスソフトがチェックのためにブロックしていたからだった模様。

しばらくしたらチェックが終了し起動できるようになったので、「ExportTool-v1.8.2」でアンパックしなおし。
Last edited by kengo700; Sep 15, 2017 @ 7:43am
kengo700 Sep 15, 2017 @ 4:10am 
日本語化の確認

製品版で日本語化が可能かどうか確かめる

下記ページから前作の有志日本語化ファイル「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」形式で配布されている。これの作り方もおいおい調べよう。
Last edited by kengo700; Sep 15, 2017 @ 4:17am
kengo700 Sep 15, 2017 @ 4:30am 
テキストの変更点の解析

製品版のテキストとアーリーアクセス版のテキストで、変更があった部分を自作のプログラムを使って解析する

プログラムは昨年作成した「DiffXMLforDivinityOriginalSin2」を使用。このプログラムでは、下記のテキストを調べて出力する
  • 新バージョンで削除されたテキスト(ユニークIDが新バージョンでなくなっているもの)
  • 新バージョンで追加されたテキスト(ユニークIDが新バージョンで追加されたもの)
  • 新バージョンでテキストが変更されたもの(ユニークIDが同じでテキストが異なるもの)
  • 新バージョンで追加されたものと削除されたもので、テキストが一致するもの(つまりユニークIDが差し替えられたもの)
  • 新バージョンでテキストが変更されたもののうち、すでに翻訳済みのもの(手動で修正が必要)

このプログラムはそのうち中身を整理してGitHubとかに公開する予定

今回アンパックしたテキストデータを「new_english.xml」、バックアップしておいたv3.0.76.796のデータを「old_english.xml」、作業所からダウンロードした進捗データ付きのものを「old_japanese_progress.xml」とリネームして指定のフォルダに入れる

プログラムを実行してしばらくすると、解析結果のファイルが出力される

解析結果は下記の通り
  • テキスト削除:11319
  • テキスト追加:34730
  • テキスト変更:10433
  • ID差し替え:221
  • 衝突:1628

この「衝突」は、テキストが変更されたもののうちで、すでに翻訳済みのもの。テキスト変更が軽微(誤字修正)であれば、翻訳テキストをそのまま使えるが、大幅に変更されている場合は訳しなおしが必要となる。

1628行も手動のチェックが必要か... 大変だ...
Last edited by kengo700; Sep 15, 2017 @ 5:02am
kengo700 Sep 15, 2017 @ 5:02am 
テキストのマージ作業の確認

新旧のテキストファイルと最新の翻訳ファイルを使って、作業所を更新するためのデータを生成する。

このために作った自作プログラム「UpdateXMLforDivinityOriginalSin2」の挙動がちょっと怪しいので、実際に作業所を更新する前に、テストでデータ生成をしてみて、プログラムにバグがないか確認する

同じ「new_english.xml」、「old_english.xml」、「old_japanese_progress.xml」をフォルダにまとめ、プログラムを実行してしばらく待つ。

カウント数の結果は下記の通り
  • 削除:11319
  • 要修正(衝突):5806
  • ID差し替え:221
  • 要修正(ID差替え重複):15

要修正のテキスト数がだいぶ多いのと、「ID差替え重複」が何を意味しているのかさっぱり思い出せないので、プログラムを読み直してみる
Last edited by kengo700; Sep 15, 2017 @ 5:19am
kengo700 Sep 15, 2017 @ 7:05am 
テキストのマージプログラムの修正

これまでは「衝突」(テキストが変更されたもののうちで、すでに翻訳済みのもの)の翻訳済みかどうかの判定を、旧バージョンの英語ファイルと翻訳ファイルのテキストが異なっているかで判断していた。これを進捗が「✕」以外かどうかに変更する

修正前:if(content_old_en.Text != content_old_ja.Text)
修正後:if (content_old_ja.Progress != "✕")

修正前の方法だと、一部翻訳したが進捗を「✕」のままにしているテキストまで考慮できるが、例えば「[レッドプリンス] ~」のように、固有名詞を一括で変換したものまで拾い上げてしまう

修正後の方法だと、一部翻訳したが進捗を「✕」のままにしているテキストの一部は失われるが、手動での修正作業が大幅に減る

メリットデメリットを考慮して、修正後の方法で行くことにする

修正の結果、下記の結果に
  • 削除:11319
  • 要修正(衝突):1628
  • ID差し替え:221
  • 要修正(ID差替え重複):15
kengo700 Sep 15, 2017 @ 7:29am 
テキストのマージプログラムの修正2

前述の「ID差替え重複」について、プログラムを読んで理解した範囲では、下記のようなものらしい

新バージョンの中で旧バージョンにはないユニークIDを持つテキスト(つまり新たに追加されたテキスト)と、新バージョンで削除されたテキストを比較し、複数マッチングした場合

...自分で説明しつつ、よくわからない

実際「要修正(ID差替え重複)」は15箇所しかないので、自分で一つずつチェックして直すことにする

下手にマージプログラムをいじると、別のバグが生じる可能性もあるので
kengo700 Sep 15, 2017 @ 7:36am 
テキストのIDデータの抽出作業の確認

アンパッカーで簡単に取り出すことができる「english.xml」にはテキストとユニークIDしか含まれておらず、このままでは翻訳作業が困難なため、ゲームデータを解析し、ユニークIDが使われている箇所のデータを抜き出すことで、テキストの話者や種類などの情報を抽出する作業を行う

ちなみに「テキスト」や「ユニークID」が何なのかを補足しておくと、以下のようなもの
  • テキスト:原文と訳文、作業所の「原文」列と「訳文」列のデータ
  • ユニーク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」なので、このテキストは会話セリフということがわかる

これらのデータを抽出することで、それぞれのテキストの種類と話者などのデータを取り出すことができる

ただし、バージョンによってこれらのファイルの場所が変わったり追加されたりするので(現在の作業所の「種類」列と「名前」列に空白があるのはそのため)、手動でフォルダ構成などを確認した後に、それに合わせて修正した自作プログラムで抽出する流れになる

ので多少時間がかかる
Last edited by kengo700; Sep 15, 2017 @ 7:58am
kengo700 Sep 15, 2017 @ 9:17pm 
MOD作成ツールについて

公式のMOD作成ツール「Divinity Engine 2」が公開され、この中の「Dialog Editor」を使うと、セリフのつながりがわかります


そのうち使い方を調べて、どこかのページにまとめておきます


このツールでセリフの話者などの情報は確認できるが、その情報を一括で出力するような機能はないと思われるので、とりあえず今まで通りの方法でデータを抽出することにする
Last edited by kengo700; Sep 15, 2017 @ 9:24pm
kengo700 Sep 15, 2017 @ 9:26pm 
テキストのIDデータの抽出作業の確認2

ダイアログ以外のファイルについては、pakからアンパックした状態でlsfとlsbというバイナリ形式になっているので、「ExportTool-v1.8.2」で一括でlsfファイルおよびlsbファイルからlsxファイルへ変換する

以前に作成した解析プログラム「ExtractIDforDivinityOriginalSin2」を読みつつ、最新のフォルダ構成を確認する

ざっと確認した限りでは各データのフォルダは下記の通りか

  • 会話:\Mods\DivinityOrigins_1301db3d-1f54-4e98-9be5-5094030916e4\Story\Dialogs\*\*.lsj
  • キャラ:\Mods\DivinityOrigins_1301db3d-1f54-4e98-9be5-5094030916e4\Globals\*\Characters\_merged.lsx
  • アイテム:\Mods\DivinityOrigins_1301db3d-1f54-4e98-9be5-5094030916e4\Globals\*\Items\_merged.lsx
  • クエスト1:\Mods\DivinityOrigins_1301db3d-1f54-4e98-9be5-5094030916e4\Story\Journal\quest_prototypes.lsx
  • クエスト2:\Mods\DivinityOrigins_1301db3d-1f54-4e98-9be5-5094030916e4\Story\Journal\questcategory_prototypes.lsx
  • マーカー:\Mods\DivinityOrigins_1301db3d-1f54-4e98-9be5-5094030916e4\Story\Journal\marker_prototypes.lsx
  • シークレット:\Mods\DivinityOrigins_1301db3d-1f54-4e98-9be5-5094030916e4\Story\Journal\secret_prototypes.lsx
  • その他:\Mods\DivinityOrigins_1301db3d-1f54-4e98-9be5-5094030916e4\Localization
  • ムービー字幕:\Localization\English\Subtitles\*.lsx

中身を精査していないので、製品版では使われていないデータがあるかもしれない

上記のうち「クエスト2」と「ムービー字幕」は前バージョンまではなかったため、以前作ったプログラムでは抽出できない。これらはそれほど量が多くないのと、今プログラムをいじるとミスが発生しそうなので、とりあえず後回しにする

プログラムを修正して実行すると、問題なくデータを抽出できた

Last edited by kengo700; Sep 16, 2017 @ 4:02am
kengo700 Sep 15, 2017 @ 10:52pm 
テキストのIDデータの抽出作業の確認3

前節のプログラムで抽出したデータは、ユニークIDとそれにまつわる話者などのデータ、
原文のテキストデータは、テキストとユニークIDのデータなので、
それぞれのユニークIDをマッチングさせることで、テキストと話者などのデータを結びつける必要がある

これを行う自作プログラム「MergeIDforDivinityOriginalSin2」の動作を確認する

前節のプログラムで抽出した「ID_*.xml」ファイルと、最新のテキストデータ「english.xml」を指定のフォルダにまとめ、プログラムを実行する

この処理がえらく時間がかかる。なれないことをしてバグが入るのを恐れて、全探索して処理しているので、計算量がひどいことになっている。試しに2000~3000行までにかかった時間を計ってみたら、3分30秒かかったので、全体ではだいたい280分=4.7時間か... まあ丸一日かかるわけじゃないので、許容範囲かな...

ゆっくり待つ...

メモ:ゲームにホットフィックスが入ったらしいので、本番の更新作業をするときは、最新のpakファイルのアンパックから始めるのを忘れないように
Last edited by kengo700; Sep 15, 2017 @ 11:04pm
kengo700 Sep 16, 2017 @ 1:20am 
やっと4万行...

作業所の更新作業に時間がかかってしまうなと思ったけれど、よく考えたらIDデータの抽出作業については翻訳データは使ってないわけだから、事前にプログラムを動かしておけば更新作業自体はすぐ終わるか
Last edited by kengo700; Sep 16, 2017 @ 2:19am
kengo700 Sep 16, 2017 @ 3:53am 
処理終了。出力ファイルを開いてざっと見た感じは問題なさそう(そもそも8万行を目視で確認するのは難しいけど...)。

これで作業所の更新に必要な作業の確認ができたので、お知らせで作業予定を告知し、最新のゲームデータをアンパックし、ID情報の計算プログラムだけ実行しておく
kengo700 Sep 16, 2017 @ 3:58am 
テキストのIDデータの抽出作業

明日の作業所更新に向けて、最新のゲームファイルからテキストデータとIDデータの抽出を行う

念のためSteamのゲームプロパティから「ゲームファイルの整合性を確認」を実行し、あとは前述の方法と同じなので省略
< >
Showing 1-15 of 109 comments
Per page: 1530 50