Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
… использовать стандартные возможности выражений с фильтрами…Это, конечно, неудобно, и накладывает перечисленные ограничения. Но это можно делать директивой, и тот же angular-translate это умеет.
{{ 'some_english_string' | translate }}
__lang.ru = {
'file': 'файл',
'file_plural': {
1: 'файл',
2: 'файла',
more: 'файлов',
}
}
<span some-pluralization-directive="<%= t('file_plural') %>" number-of="2"></span>
link: function(scope, $elem, attrs){
attrs.$observe('somePluralizationDirective', function(attrValue){
var pluralData = scope.$eval(attrValue);
// дальше идет логика плюрализации
});
}
angular.module('app').directive('i18n', function(i18n) {
return {
restrict: 'A',
link: function(scope, elem, attrs) {
elem.removeAttr('i18n');
var orig = elem.html();
orig = orig.replace(/^\s+|\s+$/g, ''); // trim
elem.html(i18n(orig));
scope.$on('i18n:language_changed', function() {
elem.html(i18n(orig));
});
}
};
});
Локализация шаблонов на клиенте в AngularJS