From 2f7f6b1af6911d6a01cf46310cb827958cbd9648 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Wed, 11 Oct 2017 22:00:22 +0300 Subject: [PATCH] Improve user language management. --- ui/src/app/api/user.service.js | 7 +++++++ ui/src/app/app.config.js | 22 ++++++++++++---------- ui/src/app/profile/profile.controller.js | 10 +++++++--- ui/src/app/profile/profile.tpl.html | 2 +- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/ui/src/app/api/user.service.js b/ui/src/app/api/user.service.js index 3e552dc196..1785582790 100644 --- a/ui/src/app/api/user.service.js +++ b/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() { validateJwtToken(doTokenRefresh).then(function success() { var jwtToken = store.get('jwt_token'); @@ -299,6 +305,7 @@ function UserService($http, $q, $rootScope, adminService, dashboardService, logi getUser(currentUser.userId).then( function success(user) { currentUserDetails = user; + updateUserLang(); $rootScope.forceFullscreen = false; if (userForceFullscreen()) { $rootScope.forceFullscreen = true; diff --git a/ui/src/app/app.config.js b/ui/src/app/app.config.js index 074437df2a..102c41aa10 100644 --- a/ui/src/app/app.config.js +++ b/ui/src/app/app.config.js @@ -46,7 +46,7 @@ export default function AppConfig($provide, $urlRouterProvider.otherwise(UrlHandler); storeProvider.setCaching(false); - $translateProvider.useSanitizeValueStrategy('sce'); + $translateProvider.useSanitizeValueStrategy(null); $translateProvider.preferredLanguage('en_US'); $translateProvider.useLocalStorage(); $translateProvider.useMissingTranslationHandler('tbMissingTranslationHandler'); @@ -59,15 +59,17 @@ export default function AppConfig($provide, var $window = angular.injector(['ng']).get('$window'); var lang = $window.navigator.language || $window.navigator.userLanguage; - if (lang === 'ko') { - $translateProvider.useSanitizeValueStrategy(null); - $translateProvider.preferredLanguage('ko_KR'); - } else if (lang === 'zh') { - $translateProvider.useSanitizeValueStrategy(null); - $translateProvider.preferredLanguage('zh_CN'); - } else if (lang === 'es') { - $translateProvider.useSanitizeValueStrategy(null); - $translateProvider.preferredLanguage('es_ES'); + if (lang) { + lang = lang.toLowerCase(); + if (lang.startsWith('ko')) { + $translateProvider.preferredLanguage('ko_KR'); + } else if (lang.startsWith('zh')) { + $translateProvider.preferredLanguage('zh_CN'); + } else if (lang.startsWith('es')) { + $translateProvider.preferredLanguage('es_ES'); + } else if (lang.startsWith('ru')) { + $translateProvider.preferredLanguage('ru_RU'); + } } for (var langKey in locales) { diff --git a/ui/src/app/profile/profile.controller.js b/ui/src/app/profile/profile.controller.js index 187a9d21e9..2fec4030c4 100644 --- a/ui/src/app/profile/profile.controller.js +++ b/ui/src/app/profile/profile.controller.js @@ -40,15 +40,19 @@ export default function ProfileController(userService, $scope, $document, $mdDia function loadProfile() { userService.getUser(userService.getCurrentUser().userId).then(function success(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() { userService.saveUser(vm.profileUser).then(function success(user) { - $translate.use(vm.profileUser.lang); + $translate.use(vm.profileUser.additionalInfo.lang); vm.profileUser = user; - vm.profileUser.lang = $translate.use(); $scope.theForm.$setPristine(); }); } diff --git a/ui/src/app/profile/profile.tpl.html b/ui/src/app/profile/profile.tpl.html index 5d590472c4..39401f79e1 100644 --- a/ui/src/app/profile/profile.tpl.html +++ b/ui/src/app/profile/profile.tpl.html @@ -42,7 +42,7 @@ - + {{lang.name | translate}}