翻译系统
在开始翻译过程之前,我们先来看看 Hachimi 是如何进行翻译的。你不需要完全理解这里说明的所有内容,但最好先简单了解一下它的工作原理,这样你在翻译时就不会感到困惑。
INFO
如果你还想了解翻译词典的格式/组织方式,你可以在阅读本文的同时浏览 localized_data 目录进行参考。"可以通过浏览本地副本来查看,或者你也可以浏览 GitHub 上的tl-en仓库。如果你已经安装了 Hachimi,可以通过浏览 [游戏安装文件夹]/hachimi/localized_data 来查看,或者你也可以浏览 GitHub 上的 简体中文 仓库。"
此外,本文中的文件路径仅涵盖官方翻译仓库如何操作;Hachimi 的翻译系统具有高度可配置性,可以配置到任何其他地方。
本地化字典/哈希字典
在 localized_data 文件夹的根目录中,你会发现两个名为 localize_dict.json 和 hashed_dict.json的文件,这两个文件分别用于两个不同的系统,但目的相同:UI 翻译。
本地化字典是 Hachimi 中引入的一种新的、更受欢迎的 UI 翻译方式。该系统直接修改了游戏内部的本地化系统(因此得名),这将确保翻译内容准确无误,包括语境。每个翻译条目都映射到游戏内的一个内部 ID,该 ID 也大致指定了它们所使用的语境(然而,在某些情况下,同一个 ID 会在多个语境中被不恰当地使用,这要怪 Cy 开发者)。
哈希字典是从之前的翻译项目中继承下来的遗留系统。它本质上是一个单词查找表;UI 中任何与该表中哈希值匹配的内容都将被替换为指定的翻译内容。之前的翻译项目中,它表现得非常具有侵入性,效率低下,并且经常导致翻译质量低下,因为它们可能出现在错误的位置(例如剧情和对话)。尽管如此,它仍然有用,但是用途有限,当有时翻译目标在本地化字典或任何其他易于访问的翻译方法中不可用时,它的作用就体现出来了。ZokuZoku不支持此字典。
如果你想为官方翻译仓库做出贡献,请参阅贡献文章以了解更多信息,这里有关于何时使用以及何时不使用它的规则。
MDB 字典
MDB 指的是 master.mdb,这是游戏使用的数据库文件,其中包含大量不同类型的数据。Hachimi 的翻译系统仅涉及该数据库中用于文本内容的 4 个表: text_data, character_system_text, race_jikkyo_comment 和 race_jikkyo_message。每个表都有自己相关的字典,其名称在 localized_data 的根目录中。
text_data包含游戏内所有实体的文本信息,包括但不限于:角色名称/个人资料、支援卡名称/描述、剧情名称、卡池名称/描述、任务名称等。character_system_text包含在游戏各个画面上(例如游戏主屏幕)的角色对话。race_jikkyo_comment与race_jikkyo_message包含比赛实况与解说的用语。
资源字典
有 5 种资源字典类型:
- 剧情字典(用于主线剧情、训练事件和主屏幕交互):
assets/story/data/??/????/storytimeline_*.json和assets/home/data/?????/??/hometimeline_*.json; - 比赛剧情字典(用于主线剧情中的比赛过场动画):
assets/race/storyrace/text/storyrace_*.json - 歌词字典:
assets/lyrics/m????_lyrics.json atlas元数据字典:assets/atlas/*/*.jsonuianimation字典:assets/uianimation/*
除了歌词字典之外,所有这些字典都允许为每个平台指定资源包的哈希值。此资源包哈希值用于检查资源包是否已更新,若检测到更新,则说明翻译内容可能与资源中当前的翻译内容不匹配,从而防止加载错误的数据。
纹理替换
纹理替换根据加载纹理的根资源类型进行分类。对于大多数纹理类型,将使用 .png 文件进行替换。它们被划分到各自的目录中:
atlas: 包含 UI 精灵的图集纹理。元数据由图集元数据字典提供,该字典与替换纹理同名,但以.json文件形式存在。路径:assets/atlas/*/*.png。an_texture_sets: 包含动画 UI 图集纹理,包含在uianimation资源包中。uianimation可以使用资源字典来提供这些纹理的元数据。路径:assets/an_texture_sets/as_uMeshParam_fl_*/tx_uTex_fl_*.png。textures: 包含通用纹理。游戏中的 UI 和 3D 模型都会使用它们。与其他类型不同,这些替换纹理的文件格式取决于资源包中指定的原始文件名。对于 UI 纹理,通常为.png,对于 3D 纹理,通常为.tga。路径:assets/textures/*。
所有纹理都可以使用 .diff.png 文件替换,而无需使用其原始格式。这是一种基于 PNG 的特殊格式,仅包含原始图像和替换图像之间的差异数据,从而避免了版权问题。
可以在 Hachimi-Hachimi/tools 仓库中找到处理这些纹理的完整工具集,包括 PNG 差异。
影片(视频/FMV 过场动画)
它们是 USM 格式的视频文件。只需让游戏加载替换掉的同名文件即可。
路径: assets/movies/*
翻译加载流程
配置文件、本地化字典、哈希字典和 MDB 字典都会在游戏启动时立即加载;当你选择重新加载本地化数据时,也只会重新加载这些内容。所有其他与游戏资源相关的内容,每次游戏尝试加载相应的资源时,都会(重新)加载。
资源字典在应用之前会检查资源包的哈希值。如果资源包的哈希值与字典中指定的哈希值不匹配,则会忽略该文件。如果资源字典中未指定资源包的哈希值,则会跳过此检查。
纹理替换有一个特殊的加载过程。加载资源时,它会首先查找对应的 .diff.png 文件作为 diff 文件,否则会尝试加载 .png 文件。如果找到可用的 diff 文件,它会检查相应 .png 文件的修改时间。如果修改时间晚于 diff 文件,则直接加载 .png 文件。如果文件不存在或修改时间早于 diff 文件,则它会将 diff 文件应用于原始纹理,并将其保存为 .png 文件中以供后续使用。
