显然,用户喜欢看到文本正确的多元化,多元化方案在不同的书面语言中可能会遇到。当应用国际化时,什么样的模式(S)对处理可能具有多元化的消息是有用的?多个可能的多元化的消息呢?
例如:"N评论(S):“
一种模式是
reviews.title.singular="{0} review:"
reviews.title.plural="{0} reviews:"这可能不支持所有的语言。
或者一个更复杂的例子:“发现M问题(S)并发表评论”。
即使用英语也很难支持这一点。
发布于 2013-11-03 03:19:03
我看到使用的模式是为它创建一个特定的模式,并描述每个值的范围。
例如,在它是java中
"Found {0,choice,0#no questions|1#a single question|1<{0,number,integer} questions} with "+
"{1,choice,0#no comments|1#a single comment|1<{1,number,integer} comments}."对于这样的事情来说,这是一种痛苦,但完全可以翻译成带有奇怪规则的语言。
发布于 2013-11-03 12:00:42
GNU gettext采用的方法是将各种复数形式的大部分处理推迟到包含翻译本身的文件中。若要检索可能涉及多元化的已翻译字符串,请执行以下调用
ngettext("singular English form", "plural English form", quantity)库将根据quantity的值和各种复数形式的特定语言规则选择正确的复数形式。
为了避免组合爆炸,该方案只能处理可能触发多元化的单一数量。如果您有多个可能触发多元化的量,我会尝试将该消息重新措辞,以使多重多元化被移除,或者将其分割成多个块,然后分别翻译(和多元)。
发布于 2013-11-03 13:13:34
其他答案中所描述的解决方案可能有效,但当您处理大量不同的短语、同一短语中的几个复数词等时,执行起来会非常复杂。
如果您的语言有更复杂的复数规则,如前所述,情况就更糟了。
在工作中,我们也在处理类似的事情(目前用5种语言)。
我们所做的:我们试图通过编写我们的信息来避免所有的复杂性,无论是与你问题中的例子完全一样:
找到M问题(S)与N评论(S)。
...or是这样的:
发现的问题数:m,,找到的注释数:n
当然,这看起来不像更复杂的解决方案的输出那样优雅,但是处理起来要容易得多。
https://softwareengineering.stackexchange.com/questions/216335
复制相似问题