Skip to content

Extracting LanguageData from Mods of Rimworld for translation

Notifications You must be signed in to change notification settings

sieveLau/RWSimplifiedPatcher

Repository files navigation

编译要求

在Windows上建议使用vcpkg安装依赖。只测试了64位系统(x64-windows和arm64)。

  • C++20
  • plog
  • libxml2
  • fmt

编译前请自行添加cmake命令行参数指向你的vcpkg.cmake ,例如-DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake

用法

下载最新的Release并解压,运行RWSimplifiedPatcher.exe,根据提示提供输出目录和Mod的Defs文件夹路径。或者也可以直接命令行传递RWSimplifiedPatcher.exe 输出目录 Mod的Defs文件夹。本程序会自动扫描所有Defs文件夹内的xml并生成翻译用的Languages文件夹,翻译里面的每个xml文件即可。

翻译完Languages文件夹之后,可以:

  • 直接把Languages合并到原mod文件夹里的Languages目录下
  • 或,自己建一个翻译mod放到Mods 文件夹,结构参考example_mod (注意,本条未更新)

缘由

当初用RimTrans真是省心省力,然而现在它双击的时候只会一声不吭地crash。

看了全能者之夕的视频之后,我用Patch xml的方法翻译了WallStuff 的defs。然后我发现这个xml生成过程是可以自动化的……

最近趁休假,重新按照本来应该用的翻译方式Mod_folder_structure ,参考Rimworld Mod教程 第七章:翻译包文件 ,重写了程序。

工作原理

用libxml2读取xml文件并检测特定的tag,例如label,然后用XPath反向搜索所属的defName,拼接成LanguageData所规定的Dot Notation式xml。

配置

It reads defclasses.txt to know what defs should be patched. Modify defclasses.txt to suit your requirement. If no defclasses.txt is found in the same folder of RWSimplifiedPatcher.exe, it will just catch ThingDef.

不用配置。程序会自动检测所有以"Def"结尾的东西,然后抽取<label><description>(如果有的话)并生成patch xml。

Todo

  • 自动读取和生成汉化Mod的所有结构
  • Mac平台的wchar_t支持测试
  • 简单的图形界面

About

Extracting LanguageData from Mods of Rimworld for translation

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published