From 613c278ebdcd8a19a34047ef984da1cd24e04184 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 25 Oct 2022 20:36:32 +0800 Subject: [PATCH] [zh] sync localization.md --- content/zh-cn/docs/contribute/localization.md | 506 +++++++++++------- 1 file changed, 312 insertions(+), 194 deletions(-) diff --git a/content/zh-cn/docs/contribute/localization.md b/content/zh-cn/docs/contribute/localization.md index 486430900e..3a896113a9 100644 --- a/content/zh-cn/docs/contribute/localization.md +++ b/content/zh-cn/docs/contribute/localization.md @@ -8,12 +8,11 @@ card: title: 翻译文档 --- 此页面描述如何为其他语言的文档提供 [本地化](https://blog.mozilla.org/l10n/2011/12/14/i18n-vs-l10n-whats-the-diff/)版本。 @@ -34,7 +35,11 @@ This page shows you how to [localize](https://blog.mozilla.org/l10n/2011/12/14/i ## 为现有的本地化做出贡献 {#contribute-to-an-existing-localization} @@ -45,30 +50,31 @@ You can help add or improve content to an existing localization. In [Kubernetes {{< note >}} -如果你想处理已经存在的本地化,请在该本地化(如果存在)中检查此页面,而不是英文原版。 -你可能会在那里看到额外的详细信息。 +有关如何为特定本地化做贡献的更多信息,请参阅本页面的各个本地化版本。 {{< /note >}} ### 找到两个字母的语言代码 {#find-your-two-letter-language-code} 首先,有关本地化的两个字母的语言代码,请参考 [ISO 639-1 标准](https://www.loc.gov/standards/iso639-2/php/code_list.php)。 -例如,韩国的两个字母代码是 `ko`。 +例如,韩语的两个字母代码是 `ko`。 ### 派生(fork)并且克隆仓库 {#fork-and-clone-the-repo} @@ -86,7 +92,8 @@ cd website ``` 网站内容目录包括每种语言的子目录。你想要助力的本地化位于 `content/` 中。 @@ -96,15 +103,16 @@ The website content directory includes sub-directories for each language. The lo Create or update your chosen localized page based on the English original. See [translating content](#translating-content) for more details. -If you notice a technical inaccuracy or other problem with the upstream (English) -documentation, you should fix the upstream documentation first and then repeat the -equivalent fix by updating the localization you're working on. +If you notice a technical inaccuracy or other problem with the upstream +(English) documentation, you should fix the upstream documentation first and +then repeat the equivalent fix by updating the localization you're working on. -Please limit pull requests to a single localization, since pull requests that change -content in multiple localizations could be difficult to review. +Limit changes in a pull requests to a single localization. Reviewing pull +requests that change content in multiple localizations is problematic. -Follow [Suggesting Content Improvements](/docs/contribute/suggest-improvements/) to propose changes to -that localization. The process is very similar to proposing changes to the upstream (English) content. +Follow [Suggesting Content Improvements](/docs/contribute/suggesting-improvements/) +to propose changes to that localization. The process is similar to proposing +changes to the upstream (English) content. --> ### 建议更改 {#suggest-changes} @@ -114,7 +122,7 @@ that localization. The process is very similar to proposing changes to the upstr 如果你发现上游(英文)文档存在技术错误或其他问题, 你应该先修复上游文档,然后通过更新你正在处理的本地化来重复等效的修复。 -请将拉取请求限制为单个本地化,因为在多个本地化中更改内容的拉取请求可能难以审查。 +请将 PR 限制为单个语言版本,因为多语言的 PR 内容修改可能难以审查。 按照[内容改进建议](/zh-cn/docs/contribute/suggest-improvements/)提出对该本地化的更改。 该过程与提议更改上游(英文)内容非常相似。 @@ -122,29 +130,30 @@ that localization. The process is very similar to proposing changes to the upstr ## 开始新的本地化 {#start-a-new-localization} 如果你希望将 Kubernetes 文档本地化为一种新语言,你需要执行以下操作。 -因为贡献者不能批准他们自己的拉取请求,你需要 _至少两个贡献者_ 来开始本地化。 +因为贡献者不能批准他们自己的拉取请求,你需要 **至少两个贡献者** 来开始本地化。 所有本地化团队都必须能够自我维持。 Kubernetes 网站很乐意托管你的作品,但要由你来翻译它并使现有的本地化内容保持最新。 ### 找到社区 {#find-community} 让 Kubernetes SIG Docs 知道你有兴趣创建本地化! 加入 [SIG Docs Slack 频道](https://kubernetes.slack.com/messages/sig-docs) 和 [SIG Docs Localizations Slack 频道](https://kubernetes.slack.com/messages/sig-docs-localizations)。 -其他本地化团队很乐意帮助你入门并回答你的任何问题。 +其他本地化团队很乐意帮助你入门并回答你的问题。 也请考虑参加 [SIG Docs 本地化小组的会议](https://github.com/kubernetes/community/tree/master/sig-docs)。 SIG Docs 本地化小组的任务是与 SIG Docs 本地化团队合作, 共同定义和记录创建本地化贡献指南的流程。 此外,SIG Docs 本地化小组将寻找机会在本地化团队中创建和共享通用工具, -并为 SIG Docs 领导团队确定新要求。如果你对本次会议有任何疑问, -请在 [SIG Docs Localizations Slack 频道](https://kubernetes.slack.com/messages/sig-docs-localizations) -中提问。 +并为 SIG Docs 领导团队确定新要求。如果你对本次会议有任何疑问,请在 +[SIG Docs Localizations Slack 频道](https://kubernetes.slack.com/messages/sig-docs-localizations)中提问。 你还可以在 `kubernetes/community` 仓库中为你的本地化创建一个 Slack 频道。 -有关添加 Slack 频道的示例,请参阅 -[为波斯语添加频道](https://github.com/kubernetes/community/pull/4980)的 PR。 +有关添加 Slack 频道的示例, +请参阅[为波斯语添加频道](https://github.com/kubernetes/community/pull/4980)的 PR。 ### 加入到 Kubernetes GitHub 组织 {#join-the-kubernetes-github-organization} 提交本地化 PR 后,你可以成为 Kubernetes GitHub 组织的成员。 -团队中的每个人都需要在 `kubernetes/org` 仓库中创建自己的 -[组织成员申请](https://github.com/kubernetes/org/issues/new/choose)。 +团队中的每个人都需要在 `kubernetes/org` +仓库中创建自己的[组织成员申请](https://github.com/kubernetes/org/issues/new/choose)。 ### 在 GitHub 中添加你的本地化团队 {#add-your-localization-team-in-github} 接下来,将你的 Kubernetes 本地化团队添加到 [`sig-docs/teams.yaml`](https://github.com/kubernetes/org/blob/main/config/kubernetes/sig-docs/teams.yaml)。 -有关添加本地化团队的示例,请参见添加[西班牙本地化团队](https://github.com/kubernetes/org/pull/685) 的 PR。 +有关添加本地化团队的示例,请参见添加[西班牙本地化团队](https://github.com/kubernetes/org/pull/685)的 PR。 `@kubernetes/sig-docs-**-owners` 成员可以批准更改对应本地化目录 `/content/**/` 中内容的 PR,并仅限这类 PR。 - 对于每个本地化,`@kubernetes/sig-docs-**-reviews` 团队被自动分派新 PR 的审阅任务。 - - `@kubernetes/website-maintainers` 成员可以创建新的本地化分支来协调翻译工作。 - `@kubernetes/website-milestone-maintainers` 成员可以使用 `/milestone` [Prow 命令](https://prow.k8s.io/command-help)为 issues 或 PR 设定里程碑。 ### 配置工作流程 {#configure-the-workflow} @@ -247,15 +274,16 @@ For an example of adding a label, see the PR for adding the [Italian language la 有关添加标签的示例,请参见添加[意大利语标签](https://github.com/kubernetes/test-infra/pull/11316)的 PR。 -你还可以在 `kubernetes/community` 仓库中为你的本地化创建一个 Slack 频道。 -有关添加 Slack 频道的示例,请参见[为印尼语和葡萄牙语添加频道](https://github.com/kubernetes/community/pull/3605)的 PR。 - ### 修改站点配置 {#configure-the-workflow} @@ -271,25 +299,36 @@ Kubernetes 网站使用 Hugo 作为其 Web 框架。网站的 Hugo 配置位于 title = "Kubernetes" description = "Produktionsreife Container-Verwaltung" languageName = "Deutsch (German)" -languageNameLatinScript = "German" +languageNameLatinScript = "Deutsch" contentDir = "content/de" weight = 8 ``` -`languageName` 的值将列在语言选择栏中。 +语言选择栏列出了 `languageName` 的值。 将 `languageName` 赋值为“本地脚本中的语言名称(拉丁脚本中的语言名称)”。 -例如,`languageName = "한국어 (Korean)"`。 +例如,`languageName = "한국어 (Korean)"` 或 `languageName = "Deutsch (German)"`。 + `languageNameLatinScript` 可用于访问拉丁脚本中的语言名称并在主题中使用。 将 `languageNameLatinScript` 赋值为“拉丁脚本中的语言名称”。 -例如,`languageNameLatinScript ="Korean"`。 +例如,`languageNameLatinScript ="Korean"` 或 `languageNameLatinScript = "Deutsch"`。 为你的语言块分配一个 `weight` 参数时,找到权重最高的语言块并将其加 1。 @@ -298,7 +337,9 @@ For more information about Hugo's multilingual support, see "[Multilingual Mode] ### 添加一个新的本地化目录 {#add-a-new-localization-directory} @@ -333,46 +374,52 @@ For example, for German the strings live in `data/i18n/de/de.toml`, and ### 本地化社区行为准则 {#localize-the-community-code-of-conduct} -在 [`cncf/foundation`](https://github.com/cncf/foundation/tree/master/code-of-conduct-languages) +在 [`cncf/foundation`](https://github.com/cncf/foundation/tree/main/code-of-conduct-languages) 仓库提交 PR,添加你所用语言版本的行为准则。 ### 设置 OWNERS 文件 {#setting-up-the-owners-files} 要设置每个对本地化做出贡献用户的角色,请在特定于语言的子目录内创建一个 `OWNERS` 文件,其中: -- **reviewers**: 具有评审人角色的 kubernetes 团队的列表,在本例中为在 - [在 GitHub 中添加你的本地化团队](#add-your-localization-team-in-github) - 中创建的 `sig-docs-**-reviews` 团队。 -- **approvers**: 具有批准人角色的 kubernetes 团队的列表,在本例中为在 - [在 GitHub 中添加你的本地化团队](#add-your-localization-team-in-github) - 中创建的 `sig-docs-**-owners` 团队。 -- **labels**: 可以自动应用于 PR 的 GitHub 标签列表,在本例中为 - [配置工作流程](#configure-the-workflow)中创建的语言标签。 +- **reviewers**: 具有评审人角色的 kubernetes 团队的列表, + 在本例中为在[在 GitHub 中添加你的本地化团队](#add-your-localization-team-in-github)中创建的 + `sig-docs-**-reviews` 团队。 +- **approvers**: 具有批准人角色的 kubernetes 团队的列表, + 在本例中为在[在 GitHub 中添加你的本地化团队](#add-your-localization-team-in-github)中创建的 + `sig-docs-**-owners` 团队。 +- **labels**: 可以自动应用于 PR 的 GitHub 标签列表, + 在本例中为[配置工作流程](#configure-the-workflow)中创建的语言标签。 -有关 `OWNERS` 文件的更多信息,请访问[go.k8s.io/owners](https://go.k8s.io/owners)。 +有关 `OWNERS` 文件的更多信息,请访问 [go.k8s.io/owners](https://go.k8s.io/owners)。 语言代码为 `es` 的[西班牙语 OWNERS 文件](https://git.k8s.io/website/content/es/OWNERS)看起来像: - ```yaml # See the OWNERS docs at https://go.k8s.io/owners @@ -390,9 +437,14 @@ labels: ``` 添加了特定语言的 OWNERS 文件之后,使用新的 Kubernetes 本地化团队、 `sig-docs-**-owners` 和 `sig-docs-**-reviews` 列表更新 @@ -425,28 +477,34 @@ For each team, add the list of GitHub users requested in [Add your localization -### 打开拉取请求 {#open-a-pull-request} +### 发起拉取请求 {#open-a-pull-request} -接下来,[打开拉取请求](/zh-cn/docs/contribute/new-content/open-a-pr/#open-a-pr)(PR) +接下来,[发起拉取请求](/zh-cn/docs/contribute/new-content/open-a-pr/#open-a-pr)(PR) 将本地化添加到 `kubernetes/website` 存储库。 - PR 必须包含所有[最低要求内容](#minimum-required-content)才能获得批准。 有关添加新本地化的示例, -请参阅 PR 以启用[法语文档](https://github.com/kubernetes/website/pull/12548)。 +请参阅启用[法语文档](https://github.com/kubernetes/website/pull/12548)的 PR。 创建本地化的 README 文件后,请在英语版文件 `README.md` 中添加指向该文件的链接, 并给出英文形式的联系信息。你可以提供 GitHub ID、电子邮件地址、 @@ -472,27 +534,31 @@ After you create the localized README, add a link to the file from the main Engl ### 启动你的新本地化 {#add-a-localized-readme-file} 一旦本地化满足工作流程和最小输出的要求,SIG Docs 将: - 在网站上启用语言选择 -- 通过[云原生计算基金会](https://www.cncf.io/about/)(CNCF)渠道, - 包括 [Kubernetes 博客](https://kubernetes.io/blog/),来宣传本地化的可用性。 +- 通过[云原生计算基金会](https://www.cncf.io/about/)(CNCF)渠道以及 + [Kubernetes 博客](https://kubernetes.io/zh-cn/blog/)来宣传本地化的可用性。 ## 翻译文档 {#translating-content} -本地化*所有* Kubernetes 文档是一项艰巨的任务。从小做起,循序渐进。 +本地化**所有** Kubernetes 文档是一项艰巨的任务。从小做起,循序渐进。 描述 | 网址 @@ -517,14 +583,17 @@ Releases | [All heading and subheading URLs](/releases) 主页 | [所有标题和副标题网址](/zh-cn/docs/home/) 安装 | [所有标题和副标题网址](/zh-cn/docs/setup/) 教程 | [Kubernetes 基础](/zh-cn/docs/tutorials/kubernetes-basics/), [Hello Minikube](/zh-cn/docs/tutorials/hello-minikube/) -网站字符串 | [所有网站字符串](#Site-strings-in-i18n) -发行版本 | [所有标题和副标题 URL](/releases) +网站字符串 | [所有网站字符串](#site-strings-in-i18n) +发行版本 | [所有标题和副标题 URL](/zh-cn/releases) 翻译后的文档必须保存在自己的 `content/**/` 子目录中,否则将遵循与英文源相同的 URL 路径。 -例如,要准备将 [Kubernetes 基础](/zh-cn/docs/tutorials/kubernetes-basics/) 教程翻译为德语, +例如,要准备将 [Kubernetes 基础](/zh-cn/docs/tutorials/kubernetes-basics/)教程翻译为德语, 请在 `content/de/` 文件夹下创建一个子文件夹并复制英文源: ```shell @@ -533,44 +602,51 @@ cp content/en/docs/tutorials/kubernetes-basics.md content/de/docs/tutorials/kube ``` 翻译工具可以加快翻译过程。例如,某些编辑器提供了用于快速翻译文本的插件。 - {{< caution >}} + 机器生成的翻译本身是不够的,本地化需要广泛的人工审核才能满足最低质量标准。 {{< /caution >}} 为了确保语法和含义的准确性,本地化团队的成员应在发布之前仔细检查所有由机器生成的翻译。 ### 源文件 {#source-files} 本地化必须基于本地化团队所针对的特定发行版本中的英文文件。 -每个本地化团队可以决定要针对哪个发行版本,在下文中称作目标版本(target version)。 +每个本地化团队可以决定要针对哪个发行版本,在下文中称作 **目标版本(target version)**。 要查找你的目标版本的源文件: @@ -590,9 +666,13 @@ The `main` branch holds content for the current release `{{< latest-version >}}` ### i18n/ 中的网站字符串 {#site-strings-in-i18n} @@ -608,12 +688,12 @@ cp data/i18n/en/en.toml data/i18n/de/de.toml ``` -修改文件顶部的注释以适合你的本地化, -然后翻译每个字符串的值。例如,这是搜索表单的德语占位符文本: +修改文件顶部的注释以适合你的本地化,然后翻译每个字符串的值。 +例如,这是搜索表单的德语占位符文本: ```toml [ui_search_placeholder] @@ -621,27 +701,33 @@ other = "Suchen" ``` -本地化网站字符串允许你自定义网站范围的文本和特性:例如,每个页面页脚中的合法版权文本。 +本地化网站字符串允许你自定义网站范围的文本和特性:例如每个页面页脚中的版权声明文本。 -### 特定语言的样式指南和词汇表 {#language-specific-style-guide-and-glossary} +### 特定语言的本地化指南 {#language-specific-localization-guide} -一些语言团队有自己的特定语言样式指南和词汇表。 -例如,请参见[中文本地化指南](/zh-cn/docs/contribute/localization_zh/)。 +作为本地化团队,你可以通过创建特定语言的本地化指南来正式确定团队需遵循的最佳实践。 +请参见[中文本地化指南](/zh-cn/docs/contribute/localization_zh/)。 ### 特定语言的 Zoom 会议 {#language-specific-zoom-meetings} @@ -664,24 +750,32 @@ To collaborate on a localization branch: --> ### 分支策略 {#branching-strategy} -因为本地化项目是高度协同的工作,所以我们鼓励团队基于共享的本地化分支工作。 -- 特别是在开始并且本地化尚未生效时。 +因为本地化项目是高度协同的工作, +特别是在刚开始本地化并且本地化尚未生效时,我们鼓励团队基于共享的本地化分支工作。 在本地化分支上协作需要: 1. [@kubernetes/website-maintainers](https://github.com/orgs/kubernetes/teams/website-maintainers) 中的团队成员从 https://github.com/kubernetes/website 原有分支新建一个本地化分支。 + 当你给 `kubernetes/org` 仓库[添加你的本地化团队](#add-your-localization-team-in-github)时, 你的团队批准人便加入了 `@kubernetes/website-maintainers` 团队。 @@ -693,17 +787,22 @@ To collaborate on a localization branch: 直接新建了 kubernetes/website 仓库的本地化分支 `dev-1.12-de.1`。 -2. 个人贡献者基于本地化分支创建新的特性分支 +2. 个人贡献者基于本地化分支创建新的特性分支。 - 例如,一个德语贡献者新建了一个拉取请求,并将 `username:local-branch-name` 更改为 `kubernetes:dev-1.12-de.1`。 + 例如,一个德语贡献者新建了一个拉取请求, + 并将 `username:local-branch-name` 更改为 `kubernetes:dev-1.12-de.1`。 3. 批准人审查功能分支并将其合并到本地化分支中。 @@ -711,55 +810,74 @@ To collaborate on a localization branch: 在批准 PR 之前,请确保先 squash commits。 根据需要重复步骤 1-4,直到完成本地化工作。例如,随后的德语本地化分支将是: -`dev-1.12-de.2`、`dev-1.12-de.3`,等等。 +`dev-1.12-de.2`、`dev-1.12-de.3` 等等。 -团队必须将本地化内容合入到发布分支中,该发布分支是内容的来源。 - -例如: +团队必须将本地化内容合入到发布分支中,该发布分支是内容的来源。例如: - 源于 `main` 分支的本地化分支必须被合并到 `main`。 - 源于 `release-{{ skew "prevMinorVersion" }}` 的本地化分支必须被合并到 `release-{{ skew "prevMinorVersion" }}`。 -如果你的本地化分支是基于 `main` 分支创建的,但最终没有在新的发行 -分支 `{{< release-branch >}}` 被创建之前合并到 `main` 中,需要将其 -同时将其合并到 `main` 和新的发行分支 `{{< release-branch >}}` 中。 -要将本地化分支合并到新的发行分支 `{{< release-branch >}}` 中,你需要 -将你本地化分支的上游分支切换到 `{{< release-branch >}}`。 - +{{< note >}} -在团队每个里程碑的开始时段,创建一个 issue 来比较先前的本地化分支 -和当前的本地化分支之间的上游变化很有帮助。 -现在有两个脚本用来比较上游的变化。 -[`upstream_changes.py`](https://github.com/kubernetes/website/tree/main/scripts#upstream_changespy) -对于检查对某个文件的变更很有用。 -[`diff_l10n_branches.py`](https://github.com/kubernetes/website/tree/main/scripts#diff_l10n_branchespy) -可以用来为某个特定本地化分支创建过时文件的列表。 - -虽然只有批准人才能创建新的本地化分支并合并 PR,任何人都可以 -为新的本地化分支提交一个拉取请求(PR)。不需要特殊权限。 +如果你的本地化分支是基于 `main` 分支创建的,但最终没有在新的发行分支 +`{{< release-branch >}}` 被创建之前合并到 `main` 中,需要将其同时将其合并到 +`main` 和新的发行分支 `{{< release-branch >}}` 中。 +要将本地化分支合并到新的发行分支 `{{< release-branch >}}` 中, +你需要将你本地化分支的上游分支切换到 `{{< release-branch >}}`。 +{{< /note >}} +在团队每个里程碑的开始时段,创建一个 issue +来比较先前的本地化分支和当前的本地化分支之间的上游变化很有帮助。 +现在有两个脚本用来比较上游的变化。 + +- [`upstream_changes.py`](https://github.com/kubernetes/website/tree/main/scripts#upstream_changespy) + 对于检查对某个文件的变更很有用。 +- [`diff_l10n_branches.py`](https://github.com/kubernetes/website/tree/main/scripts#diff_l10n_branchespy) + 可以用来为某个特定本地化分支创建过时文件的列表。 + +虽然只有批准人才能创建新的本地化分支并合并 PR, +任何人都可以为新的本地化分支提交一个拉取请求(PR)。不需要特殊权限。 + + 有关基于派生或直接从仓库开展工作的更多信息,请参见 ["派生和克隆"](#fork-and-clone-the-repo)。