分享主题(组件)翻译

:information_source: 摘要 通过在 Discourse 界面中轻松分享已完成的翻译,协助翻译主题和主题组件
:eyeglasses: 预览 目前尚无法在主题创建器中分享主题
:hammer_and_wrench: 代码仓库 GitHub - moin-Jana/share-theme-translations
:question: 安装指南 如何安装主题或主题组件
:open_book: Discourse 主题新手? Discourse 主题使用入门指南

安装此主题组件

Discourse 让翻译主题和主题组件变得轻而易举。但这些翻译通常仅保留在你的本地站点上。
此组件可帮助你通过向代码仓库提交拉取请求(Pull Request),或在此处的 Meta 话题中发布,将你的翻译分享给社区和作者。


工作原理

当远程主题或组件包含可翻译文本时,此组件会在翻译界面下方添加一个部分。从这里,你可以打开一个弹窗,以多种方式分享你的翻译。

:warning: 关于默认分支的说明
该组件假设代码仓库的默认分支名为 main。如果代码仓库使用其他名称(例如 master),某些链接可能无法正常工作,可能需要手动调整。

在 GitHub 上创建新的翻译文件

如果主题托管在 GitHub 上,且该语言尚无翻译文件,按钮将执行以下操作:

  • 打开 GitHub 编辑器,并定位到正确路径(例如 locales/de.yml
  • 预先填入你已翻译的内容,格式正确
  • 包含主题描述和设置(可选)

Discourse 界面中无法翻译描述,但你可以直接在 GitHub 编辑器中编辑它们后再保存。如果你不想翻译这些描述,也可以取消勾选复选框以排除它们。

详细步骤
  1. 翻译完成后,点击按钮打开弹窗
  2. 点击“创建拉取请求”
  3. Fork 该代码仓库
  4. 编辑器将打开,并预先填入你的翻译。如果需要,你可以直接在文件中翻译描述。

    如果你已取消勾选以排除描述,则这些内容不会被包含,从而简化了编辑器中的文本。
  5. 准备就绪后,点击“提交更改…”,然后“提议更改”,最后“创建拉取请求”(需点击两次)。
  6. :partying_face 完成!你已成功分享翻译!

在 GitHub 上改进和添加翻译

即使你的语言已有翻译,你仍然可以改进现有内容并补充缺失的翻译。此流程稍显繁琐。按钮将:

  • 打开 GitHub 编辑器,并定位到正确路径(例如 locales/en_GB.yml
  • 不会预先填充 GitHub 编辑器,而是将翻译内容复制到你的剪贴板,方便你直接粘贴
  • 如果你的界面语言与你正在编辑的翻译语言一致,则可以包含额外信息(如主题描述和设置)。否则,组件无法获取对应语言的描述,这些内容将被排除,你只能复制翻译文本。在这种情况下,请确保粘贴时不要覆盖描述。组件会提前警告你,你可以轻松切换界面语言以包含描述。
详细步骤
  1. 如果你的界面语言与翻译目标语言不匹配(例如,我的界面语言是美式英语,而我要翻译的是英式英语),你有两个选择:

    A. 在打开弹窗前更改你的界面语言
    B. 继续操作,不切换语言直接打开弹窗。
  2. 你将看到弹窗高亮显示你的编辑内容
    A. 如果你的界面语言也是你要翻译的目标语言,你可以使用复选框选择是否排除描述

    B. 否则,该复选框将被禁用。
  3. 点击“复制并打开 GitHub”,然后 Fork 该代码仓库
  4. 你将看到编辑器中显示当前保存在 GitHub 上的翻译内容。
    A. 如果已包含描述,你可以直接替换整个文件内容。

    B. 如果你未切换语言或未勾选复选框,则仅复制了主题翻译。因此,只需替换这些部分即可。请注意保持正确的缩进。
  5. 你也可以编辑描述。准备就绪后,点击“提交更改…”,然后“提议更改”,最后“创建拉取请求”(需点击两次)。
  6. :partying_face 完成!你已成功分享翻译!

:warning: 某些主题组件使用翻译平台进行翻译。例如,许多 official 组件在 Crowdin 上进行翻译。这些文件顶部会有警告,告知你可以在哪里贡献翻译。

在 Meta 上分享翻译

如果你没有 GitHub 账户,且 Meta 话题链接可用,你也可以在那里发布你的翻译,并请求作者在下一次更新中将其包含进来。点击“复制并打开 Meta”将格式化你的翻译,复制到剪贴板,并在新标签页中打开 Meta 话题。然后只需点击 回复,粘贴为你格式化的翻译内容即可。

详细步骤
  1. 翻译完成后,点击按钮打开弹窗。
  2. 点击“复制并打开 Meta”。
  3. 点击“回复”以打开编辑器,然后粘贴你的翻译。
  4. 如果你未排除描述,可以在发布翻译前直接编辑它们。
  5. :partying_face 你已成功分享翻译

如果未提供 Meta 话题链接,你可以复制翻译内容并手动搜索相关话题。在这种情况下,请务必注意帖子的格式。

在其他平台上分享翻译

如果主题托管在 GitLab 或其他平台上,你的翻译内容将被复制到剪贴板,同时代码仓库将在新标签页中打开。与 GitHub 不同,GitLab 不支持在 URL 中预填充文件编辑器的内容。因此,即使是新文件,你也需手动粘贴翻译内容。

我尚未研究其他平台上编辑文件链接的构建方式。因此,在这种情况下,你将被带到代码仓库中的文件或目录,需要自行查找如何创建或编辑文件。

设置

此组件包含一个设置:hide_texts
该设置会隐藏 introductory 说明,并在你的界面语言与你正在翻译的语言不匹配时显示较短的消息。

未来展望

目前,该组件无法检测主题是否已在外部(例如通过 Crowdin)进行翻译。如果 about.json 文件包含一个可选的 translation_url 字段(就像它已经可以包含许可证或 Meta 话题链接一样),这在技术上是可行的。例如:

"translation_url": "https://discourse.crowdin.com/discotoc"

有了这个字段,该组件可以:

  • 当翻译在其他地方处理时隐藏分享按钮
  • 显示一条消息,说明应在哪里贡献翻译
  • 避免不必要的拉取请求或混淆

这不仅有助于此组件,对管理员而言,找到贡献翻译的入口也将更加便利。

11 个赞

Moin,做得太棒了。感谢你构建这个。 :astronaut: :clap:

6 个赞