【问题标题】:Adding json files with plural support to Weblate向 Weblate 添加具有复数支持的 json 文件
【发布时间】:2015-05-31 03:21:25
【问题描述】:

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

我尝试了多种变体,以英语为例:

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

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

那么对于英语和其他具有更多复数形式(一、少数、多……)的语言,我应该如何正确地做到这一点

【问题讨论】:

    标签: weblate


    【解决方案1】:

    您不能以这种方式可靠地支持复数。许多语言有不同数量的复数,因此没有 1:1 映射到英语。要正确支持复数,您需要使用可以理解的翻译格式,例如 Gettext(这只是一个示例,实际上大多数翻译格式都支持这一点)。你可以在他们的文档中找到更多关于复数的信息:http://www.gnu.org/savannah-checkouts/gnu/gettext/manual/html_node/Plural-forms.html

    【讨论】:

      【解决方案2】:

      只是添加一个不同的例子来说明如何在 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 上的概述

      【讨论】:

        猜你喜欢
        • 2021-01-04
        • 1970-01-01
        • 2012-12-23
        • 2015-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多