Merge pull request #3707 from gabrielbazan7/fix/langBugAndroid1

Fix/lang bug android
This commit is contained in:
Matias Alejo Garcia 2016-01-14 10:11:07 -03:00
commit 3e061211d5
3 changed files with 52 additions and 27 deletions

View File

@ -94,6 +94,9 @@ if [ ! -d $PROJECT ]; then
checkOK
fi
cordova plugin add cordova-plugin-globalization
checkOK
cordova plugin add cordova-plugin-splashscreen
checkOK

View File

@ -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();

View File

@ -26,24 +26,33 @@ angular.module('copayApp.services')
root.currentLanguage = null;
root._detect = function() {
// Auto-detect browser language
root._detect = function(cb) {
var userLang, androidLang;
if (navigator && navigator.globalization) {
if (navigator && navigator.userAgent && (androidLang = navigator.userAgent.match(/android.*\W(\w\w)-(\w\w)\W/i))) {
userLang = androidLang[1];
navigator.globalization.getPreferredLanguage(function(preferedLanguage) {
// 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 {
// works for iOS and Android 4.x
// 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) {
@ -72,20 +81,30 @@ angular.module('copayApp.services')
};
root.init = function() {
root._set(root._detect());
root._detect(function(lang) {
root._set(lang);
});
};
root.update = function() {
root.update = function(cb) {
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 cb(userLang);
});
} else {
if (userLang != root.currentLanguage) {
root._set(userLang);
}
return cb(userLang);
}
return userLang;
};
root.getName = function(lang) {