# 法语 Discourse 中的更多英文字符串

**URL:** <https://meta.discourse.org/t/more-english-string-in-the-french-discourse/182557>\
**Category:** Support\
**Created:** [2021年三月8日 21:48 UTC](https://meta.discourse.org/t/more-english-string-in-the-french-discourse/182557 "2021-03-08T21:48:18Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![patrickemin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/patrickemin/32/520162_2.png) [@patrickemin](https://meta.discourse.org/u/patrickemin)\
**Post date:** [2021年三月8日 21:48 UTC](https://meta.discourse.org/t/more-english-string-in-the-french-discourse/182557/1 "2021-03-08T21:48:18Z")

</div>

你好，在法语版的 Discourse 安装中，越来越多的英文字符串未被翻译成法语，您知道原因吗？谢谢。

 ![image](https://global.discourse-cdn.com/meta/original/3X/5/e/5ef63308ee6124aad5a02714840804b79de65211.png)

---

<div class="post-metadata">

**Author:** ![ondrej](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ondrej/32/198804_2.png) [@ondrej](https://meta.discourse.org/u/ondrej)\
**Post date:** [2021年三月8日 22:00 UTC](https://meta.discourse.org/t/more-english-string-in-the-french-discourse/182557/2 "2021-03-08T22:00:38Z")

</div>

嗨，Patrick

我想这还没有翻译。如果你想贡献并自行翻译，请在此处了解如何为 Discourse 贡献翻译：[here](https://meta.discourse.org/t/contribute-a-translation-to-discourse/14882)。

---

<div class="post-metadata">

**Author:** ![patrickemin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/patrickemin/32/520162_2.png) [@patrickemin](https://meta.discourse.org/u/patrickemin)\
**Post date:** [2021年三月8日 22:02 UTC](https://meta.discourse.org/t/more-english-string-in-the-french-discourse/182557/3 "2021-03-08T22:02:57Z")

</div>

实际上，这个字符串像许多其他字符串一样，在之前的 Discourse 版本中是法语，但自从我升级到最新版本后就不再是了。

---

<div class="post-metadata">

**Author:** ![patrickemin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/patrickemin/32/520162_2.png) [@patrickemin](https://meta.discourse.org/u/patrickemin)\
**Post date:** [2021年三月8日 22:48 UTC](https://meta.discourse.org/t/more-english-string-in-the-french-discourse/182557/4 "2021-03-08T22:48:20Z")

</div>

我也混合使用了这两种语言：

 ![image](https://global.discourse-cdn.com/meta/original/3X/8/9/894af31e14944e3232ac6648e7b8aac64a9ef78d.png)

---

<div class="post-metadata">

**Author:** ![renato](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/renato/32/383632_2.png) [@renato](https://meta.discourse.org/u/renato)\
**Post date:** [2021年三月9日 01:01 UTC](https://meta.discourse.org/t/more-english-string-in-the-french-discourse/182557/5 "2021-03-09T01:01:14Z")

</div>

我运营着一个巴西葡萄牙语实例，也有同样的感受。最近有一个相关话题，我提到了自己的猜测。  
[https://meta.discourse.org/t/2-7-0-beta4-translation/181023/2?u=renato](https://meta.discourse.org/t/2-7-0-beta4-translation/181023/2?u=renato)

我刚找到了一个[示例](https://discourse.crowdin.com/u/projects/4/activity?lang=57%5Cu0026workflow_step_id=24%5Cu0026translation_id=42822)：

 ![image](https://global.discourse-cdn.com/meta/original/3X/8/f/8ff70cbd49ae0481fbaf54287558087f65c13946.png)

请注意，在 2021 年 2 月 12 日，机器人移除了旧的翻译，因为英文原文中的"these"被改成了"this"。

我认为理想情况下，如果变更不显著，我们应该保留旧翻译，就像 gettext 那样。一个错误的复数形式总比整句显示为英文要好。

我进一步查看了您截图中该字符串的情况，其 **键名** 因代码重构而被[重命名](https://github.com/discourse/discourse/commit/84c7b2c4040ef3ad6fbcff7c77568c1f10327ee2#diff-1c4bc41ac701dc343ade41a6e63fc5603256183f89fe5a73b36790b7a0c161ccL133-L137)。我假设这是一个特例，我认为大多数 **之前存在** 的缺失翻译情况都是由原文变更引起的。

---

<div class="post-metadata">

**Author:** ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)\
**Post date:** [2021年三月9日 01:03 UTC](https://meta.discourse.org/t/more-english-string-in-the-french-discourse/182557/6 "2021-03-09T01:03:51Z")

</div>

> [@renato](#):
>
> 我认为理想情况下，如果变更不显著，我们应该保留旧翻译，就像 gettext 那样。

@gerhard 这个选项是否已经过调查？我知道有些键位使用旧翻译可能会造成灾难性后果（例如电子邮件模板），但总体而言，从旧翻译开始可能比完全没有要好。我不太确定……这里的细微差别太多了。

---

<div class="post-metadata">

**Author:** ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)\
**Post date:** [2021年三月9日 12:28 UTC](https://meta.discourse.org/t/more-english-string-in-the-french-discourse/182557/7 "2021-03-09T12:28:06Z")

</div>

好吧，让我们看看，这里有几种情况：

- **翻译键变更** ：我们尽量避免这种情况，但有时确实无法避免。如果英文字符串未发生变化，我们可以利用翻译记忆（Translation Memory）自动复用现有译文。Crowdin 有一个“TM 预翻译”工作流步骤，正是为此设计的。

- **修改后的英文字符串** ：什么样的改动算作“微小变更”？这是一个难以做出的决定，甚至可能因语言而异。让我们退一步看。当我们在英文中修改现有字符串时会发生什么？

- **不应影响现有译文的修改** ：当我们对英文字符串进行不重要的批量修改时，通常会尽量保留现有译文。例如，过去我们将 `{{count}}` 占位符更改为 `%{count}`，或在 [重命名英文语言包](https://github.com/discourse/discourse/commit/3b2f6e129ae661a2a46a4006387310132e16f2a7) 时，我们就这样做了。我们可以在提交信息中添加特殊命令：

> [@renato](#):
>
> 无论如何，我觉得有些字符串被标记为未翻译，是因为英文文本发生了微小变更（使用了相同的翻译键），尽管整体含义仍然相同。
> 
> 如果确实如此，也许 Discourse 可以保留之前的译文，仅将其标记为“模糊”，以便在 Crowdin 上可能时进行修正。

我很乐意实施可行工作流程的改进。然而，Crowdin 中并没有“模糊译文”的概念。译文要么已翻译，要么未翻译。我认为这很好，否则只会让事情变得过于复杂。作为译者，你会收到关于新增和修改字符串的通知，这应该能帮助译者及时掌握情况。

@patrickemin 我已从翻译记忆中添加了 [缺失的法语译文](https://discourse.crowdin.com/translate/f3230e7607a36bb0a2f97fd90605a44e/246/en-fr/24?filter=basic&value=0#56322)。它将包含在今天的更新中。

---

<div class="post-metadata">

**Author:** ![renato](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/renato/32/383632_2.png) [@renato](https://meta.discourse.org/u/renato)\
**Post date:** [2021年三月9日 14:41 UTC](https://meta.discourse.org/t/more-english-string-in-the-french-discourse/182557/8 "2021-03-09T14:41:20Z")

</div>

> [@gerhard](#):
>
> 什么算作轻微变更？这很难做出决定，甚至可能因语言不同而有所差异。

我曾看到过，gettext 在计算用于衡量相似度的 Jaro 距离时，默认阈值为 0.85。我明白没有完美的解决方案，这只是一个建议，因为很难跟进这些变更。我并非专业翻译人员，只是在我发现实例中有缺失文本时提供帮助，但由于缺乏贡献，我竟成了我所在语言在 Crowdin 上的“顶级”翻译者。

> [@gerhard](#):
>
> 因此，除非我们在周二之前修改了该字符串，否则应该有时间在 Crowdin 上提供新的翻译。

遗憾的是，大多数语言都缺乏活跃的贡献者，我认为一周的时间不太可能足够完成新的翻译。每当收到 Crowdin 的邮件时，我都会尽力查看，但我负责的语言已经缺失了约 11,000 个单词，很难跟上进度。

> 使用翻译记忆™预翻译文件，以加快对相同或 **相似** 字符串的翻译速度…

如果提到的修复方案能在某个时候落地，确实可能会显著改善工作流程，而且看起来它也解决了模糊字符串的场景。

> [@sam](#):
>
> 我知道有些键如果沿用旧翻译可能会造成严重后果（例如邮件模板）。

如果用户正在本地自定义字符串，会发生什么情况？这种情况下这本身不就已经是个问题了吗？

另一个可能的替代方案是默认不使翻译失效，并在整个含义发生变化时采用不同的工作流程。例如，可以更改翻译键，或者在提交信息中包含 `@discourse-translator-bot invalidate_translations`。这假设——虽然可能完全错误——更改翻译键的含义属于例外情况。

话虽如此，Crowdin 确实非常容易上手。如果有更多人参与贡献，这些问题本都不会存在。我相信许多人正在将文本自定义功能用作翻译资源。

---

<div class="post-metadata">

**Author:** ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)\
**Post date:** [2021年三月9日 14:54 UTC](https://meta.discourse.org/t/more-english-string-in-the-french-discourse/182557/9 "2021-03-09T14:54:45Z")

</div>

> [@renato](#):
>
> 遗憾的是，大多数语言都缺乏活跃的贡献者。

我们对此情况已知悉。我们可能会在不久的将来聘请专业翻译人员协助部分语言的翻译工作，我认为巴西葡萄牙语也在名单之中。😉

此外，我考虑在管理员界面的“自定义文本”和默认语言设置中添加指向 Crowdin 的链接。这或许也能帮助社区中的翻译人员找到正确的方向。

> [@renato](#):
>
> 如果用户正在本地自定义字符串，会发生什么情况？在这种情况下，这本身不就已经是个问题了吗？

是的，确实如此。
