我知道Weblate支持将字符串转换为所有复数形式,我找到了如何在.po文件中定义键的示例。但是如何定义json格式的字符串的复数形式呢?
我尝试了多种变体,以英语为例:
{
"key" : "A single key"
"key_plural" : "%d keys"
}但我最终得到了两个不同的字符串,而不是我在Weblate演示中看到的一个字符串的两个变体。
那么,对于英语和其他具有更多复数形式的语言(one,plural,more,…),我应该如何正确地做到这一点呢?
发布于 2015-03-27 20:48:13
你不能以这种方式可靠地支持复数。许多语言都有不同数量的复数,因此与英语没有一对一的对应关系。为了正确支持复数,你需要使用能够理解复数的翻译格式,例如Gettext (这只是一个例子,实际上大多数翻译格式都支持这一点)。您可以在他们的文档中找到关于复数的更多信息:http://www.gnu.org/savannah-checkouts/gnu/gettext/manual/html_node/Plural-forms.html
发布于 2016-10-26 04:00:46
只需添加一个不同的示例来说明如何在JavaScript中做到这一点,messageformat库支持复数形式,支持在各种语言中可能发生的不同情况。
对于英语复数形式,你可以这样使用它:
var pluralMessage = mf.compile("There {NUM_RESULTS, plural, one{is} other{are}} {NUM_RESULTS} {NUM_RESULTS, plural, one{result} other{results}}")
console.log(pluralMessage({ NUM_RESULTS: 1 });
// There is 1 result
console.log(pluralMessage({ NUM_RESULTS: 5 });
// There are 5 resultone和other是复数类别。哪些复数类别是可用的,取决于目标语言的复数规则。例如,在日语中,在语法上没有单数和复数之分的情况下,只会使用other{...},而对于捷克语,有四种不同的情况:
zero{...}few{...}many{...}:other{...}另请参阅Language Plural Rules上的documentation for PluralFormat和此概述
https://stackoverflow.com/questions/29289819
复制相似问题