文本与本地化
Minecraft 是一款支持全球多语言本地化文本的游戏。为了实现这一点,Minecraft 采用了一套系统,其中内部的 翻译键(translation keys) 会根据不同语言分配对应的值。Minecraft 会为自定义实体、物品和方块生成翻译键,而我们需要在资源包中为它们分配本地化的名称。
语言文件
文件位置
语言文件通常位于资源包的 "texts" 文件夹中,文件扩展名为 .lang。这些文件也可以放在行为包中,但只能修改包清单(manifest)的名称和描述的可翻译文本。
- 🈵en_US.lang
- 📝languages.json
- 📝manifest.json
目前,Minecraft 支持 29 种语言,具体列表可参考 § 原版语言。
格式
语言文件的格式非常简单。翻译以键值对的形式提供,用等号(=)分隔,键是翻译键,值是一个字符串。值中不能包含换行符。
wiki.example_translation.line_1=第一行!
wiki.example_translation.line_2=第一行之后的更多信息。可以通过两个井号(##)添加注释,可以是行注释或行内注释。井号之后的所有文本都会被视为注释,直到下一行。
WARNING
行内注释后的空格不会被自动删除。如果需要缩进注释,请使用制表符(Tab)。
## 译者注:我觉得放在这里会很有趣。
item.flint_and_steel.name=燧石和史蒂夫 ##[原文如此]翻译中可以包含文本替换。替换可以是有序的(如 %1、%2 等)或无序的(如 %s)。原版翻译的值由游戏填充,而玩家可以通过使用原始 JSON 文本格式的命令(如 /tellraw)手动设置替换值。
commands.op.success=已授予管理员权限:%s
immersive_reader.book_page_header=第 %1 页,共 %2 页使用场景
本地化几乎可以应用于任何使用文本的地方,包括但不限于:
- 资源包的名称和描述
- 实体、物品或方块的名称
- 书中的页面
- 告示牌上的文字
/tellraw和/titleraw命令- 对话中的文本
然而,某些文本无法翻译,例如在铁砧中重命名的物品名称。
本地化实践
TIP
最佳实践是为资源包支持的每种主要语言创建一个语言文件的副本。例如,为了全面支持英语,可以同时创建 en_US.lang 和 en_GB.lang 文件,分别对应美国和英国的英语变体。
在编辑语言文件时,还必须在 texts 文件夹中添加一个 languages.json 文件,其中包含计划修改的每种语言的数组。这会让 Minecraft 知道应该为这些语言应用本地化。
["en_US", "en_GB", "fr_FR"]自定义语言
通过全局资源包,可以使用 languages.json 和 language_names.json 文件引入自定义语言。一旦资源包被全局应用,就可以在游戏设置的“语言”选项卡中切换语言。
假设我们有两个功能完整的语言文件,分别名为 xx_XX.lang 和 yy_YY.lang。
["xx_XX", "yy_YY"]language_names.json 也是一个数组,用于定义语言在界面中显示的名称。
[
["xx_XX", "新语言(自定义语言 #1)"],
["yy_YY", "Wiki语(自定义语言 #2)"]
]WARNING
使用自定义语言时,请确保在禁用存储该语言的资源包之前取消选择该语言,否则 Minecraft 可能会崩溃。
工具
如果微软正在本地化你的 .lang 文件,需要遵循特定的技术要求:
- 注释前必须使用
<tab>#(不能用空格)。 - 换行符必须是 Windows 风格(CR+LF),而不是 Unix 风格。
- 不能包含重复的键。
- 字符串必须添加注释以便于翻译。
你可以使用基于浏览器的免费工具 LangUtil 来协助完成这些工作。
原版支持的语言
以下是 Minecraft 默认支持的 29 种语言列表。
| 文件 ID | 语言 | 国家/地区 |
|---|---|---|
| id_ID | 印尼语 | 印度尼西亚 |
| da_DK | 丹麦语 | 丹麦 |
| de_DE | 德语 | 德国 |
| en_GB | 英语 | 英国 |
| en_US | 英语 | 北美 |
| es_ES | 西班牙语 | 西班牙 |
| es_MX | 墨西哥西班牙语 | 墨西哥 |
| fr_CA | 加拿大法语 | 加拿大 |
| fr_FR | 法语 | 法国 |
| it_IT | 意大利语 | 意大利 |
| hu_HU | 匈牙利语 | 匈牙利 |
| nl_NL | 荷兰语 | 荷兰 |
| nb_NO | 书面挪威语 | 挪威 |
| pl_PL | 波兰语 | 波兰 |
| pt_BR | 巴西葡萄牙语 | 巴西 |
| pt_PT | 葡萄牙语 | 葡萄牙 |
| sk_SK | 斯洛伐克语 | 斯洛伐克 |
| fi_FI | 芬兰语 | 芬兰 |
| sv_SE | 瑞典语 | 瑞典 |
| tr_TR | 土耳其语 | 土耳其 |
| cs_CZ | 捷克语 | 捷克共和国 |
| el_GR | 希腊语 | 希腊 |
| bg_BG | 保加利亚语 | 保加利亚 |
| ru_RU | 俄语 | 俄罗斯 |
| uk_UA | 乌克兰语 | 乌克兰 |
| ja_JP | 日语 | 日本 |
| zh_CN | 中文(简体) | 中国 |
| zh_TW | 中文(繁体) | 台湾地区 |
| ko_KR | 韩语 | 韩国 |










