From f237c783a91be56ecc965e25cb2e40871f0e62bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Baz=C3=A1n?= Date: Sun, 20 Dec 2015 19:42:25 -0300 Subject: [PATCH 1/4] fix default language --- cordova/build.sh | 3 +++ src/js/services/uxLanguage.js | 39 +++++++++++++++++++++++------------ 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/cordova/build.sh b/cordova/build.sh index 54b3ebffb..f3408fb70 100755 --- a/cordova/build.sh +++ b/cordova/build.sh @@ -94,6 +94,9 @@ if [ ! -d $PROJECT ]; then checkOK fi + cordova plugin add cordova-plugin-globalization + checkOK + cordova plugin add cordova-plugin-splashscreen checkOK diff --git a/src/js/services/uxLanguage.js b/src/js/services/uxLanguage.js index 438f4c03e..95cf132e7 100644 --- a/src/js/services/uxLanguage.js +++ b/src/js/services/uxLanguage.js @@ -1,6 +1,6 @@ 'use strict'; angular.module('copayApp.services') - .factory('uxLanguage', function languageService($log, lodash, gettextCatalog, amMoment, configService) { + .factory('uxLanguage', function languageService($log, $timeout, lodash, gettextCatalog, amMoment, configService) { var root = {}; root.availableLanguages = [{ @@ -26,16 +26,24 @@ angular.module('copayApp.services') root.currentLanguage = null; - root._detect = function() { - // Auto-detect browser language - var userLang, androidLang; + root._detect = function(cb) { - if (navigator && navigator.userAgent && (androidLang = navigator.userAgent.match(/android.*\W(\w\w)-(\w\w)\W/i))) { - userLang = androidLang[1]; + var userLang, androidLang; + if (navigator && navigator.globalization) { + + navigator.globalization.getPreferredLanguage(function(preferedLanguage) { + // works for iOS and Android 4.x + userLang = preferedLanguage.value; + userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en'; + return cb(userLang); + }); } else { - // works for iOS and Android 4.x + // Auto-detect browser language userLang = navigator.userLanguage || navigator.language; + userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en'; + return cb(userLang); } + userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en'; // Set only available languages @@ -72,20 +80,25 @@ angular.module('copayApp.services') }; root.init = function() { - root._set(root._detect()); + root._detect(function(lang) { + root._set(lang); + }); }; root.update = function() { var userLang = configService.getSync().wallet.settings.defaultLanguage; if (!userLang) { - userLang = root._detect(); - } - if (userLang != gettextCatalog.getCurrentLanguage()) { - root._set(userLang); + root._detect(function(lang) { + userLang = lang; + + if (userLang != root.currentLanguage) { + root._set(lang); + } + return userLang; + }); } - return userLang; }; root.getName = function(lang) { From caa25a512491a99cc70046e8e889747453483b61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Baz=C3=A1n?= Date: Sun, 20 Dec 2015 19:51:25 -0300 Subject: [PATCH 2/4] deleting unnecessary timeout --- src/js/services/uxLanguage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/services/uxLanguage.js b/src/js/services/uxLanguage.js index 95cf132e7..3dc8bca75 100644 --- a/src/js/services/uxLanguage.js +++ b/src/js/services/uxLanguage.js @@ -1,6 +1,6 @@ 'use strict'; angular.module('copayApp.services') - .factory('uxLanguage', function languageService($log, $timeout, lodash, gettextCatalog, amMoment, configService) { + .factory('uxLanguage', function languageService($log, lodash, gettextCatalog, amMoment, configService) { var root = {}; root.availableLanguages = [{ From 006c46c91a839309d21354f41774eb537e5063d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Baz=C3=A1n?= Date: Mon, 21 Dec 2015 11:31:40 -0300 Subject: [PATCH 3/4] mark default language in options --- src/js/controllers/index.js | 23 +++++++++++++---------- src/js/services/uxLanguage.js | 9 +++++++-- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js index ae534feaa..a23599433 100644 --- a/src/js/controllers/index.js +++ b/src/js/controllers/index.js @@ -1055,9 +1055,11 @@ angular.module('copayApp.controllers').controller('indexController', function($r }; self.setUxLanguage = function() { - var userLang = uxLanguage.update(); - self.defaultLanguageIsoCode = userLang; - self.defaultLanguageName = uxLanguage.getName(userLang); + uxLanguage.update(function(lang) { + var userLang = lang; + self.defaultLanguageIsoCode = userLang; + self.defaultLanguageName = uxLanguage.getName(userLang); + }); }; self.initGlidera = function(accessToken) { @@ -1216,11 +1218,12 @@ angular.module('copayApp.controllers').controller('indexController', function($r }); $rootScope.$on('Local/LanguageSettingUpdated', function() { - self.setUxLanguage(); - self.updateRemotePreferences({ - saveAll: true - }, function() { - $log.debug('Remote preferences saved') + self.setUxLanguage(function() { + self.updateRemotePreferences({ + saveAll: true + }, function() { + $log.debug('Remote preferences saved') + }); }); }); @@ -1391,7 +1394,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r self.noFocusedWallet = true; self.isComplete = null; self.walletName = null; - self.setUxLanguage(); + self.setUxLanguage(function() {}); profileService.isDisclaimerAccepted(function(v) { if (v) { go.path('import'); @@ -1401,7 +1404,7 @@ angular.module('copayApp.controllers').controller('indexController', function($r }); $rootScope.$on('Local/NewFocusedWallet', function() { - self.setUxLanguage(); + self.setUxLanguage(function() {}); self.setFocusedWallet(); self.debounceUpdateHistory(); self.isDisclaimerAccepted(); diff --git a/src/js/services/uxLanguage.js b/src/js/services/uxLanguage.js index 3dc8bca75..c9ddfe872 100644 --- a/src/js/services/uxLanguage.js +++ b/src/js/services/uxLanguage.js @@ -85,7 +85,7 @@ angular.module('copayApp.services') }); }; - root.update = function() { + root.update = function(cb) { var userLang = configService.getSync().wallet.settings.defaultLanguage; if (!userLang) { @@ -96,8 +96,13 @@ angular.module('copayApp.services') if (userLang != root.currentLanguage) { root._set(lang); } - return userLang; + return cb(userLang); }); + } else { + if (userLang != root.currentLanguage) { + root._set(userLang); + } + return cb(userLang); } }; From 388bd1fd3d7aefdbfddf0031dd0e52e15dad3418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Baz=C3=A1n?= Date: Wed, 13 Jan 2016 16:12:12 -0300 Subject: [PATCH 4/4] fix rebase conflicts --- src/js/services/uxLanguage.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/js/services/uxLanguage.js b/src/js/services/uxLanguage.js index c9ddfe872..9aadb24ed 100644 --- a/src/js/services/uxLanguage.js +++ b/src/js/services/uxLanguage.js @@ -35,23 +35,24 @@ angular.module('copayApp.services') // works for iOS and Android 4.x userLang = preferedLanguage.value; userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en'; + // Set only available languages + userLang = root.isAvailableLanguage(userLang); return cb(userLang); }); } else { // Auto-detect browser language userLang = navigator.userLanguage || navigator.language; userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en'; + // Set only available languages + userLang = root.isAvailableLanguage(userLang); return cb(userLang); } + }; - userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en'; - - // Set only available languages - userLang = lodash.find(root.availableLanguages, { + root.isAvailableLanguage = function(userLang) { + return lodash.find(root.availableLanguages, { 'isoCode': userLang }) ? userLang : 'en'; - - return userLang; }; root._set = function(lang) {