2025-04-16 20:14:14 +08:00
2025-04-08 11:31:35 +08:00
2025-04-08 11:31:35 +08:00
2025-04-08 11:31:35 +08:00
2025-04-08 11:31:35 +08:00
2025-04-08 11:31:35 +08:00
2025-04-08 11:31:35 +08:00
2025-04-16 20:14:14 +08:00
2025-04-08 11:31:35 +08:00
2025-04-08 11:31:35 +08:00
2025-04-08 12:38:09 +08:00

DRHPS-Translation 仓库

用于存放 Deltarune - Hypothesis 汉化项目的所有重要文件。
当前仓库适用于游戏版本:2025-04-02发布的愚人节预览版

目录结构

code-csharp 目录

存放通过对 DRHPS/Managed/Assembly-CSharp.dll 进行反编译得到的全部 C# 源代码,供使用 DnspyEx 修改硬编码文本和逻辑时参考。

  • en_US/:完整的原始代码,用于参考算法和结构;
  • zh_CN/zh_TW/:仅包含有硬编码文本或打字机逻辑改动的文件,未修改的代码不会放入。

💡 使用 DnspyEx 时,可通过搜索类名或字符串快速定位要修改的文件。

⚠️ 注意:由于反编译并非完全无损,可能出现报错,建议尽量 小范围修改(只修改方法,不修改整个类)。


dll-backup 目录

备份原始与汉化后的 Assembly-CSharp.dll 文件,用于版本对比。

  • en_US/原始DLL
  • zh_CN/ / zh_TW/当前最新的汉化版本DLL

font 目录

存放汉化过程中用到的字体资源,用于通过 UABEA 替换字体。

  • original/:游戏原始字体
  • processed/:已嵌入中文字符的字体
  • ttf-otf/:可在其他项目中使用的独立字体文件

在基于 TextMeshPro 的 Unity 项目中,字体资源包含以下三部分:

  1. Font*.json:字体配置信息;
  2. Font Atlas*.jsonFont Atlas*.png:字图(字体贴图);
  3. Font Material*.json:材质信息(通常无需修改)。

导入方法:

  • .json:通过 UABEA 的 Import Dump (JSON) 导入;
  • .png:使用 UABEA 的 Plugin - Edit Texture 进行替换。

⚠️ 建议打开 UABEA 后 导入两次 JSON 文件,第一次可能会失败。


image 目录

记录所有需要汉化的贴图资源,以及当前的翻译进度。

贴图导入方式:

  1. 使用 UABEA 批量打开 level0 ~ level50
  2. 按 Type 排序,选中所有 Texture2D
  3. 使用 Plugin - Batch Import,选择对应语言的目录:
images/zh_CN/import   # 导入简体中文贴图
images/zh_TW/import   # 导入繁体中文贴图
images/en_US/import   # 还原英文贴图

其他子目录用于标注翻译进度和贴图状态,具体格式见:images/标注.txt


strings 目录

存放通过脚本提取的非硬编码文本(用于翻译和对照)。

  • 分为两类:
    • dialogue/对话文本Weblate 中的 textmeshpro 模块)
    • mtext/UI文本、日志文本等Weblate 中的 mtext 模块)

命名规范说明:

  • *.json:原始英文文本,键为 场景-导入文件-PathID-编号,值为英文文本;
  • *-zh_CN.json:简体中文翻译(空值表示未翻译);
  • *-newtext.json:更新版本中新出现的文本;
  • *-notfound.json:更新版本中消失的文本,可用于找回已翻译内容。

👉 所有 json 可通过运行根目录下 translation-script.py 中的 update_translation_json() 自动生成。


tasks 目录

收录汉化过程中的各种标准、规范和注意事项,目前仍在整理中,欢迎协助补充。


text 目录

存放可导入游戏内的最终翻译文本(由脚本生成)。结构与 text/en_US 保持一致。

导入流程:

  1. 运行脚本中 import_translation() 函数;
  2. 使用 UABEA 批量打开 level0 ~ level50
  3. 按 Type 排序,选中所有 MonoBehaviour 项;
  4. 使用 Import Dump - JSON,选择 text/zh_CNtext/zh_TW 文件夹。

⚠️ UABEA 导入 MonoBehaviour 时首次导入可能失败,建议尝试两次以确保成功。


translation-tools/weblate 目录

存放从 Weblate 下载的最新翻译内容ZIP解压后

使用说明:

  1. 登录 Weblate点击项目主页下载翻译 ZIP
  2. 解压其中的 drhps/ 文件夹至此目录;
  3. 运行脚本中的 initialize_translation_json()update_translation_json() 更新本地 strings 中的翻译文本。

使用方法

  1. 准备工作

    • 安装依赖: 使用Python的包管理工具安装zhconv库用于将简体中文转换为繁体中文。

      确保当前目录结构完整,尤其是stringstext/en_UStranslation-tools/weblate等目录已经存在。

      (一般应该都是存在的,写这段是以防万一) 如果不存在,请创建好对应的文件夹,使用 UABEA 打开游戏资源level0 ~ level50Type 排序,选择所有 Monobehaviour 类型资源,并用 Export dump - JSON 导出到 text/en_US

    • 获取Weblate翻译文本 从Weblate页面下载翻译 ZIP 文件选择“下载翻译ZIP”将其中的 drhps 目录的所有子文件夹解压至 translation-tools/weblate 下。

  2. 运行脚本

    在项目根目录运行主脚本:

    python translation-script.py
    

    此操作会依次执行以下内容:

    1生成原始英文文本对照表

    initialize_translation_json()
    
    • text/en_US 目录下提取的原始英文文本,整理为 strings/mtext.jsonstrings/dialogue.json 两个文件。
    • 其中 mtext.json 包含UI元素、系统文本等dialogue.json 则为角色对白等内容。

    2更新翻译文本

    update_translation_json()
    
    • 读取 translation-tools/weblate 中的翻译文件合并进原始json生成带翻译的 strings/*-zh_CN.json 文件。

    3同步翻译文件

    os.system("cp -r ...")
    
    • 将更新后的翻译文件复制覆盖回 translation-tools/weblate 目录,保持两个目录同步。

    4生成用于导入的文本文件

    import_translation()
    
    • 根据英文原文和翻译文本生成可用于UABEA导入的文本输出至 text/zh_CN/

    5生成繁体中文文本

    convert_zh_to_tw()
    
    • 自动将简体中文翻译文件转为繁体,输出至 text/zh_TW/
  3. 导入游戏

    • 使用 UABEA 打开游戏资源level0 ~ level50Type 排序,选择所有 Monobehaviour 类型资源;
    • 使用 Import Dump - JSON 批量导入 text/zh_CNtext/zh_TW 下的文本;
    • 若首次导入失败(导入后使用 Edit Data 报错),请立即重新导入一次以确保成功。

开发者注意事项

  • 尽量小范围修改DLL
    在使用Dnspy修改Assembly-CSharp.dll时,建议优先修改方法Method级别而非整个类Class避免因逆向还原的不完整性导致报错。

  • 类名或方法找不到? 使用DnspyEx的全局搜索功能查找关键词如字符串文本、类名、变量名等定位相关代码。

  • 字体资源三件套必须同时导入 修改字体时务必通过UABEA同时导入 .json.png 的三件套Font.json, Font Atlas.json, Font Atlas.png否则游戏可能无法正常显示汉字。

  • 使用批量导入时注意文件名与格式 UABEA的 Batch Import 识别文件名,需保持贴图或文本文件结构、命名与原始资源一致。


常见问题

Q: 为什么第一次导入JSON时总是失败

A: 这通常是UABEA的bug。建议导入失败后立即导入第二次,大多数情况第二次可以成功解析。

Q: 转换后的简中/繁中文本没有效果?

A: 请检查是否:

  • 导入了正确的语言文件zh_CN 或 zh_TW
  • 修改过的DLL是否被正确替换进游戏目录
  • 使用的字体资源是否覆盖了所有汉字;
  • 批量导入贴图是否成功(必要时重新导入)。

Q: 脚本跑完但内容没有更新?

A: 请检查:

  • translation-tools/weblate目录下的翻译文件是否为最新导出的版本
  • Weblate中的中文翻译是否为空脚本不会导入空翻译
  • 脚本运行中是否有报错输出。
Description
用于存放 Deltarune - Hypothesis 汉化项目的所有重要文件。
https://git.ws3917.space/Wasneet_Potato/DRHPS
Readme MIT 1.1 GiB
Languages
C# 99%
TeX 0.6%
Python 0.4%