添加具有多种支持的json文件到Weblate

时间:2015-03-26 22:09:25

标签: weblate

我理解Weblate支持将字符串转换为所有复数形式,并且我找到了如何在.po文件中定义键的示例。但是如何为json格式的字符串定义复数形式?

我尝试了多种变体,一种英语示例:

{
  "key" : "A single key"
  "key_plural" : "%d keys"
}

但是我最终得到了两个不同的字符串,而不是我在Weblate演示中看到的一个字符串的两个变体。

那么我应该如何正确地为英语和其他语言做更多复数形式(一个,少数,多个......)

2 个答案:

答案 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

oneother是多个类别。哪些多个类别可用取决于目标语言的复数规则。例如。在日语中,单数和复数之间没有语法上的区别,只会使用other{...},而捷克则有4种不同的情况:

  • zero{...}
  • few{...}
  • many{...}
  • other{...}

另请参阅documentation for PluralFormatLanguage Plural Rules

上的概述