Lang语言
.lang是Mojang对不同语言文字存放的文件的后缀名
lang文件都放在资源包根目录/texts文件夹内,因此在lang是资源包部分
作用
如 定义某个物品的显示文字,可以在该物品行为文件的组件中的minecraft:display_name组件直接设置。但是,如果你要让这些文字更好的方便管理且支持多语言那么就可以用到lang文件。
使用
在texts文件夹的目录下,可以看到下列文件
- bg_BG.lang
- cs_CZ.lang
- da_DK.lang
- de_DE.lang
- el_GR.lang
- en_GB.lang
- en_US.lang
- en_ES.lang
- es_MX.lang
- fi_FI.lang
- fr_CA.lang
- fr_FR.lang
- hu_HU.lang
- id_ID.lang
- it_IT.lang
- ja_JP.lang
- ko_KR.lang
- nb_NO.lang
- nl_NL.lang
- pl_PL.lang
- pt_PT.lang
- ru_RU.lang
- sk_SK.lang
- sv_SE.lang
- tr_TR.lang
- uk_UA.lang
- zh_CN.lang
- zh_TW.lang
- language_names.json
- languages.json
默认有29种不同语言,你无需知道所有文件对应着什么语言,只需了解下面几个常用的:
zh_CN 中文(简体)
zh_TW 中文(繁体)
en_US 英语(美式) English(US)
en_GB 英语(英式) English(UK)
自定义语言
刚才说到“默认有”,也就是说,这些语言可以自定义?
是的,这就要看到texts文件夹中的两个json文件了
languages.json
[
"en_US"
"en_GB",
"de_DE",
"es_ES",
"es_MX",
"fr_FR",
"fr_CA",
"it_IT",
"ja_JP",
"ko_KR",
"pt_BR",
"pt_PT",
"ru_RU",
"zh_CN"
"zh_TW",
"nl_NL",
"bg_BG",
"cs_CZ",
"da_DK",
"el_GR",
"fi_FI",
"hu_HU",
"id_ID",
"nb_NO",
"pl_PL",
"sk_SK",
"sv_SE",
"tr_TR",
"uk_UA"
]
该文件是一个数组,定义了都有哪些语言,也可以继续增加。
language_names.json
[
[ "en_US", "English (US)" ],
[ "en_GB", "English (UK)" ],
[ "de_DE", "Deutsch (Deutschland)" ],
[ "es_ES", "Español (España)" ],
[ "es_MX", "Español (México)" ],
[ "fr_FR", "Français (France)" ],
[ "fr_CA", "Français (Canada)" ],
[ "it_IT", "Italiano (Italia)" ],
[ "ja_JP", "日本語 (日本)" ],
[ "ko_KR", "한국어 (대한민국)" ],
[ "pt_BR", "Português (Brasil)" ],
[ "pt_PT", "Português (Portugal)" ],
[ "ru_RU", "Русский (Россия)"],
[ "zh_CN", "简体中文" ],
[ "zh_TW", "繁體中文" ],
[ "nl_NL", "Nederlands (Nederland)" ],
[ "bg_BG", "Български (BG)" ],
[ "cs_CZ", "Čeština (Česká republika)" ],
[ "da_DK", "Dansk (DA)" ],
[ "el_GR", "Ελληνικά (Ελλάδα)" ],
[ "fi_FI", "Suomi (Suomi)" ],
[ "hu_HU", "Magyar (HU)" ],
[ "id_ID", "Bahasa Indonesia (Indonesia)" ],
[ "nb_NO", "Norsk bokmål (Norge)" ],
[ "pl_PL", "Polski (PL)" ],
[ "sk_SK", "Slovensky (SK)" ],
[ "sv_SE", "Svenska (Sverige)" ],
[ "tr_TR", "Türkçe (Türkiye)" ],
[ "uk_UA", "Українська (Україна)" ]
]
该文件定义游戏中“语言设置”界面中"不同语言选项"所显示的文字,而这些文字则不是在lang文件中所定义的了。
(这句话可能有点绕)
编写
打开lang文件,可以清除的发现格式非常简单
下面是一个标准的语言串xxx.xxxx.name=xxxx
等号前面部分为需要定义文字的位置,其中第一段是该位置的类型(包括物品item、方块tile、实体entity、UI等)
等号前面第二段为该位置在该类型中的标识符,对于物品、方块、实体而言就是命名空间:ID。
第三段则是统一的.name
等号后面的是文字内容
注释
在lang文件中,只要在前面加上一个#井号即代表注释
示例:
item.byh:a.name=物品A
# 给byh:a物品命名为“物品A”
tile.byh:b.name=方块B
# 给byh:b方块命名为“物品B”
entity.byh:c.name=方块C
# 给byh:c实体命名为“实体C”
除此之外,也可以不按照标准格式的语言串写,只要满足“xxx.name=xxx”的格式即可
对于这一些,你可以再在地图中配合使用/tellraw与/titleraw指令让其显示装载的资源包中的lang文件内的文字内容,以达到多语言地图的效果。
以上两指令0具体使用方法,已超出本文章范围,请参考MinecraftWiki
你知道吗
json中直接定义文字与lang文件定义相比,json中直接定义是有一个优点的
那就是json中可以使用\n、\u、\t、\、\b等这些常用的转义字符“\”,而lang文件则不行