angularjs - Angular translate with parameters -


i trying "translate" angular application using angular-translate. stuck paramaterized translation in plural.

index.html includes:

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

then, configure 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 logging missing key console should activated in production?     $translateprovider.usemissingtranslationhandlerlog();      //$translateprovider.usemessageformatinterpolation();      // force not using sanitizer (to avoid security warning)     $translateprovider.usesanitizevaluestrategy(null); }]) 

then, define translation keys in static file:

{        "drivers.results.noresult" : "no result",     "drivers.results.oneresult" : "one result",     "drivers.results.nresults" : "{{length}} results" } 

and try translate message plural syntax:

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

when nbresults=0 or 1, ok, got correct message. but, in other case, example if nbresults=10, length not injected message key. , message displayed "results" instead of "10 results".

note: if change last line

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

i've got message 10 results.

i find solution of problem.

so language key still:

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

static parameter

this working fine static value: (note simple quotes)

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

dynamic parameter

but if want dynamic, need write (without quote):

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

and replace correctly length parameter in translation!


Comments