Darkest Dungeon®

Darkest Dungeon®

Not enough ratings
MODの翻訳方法
By f666_exe
ダーケストダンジョンのMODを日本語訳した際の備忘録的なものです。
間違ってる点もあるかもしれません。
   
Award
Favorite
Favorited
Unfavorite
まず初めに
翻訳する元MOD開発者様にすべての権利があることを踏まえて行動すること

翻訳する際は必ず元MODの説明を確認し、コメントなどで翻訳した旨を報告すること

MOD開発者様から修正、または削除依頼が来た場合即座に従うこと

開発者様に感謝を忘れないこと

ここで説明する事柄には間違いもあるかもしれません、疑問に思った箇所は指摘してください
準備するもの
☆必須アイテム
・PC
当たり前に必要です。

・NotePad
コードを編集できます。メモ帳を使うより効率的です。
後に話す"ZWSP"の影響によりVisialStudioは除外されます。

☆あったら嬉しい
・Gimp
画像を編集できます。
アイコンの編集に使います。

事前準備
翻訳を行う前に用意しているとよいファイルです

☆MODの翻訳作業するファイル作成
場所はどこでもよいのでわかりやすい名前のファイル(自分の場合DDMOD)を作ります

☆必要なファイルをピン留め
下記の
・C:\Program Files (x86)\Steam\steamapps\common\DarkestDungeon\_windows\win32
・C:\Program Files (x86)\Steam\steamapps\workshop\content\262060
・先程作った翻訳作業のファイル
3つを右クリックでクイックアクセスにピン留めし簡単に開けるようにする

https://images.steamusercontent.com/ugc/13534188023516296548/4556C35DF18C96C12C2EC0A0446758C49581968F/?imw=256&&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false
翻訳を実際に始めるまで
☆翻訳するMODの場所
翻訳したいMODをサブスクライブします







DLしたMODはクイックにピン留めした262060に入っています。

ここでMODのURLの末尾9桁の数字を検索バーに入力するとファイルが出てきます。










☆MODファイルから必要なものを自分の作業ファイルへコピペ
MODファイルの"localization"と"colors"とpreview_icon.pngをコピーします
(colorsがない場合はlocalizationとicon.pngのみ)


















自分の作業ファイルにそのMODに基づく名前のファイルを作成
ファイルを開いてその中にペーストします。







☆localizationファイルの中の説明
MODごとに内容は変化しますが基本的に下記の2種類のファイルが存在します。
・{MOD名}{言語}.string_table
・{MODのWarkshopID}_{言語}.loc2

.string_tableは実際に翻訳をするファイルです。
.loc2は"steam_workshop_upload.exe"を使用し、.string_tableがゲームに読み込める形に変換されたものです。

たまにloc2ファイルのみ存在しstring_tableが無いMODがあります。
その場合MOD制作者がstring_tableを配布してなければ、
loc2をstring_tableに変換する方法は存在しないため、翻訳自体ができません。



☆localizationファイルの中の整理
〇〇.string_tableファイル以外のすべてのファイルを削除
この時複数の.string_tableがある場合自分が翻訳する言語の.string_tableのみを残します。
(翻訳の精度を上げるためMOD制作者様の使用言語を残すことを推奨します)


この作業によりファイルが一つになるはずです。




☆実際に翻訳する前に

・ZWSPについて
.string_tableをNotePadで開きます。
ここで画像のように"ZWSP"が存在するか確認してください。
VisialStudioだと表示されません。
(無い場合はスキップ)



これは"ZWSP"ゼロ幅スペースと呼ばれるものであり、
大量に"ZWSP"と並んでいますがバグなどではありません。
絶対に消さないでください。(必要だからそこにあります)
翻訳作業の際にコピペなどで消さないようにこれがある欄は直接入力で翻訳しましょう。

sasiji氏によるZWSPの説明URL



・言語について
複数言語に対応していても言語別のstring_tableがない場合、一つのXMLファイルにすべての言語テキストが記述されているものがあります。
その場合自分が翻訳する言語と英語(english)以外のセクションは削除しても構いません。

<language id="言語名">
で始まり
</language>
で終わる


<language id="english">
</language>
が存在しないと後に変換でエラーが出るので下記画像のように残しておいてください。
(中身に何も記載なくても大丈夫です)


実際に書き込んでみる
☆言語IDの変更
<language id="他言語">⇛<language id="japanese">
に変更する。(englishのidは残す)


☆どこを翻訳するのか
変更を加える箇所は下記の通りです。
<entry id="exampleID"><![CDATA[ここを翻訳]]></entry>

ここに原文と差し替える形で翻訳を行います。




☆翻訳する際の注意


entry idに
buff_stat_tooltip_upgrade_discount
が入っているものは文字数上限が決まっています。

アルファベットで127文字までなのでそれよりも容量の大きい日本語は
もっと少ない文字数しか入りません。
(制限を超えた場合文字が変形したり、見切れたりします)

その場合は文字数を少なくしたり、ID(buff)を増やしましょう。
増やす方法に関しては”新たにtooltip(buff)を追加する”で説明しています。



☆文字の色付けについて
{colour_start|any_color}色付き文字{colour_end}
上記のようなコードは間の文字に色を付ける場合に使われます。
*これらのコードも文字数に含まれます*


”any_color”の部分にカラーコードが入ります。


{colour_start|bleed}出血{colour_end}

カラーコードは標準のものだと
C:\Program Files (x86)\Steam\steamapps\common\DarkestDungeon\colours
の中の"base.colors.darkest"に記載されています。

MOD独自のものは
コピペしたcolorsフォルダの中の"{MOD名}.colors.darkest"というファイルに記載されています。
(colorsフォルダがない場合は通常そのMODで独自のカラーコードは使われて無いはずです)
翻訳が終わったら
☆loc2ファイルを作るには?
先程.loc2ファイルはゲームに.string_tableを読み込ませるために変換したものと説明しました。
すなわち.string_tableのみではゲーム内に文字を反映することはできません。

そのためstring_tableをloc2に変換する作業をします。


project.xmlを作成
自分の作業しているファイルの中に"project.xml"と名付けたメモファイルを作ります。








そしてこのメモファイルに下記文章をそのままコピペしてください。
<?xml version="1.0" encoding="utf-8"?> <project> <PreviewIconFile>preview_icon.png</PreviewIconFile> <ItemDescriptionShort/> <ModDataPath>ここにパスを挿入</ModDataPath> <Title>タイトルを命名</Title> <Language>japanese</Language> <UpdateDetails/> <Visibility>公開設定</Visibility> <UploadMode>アップロード方式</UploadMode> <VersionMajor>0</VersionMajor> <VersionMinor>0</VersionMinor> <TargetBuild>0</TargetBuild> <Tags> <Tags>Localization</Tags> <Tags>Japanese</Tags> </Tags> <ItemDescription/> <PublishedFileId></PublishedFileId> </project>

project.xmlを右クリック、プロパティから”場所”の部分をコピー。














”ここにパスを挿入”と差し替えてペースト。

”タイトルを命名”の部分はとりあえず無視。

”公開設定”の部分は”private”と入力。

”アップロード方式”はdont_submitと入力。

完成例
<?xml version="1.0" encoding="utf-8"?> <project> <PreviewIconFile>preview_icon.png</PreviewIconFile> <ItemDescriptionShort/> <ModDataPath>C:DDMODNewClass_JP</ModDataPath> <Title>タイトルを命名</Title> <Language>japanese</Language> <UpdateDetails/> <Visibility>private</Visibility> <UploadMode>dont_submit</UploadMode> <VersionMajor>0</VersionMajor> <VersionMinor>0</VersionMinor> <TargetBuild>0</TargetBuild> <Tags> <Tags>Localization</Tags> <Tags>Japanese</Tags> </Tags> <ItemDescription/> <PublishedFileId></PublishedFileId> </project>

"steam_workshop_upload.exe"を使ってloc2ファイルに変換

ピン留めした
C:Program Files (x86)SteamsteamappscommonDarkestDungeon_windowswin32
の中に"steam_workshop_upload.exe"があります。


先程作成した”project.xml”をこのexeファイルの上にドラッグアンドドロップします。
そうするとcmdが表示されます。













なにかキーを入力してくださいと表示されたら閉じて構いません。

localizationファイルを開きloc2ファイルが生成されていたら成功です。


ゲーム内で確認・修正
ゲーム内に反映させる

出来上がったloc2ファイルを翻訳したいMODのlocalizationファイル内に配置します。
(loc2ファイルのみで大丈夫です)







ゲームを起動し、文字切れなどが発生していないか確認します。
修正箇所を発見した場合は.string_tableを編集し、再度steam_workshop_uploader.exeで
アップロードし直し、生成されたloc2ファイルを上書きしてゲームを再起動し確認します。
steamにアップロードする
☆project.xmlを編集

もし個人のみでなくその言語ファイルを共有する場合は、
project.xmlを編集することでアップロードすることができます。

<?xml version="1.0" encoding="utf-8"?> <project> <PreviewIconFile>preview_icon.png</PreviewIconFile> <ItemDescriptionShort/> <ModDataPath>C:DDMODNewClass_JP</ModDataPath> <Title>タイトルを命名</Title> <Language>japanese</Language> <UpdateDetails/> <Visibility>private</Visibility> <UploadMode>dont_submit</UploadMode> <VersionMajor>0</VersionMajor> <VersionMinor>0</VersionMinor> <TargetBuild>0</TargetBuild> <Tags> <Tags>Localization</Tags> <Tags>Japanese</Tags> </Tags> <ItemDescription/> <PublishedFileId></PublishedFileId> </project>


”タイトルを命名”の部分にゲーム内のMODロード画面で表示したいタイトルを命名します。

UploadModeをdirect_uploadに変更します
<UploadMode>direct_upload</UploadMode>

preview_icon.pngを編集
元MODと同じiconを使うと見間違えやすいので
必ず日本語訳したものとわかるアイコンに変更してください。


☆steam workshopにアップロード
project.xmlとicon.pngを編集後にsteam_workshop_uploader.exeに
project.xmlをドラッグアンドドロップしてください。
”何かキーを入力してください。”と表示されたら閉じて構いません。

自分のworkshopに新たにコンテンツが追加されているはずです。

Visibilityをprivateのままでアップロードしているため、初期は非公開の状態です。
ページを編集して使用方法や画像などを記述してから公開設定を”公開”にするのが良いでしょう。





新たにtooltip(buff)を追加する
ここを見る前に
ものすごくわかりやすいガイドがありますので、そっちを確認してそれでもわからなかった場合
サブ的な形でお使いください。
sasiji氏によるupgradeの使い方

☆tooltip追加
編集するファイルは下記4つです。

heroesヒーロ名ヒーロ名.info.darkest
effectsヒーロ名.effects.darkest
sharedbuffsヒーロ名_tooltip.buffs.json
localizationヒーロ名.string_table
(buffsに関しては開発者によって変わる可能性がありますが基本TTやtooltipなど記載があるはずです)

すでにlocalizationは導入していると思われますので
3つのheroes,effects,sharedを丸々作業フォルダにコピペします。









作業フローとしては
tooltip.buffs.jsonに新たにバフを追加。
追加したバフIDをeffectsに追加。
info.darkestのスキル欄にeffectIDを追加。
作成したBuffIDをstring_tableに記載し、テキストを追加。

それぞれ説明します。

☆1-buffsの編集
.jsonファイルを開きます


{ "id": "baseclass_base_tooltip_1", "stat_type" : "upgrade_discount", "stat_sub_type" : "basecalss_base_tooltip_1", "amount": 0, "remove_if_not_active": false, "rule_type" : "always", "is_false_rule" : false, "rule_data" : { "float" : 0, "string": "" } }, { "id": "baseclass_add_tooltip_2", "stat_type" : "upgrade_discount", "stat_sub_type" : "baseclass_add_tooltip_2", "amount": 0, "remove_if_not_active": false, "rule_type" : "always", "is_false_rule" : false, "rule_data" : { "float" : 0, "string": "" } } ] }
文末まで行きこのようにコードが並んでいるとします。



{ "id": "newclass_add_tooltip_1", "stat_type" : "upgrade_discount", "stat_sub_type" : "newclass_add_tooltip_1", "amount": 0, "remove_if_not_active": false, "rule_type" : "always", "is_false_rule" : false, "rule_data" : { "float" : 0, "string": "" } }
このコードをコピー。



{ "id": "baseclass_base_tooltip_1", "stat_type" : "upgrade_discount", "stat_sub_type" : "basecalss_base_tooltip_1", "amount": 0, "remove_if_not_active": false, "rule_type" : "always", "is_false_rule" : false, "rule_data" : { "float" : 0, "string": "" } }, { "id": "baseclass_add_tooltip_2", "stat_type" : "upgrade_discount", "stat_sub_type" : "baseclass_add_tooltip_2", "amount": 0, "remove_if_not_active": false, "rule_type" : "always", "is_false_rule" : false, "rule_data" : { "float" : 0, "string": "" } },←ここに","を追加 { "id": "newclass_add_tooltip_1", ↙追加したbuff "stat_type" : "upgrade_discount", "stat_sub_type" : "newclass_add_tooltip_1", "amount": 0, "remove_if_not_active": false, "rule_type" : "always", "is_false_rule" : false, "rule_data" : { "float" : 0, "string": "" } } ] }
上記のように追加します。



{ "id": "baseclass_base_tooltip_1", "stat_type" : "upgrade_discount", "stat_sub_type" : "basecalss_base_tooltip_1", "amount": 0, "remove_if_not_active": false, "rule_type" : "always", "is_false_rule" : false, "rule_data" : { "float" : 0, "string": "" } }, { "id": "baseclass_add_tooltip_2", "stat_type" : "upgrade_discount", "stat_sub_type" : "baseclass_add_tooltip_2", "amount": 0, "remove_if_not_active": false, "rule_type" : "always", "is_false_rule" : false, "rule_data" : { "float" : 0, "string": "" } },←ここに","を追加(1つ前) { "id": "newclass_add_tooltip_1", ↙追加したbuff(1つ前) "stat_type" : "upgrade_discount", "stat_sub_type" : "newclass_add_tooltip_1", "amount": 0, "remove_if_not_active": false, "rule_type" : "always", "is_false_rule" : false, "rule_data" : { "float" : 0, "string": "" } },←ここに","を追加(今回) { "id": "newclass_add_tooltip_2", ↙追加したbuff(今回) "stat_type" : "upgrade_discount", "stat_sub_type" : "newclass_add_tooltip_2", "amount": 0, "remove_if_not_active": false, "rule_type" : "always", "is_false_rule" : false, "rule_data" : { "float" : 0, "string": "" } } ] }
増やしたい場合は新たに付け足します。


必要数増やしたらセーブしてbuffsは終了です。



☆2-effectsの編集
effects.darkestを開きすべてのテキストを削除します。
中身に何も書かれていない状態にしてください。

effect: .name "newclass_add_TT_1" .target "performer" .skill_instant true .buff_ids "newclass_add_tooltip_1" .on_hit false .on_miss false
上記をコピペします。
一応説明すると
effect: .name "newclass_add_TT_1"の"newclass_add_TT_1"が
後にinfo.darkestで使うeffectIDです。
.buff_ids "newclass_add_tooltip_1"の "newclass_add_tooltip_1"が
先程作ったbuffIDです。

effects: .nameに任意のIDを命名。
.buff_idsに作ったbuffIDを挿入します。

複数個ある場合は画像のように複数個記述します。



すべて記述したらセーブしてeffectsは終了です。


☆3-info.darkestの編集
まず自分がtooltipを追加したいスキルID(ocombat_skill: .id)を探します。
大体スキルの順番と結びついた命名規則だと思われます。
(3番目のスキルの場合skill_3など)

もしわからない場合は日本語訳を導入していない状態でゲームを起動。
・追加したいスキルの青文字(buff_stat_tooltip_upgrade_discount_〇〇_tooltip_SK3_1など)
をbuff.jsonで検索。
・effects.darkest内でbuffIDを検索しeffectsIDを確認。
・info.darkestでeffectIDを検索し該当のスキルコードを見つける。


combat_skill: .idのコードの中にある".effect"を探します。

そこに先程作成したeffectIDを挿入します。
.effect "newclass_add_TT_1" "newclass_add_TT_2" "newclass_add_TT_3" ~~~~~~~

記入が終わったらセーブしてinfo.darkestは終了です。



☆4-string_tableの編集

<entry id="buff_stat_tooltip_upgrade_discount_”ここにBuffIDを追加”"><![CDATA[追加するテキスト]]></entry>
先程追加したbuffIDをstring_tableに追加。


<entry id="buff_stat_tooltip_upgrade_discount_newclass_add_tooltip_1"><![CDATA[追加するテキスト]]></entry>
先程までの例に使っていたIDを使用するとこうなります。

記述が終わったらセーブして作業終了です。

☆Tips
buffs.jsonとinfo.darkestは同名のファイルを”上書き”します。
effects.darkestは同名のファイルと”マージ(統合)”します。


かなり荒い説明なのでコメントにてわからない点は聞いて下さい。
よくあるミスや間違えの対処法
Q.なぜか色付き文字がすべて紫色

A.MOD独自のカラーコードを参照できていないためです。
 必ずcolorsファイルがproject.xmlと同じ階層にある状態でアップロードしてください。

Q.loc2ファイルが生成されない

A. <language id="english">が存在しない。
 これがないと変換ができません。
 
<language id="english"> </language>
 これを追加してアップロードしてみてください。

Q.上記をやっても変換されない。
 
A.localizationの綴が間違えていないか確認。
 XMLファイルの”.string_table”の形が崩れていないか確認。
 (.string_JP_tableなどにしていないか)
 project.xmlの中身のパスがしっかり変更されているか。

Q.それでも変換されない

A.コメント欄へコメントしてください。

他にもあるかもしれませんが現状考えつかないので問題あったらコメントにておねがいします。