]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9006 - [verto_communicator] add-combobox for languages
authorDavide Colombo <dcolombo@voismart.it>
Fri, 8 Apr 2016 09:37:20 +0000 (11:37 +0200)
committerDavide Colombo <dcolombo@voismart.it>
Fri, 8 Apr 2016 09:43:51 +0000 (11:43 +0200)
html5/verto/verto_communicator/src/locales/locale-en.json
html5/verto/verto_communicator/src/locales/locale-it.json
html5/verto/verto_communicator/src/partials/settings.html
html5/verto/verto_communicator/src/storageService/services/storage.js
html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js
html5/verto/verto_communicator/src/vertoControllers/controllers/MainController.js
html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js

index 5aa607d86027353618e2a066e8796ff95ea5c3a3..c8c59ace1066f502193643fa686afc9d1abb4f81 100644 (file)
   "CHAT_VOL_MINUS": "Vol -",
   "CHAT_VOL_PLUS": "Vol +",
   "CHAT_GAIN_MINUS": "Gain -",
-  "CHAT_GAIN_PLUS": "Gain +"
+  "CHAT_GAIN_PLUS": "Gain +",
+  "LANGUAGE": "Language:",
+  "BROWSER_LANGUAGE": "Browser Language"
 }
index 428608afab41e76af5a3ee666b5b9ff9b340f443..6f33747cfd8c0e678c3b3253d5fa49a4d18d528b 100644 (file)
   "CHAT_VOL_MINUS": "Vol -",
   "CHAT_VOL_PLUS": "Vol +",
   "CHAT_GAIN_MINUS": "Guadagno -",
-  "CHAT_GAIN_PLUS": "Guadagno +"
+  "CHAT_GAIN_PLUS": "Guadagno +",
+  "LANGUAGE": "Lingua:",
+  "BROWSER_LANGUAGE": "Lingua del browser"
 
 }
index 9848fa4e5895075914830fd0dc8751b330a39ee1..96d19db0b7cbc303f6563f4c7b72af1d056bb142 100644 (file)
           </label>
         </div>
 
+        <div class="form-group">
+          <label for="settings-language">{{ 'LANGUAGE' | translate }}</label>
+          <select name="mylanguage" id="settings-language" class="form-control"
+                  ng-model="mydata.language" ng-change="changedLanguage(mydata.language)"
+                  ng-options="item.id as item.name for item in languages">
+          </select>
+        </div>
+
         <div class="form-group">
           <label for="settings-microphone">{{ 'AUDIO_SETTINGS' | translate }}</label>
           <div class="checkbox">
index fada0a82f2ec5825315ec7873d85cb82d8e71e1c..501b7b7ab6071648d8ca5407267d900e110b3758 100644 (file)
@@ -39,7 +39,8 @@
           googEchoCancellation: true,
           autoBand: true,
           testSpeedJoin: true,
-          bestFrameRate: "15"
+          bestFrameRate: "15",
+          language: undefined
        };
 
     data.$default(defaultSettings);
index 14b39d7e553d08b27cb5e519c28d252c796f6f82..80b81236da6a7bec3ea897b69b7468d807f499cf 100644 (file)
     'pascalprecht.translate',
   ]);
 
-  vertoApp.config(['$routeProvider', 'gravatarServiceProvider', '$translateProvider',
-    function($routeProvider, gravatarServiceProvider, $translateProvider) {
+  vertoApp.constant('configLanguages', {
+    'languages' : [
+         {id: 'en', name: 'English'},
+         {id: 'it', name: 'Italiano'},
+         {id: 'fr', name: 'Français'},
+         {id: 'de', name: 'Deutsch'},
+         {id: 'pt', name: 'Português'},
+         {id: 'pl', name: 'Polski'},
+         {id: 'zh', name: '中國'},
+         {id: 'ru', name: 'Pусский'},
+         {id: 'sv', name: 'Svenska'},
+         {id: 'da', name: 'Dansk'},
+         {id: 'es', name: 'Español'},
+         {id: 'id', name: 'Indonesia'}
+    ],
+
+    'dialects' : {
+        'en': 'en',
+        'en_GB': 'en',
+        'en_US': 'en',
+        'it': 'it',
+        'it_IT': 'it',
+        'fr': 'fr',
+        'fr_FR': 'fr',
+        'fr_CA': 'fr',
+        'pt': 'pt',
+        'pt_BR': 'pt',
+        'pt_PT': 'pt',
+        'de': 'de',
+        'de_DE': 'de',
+        'es': 'es',
+        'es_ES': 'es',
+        'pl': 'pl',
+        'pl_PL': 'pl',
+        'ru': 'ru',
+        'ru_RU': 'ru',
+        'sv': 'sv',
+        'sv_SV': 'sv',
+        'sv_FI': 'sv',
+        'da': 'da',
+        'da_DK': 'da',
+        'id': 'id',
+        'id_ID': 'id',
+        'zh': 'zh',
+        'zh_CN': 'zh',
+        'zh_TW': 'zh',
+        'zh_HK': 'zh'
+    }
+  });
+
+  vertoApp.config(['$routeProvider', 'gravatarServiceProvider', '$translateProvider', 'configLanguages',
+    function($routeProvider, gravatarServiceProvider, $translateProvider, configLanguages) {
       $routeProvider.
       when('/', {
         title: 'Loading',
         default: 'mm'  // Mystery man as default for missing avatars
       };
 
+      var reg_langs = [];
+      angular.forEach(configLanguages.languages, function(value, key) {
+        reg_langs.push(value.id);
+      });
 
       $translateProvider
       .useStaticFilesLoader({
         prefix: 'locales/locale-',
         suffix: '.json'
       })
-      .registerAvailableLanguageKeys(['en', 'it', 'pt', 'fr', 'da', 'de', 'es', 'pl', 'ru', 'sv', 'id', 'zh'], {
-        'en': 'en',
-        'en_GB': 'en',
-        'en_US': 'en',
-        'it': 'it',
-        'it_IT': 'it',
-        'fr': 'fr',
-        'fr_FR': 'fr',
-        'fr_CA': 'fr',
-        'pt': 'pt',
-        'pt_BR': 'pt',
-        'pt_PT': 'pt',
-        'da': 'da',
-        'da_DK': 'da',
-        'de': 'de',
-        'de_DE': 'de',
-        'es': 'es',
-        'es_ES': 'es',
-        'pl': 'pl',
-        'pl_PL': 'pl',
-        'ru': 'ru',
-        'ru_RU': 'ru',
-        'sv': 'sv',
-        'sv_SV': 'sv',
-        'sv_FI': 'sv',
-        'id': 'id',
-        'id_ID': 'id',
-        'zh': 'zh',
-        'zh_CN': 'zh',
-        'zh_TW': 'zh',
-        'zh_HK': 'zh'
-      })
+      .registerAvailableLanguageKeys(reg_langs, configLanguages.dialects)
       .preferredLanguage('en')
       .determinePreferredLanguage()
       .fallbackLanguage('en')
index b3d1c6e88608ce9c7f1747159214d51d5fb0c1d1..b1a3794c12e7c1033eeb91b1e792ebe60bcf7a5b 100644 (file)
@@ -8,6 +8,12 @@
 
       console.debug('Executing MainController.');
 
+      if (storage.data.language && storage.data.language !== 'browser') {
+        $translate.use(storage.data.language);
+      } else {
+        storage.data.language = 'browser';
+      }
+
       $rootScope.master = $location.search().master;
       if ($location.search().watcher === 'true') {
         $rootScope.watcher = true;
index 8e00bb6d29b4b35060b7a4dacb1d192edaf9b54a..c52cdb8c82faa78d6ff5b991013bbb9a8be61d8d 100644 (file)
@@ -4,8 +4,8 @@
   angular
     .module('vertoControllers')
     .controller('SettingsController', ['$scope', '$http',
-      '$location', '$rootScope', 'storage', 'verto', '$translate', 'toastr',
-      function($scope, $http, $location, $rootScope, storage, verto, $translate, toastr) {
+      '$location', '$rootScope', 'storage', 'verto', '$translate', 'toastr', 'configLanguages',
+      function($scope, $http, $location, $rootScope, storage, verto, $translate, toastr, configLanguages) {
         console.debug('Executing ModalSettingsController.');
 
         $.material.init();
         $scope.storage = storage;
         $scope.verto = verto;
         $scope.mydata = angular.copy(storage.data);
+        $scope.languages = configLanguages.languages;
+        $scope.languages.unshift({id: 'browser', name : $translate.instant('BROWSER_LANGUAGE')});
+        $scope.mydata.language = storage.data.language || 'browser';
+
+        $rootScope.$on('$translateChangeSuccess', function () {
+          $translate('BROWSER_LANGUAGE').then(function (translation) {
+          $scope.languages[0].name = translation;
+          });
+        });
 
         $rootScope.$on('toggledSettings', function(e, status) {
           if (status) {
           }
         };
 
+        $scope.changedLanguage = function(langKey){
+          if (langKey === 'browser'){
+           storage.data.language = 'browser';
+            var browserlang = $translate.preferredLanguage();
+            $translate.use(browserlang).then(
+              function(lang) {}, function(fail_lang) {
+                $translate.use('en');
+               });
+          } else {
+            $translate.use(langKey);
+            storage.data.language = langKey;
+          }
+        };
+
         $scope.refreshDeviceList = function() {
           return verto.refreshDevices();
         };