RimWorld
48 人が評価
Mod Translation Guide Using RimTrans for Japanese
作者: Proxyer
A mod translation guide using RimTrans. The description is in Japanese.
RimTransを使ったModの翻訳を行うためのガイドです。説明は日本語で書かれています。

より詳しい話をしたい方は、下記リンクからうにーぬさんが主催する日本人向けDiscordチャンネルで質問やModについて話をする事ができます。

RimMod相談所
Discord招待リンク : こちらのリンクから[discord.gg]
6
2
   
アワード
お気に入り
お気に入り
お気に入りから削除
RimTransが起動しない場合の対策
原因:
恐らく、設定ファイルが作成できていないので手動で設定ファイルを編集する事で起動できるようになります。

設定ファイルの編集方法 :
以下のフォルダーに保存されている

C:\Users\(ユーザー名)\AppData\Roaming\RimTrans

「Settings.xaml」を文字エンコードUTF-8で保存できるエディターで開き、以下の内容をコピペしてから、文字エンコードをUTF-8(BOMの有無はどちらでもOK)にして保存します。

<?xml version="1.0" encoding="utf-8"?> <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <s:Double x:Key="AddModWindowHeight">600</s:Double> <s:String x:Key="RimWorldInstallDir">C:\Program Files (x86)\Steam\steamapps\common\RimWorld</s:String> <s:Double x:Key="OptionsWindowHeight">600</s:Double> <s:Double x:Key="MainWindowWidth">1080</s:Double> <s:Double x:Key="OptionsWindowWidth">971</s:Double> <WindowState x:Key="MainWindowState">Normal</WindowState> <s:String x:Key="WorkshopModsDir">C:\Program Files (x86)\Steam\steamapps\workshop\content\294100</s:String> <s:Double x:Key="AddModWindowWidth">971</s:Double> <s:Double x:Key="MainWindowHeight">667</s:Double> <s:Boolean x:Key="Selected_Japanese">True</s:Boolean> </ResourceDictionary>

注意: ディレクトリパスはWindows10の場合


もし直接編集できない場合は、Google ドライブからサンプルファイルをダウンロードして、以下のフォルダーに解凍したSettings.xamlを入れてください。詳細は中に一緒に入ってる説明用.txtをお読みください。

C:\Users\(ユーザー名)\AppData\Roaming\RimTrans

ファイル名 : RimTransSampleSettings.zip
ダウンロードリンク : こちらから[drive.google.com]

RimTransを使ったMod翻訳ガイド
編集 2020/12/02

RimTransを使用して、翻訳を行う場合の初心者用ガイドになります。
翻訳に使用するツール:
RimTrans
最新版:https://github.com/RimWorld-zh/RimTrans/releases
公式フォーラム:https://ludeon.com/forums/index.php?topic=30949.0

入手方法:
上記の最新版リンクから0.18.2.6: RimTrans Betaをダウンロードします。
Assets の下にあるRimTrans_0.18.2.6_Beta.zipと書かれたリンクをクリックします。

使い方:
使い方がRimWorld v1.1以降では少し異なります。

1. RimWorldをインストールした先を開きます。

2. RimTransを起動します

3. RimTransの設定(Options)を開き、




Language(言語)からJapanese 日本語を選択します。RimTransの言語が日本語化されるので、





次にアプリを選択します。




4. RimWorldがインストールされているパスを設定・修正します。1.1以降はゲームのCoreデータの収納先が変更されているためにパスを自分で入力・修正する必要があります。これが行わない場合、正しい翻訳ファイルが出力されません(17.もお読みください)。



自動ボタンを押すと、古い1.0時点での場所が指定されます。




━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


もし最新版のCoreを参照した完全な翻訳を作成する場合は、

4 - a :
インストール先のパスを「自動」ボタンで指定する



4 - b :
「RimWorld/Data」フォルダー内にある「Core」フォルダーを、翻訳を出力する時だけ、「Mods」フォルダーにコピペします。



4 - c :
手順5以降を行い、翻訳ファイル(Japaneseフォルダー)を出力し終えたら、「Mods」フォルダーにコピペした「RimWorld/Mods/Core」フォルダーは削除してください。

注意:
翻訳ファイルを出力した後も「Core」が「Mods」フォルダーに残ったままだと、ゲームスタート時にエラーが出ますので注意してください。

4 - d :
日本語翻訳との重複部分を判りやすくしたい場合は、
・「Mods/Core/Languages」フォルダー内に「Mods/Core/Languages/Japanese (日本語)」フォルダーを作成して
・ModsフォルダーにコピペしたCoreの中にあるLanguagesフォルダ(RimWorld/Mods/Core/Languages)にある「Japanese (日本語).tar」を、上記で作成した「Japanese (日本語)」フォルダに中身を解凍してください。
・これらも翻訳の出力が完了したらCoreごと一緒に削除する必要があります。
・tarファイルの解凍には専用の解凍ツールかコマンドが必要です。


5. ワークショップフォルダーは自動ボタンを押して問題ありません。





6.オプションを閉じて最初の画面に戻ります。

7. 左上にある「Modを追加」ボタンを押して、




左にあるSteamアイコンをクリックし、ワークショップを選択してリストを表示します。




このワークショップIDと名前のリストから、あなたが翻訳を作成したいModを探し、クリックして選択します。




8. Modを選択した後、画面右の言語から、翻訳を作成したい言語にチェックを入れます。日本語なら Japanese ( 日本語 )を選択する。



9. 翻訳する言語にチェックを入れたら「実行」ボタンを押します。




10. そうすると、Modリストに翻訳したいModと言語が登録されます。

11. Modが間違っていないか画面右でModの名前やIDを確認します。(RimTransの翻訳ミスでIDの所が名前になっています)



12. 画面左のMod名を右クリックしたメニューから「エクスプローラーで見る」を選択するとModがインストールされた先のフォルダをエクスプローラーで開きます。実際の作業を行うためにあらかじめ開いておきます。




13. 画面上の「出力」ボタンを押すと、選択した言語で翻訳ファイルを対象Modの言語フォルダー内に出力します。



14.ワークショップModフォルダーのLanguage(翻訳フォルダ)内に、翻訳したい言語用の翻訳ファイルが出力されているので、エレメント内を翻訳をします。




注意:
翻訳ファイルはXMLの仕様で作成されているため、XMLを直接編集できるか、文字コードをUTF-8で保存できるエディターを使用します。日本語環境で一般的なエディターで保存すると、自動的にShift-JISコードなどで保存されてしまうので、RimWorldはそれらを読み込めないためエラーになります。

また改行コードの違いも問題になるので、Googleなどの翻訳サイトから翻訳文をコピペする際は改行コードが正しいか確認してください。改行コードはLF(Unix系)、RF(Mac系)、LF+RF(Windows系)とありますが、どれか1つに統一してください。場合によると文字化けの原因になります。XMLの詳細な記述方法などは検索すると良いでしょう。

15. 最初に翻訳ファイルを出力した際に、年月日を付けでバックアップしておくと、Modに更新があった際に比較することで、どこが変更されたのかを比較して確認する事が簡単になります。

例: ENG_201202_JP.zip RimTransで出力された中身が英語(ENG)の日本語翻訳(JP)ファイルで、2020年12月2日に出力されたもののバックアップzipファイルという意味になります。ファイル更新日時などでも確認可能ですが、ドライブが変更されたり、クラウドバックアップなどを使用した際にデータを復元する際のファイル管理に便利です。

16.翻訳ファイルが出力されない場合は、出力設定を通常モードからCoreモードに切替えると良いかもしれません。Coreモードは、Modに含まれている要素(DefsやKeyedなど)だけから翻訳ファイルを出力するモードです。




17.RimTransのリリース版は1.0で停止しているので、1.1以降に追加された部分(クエストやDLC部分など)は出力されません。注意が必要です。必ず、翻訳を作成した後、翻訳対象ModをModリストで有効化して翻訳エラーが無いか確かめましょう。開発者モードで、黄色いTranslationエラーがエラーログに記録されたら、スタート画面の左にある「翻訳ファイルを検証する」ボタンを押すと、




翻訳ファイルのエラーについてのログ(TranslationReport.txt)がデスクトップに出力されます。



 
TranslationReport.txtの簡単な見方:
 



General load errors :
ゲーム開始時にエラーとして記録されている原因がここに記録されます。
大抵はxml文法上のエラーなどです。

Def-injected translations load errors :
元ModのDefが読み込まれた際に生じた翻訳の読込エラー

Backstories load errors :
バックストーリーが読み込まれた際の翻訳エラー

ただし、Humanoid Alien Races 2.0で追加されたエイリアン種族の場合は、ここにエラーが記録されても実際は「正しく翻訳されている」ケースがあります。

Missing keyed translations :
翻訳可能なKeyed部分に、対応する翻訳が存在していないKeyedがあるというエラーが記録されます。
大抵はModの設定ファイルの翻訳です。

Def-injected translations missing :
元ModのDefが読み込まれた際に翻訳可能なはずなのに、対応する翻訳が存在していない場合にエラーが記録されます。

ただし、Humanoid Alien Races 2.0(HAR)で追加されたエイリアン種族の場合は、ここにエラーが記録されても実際は「正しく翻訳されている」ケースがあります。また下記の様な種族独自の身体パーツの様に翻訳したらダメなケースもあります。HAR側で自動的に処理されるので不要。

*.alienRace.generalSettings.alienPartGenerator.bodyAddons.*.bodyPart

Backstory translations missing :
バックストーリーに存在していない翻訳がある場合のエラーですが、これもHAR種族の場合存在するのにエラーが記録されます。defNameに種族名などが付くことが多いので、それで判断してください。

Unnecessary def-injected translations (marked as NoTranslate) :
不必要な翻訳が存在している場合にエラーが記録されます。更新などで存在しなくなった不要な翻訳などが記録されます。

Def-injected translations using old, renamed defs
(fixed automatically but can break in the next RimWorld version) :

古い1.0以前の記述ルールでdefNameなどが書かれている場合に出力されます。大抵はThings_Building(建築物)で、1.0版 Door_Frame 1.1版以降 Flame_Doorなどの様にする必要があります。古いままでもゲーム上は問題ありませんが、その建築物の翻訳が呼び出される際に変換処理が入るため、スタート時間が遅れる原因になります。

Argument count mismatches (may or may not be incorrect) :
{0}や[PAWN_nameDef]などの指定文字が自動的に入る場合に、その引数が不一致の時に記録されます。

ただし、意図して不一致にされている場合があるのでエラーが記録されても修正が不要な場合があります。英文では必要ですが日本語の場合は、「彼は彼の持ち物を彼のために運んだ」などの様に彼(HE)の部分が何度も繰り返されおかしな文章になるケースが存在します。このため日本語翻訳では、HEに当たる[PAWN_pronoun]の個数を削ったりする場合があります。

Unnecessary keyed translations (will never be used) :
不必要なMod設定用のKeyed翻訳が存在する場合に記録されます。ただし、Modによってはdll処理されているケースもあるので本当にエラーなのかはModオプションを開いて確認してください。

Keyed translations matching English (maybe ok) :
設定(Keyed)の翻訳ファイルで、英語のままの部分が残っているというエラーです。ただし、{0}などの引用記号や、kgなどの様に翻訳が不要なものが大半で、無理に翻訳化したり変更するとUI上のレイアウトが崩れて文字が表示されなくなるケースがあります。これもどうしても変更する場合は画面上で確認する必要があります。

Backstory translations matching English (maybe ok) :
バックストーリーに英文のままな未翻訳が残っている場合に記録されます。


 
HugsLibのMod用Newsの翻訳方法
HugsLibを導入するとModオプションに現れるMod更新情報は、RimTransでは翻訳されません。

これはファイル構造として、RimWorldの定義外なので、RimTransはRimWorldのファイルフォルダーと見なさないためです。従って、各Modに含まれているHugsLib用のNewsフォルダーは手動で翻訳する必要があります。

翻訳手順:
まず最初にNews内容を翻訳するには、翻訳対象のModフォルダーに存在する「News」フォルダーを開きます。各Modはワークショップアイテムの場合、以下のフォルダーパスに各ワークショップアイテムのURL番号と同じ数字フォルダーに存在しています。

C:\Program Files (x86)\Steam\steamapps\workshop\content\294100\****(ワークショップID番号)

例: Allow Tool
C:\Program Files (x86)\Steam\steamapps\workshop\content\294100\761421485

Allow Toolを例にして説明を行っていきます。

上記のAllow Toolのフォルダーの中にあるNewsフォルダーを開くと以下の画像の様になっています。



imagesフォルダーは更新情報の中で使用される画像が入っています。基本的に翻訳には関係ありません。AllowToolUpdateFeatures.xmlは更新内容のバージョン番号、詳細情報の確認用URL、Modの名前、更新内容について記述されています。こちらを日本語翻訳する事になります。

AllowToolUpdateFeatures.xmlを開くと以下の様になっています。



翻訳作成に必要なxml要素
翻訳に必要なのは、Modを指定しているmodNameReadableとVersionを区別するためのdefNameと更新内容の説明文であるcontentです。

<modNameReadable>Allow Tool</modNameReadable>
<defName>AllowTool_2_3_0</defName>
<content>略</content>

日本語翻訳フォルダーに翻訳を入れる際に必要となるフォルダー名は、
<HugsLib.UpdateFeatureDef ParentName="ATUpdateFeatureBase">
と記述されている部分の、HugsLib.UpdateFeatureDefとなります。
ドット( . )もフォルダー名に必要なので、忘れないようにしてください。

実際の日本語翻訳用のフォルダーは以下の画像の様な構造になります。


翻訳用のファイル名も、AllowToolUpdateFeatures.xmlにしても良いのですが、この画像例ではHugsLibの基本ファイル名であるUpdateFeatures.xmlにしてあります。

日本語翻訳ファイルの作成

それでは実際に、翻訳されたファイルの中身を見てみましょう。



Newsの翻訳をする為のdefNameは「翻訳作成に必要なxml要素」で説明したものを組み合わせます。

labelに当たる部分は defName . (ドット) modNameReadable
descriptionに当たる部分は defName . (ドット) content

例;
<AllowTool_2_3_0.modNameReadable>>Allow Tool</AllowTool_2_3_0.modNameReadable> <AllowTool_2_3_0.content>略</AllowTool_2_3_0.content>

これらを、翻訳元のUpdateFeatures.xmlに記述されているVersionごとに作成し、翻訳する事でHugsLibのMod更新情報(News)を翻訳することができます。



例で使用されている&lt;や&gt;はhtmlの​特殊文字コードです。&lt;b&gt;​なら <b>という太文字タグになります。

 
パッチ内の翻訳について

1. パッチファイルの確認
まず最初にパッチファイルの中身を確認し、どのDefsフォルダーに属するものか確認します。
例えば、以下の様なパスを持つパッチの場合

<Operation Class="PatchOperationReplace"> <xpath>/Defs/ThingDef[defName = "Silver"]/label</xpath> <value> <label>quiksilver</label> </value> </Operation>

ThingDefsに所属するDefNameをパッチ操作していると判ります。

2. パッチの書き換え対象のパスを確認
次にCore/Defs内で、[defName = "Silver"]に相当する、<defName>Silver</defName>を検索します。

Core/Defs/ThingDefs_Items/Items_Resource_Stuff.xmlがヒットすると思うので、
その中にある<defName>Silver</defName>に関係する<ThingDef ParentName="ResourceBase">から </ThingDef>までをコピーしたxmlをCoreではなく翻訳したいModのDefs内に、仮に作成します。

翻訳作業用として例えばThingDef_TrasPatch.xmlと判りやすい名前にすると良いでしょう。
翻訳業が終わった場合は翻訳対象のModフォルダーから削除します。

3. パッチ操作対象を置き換えたファイルの作成
このThingDef_TrasPatch.xmlにコピーした<label>silver</label>をパッチでReplaceする<label>quiksilver</label>実際に書き換えます。
書き換えが終わったら、文字エンコードをUTF-8で保存することを忘れずに。

EX;
<ThingDef ParentName="ResourceBase"> <defName>Silver</defName> <label>quiksilver</label>

4. RimTransでの翻訳用にファイルを追加する
この書き換えたThingDef_TrasPatch.xmlを翻訳したいModのDefs/ThingDefs_Itemsフォルダに移動します。なければ新しくフォルダーを作成する。

5. RimTransで出力した翻訳ファイルの修正
ThingDef_TrasPatch.xmlを入れ終わったら、RimTransで通常通り翻訳します。すると、ThingDef_TrasPatch.xmlというファイル名で翻訳ファイルが出力されます。

パッチで書き換えている部分は、<Silver.label>quiksilver</Silver.label>になります。
それ以外の要素は不要なので、削除すると以下の様になります。

<?xml version="1.0" encoding="utf-8"?> <LanguageData> <Silver.label>quiksilver</Silver.label> </LanguageData>

変更後に3.と同じようにUTF-8で保存します。

6. LoadFolders.xmlを使用したパッチ対象Mod専用の翻訳を追加
出力された翻訳ファイル名(ThingDef_TrasPatch.xml)を、2.で検索したCoreのファイル名であるItems_Resource_Stuff.xmlに書き換えます。これはCoreの要素を変更しているので重複エラーを避けるための方法です。もし書き換え対象がMod専用だったり、他のModのdefNameだったりする場合は、Coreではなく書き換えるModのDefsに含まれるxmlファイル名にすると良いでしょう。

もしゲーム起動時にエラーが出ないのなら、面倒な場合は、ThingDef_TrasPatch.xmlという仮の名前のままでも構いません。

パッチ対象が他のModの要素の場合、LoadFolders.xmlを使用して、対象ModのpackageIdで確認して指定した別フォルダー内に翻訳を入れる事で、対象Modがある/有効化している場合だけ翻訳を追加することが可能になります。

LoadFolders.xmlを使用したMod専用フォルダーの追加例
<?xml version="1.0" encoding="utf-8"?> <loadFolders> <v1.3> <li>Common</li> <li>1.3</li> <li IfModActive="Ludeon.RimWorld.Ideology">Ideology</li> <li IfModActive="Ludeon.RimWorld.Royalty">Royalty</li> <li IfModActive="Ludeon.RimWorld.Biotech">Biotech</li> <!-- conditions: Mod AAA active, Mod packageId = AAA Mod short folder name = BBB --> <li IfModActive="AAA">BBB</li> <!-- Mod DDD Modlist loaded, Mod packageId = DDD Mod short folder name = CCC --> <li IfModLoaded="DDD">CCC</li> <!-- If packageId = EEE Mod not active, Load FFF folder. --> <li IfModNotActive="EEE">FFF</li> <!-- If packageId = GGG Mod not mod list load, Load HHH folder. --> <li IfModNotLoaded="GGG">HHH</li> <!-- If packageId = III mod active, and packageId = JJJ mod active, load KKK folder. --> <li IfModActive="III, JJJ">KKK</li> <!-- Exp: Royalty DLC and Ideology DLC both active --> <li IfModActive="Ludeon.Rimworld.Royalty, Ludeon.Rimworld.Ideology">RoyaltyAndIdeology</li> <!-- If packageId = LLL mod active, and packageId = MMM mod not active, load NNN folder. --> <li IfModActive="LLL" IfModNotActive="MMM">NNN</li> <!-- Exp: Royalty DLC active, Ideology DLC no active --> <li IfModActive="Ludeon.Rimworld.Royalty" IfModNotActive="Ludeon.Rimworld.Ideology">RoyaltyOnly</li> </v1.3> </loadFolders>

詳しくはRimWorldがインストールされているフォルダーにあるModUpdating.txtを読むか、Ludeon社が公開している以下のドキュメントを参考にしてください。

Multi-version mods in RimWorld[docs.google.com]

LoadFolders.xmlを使用した特殊なMod確認方法の例
LoadFolders.xmlを使用して、複数Modが存在するか確認して、そのModのどれかが存在する場合にだけ指定されたフォルダーを利用したい場合の例です。

条件:
ModのpackageId「AAA」または「BBB」または「CCC」が、それぞれ単独、またはその全てがModリストで有効な場合、DDDフォルダを読み込む

xml記述例:
<?xml version="1.0" encoding="utf-8"?> <loadFolders> <v1.3> <li>Common</li> <li>1.3</li> <li IfModActive="AAA, BBB, CCC">DDD</li> </v1.3> </loadFolders>

使い方としては、翻訳(元Modの使用しているdefNameなど)が競合する複数のModを除外して翻訳を適用したい場合などに使用します。

packageIdをカンマ(,)を使って切り分ける方法( or )についてはLudeon社が公開している以下のドキュメントを参考にしてください。

Multi-version mods in RimWorld[docs.google.com]

Conditional load folders
Multi-version mods in RimWorld の投稿を引用:
Both IfModActive and IfModNotActive support multiple comma-separated packageIds in their values (e.g IfModNotActive="Ludeon.Rimworld, Ludeon.Rimworld.Royalty"). These are treated as if they had an "OR" operator between them.

日本語翻訳 :
IfModActiveとIfModNotActiveの両方で、複数のカンマ区切りのpackageIdが値としてサポートされます。(例 : IfModNotActive="Ludeon.Rimworld, Ludeon.Rimworld.Royalty") カンマは "OR" 演算子をpackageIdの間に持っているかのように扱われます。


19 件のコメント
Takashi 2022年11月10日 21時45分 
Proxyerさん返信遅れて申し訳ないです。
お手数を何度もかけてすみませんでした。
今度はしっかりと規約を見ながら発言します。
本当にありがとうございます
     長文失礼しました。
Proxyer  [作成者] 2022年11月10日 2時47分 
maozaitengyuanさん。管理人さんと連絡を取り、事情を説明してBANの方を解除して頂いたので、もう一度RimWorld相談所のDiscordチャンネルに入室してみてください。

今度は、メッセージをよく読んでから、何をすればよいのかをご確認してください。またお会いしましょう。それでは。
Takashi 2022年11月9日 22時59分 
Proxyerさんわかりましたとりあえず他に教えていただいた何処を見て勉強してみます。
場違いな質問をしてしまいすみませんでした
Proxyer  [作成者] 2022年11月9日 22時55分 
それは残念です。

既に書いてありますが、Discordでは場合によるとチャンネルを潰す目的の荒らしも存在する為、かなり厳しい対応が必要な状況です。最初の確認のメッセージをお読みいただけなかったのは残念です。

とはいえ、独力で学習する事も不可能ではありません。dllを作成するために必要な知識はRimWorld専用ではなく、プログラム作成の基本なので検索で探せば助けになると思われます。
XMLについても同様です。

RimWorldの詳細な内部情報は、RimWorld 英語wikiをご覧ください。
Takashi 2022年11月9日 21時04分 
Proxyerさん話題違いの質問に答えていただきありがとうございます。
uniinu_steam氏のDiscordには昨日入ってみて規約を読んではいたのですが、Gif画像を送ってしまってBANされてしまったので教えていただたのに申し訳ないですが利用できそうにないです...
Proxyer  [作成者] 2022年11月9日 20時18分 
こんにちは maozaitengyuan さん。
日本語でRimWorld用のdllを作る解説ならこちらをご覧になると良いかもしれません。

MOD製作
https://seesaawiki.jp/rimworld/d/%c0%bd%ba%ee

DLLを用いたMOD作成編集する
https://seesaawiki.jp/rimworld/d/DLL%A4%F2%CD%D1%A4%A4%A4%BFMOD%BA%EE%C0%AE

RimWorldでもっとも利用されているHarmony dllなどもソースの参考になるかもしれません。

またDiscordで@uniinu_steam氏が立てられいるRimWorld日本コミュニティで、より詳細なMod作成についてのチュートリアルや相談所などがあります。 こちらのアドレス [discordapp.com]からアクセス可能です。現在入室時に荒らしを避けるためにメッセージを読んでいるか確認がありますのでメッセージを必ずお読みください。
Takashi 2022年11月9日 19時36分 
ここに書くのは違うかもですが、RimworldのMOD作りをしたいけどプログラミング言語が分からないのでプログラミング言語の解説しているおすすめのサイトとかブログとか教えて欲しいです
Proxyer  [作成者] 2022年7月16日 22時35分 
Hello Chiwei.
It may be possible to see it if put the URL without " http://" .
Chiwei 2022年7月16日 20時43分 
are you there? I wrote a guide to extract Patches using RimTrans. But I can't pass the review, can I add your friend? I should be able to see it by marking you as a creator.
Chiwei 2022年6月22日 18時34分 
Wow, this is super complicated.:steamfacepalm: