是否有理由对没有复数的语言环境使用ICU复数语法?

时间:2019-09-07 23:58:56

标签: unicode internationalization globalization icu

我注意到,少数语言环境只有CLDR定义的一种形式的(基数)复数形式。以下是一些没有复数形式的流行语言示例:

假设以下英语ICU消息字符串:

You have {count, plural, =0 {no unread messages} one {# unread message} other {# unread messages}}.

将复数ICU语法翻译成这些语言是否有任何价值?例如中文:

多个语法 您有{count, plural, other {#}}條未讀消息。

或者由于没有复数形式,我们应该建议翻译者像这样简单地使用变量:

变量语法 您有{count}條未讀消息。

我测试了两个库(GlobalizeJsFormatJs),并且似乎都可以同时使用这两种语法。

在交换这些语法时是否存在任何已知问题?

对于大多数没有复数形式的语言环境,大多数图书馆建议使用变量语法是安全的吗?

2 个答案:

答案 0 :(得分:1)

保留复数标记没有任何价值。 =0的情况下应该说“没有”。

答案 1 :(得分:0)

晚了几年,但请注意,这取决于该短语是仅使用复数类别还是还使用覆盖(例如您的示例中的 =0)以及您是否只是试图在每个类别中语法正确,这具有巨大的价值语言,或者更确切地说是试图听起来像人而不是机器。

此外,如果是教语言学家如何使用 ICU,最好解释参数的工作原理,因为它不仅限于复数形式(也有具有类似工作方式的选择)。

最后,如果您正在处理带有 ICU 的 YML 等翻译文件,我会说最好保留 ICU 复数标记。这意味着您可以随时更改翻译的源语言(包括更改为没有复数形式的语言,如中文),并且您不必重写所有应该保留复数标记的字符串第一名。