关于复数(计数)翻译覆盖的问题

你好 :wave:

我注意到最新的更新在计数为 1 时使用了复数字符串的 one 版本。问题是,到目前为止,即使计数为 1,复数字符串也始终使用 other 版本,并且在 /admin/customize/site_texts/ 中没有选项可以找到字符串的 one 版本,例如匈牙利语。然而,匈牙利语没有理由同时使用这两个版本(oneother),因为它们几乎是相同的。

重现步骤:

  1. 更改语言区域设置,例如匈牙利语
  2. 转到 /admin/customize/site_texts/
  3. 搜索,例如 js.topic_count_latest 并更改文本。
  4. 在“查看新主题或已更新主题”横幅上进行检查。
  5. 当只有一个更新可用时,它将使用默认值,因为您编辑的字符串是 other 版本。如果有更多新主题或已更新主题,文本将更改为您之前添加的内容。

谢谢 :slightly_smiling_face:

3 个赞

你好 @Don

我在简体中文上进行了此测试,未能重现此问题 :thinking:

我在原始字符串中添加了一个额外的字符(已高亮显示)。当计数为 1 时,更改确实发生了。

1 个赞

两种语言的复数定义中都只有“other”

但匈牙利语仍然为“one”单独翻译。

而中文没有

我想知道为什么在 Crowdin 中会为“one”创建单独的版本。

2 个赞

是的,匈牙利语中有两个版本(一个和其他),但我认为它直到现在从未实际使用过“一个”版本,因为它在管理员文本自定义中也不可用。它总是回退到“其他”。

1 个赞

我可以问一下,匈牙利语有复数形式吗?如果有,也许我们应该向 plurals.rb 添加 :one 定义。

1 个赞

我找到了问题的根源。Discourse 的 I18n 依赖于一个外部库的复数定义:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse-i18n/src/index.js#L7

但在该库中,我们可以看到匈牙利语被定义为使用 a 类复数,它区分“一个”和其他。

我完全不懂匈牙利语,也许有人能帮我指出是他们的复数定义错了还是我们的错了 :slightly_smiling_face:

3 个赞

你好 :waving_hand:

谢谢检查。:heart:

嗯,匈牙利语有复数,但并非总是如此,这使得它有点困难。但我可以解释一些简单的例子。

大多数匈牙利语单词都有复数形式。
如果它是不可数的。
例如
Group → Groups = Csoport → Csoportok
Topic → Topics = Téma → Témák

所以我认为外部库是正确的,因为我们有复数形式。

但是,如果单词前面有数字(计数),我们就不使用复数。
如果它是可数的。
例如
1 group → 2 groups = 1 csoport → 2 csoport
1 topic → 2 topics = 1 téma → 2 téma


如果你查看匈牙利语文件,你会发现复数形式总是相同的。

然而,我看到有些字符串没有使用 countone 形式。

像这样:

这没关系,因为在这种情况下我们不需要计数,当只有一个主题时,这很明显。但另一个区别在于 other 后面是一个数字。文本与是否有数字无关。


所以,如果你问我,我只会删除 one 形式。

但如果它来自一个外部库,我认为它是正确的,因为匈牙利语有复数形式,但并非 Discourse 使用的大多数情况。所以,添加 one 形式以获得自定义能力可能是最简单的解决方案,可以防止出现问题。是的,它基本上是相同的,但至少我们可以在管理员那里自定义它。

我不知道,这是一个难题。因为每个运行匈牙利语论坛并进行管理员自定义的人都只更改了 other 形式。因为它总是从 one 回退到 other。所以,如果我们添加 one 形式,管理员必须再次审查所有复数字符串,以便也修改该版本,使其与 other 相同。

谢谢 :slightly_smiling_face:

2 个赞

感谢您提供详细的回复!Bug 修复已合并:

此修复程序为匈牙利语添加了 :one 形式。未来的 Crowdin 翻译人员可以尝试删除单数形式的 %{count},使其与 :other 形式区分开来。

5 个赞

谢谢你的快速修复。 :heart:

我认为没问题,%{count} 很好地遵循了英语的 locale。它在某些复数字符串的 one 形式中也不使用 %{count}。现在唯一的变化是,我们也可以在管理员那里编辑 one 形式,我认为在这种情况下已经足够了。我认为如果它能正常工作,就不需要其他更改了。我将很快更新以进行测试。 :slightly_smiling_face:

似乎一切都运行得很出色 :slightly_smiling_face: 更改所有这些花费了我很多时间,但我几乎完成了。 :smile: 再次感谢,也感谢 @Moin 指出这一点。 :heart:

4 个赞

该主题在上次回复后 2 天自动关闭。不再允许新回复。

跟踪更广泛的问题,网址为 Inconsistency in plural definition

2 个赞