【问题标题】:Angular translate with parameters带参数的角度平移
【发布时间】: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=01 时,一切正常,我得到了正确的消息。 但是,在其他情况下,例如nbResults=10,长度不会注入到消息密钥中。并且显示的消息只是“结果”而不是“10 个结果”。

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

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

我收到了10 results的消息。

【问题讨论】:

    标签: angularjs angular-translate


    【解决方案1】:

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

    所以语言键还是:

    "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 } }} }
    }}
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 2017-10-08
      • 2015-10-14
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多