【发布时间】:2016-08-01 13:09:43
【问题描述】:
我正在尝试使用 angular-translate“翻译”我的 Angular 应用程序。
但我在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=0 或1 时,一切正常,我得到了正确的消息。
但是,在其他情况下,例如nbResults=10,长度不会注入到消息密钥中。并且显示的消息只是“结果”而不是“10 个结果”。
注意:如果我将最后一行更改为
other { {{'drivers.results.nresults' | translate:'{length: 10 }'
我收到了10 results的消息。
【问题讨论】:
标签: angularjs angular-translate