Files
netease-modsdk-wiki/docs/wiki/concepts/text-and-translations.md
2025-03-20 11:52:46 +08:00

160 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 文本与本地化
mentions:
- ThijsHankelMC
- SirLich
- aexer0e
- MedicalJewel105
- Luthorius
- Fabrimat
- TheDoctor15
- Hatchibombotar
- ChibiMango
- SmokeyStack
- Sprunkles
---
# 文本与本地化
<!--@include: @/wiki/bedrock-wiki-mirror.md-->
Minecraft 是一款支持全球多语言本地化的游戏。为实现这一特性,游戏采用了基于语言代码的**翻译键值系统**。对于自定义实体Entity、物品Item和方块BlockMinecraft 会自动生成翻译键值,而我们需要通过资源包为其提供本地化文本。
## 语言文件
### 文件位置
语言文件通常位于资源包的 `texts` 文件夹中,使用 `.lang` 扩展名。虽然也可以放置在行为包中但行为包仅能修改资源包清单manifest的名称和描述。
<FolderView :paths="[
'RP/texts/en_US.lang',
'RP/texts/languages.json',
'RP/manifest.json'
]"
></FolderView>
Minecraft 目前支持 29 种语言,详见 [§ 原版支持语言](/wiki/concepts/text-and-translations#vanilla-languages)。
### 格式规范
语言文件采用键值对格式,使用等号(`=`)分隔。键为翻译键值,值为字符串(不支持换行符)。
```toml
wiki.example_translation.line_1=第一行内容!
wiki.example_translation.line_2=这里是第一行之后的其他信息。
```
可通过双井号(`##`)添加注释,支持行尾注释和整行注释(注释内容持续到行尾)。
:::warning
行尾注释前的空格不会被自动删除。如需缩进注释请使用制表符Tab
:::
```toml
## 译者注:这个翻译可能有点幽默成分
item.flint_and_steel.name=燧石与史蒂夫 ##[原文如此]
```
翻译文本支持占位符替换,可使用有序占位符(`%1``%2`)或无序占位符(`%s`。原版占位符由游戏自动填充而通过原始JSON文本命令如 [`/tellraw`](/wiki/commands/tellraw))可手动指定替换值。
```toml
commands.op.success=已授予管理员权限:%s
immersive_reader.book_page_header= %1 / %2
```
### 应用场景
本地化文本可用于以下场景(包括但不限于):
- 资源包/行为包名称与描述
- 实体、物品或方块的名称
- 书页内容
- 告示牌文字
- `/tellraw``/titleraw` 命令
- 对话系统中的文本
但某些文本(如铁砧重命名的物品)不支持本地化。
## 本地化实践
:::tip
最佳实践是为每个主要支持语言创建独立语言文件。例如要完整支持英语,应同时创建 `en_US.lang`(美式英语)和 `en_GB.lang`(英式英语)文件。
:::
编辑语言文件时,需在 `texts` 文件夹中添加 `languages.json` 文件,声明需要修改的语言列表。这会告知 Minecraft 应用对应的本地化配置。
::: code-group
```json [原始CodeHeader的值]
[
"en_US",
"en_GB",
"fr_FR"
]
```
:::
### 自定义语言
通过全局资源包,可使用 `languages.json` 和 `language_names.json` 添加自定义语言。应用全局资源包后,即可在游戏设置的"语言"选项中选择新语言。
假设我们有两个功能完善的语言文件:`xx_XX.lang` 和 `yy_YY.lang`。
::: code-group
```json [原始CodeHeader的值]
[
"xx_XX",
"yy_YY"
]
```
:::
`language_names.json` 用于定义语言在选项菜单中的显示名称:
::: code-group
```json [原始CodeHeader的值]
[
[ "xx_XX", "新语言(自定义语言 #1" ],
[ "yy_YY", "维基语(自定义语言 #2" ]
]
```
:::
:::warning
使用自定义语言时,在禁用其所属资源包前请先切换回其他语言,否则可能导致游戏崩溃。
:::
### 原版支持语言
下表列出了 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 | 韩语 | 韩国 |