许多翻译

许多翻译

将翻译文件拆分成多个文件以清晰分离!

嗨,我偶尔喜欢测试一下什么可能实现,这就是那个冲动的产物。

我真的厌倦了处理超长/繁琐的翻译文件,如果你参考 1.21.1 的原版翻译,原始文本已经接近 500Kb 了……而在开发大型内容模组时你也会遇到类似的问题(假设你不是用数据生成,但即便如此规模也可能变得疯狂)。所以……

多重翻译!

这是一个小型共享库模组,允许任何模组(或资源包)将单个 语言文件拆分成几个较小的文件,而不是维护一个巨大(或多个巨大)的文件。

这实际解决了什么问题呢?

原版每个命名空间每种语言代码只加载一个文件: assets/<namespace>/lang/<code>.json。

ClientLanguage.loadFrom 进行精确的 路径查找(String.format("lang/%s.json", code));它从不扫描 lang/ 目录,因此内容较多的模组最终会生成越来越庞大、难以审查的 JSON 文件。或者更典型的是,单个巨大的“en_us.json”文件。

工作原理

ClientLanguageMixin 重定向了 ClientLanguage#loadFrom 内部的 ResourceManager#getResourceStack(...) 调用。

在获取 lang/<code>.json 的正常精确匹配堆栈后,它还会 (通过 ResourceManager#listResourceStacks)查找同一命名空间中匹配 lang/<code>_*.json 的所有资源,按文件名对这些匹配项进行排序,并按该顺序遍历它们。

翻译键按文件顺序合并,因此后面的文件在冲突时优先。

好的,我该怎么使用它?

像平常一样创建你的模组!使用普通的 en_us.json 或任何你正在处理的语言代码文件,直到它变得不堪重负。

然后安装这个模组后,你可以简单地将大段内容剪切并粘贴到单独的文件中,例如 en_us_1.json 或 en_us_items.json 等。

给开发者的说明

这个模组可以通过 CurseMaven 用于开发中的工作。