Browse Source

Improve user language management.

pull/346/head
Igor Kulikov 9 years ago
parent
commit
2f7f6b1af6
  1. 7
      ui/src/app/api/user.service.js
  2. 22
      ui/src/app/app.config.js
  3. 10
      ui/src/app/profile/profile.controller.js
  4. 2
      ui/src/app/profile/profile.tpl.html

7
ui/src/app/api/user.service.js

@ -283,6 +283,12 @@ function UserService($http, $q, $rootScope, adminService, dashboardService, logi
); );
} }
function updateUserLang() {
if (currentUserDetails.additionalInfo && currentUserDetails.additionalInfo.lang) {
$translate.use(currentUserDetails.additionalInfo.lang);
}
}
function procceedJwtTokenValidate() { function procceedJwtTokenValidate() {
validateJwtToken(doTokenRefresh).then(function success() { validateJwtToken(doTokenRefresh).then(function success() {
var jwtToken = store.get('jwt_token'); var jwtToken = store.get('jwt_token');
@ -299,6 +305,7 @@ function UserService($http, $q, $rootScope, adminService, dashboardService, logi
getUser(currentUser.userId).then( getUser(currentUser.userId).then(
function success(user) { function success(user) {
currentUserDetails = user; currentUserDetails = user;
updateUserLang();
$rootScope.forceFullscreen = false; $rootScope.forceFullscreen = false;
if (userForceFullscreen()) { if (userForceFullscreen()) {
$rootScope.forceFullscreen = true; $rootScope.forceFullscreen = true;

22
ui/src/app/app.config.js

@ -46,7 +46,7 @@ export default function AppConfig($provide,
$urlRouterProvider.otherwise(UrlHandler); $urlRouterProvider.otherwise(UrlHandler);
storeProvider.setCaching(false); storeProvider.setCaching(false);
$translateProvider.useSanitizeValueStrategy('sce'); $translateProvider.useSanitizeValueStrategy(null);
$translateProvider.preferredLanguage('en_US'); $translateProvider.preferredLanguage('en_US');
$translateProvider.useLocalStorage(); $translateProvider.useLocalStorage();
$translateProvider.useMissingTranslationHandler('tbMissingTranslationHandler'); $translateProvider.useMissingTranslationHandler('tbMissingTranslationHandler');
@ -59,15 +59,17 @@ export default function AppConfig($provide,
var $window = angular.injector(['ng']).get('$window'); var $window = angular.injector(['ng']).get('$window');
var lang = $window.navigator.language || $window.navigator.userLanguage; var lang = $window.navigator.language || $window.navigator.userLanguage;
if (lang === 'ko') { if (lang) {
$translateProvider.useSanitizeValueStrategy(null); lang = lang.toLowerCase();
$translateProvider.preferredLanguage('ko_KR'); if (lang.startsWith('ko')) {
} else if (lang === 'zh') { $translateProvider.preferredLanguage('ko_KR');
$translateProvider.useSanitizeValueStrategy(null); } else if (lang.startsWith('zh')) {
$translateProvider.preferredLanguage('zh_CN'); $translateProvider.preferredLanguage('zh_CN');
} else if (lang === 'es') { } else if (lang.startsWith('es')) {
$translateProvider.useSanitizeValueStrategy(null); $translateProvider.preferredLanguage('es_ES');
$translateProvider.preferredLanguage('es_ES'); } else if (lang.startsWith('ru')) {
$translateProvider.preferredLanguage('ru_RU');
}
} }
for (var langKey in locales) { for (var langKey in locales) {

10
ui/src/app/profile/profile.controller.js

@ -40,15 +40,19 @@ export default function ProfileController(userService, $scope, $document, $mdDia
function loadProfile() { function loadProfile() {
userService.getUser(userService.getCurrentUser().userId).then(function success(user) { userService.getUser(userService.getCurrentUser().userId).then(function success(user) {
vm.profileUser = user; vm.profileUser = user;
vm.profileUser.lang = $translate.use(); if (!vm.profileUser.additionalInfo) {
vm.profileUser.additionalInfo = {};
}
if (!vm.profileUser.additionalInfo.lang) {
vm.profileUser.additionalInfo.lang = $translate.use();
}
}); });
} }
function save() { function save() {
userService.saveUser(vm.profileUser).then(function success(user) { userService.saveUser(vm.profileUser).then(function success(user) {
$translate.use(vm.profileUser.lang); $translate.use(vm.profileUser.additionalInfo.lang);
vm.profileUser = user; vm.profileUser = user;
vm.profileUser.lang = $translate.use();
$scope.theForm.$setPristine(); $scope.theForm.$setPristine();
}); });
} }

2
ui/src/app/profile/profile.tpl.html

@ -42,7 +42,7 @@
</md-input-container> </md-input-container>
<md-input-container class="md-block"> <md-input-container class="md-block">
<label translate>language.language</label> <label translate>language.language</label>
<md-select name="language" ng-model="vm.profileUser.lang"> <md-select name="language" ng-model="vm.profileUser.additionalInfo.lang">
<md-option ng-repeat="lang in vm.languageList" ng-value="lang.value"> <md-option ng-repeat="lang in vm.languageList" ng-value="lang.value">
{{lang.name | translate}} {{lang.name | translate}}
</md-option> </md-option>

Loading…
Cancel
Save