6

こんにちは、値に応じて複数形で翻訳する必要がありますが、その方法が見つかりません。

たとえば、変数がありますpeopleCount

  1. peopleCount = 1英語:{{ peopleCount }} person likes thisリトアニア語:{{ peopleCount }} zmogus tai megsta
  2. peopleCount英訳が複数ある場合は、次のようになります{{ peopleCount }} people like this

ただし、リトアニア語の翻訳の場合:

  1. 2 から 9 の間、peopleCountまたは 4 番目のルールで指定された数字で終わる数字を除くこれらの数字で終わる数字 (例: 225、249、210 <--- これらは正しい数字であり、正しくない数字: 215、250... )。それはそのようになります{{ peopleCount }} zmones tai megsta
  2. count が 10 と 20 の間、または 30、40、または 150 や 90 のようなゼロで終わるその他の数値の場合、次のようになります。{{ peopleCount }} zmoniu tai megsta

どうすればそれを達成できますか?

4

3 に答える 3

12

Angular-translate には、非常に強力な MessageFormat の機能を備えたサービスがあり、リトアニア語のロケールも組み込まれています。MessageFormat と angular-translate に関する記事。

インストール

このパッケージは、bower 経由でインストールできます。

$ bower install angular-translate-interpolation-messageformat

その後、 MessageFormat と angular-translate-interpolation-messageformat を含む必要なスクリプトをこの順序で含めます。

<script src="path/to/messageformat.js"></script>
<script src="path/to/angular-translate-interpolation-messageformat.js"></script>

最後に、構成関数で、$translateProvider から useMessageFormatInterpolation 関数を呼び出します。

$translateProvider.useMessageFormatInterpolation();

使用法

アプリにインストールangular-translate-interpolation-messageformatしたら、それを操作できます。

たとえば、コード「PEOPLE」の英語ローカライズを次のように作成できます。

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

そして、次のようにhtmlで使用するよりも:

<span translate="PEOPLE" translate-values="{peopleCount: 12}" translate-interpolation="messageformat"></span>

出力は「12 zmones tai megsta」になります。

于 2015-06-15T14:29:09.573 に答える