带参数的角度转换

时间:2016-08-01 13:09:43

标签: angularjs angular-translate

我正在尝试"翻译"我使用angular-translate的角度应用程序。 但是我坚持使用plural中的参数化翻译。

index.html包括:

<script src="assets/libs/angular-1.5.7/angular.js"></script>
<script src="assets/libs/angular-1.5.7/angular-message-format.js"></script>
<script src="assets/libs/message-format-1.0.0-rc3/messageformat.js"></script>
<script src="assets/libs/angular-translate-2.11.1/angular-translate.js"></script>
<script src="assets/libs/angular-translate-2.11.1/angular-translate-loader-static-files.js"></script>
<script src="assets/libs/angular-translate-2.11.1/angular-translate-interpolation-messageformat.js"></script>

然后,我配置angular-translate:

angular.module('app').config(['$translateProvider', function ($translateProvider) {

    // Language files folder definition
    $translateProvider.useStaticFilesLoader({
        prefix: 'app/resources/locale-',
        suffix: '.json'
    });

    // Default language
    $translateProvider.preferredLanguage('fr_FR');

    // TODO does logging missing key to console should be activated in production?
    $translateProvider.useMissingTranslationHandlerLog();

    //$translateProvider.useMessageFormatInterpolation();

    // Force not using sanitizer (to avoid security warning)
    $translateProvider.useSanitizeValueStrategy(null);
}])

然后,我在静态文件中定义了一些翻译键:

{   
    "drivers.results.noresult" : "No result",
    "drivers.results.oneresult" : "One result",
    "drivers.results.nresults" : "{{length}} results"
}

我尝试使用复数语法翻译消息:

{{ nbResults, plural,
    =0 { {{'drivers.results.noresult' | translate}} }
    =1 { {{'drivers.results.oneresult' | translate}} }
    other { {{'drivers.results.nresults' | translate:'{length: nbResults }' }} }
}}

nbResults=01时,一切正常,我收到了正确的讯息。 但是,在其他情况下,例如nbResults=10,长度不会注入到消息密钥中。并且显示的消息仅为&#34;结果&#34;而不是&#34; 10结果&#34;。

注意:如果我将最后一行更改为

other { {{'drivers.results.nresults' | translate:'{length: 10 }'

我收到了10 results消息。

1 个答案:

答案 0 :(得分:6)

我终于找到了这个问题的解决方案。

所以语言键仍然是:

"drivers.results.nresults" : "{{length}} results"

静态参数

使用静态值可以正常工作:(注意简单的引号)

{{ nbResults, plural,
    =0 { {{'drivers.results.noresult' | translate}} }
    =1 { {{'drivers.results.oneresult' | translate}} }
    other { {{'drivers.results.nresults' | translate:'{length: 123 }' }} }
}}

动态参数

但如果我想要一些动态的东西,我需要写这个(没有引用):

{{ nbResults, plural,
    =0 { {{'drivers.results.noresult' | translate}} }
    =1 { {{'drivers.results.oneresult' | translate}} }
    other { {{'drivers.results.nresults' | translate:{length: nbResults } }} }
}}

它将正确替换翻译中的长度参数!