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
Post a Comment