使用角度平移的多重化的AngularJS平移

Ein*_*ius 5 translation pluralize angularjs angular-translate

您好我需要根据值进行复数翻译,但无法找到如何做到这一点.

例如,我有变量peopleCount.

  1. peopleCount = 1翻译应该是:英语:{{ peopleCount }} person likes this立陶宛语:{{ peopleCount }} zmogus tai megsta
  2. 如果peopleCount超过1英文翻译将是:{{ peopleCount }} people like this.

但对于立陶宛语翻译:

  1. 如果peopleCount是2到9之间或任何以这些数字结尾的数字,除了以第4个规则提供的数字结尾的数字(例如:225,249,210 <---这些是正确的数字.并且不正确的数字:215,250 ... ).这将是{{ peopleCount }} zmones tai megsta
  2. 如果计数在10到20或30之间,40或任何其他以零或150或90结尾的数字,那将是 {{ peopleCount }} zmoniu tai megsta

我该如何做到这一点?

Ily*_*iev 12

Angular-translate具有MessageFormat功能的服务,它非常强大,并且还具有立陶宛语的内置语言环境.关于MessageFormat和angular-translate的文章.

安装

您可以通过bower安装此软件包:

$ bower install angular-translate-interpolation-messageformat
Run Code Online (Sandbox Code Playgroud)

之后,按顺序包含MessageFormat和angular-translate-interpolation-messageformat的必要脚本:

<script src="path/to/messageformat.js"></script>
<script src="path/to/angular-translate-interpolation-messageformat.js"></script>
Run Code Online (Sandbox Code Playgroud)

最后在你的config函数中调用$ translateProvider中的useMessageFormatInterpolation函数:

$translateProvider.useMessageFormatInterpolation();
Run Code Online (Sandbox Code Playgroud)

用法

安装angular-translate-interpolation-messageformat到您的应用程序后,您可以使用它.

例如,您可以为代码"PEOPLE"创建英语本地化,如下所示:

{
    "PEOPLE" : "{peopleCount, plural, one {There is one man (in lithuanian)} few {# zmones tai megsta} other {# zmoniu tai megsta}}"
}
Run Code Online (Sandbox Code Playgroud)

而不是像你这样在你的HTML中使用它:

<span translate="PEOPLE" translate-values="{peopleCount: 12}" translate-interpolation="messageformat"></span>
Run Code Online (Sandbox Code Playgroud)

输出将是:"12 zmones tai megsta".