--- title: 本地化 Kubernetes 文档 content_template: templates/concept approvers: - chenopis - zacharysarah - zparnold --- {{% capture overview %}} Kubernetes 文档库有多种语言: - 英语 - 中文 - 日语 - 韩语 我们鼓励你添加新的[本地化](https://blog.mozilla.org/l10n/2011/12/14/i18n-vs-l10n-whats-the-diff/)! {{% /capture %}} {{% capture body %}} ## 入门 本地化必须满足工作流(*如何*本地化)和输出(本地化*内容*)的一些要求。 要添加 Kubernetes 文档库的新的本地化,你需要修改[网站配置](#modify-the-site-configuration) 和[目录结构](#add-a-new-localization-directory)来更新网站。然后你就可以开始[翻译文档](#translating-documents)了! {{< note >}} 本地化相关的[拉取请求](../create-pull-request) 示例,请参见向 Kubernetes 文档库 [Kubernetes website 仓库](https://github.com/kubernetes/website) 合入韩语本地化的[这个拉取请求](https://github.com/kubernetes/website/pull/8636)。 {{< /note >}} 让 Kubernetes SIG Docs 知道你对创建本地化感兴趣!加入 [SIG Docs Slack channel](https://kubernetes.slack.com/messages/C1J0BPD2M/)。我们很乐意帮助你快速上手并回答你的任何问题。 所有本地化团队必须使用自身的资源独立工作。我们很高兴支持你的工作,但无法为你翻译。 ### 克隆仓库并创建分支 首先,在 [kubernetes/website](https://github.com/kubernetes/website) 中[创建你自己的分支](https://help.github.com/articles/fork-a-repo/)。 然后,克隆 website 仓库并通过 `cd` 命令进入 website 目录: ```shell git clone https://github.com/kubernetes/website cd website ``` {{< note >}} `k/website` 的贡献者必须[创建一个分支](/docs/contribute/start/#improve-existing-content),从创建拉取请求。对于本地化,我们还要求: 1. 团队审批者直接从 https://github.com/kubernetes/website 新建开发分支。 2. 本地化贡献者创建分支进行工作,其分支基于当前的开发分支。 这是因为本地化项目是在长期进行的分支上的协同工作,类似于 Kubernetes 发布周期的开发分支。有关本地化拉取请求,请参见[“分支策略”](#branching-strategy)。 {{< /note >}} ### 找到两个字母的语言代码 有关本地化的两个字母的国家代码,请参考 [ISO 639-1 标准](https://www.loc.gov/standards/iso639-2/php/code_list.php)。例如,德语的两个字母代码是 `de`。 {{< note >}} 这些说明遵循 [ISO 639-1](https://www.loc.gov/standards/iso639-2/php/code_list.php) 语言代码标准,以德语(`de`)为例。 目前没有针对德语的 Kubernetes 本地化,但欢迎你创建一个! {{< /note >}} ### 修改网站配置 Kubernetes 网站使用 Hugo 作为其 web 框架。网站的 Hugo 配置位于 [`config.toml`](https://github.com/kubernetes/website/tree/master/config.toml) 文件中。要支持新的本地化,你需要修改 `config.toml`。 将新语言的配置块添加到 `config.toml` 中现有的 `[languages]` 块下。例如,德语块如下所示: ```toml [languages.de] title = "Kubernetes" description = "Produktionsreife Container-Verwaltung" languageName = "Deutsch" contentDir = "content/de" weight = 3 ``` 为块分配 `weight` 参数时,请查找权重最大的语言块,并对该值加 1。 有关 Hugo 多语言支持的更多信息,请参见 “[多语言模式](https://gohugo.io/content-management/multilingual/)”。 ### 创建新的本地化目录 将特定语言的子目录添加到仓库中的 [`content`](https://github.com/kubernetes/website/tree/master/content) 目录中。例如,德语的两个字母代码是 `de`: ```shell mkdir content/de ``` ### 添加本地化自述文件 要指导其他本地化贡献者,请将新的 [`README-**.md`](https://help.github.com/articles/about-readmes/) 添加到 k/website 的顶层,其中 `**` 是两个字母的语言代码。例如,德语的自述文件是 `README-de.md`。 在本地化的 `README-**.md` 文件中为本地化贡献者提供指导。包括 `README.md` 中包含的相同信息以及: - 本地化项目的联系人 - 任何特定于本地化的信息 创建本地化的自述文件后,请在主英文文件中添加指向该文件的链接,[`README.md`'s Localizing Kubernetes Documentation],并以英文包含联系信息。你可以提供 GitHub ID、电子邮箱、[Slack channel](https://slack.com/) 或其他联系方式。 ## 翻译文档 本地化*所有* Kubernetes 文档是一项艰巨的任务。从小做起,循序渐进。 所有本地化至少必须包括: 描述 | 网址 -----|----- 主页 | [所有标题和副标题网址](/docs/home/) 安装 | [所有标题和副标题网址](/docs/setup/) 教程 | [Kubernetes 基础](/docs/tutorials/kubernetes-basics/), [Hello Minikube](/docs/tutorials/stateless-application/hello-minikube/) 网站字符串 | [新的本地化 TOML 文件中的所有网站字符串](https://github.com/kubernetes/website/tree/master/i18n) 翻译后的文档必须保存在自己的 `content/**/` 子目录中,否则将遵循与英文源相同的 URL 路径。例如,要准备将 [Kubernetes 基础](/docs/tutorials/kubernetes-basics/) 教程翻译为德语,请在 `content/de/` 文件夹下创建一个子文件夹并复制英文源: ```shell mkdir -p content/de/docs/tutorials cp content/en/docs/tutorials/kubernetes-basics.md content/de/docs/tutorials/kubernetes-basics.md ``` 本地化相关的[拉取请求](../create-pull-request) 示例,请参见向 Kubernetes 文档库 [Kubernetes website 仓库](https://github.com/kubernetes/website) 合入韩语本地化的[这个拉取请求](https://github.com/kubernetes/website/pull/10471)。 ### 源文件 本地化必须使用最新版本的英文文件作为其源。最新版本是 **{{< latest-version >}}**。 要查找最新版本的源文件,请执行以下操作: 1. 导航到 Kubernetes website 仓库,网址为 https://github.com/kubernetes/website。 2. 选择 `release-1.X` 分支作为最新版本。 最新版本是 **{{< latest-version >}}**,所以最新的发布分支是 [`{{< release-branch >}}`](https://github.com/kubernetes/website/tree/{{< release-branch >}})。 ### i18n 中的网站字符串/ 本地化必须在新的语言特定文件中包含 [`i18n/en.toml`](https://github.com/kubernetes/website/blob/master/i18n/en.toml) 的内容。以德语为例:`i18n/de.toml`。 将新的本地化文件添加到 `i18n/`。例如德语 (`de`): ```shell cp i18n/en.toml i18n/de.toml ``` 然后转换每个字符串的值: ```TOML [docs_label_i_am] other = "ICH BIN..." ``` 本地化网站字符串允许你自定义网站范围的文本和特性:例如,每个页面页脚中的合法版权文本。 ## 项目组织 ### 联系 SIG Docs 主席 开始新的本地化时,请联系 Kubernetes [SIG Docs](https://github.com/kubernetes/community/tree/master/sig-docs#chairs) 中的主席之一。 ### 维护者 每个本地化存储库必须提供自己的维护人员。维护人员可以来自单个组织或多个组织。只要可能,本地化的拉取请求应该由来自不同组织的评审者批准,而不是由翻译人员批准。 本地化必须至少提供两个维护人员。(不能评审和批准自己的工作。) ### 分支策略 因为本地化项目是高度协同的工作,所以我们鼓励团队基于共享的开发分支工作。 在开发分支上协作: 1. 团队成员新建一个开发分支,通常通过在 https://github.com/kubernetes/website 上针对源分支新建一个拉取请求。 我们推荐以下分支命名方案: `dev--.` 例如,一个德语本地化团队的审批者基于 Kubernetes v1.12 版本的源分支直接新建了 k/website 仓库的开发分支 `dev-1.12-de.1`。 2. 个人贡献者基于开发分支新建特性分支。 例如,一个德国贡献者新建了一个拉取请求,并从 `username:local-branch-name` 更改了 `kubernetes:dev-1.12-de.1`。 3. 审批者审批功能分支并将其合入到开发分支中。 4. 审批者定期将开发分支合并到其源分支。 根据需要重复步骤 1-4,直到完成本地化工作。例如,随后的德语开发分支将是:`dev-1.12-de.2`、`dev-1.12-de.3`,等等。 团队必须将本地化内容合入到发布分支中,该发布分支也正是内容的来源。例如,源于 {{< release-branch >}} 的开发分支必须基于 {{< release-branch >}}。 审批者必须通过使开发分支与源分支保持最新并解决合并冲突来维护开发分支。开发分支的存在时间越长,通常需要的维护工作就越多。考虑定期合并开发分支并新建分支,而不是维护一个运行非常长的开发分支。 虽然只有审批者可以合入拉取请求,但任何人都可以为新的开发分支新建拉取请求。不需要特殊权限。 有关基于克隆或直接从仓库开展工作的更多信息,请参见 ["fork and clone the repo"](#fork-and-clone-the-repo)。 ### 上游贡献 Sig Docs 欢迎[上游贡献和更正](/docs/contribute/intermediate#localize-content) 到英文源。 {{% /capture %}} {{% capture whatsnext %}} 一旦 l10n 满足工作流和最小输出的要求,SIG docs 将: - 在网站上启用语言选择 - 通过[云原生计算基金会](https://www.cncf.io/) (CNCF) 渠道,包括 [Kubernetes blog](https://kubernetes.io/blog/),来宣传本地化的可用性。 {{% /capture %}}