我理解Weblate支持将字符串转换为所有复数形式,并且我找到了如何在.po文件中定义键的示例。但是如何为json格式的字符串定义复数形式?
我尝试了多种变体,一种英语示例:
{
"key" : "A single key"
"key_plural" : "%d keys"
}
但是我最终得到了两个不同的字符串,而不是我在Weblate演示中看到的一个字符串的两个变体。
那么我应该如何正确地为英语和其他语言做更多复数形式(一个,少数,多个......)
答案 0 :(得分:2)
您无法以这种方式可靠地支持复数形式。许多语言具有不同数量的复数,因此没有1:1映射到英语。要正确支持复数,您需要使用可以理解它的翻译格式,例如Gettext(这只是一个例子,实际上大多数翻译格式都支持这一点)。您可以在其文档中找到有关复数的更多信息:http://www.gnu.org/savannah-checkouts/gnu/gettext/manual/html_node/Plural-forms.html
答案 1 :(得分:0)
只是为了在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 result
one
和other
是多个类别。哪些多个类别可用取决于目标语言的复数规则。例如。在日语中,单数和复数之间没有语法上的区别,只会使用other{...}
,而捷克则有4种不同的情况:
zero{...}
few{...}
many{...}
:other{...}