решение было использовать angular-translate для файлов перевода и angular-dynamic-locale для локализации фил эс. Механизм перевода на угловом переводе предоставляет некоторые очень полезные функции, которые помогут вам в различных сценариях, и, похоже, это очень зрелая библиотека. Не нужно мигрировать в следующую версию углового. Угловая динамическая локализация использует файлы локализации, предоставляемые the angular-i18 library, поэтому в основном это расширение, позволяющее программно изменить локализацию.
Установите библиотеки с помощью скриптов и скриптов загрузки в index.html. Угловой-перевод видов применения angular-translate-loader-static-files
модуля для загрузки JSON-файлов:
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-translate/angular-translate.js"></script>
<script src="bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.js"></script>
<script src="bower_components/angular-dynamic-locale/tmhDynamicLocale.min.js"></script>
нагрузки углового перевода и угловая динамическая локаль модули и инициализируют поставщик в конфигурации для загрузки переводов и файлов локали из localization
каталога:
var app = angular.module('app', ['pascalprecht.translate', 'tmh.dynamicLocale'])
.config(function ($translateProvider, tmhDynamicLocaleProvider) {
$translateProvider
.useStaticFilesLoader({
prefix: 'localization/translations-',
suffix: '.json'
})
.preferredLanguage('en-US')
.useSanitizeValueStrategy('escaped') // Security for escaping variables
.usePostCompiling(true); // Post compiling angular filters
tmhDynamicLocaleProvider
.localeLocationPattern('/localization/angular-locale_{{locale}}.js');
)};
INJECT услуга контроллер и ресурсы загрузки файлов:
app.controller('Ctrl', ['$scope', 'tmhDynamicLocale', '$translate',
function ($scope, tmhDynamicLocale, $translate) {
$translate.use('en-US'); // translations-en-US.json
tmhDynamicLocale.set('en-US'); // angular-locale_en-US.js
}]);
Теперь переводы и локал Wo rks на шаблоне:
// angular-locale_en-US.js
{{ 100 | currency }} // $100.00
// translations-en-US.json
// "NAME" : "John"
<label translate>NAME</label>
<input type="text" ng-model="name" placeholder="{{ 'NAME' | translate }}">