-
-
Notifications
You must be signed in to change notification settings - Fork 5
zh_cn_intro
KlparetlR edited this page Dec 31, 2023
·
4 revisions
你也许见过以下情形:
我明明加了i18n,但是模组里面还有些东西没汉化。
其实,产生这些的主要原因是,这些文本并不像平时看到的一般的文本那样,被模组作者清清楚楚的写在一个语言文件中,供译者们翻译。 它们大多都是被模组作者们直接写进模组文件中的,这种方式不仅使得这些文本难以被修改,还可能无法与原模组保持一样的兼容性。
而类似这样的内容,我们称之为 硬编码(Harded Code),更详细地说,硬编码是指在软件实现上,直接将数据/内容嵌入到程序的源代码中,而不是从外部源获取数据或在运行时生成数据。
VaultPatcher(统指最新版,下文简称VP),就是为此而生。VP可以通过配置简单的json
文件,来替换模组中的硬编码文本。
Minecraft自带了一个类(在Yarn中称为TranslatableComponent
)来获取存放在语言文件中的翻译文本,只需输入一个Key
就能根据你的语言选项输出对应的文本。但倘若真这么简单的话,便不会有硬编码文本这种情况的发生了,虽然Minecraft本身有提供对应的服务供开发者使用,但由于模组开发社区没有统一的准则,导致仍有某些不负责任的开发者不使用它。
事实上,从硬编码文本转为可翻译文本并不难,难的是作者不去这样做。
- fabric:1.13+
- forge:1.6-1.20.4+
- 动态替换模式:1.17+