# 分享主题（组件）翻译

**URL:** https://meta.discourse.org/t/share-theme-component-translations/371975
**Category:** Theme component
**Tags:** translation
**Created:** [2025年六月27日 10:03 UTC](https://meta.discourse.org/t/share-theme-component-translations/371975 "2025-06-27T10:03:13Z")
**Posts on this page:** 1
**Showing post:** 1

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [2025年六月27日 10:03 UTC](https://meta.discourse.org/t/share-theme-component-translations/371975/1 "2025-06-27T10:03:13Z")

</div>

| | | |
| --- | --- | --- |
| ℹ | **摘要** | 通过在 Discourse 界面中轻松分享已完成的翻译，协助翻译主题和主题组件 |
| 👓 | **预览** | 目前尚无法在主题创建器中分享主题 |
| 🛠 | **代码仓库** | [GitHub - moin-Jana/share-theme-translations](https://github.com/moin-Jana/share-theme-translations) |
| ❓ | **安装指南** | [如何安装主题或主题组件](https://meta.discourse.org/t/how-do-i-install-a-theme-or-theme-component/63682) |
| 📖 | **Discourse 主题新手？** | [Discourse 主题使用入门指南](https://meta.discourse.org/t/beginners-guide-to-using-discourse-themes/91966) |

安装此主题组件

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

 ![主题翻译部分下方的“分享翻译”区域，其中包含有关分享翻译的说明文本和一个按钮](https://global.discourse-cdn.com/meta/original/4X/b/d/4/bd40707f8a984522b1bd44927bb4c59ff80838c7.png)  
 ![“分享翻译”弹窗，显示原始文本和修改后的文本，以及创建拉取请求、复制到剪贴板、打开 Meta 话题和复制 YML 的按钮](https://global.discourse-cdn.com/meta/original/4X/4/2/a/42ab9a486ed7f68a58dff3e02d9d6d5a7a22be48.png)

## 工作原理

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

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

### 在 GitHub 上创建新的翻译文件

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

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

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

> **详细步骤**
>
> 1. 翻译完成后，点击按钮打开弹窗  
> ![“分享翻译”区域，包含有关分享翻译的说明文本和一个“分享德语翻译”的按钮](https://global.discourse-cdn.com/meta/original/4X/b/d/4/bd40707f8a984522b1bd44927bb4c59ff80838c7.png)
> 2. 点击“创建拉取请求”  
> ![“分享翻译”弹窗，显示原始文本和修改后的文本、包含描述的复选框，以及创建拉取请求、复制到剪贴板、打开 Meta 话题和复制 YML 的按钮](https://global.discourse-cdn.com/meta/original/4X/4/2/a/42ab9a486ed7f68a58dff3e02d9d6d5a7a22be48.png)
> 3. Fork 该代码仓库  
> ![GitHub 界面提示你需要 Fork 该代码仓库，并提供相应按钮](https://global.discourse-cdn.com/meta/original/4X/5/0/7/507ad426883b5a71b2aa64f7a82bb6f88e014744.png)
> 4. 编辑器将打开，并预先填入你的翻译。如果需要，你可以直接在文件中翻译描述。  
> ![GitHub 界面显示 的编辑器。主题描述和元数据为英文，主题翻译为德文](https://global.discourse-cdn.com/meta/original/4X/5/a/8/5a81989a99b203a3b3551180ab55bd235ed0dabd.png)  
> 如果你已取消勾选以排除描述，则这些内容不会被包含，从而简化了编辑器中的文本。  
> ![GitHub 界面显示 的编辑器。主题描述和元数据缺失](https://global.discourse-cdn.com/meta/original/4X/4/3/f/43f073d5f569900088ca042b465b08767ddfa764.png)
> 5. 准备就绪后，点击“提交更改…”，然后“提议更改”，最后“创建拉取请求”（需点击两次）。  
> ![用于输入提交信息和描述的弹窗，底部有“提议更改”按钮](https://global.discourse-cdn.com/meta/original/4X/c/b/a/cba9b840eca58f19d312b0a337822e2fafaee434.png)
> 6. :partying\_face 完成！你已成功分享翻译！

### 在 GitHub 上改进和添加翻译

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

- 打开 GitHub 编辑器，并定位到正确路径（例如 `locales/en_GB.yml`）
- 不会预先填充 GitHub 编辑器，而是将翻译内容复制到你的剪贴板，方便你直接粘贴
- 如果你的界面语言与你正在编辑的翻译语言一致，则可以包含额外信息（如主题描述和设置）。否则，组件无法获取对应语言的描述，这些内容将被排除，你只能复制翻译文本。在这种情况下，请确保粘贴时不要覆盖描述。组件会提前警告你，你可以轻松切换界面语言以包含描述。

> **详细步骤**
>
> 1. 如果你的界面语言与翻译目标语言不匹配（例如，我的界面语言是美式英语，而我要翻译的是英式英语），你有两个选择：  
> ![“分享翻译”区域，包含说明文本、关于界面语言与翻译目标语言不匹配的警告，以及“分享英式英语翻译”的按钮](https://global.discourse-cdn.com/meta/original/4X/b/4/0/b4020daac0e22778f59c890425ca56b1469f944d.png)  
> **A**. 在打开弹窗前更改你的界面语言  
> **B**. 继续操作，不切换语言直接打开弹窗。
> 2. 你将看到弹窗高亮显示你的编辑内容  
> **A**. 如果你的界面语言也是你要翻译的目标语言，你可以使用复选框选择是否排除描述  
> ![“分享翻译”弹窗，显示原始文本和修改后的文本、包含描述的复选框，以及创建拉取请求、复制到剪贴板、打开 Meta 话题和复制 YML 的按钮](https://global.discourse-cdn.com/meta/original/4X/c/7/b/c7b2ec0d46e5a4c7d4df48ce58c94dfa372db8da.png)  
> **B**. 否则，该复选框将被禁用。  
> ![“分享翻译”弹窗，显示原始文本和修改后的文本、一个关于包含描述的已禁用复选框，以及创建拉取请求、复制到剪贴板、打开 Meta 话题和复制 YML 的按钮](https://global.discourse-cdn.com/meta/original/4X/b/b/6/bb69047e302d8a9675d5103d2ba4efe669afe818.png)
> 3. 点击“复制并打开 GitHub”，然后 Fork 该代码仓库  
> ![GitHub 界面提示你需要 Fork 该代码仓库，并提供相应按钮](https://global.discourse-cdn.com/meta/original/4X/0/2/7/027260bfca504ce4c7f4924554e34ff00f28fc3c.png)
> 4. 你将看到编辑器中显示当前保存在 GitHub 上的翻译内容。  
> **A**. 如果已包含描述，你可以直接替换整个文件内容。  
> 
>   
> **B**. 如果你未切换语言或未勾选复选框，则仅复制了主题翻译。因此，只需替换这些部分即可。请注意保持正确的缩进。  
> 
> 5. 你也可以编辑描述。准备就绪后，点击“提交更改…”，然后“提议更改”，最后“创建拉取请求”（需点击两次）。  
> ![用于输入提交信息和描述的弹窗，底部有“提议更改”按钮](https://global.discourse-cdn.com/meta/original/4X/7/9/5/7950336088538871533c1a2ccb9346fd6ef57783.png)
> 6. :partying\_face 完成！你已成功分享翻译！

> ⚠ 某些主题组件使用翻译平台进行翻译。例如，许多 #official 组件在 Crowdin 上进行翻译。这些文件顶部会有警告，告知你可以在哪里贡献翻译。
> 
> ![警告：切勿编辑此文件。从 Crowdin 拉取翻译时，此文件将被覆盖。如需参与翻译工作，请加入此项目：https://translate.discourse.org/](https://global.discourse-cdn.com/meta/original/4X/4/c/7/4c70b7ad62fc97956b8ae3b03f62eb2ee0c8d5a3.png)

### 在 Meta 上分享翻译

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

> **详细步骤**
>
> 1. 翻译完成后，点击按钮打开弹窗。  
> ![“分享翻译”区域，包含说明文本和“分享德语翻译”的按钮](https://global.discourse-cdn.com/meta/original/4X/b/d/4/bd40707f8a984522b1bd44927bb4c59ff80838c7.png)
> 2. 点击“复制并打开 Meta”。  
> ![“分享翻译”弹窗，显示原始文本和修改后的文本、包含描述的复选框，以及创建拉取请求、复制到剪贴板、打开 Meta 话题和复制 YML 的按钮](https://global.discourse-cdn.com/meta/original/4X/4/2/a/42ab9a486ed7f68a58dff3e02d9d6d5a7a22be48.png)
> 3. 点击“回复”以打开编辑器，然后粘贴你的翻译。  
> ![Discourse 论坛，底部打开的编辑器中包含翻译内容](https://global.discourse-cdn.com/meta/original/4X/4/3/f/43f4401791b06c769cbf56e2ffde37c1333e710d.png)
> 4. 如果你未排除描述，可以在发布翻译前直接编辑它们。  
> ![Discourse 编辑器中仍包含翻译内容，但上方有给主题作者的留言，且描述为德文](https://global.discourse-cdn.com/meta/original/4X/e/b/4/eb446da995847583f263faad0a3986514cae759e.png)
> 5. :partying\_face 你已成功分享翻译

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

### 在其他平台上分享翻译

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

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

## 设置

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

 ![“分享翻译”区域，包含“分享德语翻译”的按钮](https://global.discourse-cdn.com/meta/original/4X/3/c/2/3c2676d0b3fc66cfd6cc8c8f3042a3da4a514952.png) ![“分享翻译”区域，包含关于界面语言与翻译目标语言不匹配的警告和“分享英式英语翻译”的按钮](https://global.discourse-cdn.com/meta/original/4X/b/c/8/bc8e9338e2099aa45d6cea1f3ddc9dd3d355aaf8.png)

## 未来展望

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

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

```

有了这个字段，该组件可以：

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

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

---

_[View the full topic](https://meta.discourse.org/t/share-theme-component-translations/371975)._
