2. 本地化与国际化

2.1. 什么是本地化与国际化

用官方的话说就是

国际化, 简称为i18n,是一种可以适用于各种语言的代码设计思路。  本地化是指显示适用于用户语言的文字的过程 。

I18n用 _翻译密钥(translation keys)_实现。 翻译密钥是一个字符串,用于标识一段没有特定语言的可显示文本。 例如, 翻译密钥tile.dirt.name指的是泥土方块的名字。 这样,可以引用可显示的文本而不关心特定语言。 加入新语言时,代码不需要修改。

本地化将在游戏的本地设置中发生。 在Minecraft客户端中,位置由语言设置指定。 在专用服务器上,唯一受支持的语言环境是en_US。 可以在 Minecraft Wiki上找到可用语言环境的列表。

因为Minecraft是一个面向全世界的游戏,我们不能忽视 Minecraft 的玩家来自世界各地,他们使用不同的语言。为了让更多人可以游玩这个游戏,所以Minecraft添加了引入了国际化与本地化支持。本地化大部分时间是在翻译外国作品,而这些翻译必须要考虑到地区差异。正如同酒石酸菌说的一样,本地化MOD不要使用机翻,这会使得翻译不准确或无法理解,所以我们在翻译是应该考虑本地人民的语言习惯以及在游戏中实质的作用。

2.2. 了解一个语言文件

我说了那么多,但是我们是来翻译MOD的,我们要知道怎么给我们的MOD创建出来一个语言文件以方便其他人对你的MOD进行翻译。

如果你按照之前的步骤注册出了一个物品,那么你会发现那个物品的名字不对。它的名字叫item.exeamplemod.bubble.name
这个名字是在创建物品时this.setUnlocalizedName(ExampleMod.MODID+"."+name)这个语句进行定义的。由此我们可以知道它的名字叫MODID.物品名.name再加上Minecraft的物品前缀item,就是他的的本地化名称。如果你实在不知道它的本地化名称,你也可以进入游戏查看它的名称得知它的本地化命名。

我们在assets/[modid]/lang创建一个文件en_us.lang。这里需要注意不是en_US,因为1.11 开始,资源包格式版本号更新到了 3。自此,资源包中所有文件名强制使用 小写字母 (正则表达式 [a-z0-9_]+)。所以你应该使用的是en_us.lang

资源包格式版本 文件名 Minecraft 版本
1 en_US.lang 1.6
2 en_US.lang 1.8
3 en_US.lang 1.11
4 en_us.lang 1.13
5 en_us.lang 1.15

到这里你可能会疑惑,我们是中国为什么我们要创建en_us.lang而不是zh_cn.lang。在这里我们只是以en_us.lang为示例,zh_cn.lang同理,在此我推荐你们创建两个语言文件en_uszh_cn

2.3. 制作一个语言文件

  1. assets/[modid]/lang创建两个文件en_us.langzh_cn.lang。在这里为assets/exeamplemod/lang

  2. en_us写入item.exeamplemod.bubble.name=Bubble

    zh_cn写入item.exeamplemod.bubble.name=泡泡

    并保存文件

  3. 重启游戏,进入游戏你就可以看到你的翻译了。

image.png

如果你有闲功夫,可以考虑去酒石酸菌的1.12.2的通用汉化项目看看,如果有兴趣请点击 这里

本文大部分内容都由 吃货一枚 提供