diff --git a/docs/Localization_zh.md b/docs/Localization_zh.md new file mode 100644 index 000000000..d472da4ab --- /dev/null +++ b/docs/Localization_zh.md @@ -0,0 +1,168 @@ +# 本地化 + + + + +HMCL 为多种语言提供本地化支持。 + +本文档介绍了 HMCL 对这些语言的支持状态,并给想要为 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` | 次要 | | + +HMCL 会要求所有 Pull Request 在更新文档和本地化资源时同步更新所有主要支持的语言对应的资源。 +如果 PR 作者对相关语言并不了解,那么可以随时向项目的维护者提出翻译请求, +维护者会在合并 PR 前帮助 PR 作者翻译这些文本。 + +而对于次要支持的语言,我们不能保证这些本地化资源总是会同步更新。 +我们需要熟练掌握这些语言的协作者帮助我们进行维护。 + +我们会在文档中记录愿意帮助我们维护这些语言本地化资源的的志愿者。 +如果贡献者希望及时将新增的本地化文本翻译至这些语言, +那么可以在 PR 中 @ 这些志愿者寻求帮助。 + +如果你愿意帮助我们维护一些语言的本地化资源,那么请打开一个 PR, +将自己的 GitHub 用户名加入上方的志愿者列表。 +我们非常感谢你的帮助。 + +## 本地化资源 + +我们为每个语言分配了一个语言标签,所有文档和本地化资源文件都会根据此标签进行命名。 + +例如,对于 `README.md` 来说,不同语言的本地化版本命名如下: + +- 英语: `README.md` +- 中文 (简体): `README_zh.md` +- 中文 (繁体): `README_zh_Hant.md` +- 中文 (文言): `README_lzh.md` + +除了英语外,其他本地化资源都使用 `<资源名>_<语言标签>.<后缀>`。其中语言标签需要将 `-` 替换为 `_`。 + +除了本地化文件,HMCL 还支持本地化 JSON 中的部分文本字段。JSON 中的本地化文本使用以下格式: + +```json5 +{ + "<语言标签 1>": "<本地化文本 1>", + "<语言标签 2>": "<本地化文本 2>", + // ... + "<语言标签 N>": "<本地化文本 N>" +} +``` + +此处空白的语言标签 (对应英语) 需要被替换为 `default`,其他标签保持原样 (不需要将 `-` 替换为下划线)。 + +例如,对于以下文本字段: + +```json +{ + "meow": "Meow" +} +``` + +可以将其改写为本地化文本: + +```json +{ + "meow": { + "default": "Meow", + "zh": "喵呜", + "zh-Hant": "喵嗚" + } +} +``` + +## 资源回退机制 + +对于某个语言下的缺失的资源,HMCL 支持一套资源回退机制,会根据不同的语言标签推导出一个搜索列表, +根据该列表依次搜索资源。 + +例如,如果当前环境的语言标签为 `en-US` (英文 (美国)),那么 HMCL 会根据以下列表的顺序搜索对应的本地化资源: + +1. `en-US` (英文 (美国)) +2. `en` (英文) +3. `` (默认) + +如果当前语言使用 ISO 639-3 标准的三字符标签,那么 HMCL 也会尝试搜索其对应的 ISO 639-1 两字符标签所对应的资源。 +如果一个语言没有两字符标签,但其对应的宏语言存在两字符标签,那么 HMCL 会搜索对应的宏语言的两字符标签的资源。 + +例如,如果当前环境的语言标签为 `eng-US` (英文 (美国)),那么 HMCL 会根据以下列表的顺序搜索对应的本地化资源: + +1. `eng-US` (英文 (美国)) +2. `eng` (英文) +3. `en-US` (英文 (美国)) +4. `en` (英文) +5. `` (默认) + +### 对于中文的额外规则 + +对于中文 (以及其子语言标签,例如文言文 (`lzh`)、普通话 (`cmn`)、粤语 (`yue`) 等等),HMCL 有着额外的支持。 + +如果当前环境的语言为中文 (及其子语言),且未指定书写脚本,那么 HMCL 会根据语言和地区标签推导出对应的书写脚本。 +对于语言为文言文 (`lzh`) 或地区为台湾 (`TW`)、香港特别行政区 (`HK`)、澳门特别行政区 (`MO`) 的情况,默认书写脚本为繁体中文 (`Hant`); +而对于其他语言和区域 (如中国大陆 (`CN`)),默认书写脚本为简体中文 (`Hans`)。 + +此外,HMCL 会将 `zh-CN` 加入所有中文环境的搜索列表中,将 `zh-TW` 加入所有繁体中文环境的搜索列表中, +从而适应更多场景。 + +以下是几个常见中文环境对应的本地化资源搜索列表。 + +`zh-CN` (中文 (中国大陆)): + +1. `zh-Hans-CN` (中文 (简体, 中国大陆)) +2. `zh-Hans` (中文 (简体)) +3. `zh-CN` (中文 (中国大陆)) +4. `zh` (中文) +5. `` (默认) + +`zh-SG` (中文 (新加坡)): + +1. `zh-Hans-SG` (中文 (简体, 新加坡)) +2. `zh-Hans` (中文 (简体)) +3. `zh-SG` (中文 (新加坡)) +4. `zh-CN` (中文 (中国大陆)) +5. `zh` (中文) +6. `` (默认) + +`zh-TW` (中文 (台湾)): + +1. `zh-Hant-TW` (中文 (繁体, 台湾)) +2. `zh-Hant` (中文 (繁体)) +3. `zh-TW` (中文 (台湾)) +4. `zh` (中文) +5. `zh-CN` (中文 (中国大陆)) +6. `` (默认) + +`zh-TW` (中文 (香港特别行政区)): + +1. `zh-Hant-HK` (中文 (繁体, 香港特别行政区)) +2. `zh-Hant` (中文 (繁体)) +3. `zh-HK` (中文 (香港特别行政区)) +4. `zh-TW` (中文 (台湾)) +5. `zh` (中文) +6. `zh-CN` (中文 (中国大陆)) +7. `` (默认) + +`lzh` (文言): + +1. `lzh-Hant` (文言 (繁体)) +2. `lzh` (文言) +3. `zh-Hant` (中文 (繁体)) +4. `zh` (中文) +5. `` (默认) + + + + +## \ No newline at end of file