添加本地化说明文档

This commit is contained in:
Glavo 2025-09-19 18:13:39 +08:00
parent fba4634206
commit 1021fbe14d

View File

@ -1,7 +1,6 @@
# 本地化
<!-- #BEGIN LANGUAGE_SWITCHER -->
<!-- #END LANGUAGE_SWITCHER -->
<!-- TODO: 本文档需要进一步完善。为了便于更新,暂时不会翻译至其语言。 -->
HMCL 为多种语言提供本地化支持。
@ -11,16 +10,16 @@ HMCL 为多种语言提供本地化支持。
目前HMCL 为这些语言提供主要支持:
| 语言 | 本地化标签 | 支持状态 | 志愿者 |
|---------|-----------|------|-------------------------------------------|
| 英语 | `` | 主要 | |
| 中文 (简体) | `zh` | 主要 | |
| 中文 (繁体) | `zh-Hant` | 主要 | |
| 中文 (文言) | `lzh` | 次要 | |
| 日语 | `ja` | 次要 | [3gf8jv4dv](https://github.com/3gf8jv4dv) |
| 西班牙语 | `es` | 次要 | [3gf8jv4dv](https://github.com/3gf8jv4dv) |
| 俄语 | `ru` | 次要 | [3gf8jv4dv](https://github.com/3gf8jv4dv) |
| 乌克兰语 | `uk` | 次要 | |
| 语言 | 语言标签 | 本地化文件后缀 | 本地化键 | 支持状态 | 志愿者 |
|---------|-----------|------------|-----------|------|-------------------------------------------|
| 英语 | `en` | `` | `default` | 主要 | |
| 中文 (简体) | `zh-Hans` | `_zh` | `zh` | 主要 | |
| 中文 (繁体) | `zh-Hant` | `_zh_Hant` | `zh-Hant` | 主要 | |
| 中文 (文言) | `lzh` | `_lzh` | `lzh` | 次要 | |
| 日语 | `ja` | `_ja` | `ja` | 次要 | [3gf8jv4dv](https://github.com/3gf8jv4dv) |
| 西班牙语 | `es` | `_es` | `es` | 次要 | [3gf8jv4dv](https://github.com/3gf8jv4dv) |
| 俄语 | `ru` | `_ru` | `ru` | 次要 | [3gf8jv4dv](https://github.com/3gf8jv4dv) |
| 乌克兰语 | `uk` | `_uk` | `uk` | 次要 | |
HMCL 会要求所有 Pull Request 在更新文档和本地化资源时同步更新所有主要支持的语言对应的资源。
如果 PR 作者对相关语言并不了解,那么可以随时向项目的维护者提出翻译请求,
@ -39,7 +38,9 @@ HMCL 会要求所有 Pull Request 在更新文档和本地化资源时同步更
## 本地化资源
我们为每个语言分配了一个语言标签,所有文档和本地化资源文件都会根据此标签进行命名。
我们为每个语言分配了一个语言标签和一个本地化文档后缀。
所有文档和本地化资源文件的命名规则为 `<资源名><本地化文件后缀>.<扩展名>`
例如,对于 `README.md` 来说,不同语言的本地化版本命名如下:
@ -48,21 +49,17 @@ HMCL 会要求所有 Pull Request 在更新文档和本地化资源时同步更
- 中文 (繁体): `README_zh_Hant.md`
- 中文 (文言): `README_lzh.md`
除了英语外,其他本地化资源都使用 `<资源名>_<语言标签>.<后缀>`。其中语言标签需要将 `-` 替换为 `_`
除了本地化文件HMCL 还支持本地化 JSON 中的部分文本字段。JSON 中的本地化文本使用以下格式:
```json5
{
"<语言标签 1>": "<本地化文本 1>",
"<语言标签 2>": "<本地化文本 2>",
"<本地化键 1>": "<本地化文本 1>",
"<本地化键 2>": "<本地化文本 2>",
// ...
"<语言标签 N>": "<本地化文本 N>"
"<本地化键 N>": "<本地化文本 N>"
}
```
此处空白的语言标签 (对应英语) 需要被替换为 `default`,其他标签保持原样 (不需要将 `-` 替换为下划线)。
例如,对于以下文本字段:
```json
@ -92,7 +89,9 @@ HMCL 会要求所有 Pull Request 在更新文档和本地化资源时同步更
1. `en-US` (英文 (美国))
2. `en` (英文)
3. `` (默认)
3. `` (默认)
对于能够混合的资源 (例如 `.properties` 文件)HMCL 会使用高优先级的资源覆盖地优先级。
如果当前语言使用 ISO 639-3 标准的三字符标签,那么 HMCL 也会尝试搜索其对应的 ISO 639-1 两字符标签所对应的资源。
如果一个语言没有两字符标签,但其对应的宏语言存在两字符标签,那么 HMCL 会搜索对应的宏语言的两字符标签的资源。
@ -103,14 +102,15 @@ HMCL 会要求所有 Pull Request 在更新文档和本地化资源时同步更
2. `eng` (英文)
3. `en-US` (英文 (美国))
4. `en` (英文)
5. `` (默认)
5. `` (默认)
### 对于中文的额外规则
对于中文 (以及其子语言标签,例如文言文 (`lzh`)、普通话 (`cmn`)、粤语 (`yue`) 等等)HMCL 有着额外的支持。
如果当前环境的语言为中文 (及其子语言),且未指定书写脚本,那么 HMCL 会根据语言和地区标签推导出对应的书写脚本。
对于语言为文言文 (`lzh`) 或地区为台湾 (`TW`)、香港特别行政区 (`HK`)、澳门特别行政区 (`MO`) 的情况,默认书写脚本为繁体中文 (`Hant`)
对于语言为文言文 (`lzh`) 或地区为台湾 (`TW`)、香港特别行政区 (`HK`)、澳门特别行政区 (`MO`) 的情况,
默认书写脚本为繁体中文 (`Hant`)
而对于其他语言和区域 (如中国大陆 (`CN`)),默认书写脚本为简体中文 (`Hans`)。
此外HMCL 会将 `zh-CN` 加入所有中文环境的搜索列表中,将 `zh-TW` 加入所有繁体中文环境的搜索列表中,
@ -124,7 +124,7 @@ HMCL 会要求所有 Pull Request 在更新文档和本地化资源时同步更
2. `zh-Hans` (中文 (简体))
3. `zh-CN` (中文 (中国大陆))
4. `zh` (中文)
5. `` (默认)
5. `` (默认)
`zh-SG` (中文 (新加坡)):
@ -133,7 +133,7 @@ HMCL 会要求所有 Pull Request 在更新文档和本地化资源时同步更
3. `zh-SG` (中文 (新加坡))
4. `zh-CN` (中文 (中国大陆))
5. `zh` (中文)
6. `` (默认)
6. `` (默认)
`zh-TW` (中文 (台湾)):
@ -142,7 +142,7 @@ HMCL 会要求所有 Pull Request 在更新文档和本地化资源时同步更
3. `zh-TW` (中文 (台湾))
4. `zh` (中文)
5. `zh-CN` (中文 (中国大陆))
6. `` (默认)
6. `` (默认)
`zh-TW` (中文 (香港特别行政区)):
@ -152,7 +152,7 @@ HMCL 会要求所有 Pull Request 在更新文档和本地化资源时同步更
4. `zh-TW` (中文 (台湾))
5. `zh` (中文)
6. `zh-CN` (中文 (中国大陆))
7. `` (默认)
7. `` (默认)
`lzh` (文言):
@ -160,9 +160,30 @@ HMCL 会要求所有 Pull Request 在更新文档和本地化资源时同步更
2. `lzh` (文言)
3. `zh-Hant` (中文 (繁体))
4. `zh` (中文)
5. `` (默认)
5. `` (默认)
## 自动同步文档内容
为了简化文档的维护HMCL 使用了一套宏机制自动维护文档的部分内容。在命令行中执行
```bash
./gradlew updateDocuments
```
##
即可自动更新所有文档内容。
例如,为了创建在同一文档的不同语言译文之间跳转的链接,请在文档的标题下添加以下内容:
```markdown
<!-- #BEGIN LANGUAGE_SWITCHER -->
<!-- #END LANGUAGE_SWITCHER -->
```
随后执行 `./gradlew updateDocuments`,这两行内容会被自动替换为类似这样的跳转链接:
```markdown
**English** |
中文 ([简体](README_zh.md), [繁體](README_zh.md), [文言](README_zh.md)) | [日本語](README_zh.md) | [español](README_zh.md) | [русский](README_zh.md) | [українська](README_zh.md)
```
关于宏的更多内容,请见 [MacroProcessor.java](../buildSrc/src/main/java/org/jackhuang/hmcl/gradle/docs/MacroProcessor.java)。