Я использую angular-translate для поддержки нескольких языков. У меня есть 4 языка json на местном уровне. (en.json, ru, json, is.json, jp.json), и я написал код, как показано ниже, в конфигурации приложения
app.config(['$stateProvider' , '$urlRouterProvider', '$translateProvider', 'TENANT_KEY', 'LANG_KEY',
function ($stateProvider, $urlRouterProvider, $translateProvider, TENANT_KEY) {
'use strict';
...
$translateProvider.useStaticFilesLoader({
prefix: '/assets/languages/',
suffix: '.json'
});
$translateProvider.preferredLanguage('en');
...
}]);
Вот вопрос: я хочу, чтобы приложение запускалось с языка на стороне сервера, как в прошлый раз, когда я выбирал «ru» в качестве текущего языка, и в следующий раз, когда я открою приложение, язык по умолчанию будет «ru».
Я написал localService, чтобы запомнить выбор языка, но в app.config мы не можем использовать сервис, что мне с ним делать?
angular.module('storm.common')
.constant('LANG_KEY', 'lang')
.service('LocaleService', ['PersistenceService', 'LANG_KEY', '$window', '$translate',
function (PersistenceService, LANG_KEY, $window, $translate) {
'use strict';
// 'is' is used for i18n team for their testing !!!
var supportedLocale = ['en', 'ja', 'ru', 'is'];
this.set = function (locale) {
if (!locale) {
if (PersistenceService.get(LANG_KEY)) {
locale = PersistenceService.get(LANG_KEY);
} else {
locale = ($window.navigator.language || 'en').replace(/^(en)-.*/, '$1');
}
}
if (supportedLocale.join(',').indexOf(locale) === -1) {
locale = 'en';
}
PersistenceService.set(LANG_KEY, locale);
$translate.use(locale);
// moment.locale(locale);
};
this.get = function () {
return PersistenceService.get(LANG_KEY) || 'en';
};
}
]);