我注意到,少数语言环境只有CLDR定义的一种形式的(基数)复数形式。以下是一些没有复数形式的流行语言示例:
假设以下英语ICU消息字符串:
You have {count, plural, =0 {no unread messages} one {# unread message} other {# unread messages}}.
将复数ICU语法翻译成这些语言是否有任何价值?例如中文:
多个语法 您有{count, plural, other {#}}條未讀消息。
或者由于没有复数形式,我们应该建议翻译者像这样简单地使用变量:
变量语法 您有{count}條未讀消息。
我测试了两个库(GlobalizeJs和FormatJs),并且似乎都可以同时使用这两种语法。
在交换这些语法时是否存在任何已知问题?
对于大多数没有复数形式的语言环境,大多数图书馆建议使用变量语法是安全的吗?
答案 0 :(得分:1)
保留复数标记没有任何价值。 =0
的情况下应该说“没有”。
答案 1 :(得分:0)
晚了几年,但请注意,这取决于该短语是仅使用复数类别还是还使用覆盖(例如您的示例中的 =0)以及您是否只是试图在每个类别中语法正确,这具有巨大的价值语言,或者更确切地说是试图听起来像人而不是机器。
此外,如果是教语言学家如何使用 ICU,最好解释参数的工作原理,因为它不仅限于复数形式(也有具有类似工作方式的选择)。
最后,如果您正在处理带有 ICU 的 YML 等翻译文件,我会说最好保留 ICU 复数标记。这意味着您可以随时更改翻译的源语言(包括更改为没有复数形式的语言,如中文),并且您不必重写所有应该保留复数标记的字符串第一名。