Applying changes
{{lang.name}}
diff --git a/src/js/controllers/index.js b/src/js/controllers/index.js
index 3b9af9078..6fb934e33 100644
--- a/src/js/controllers/index.js
+++ b/src/js/controllers/index.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('copayApp.controllers').controller('indexController', function($rootScope, $scope, $log, $filter, $timeout, lodash, go, profileService, configService, isCordova, rateService, storageService, addressService, gettextCatalog, gettext, amMoment, nodeWebkit, addonManager, feeService, isChromeApp, bwsError, txFormatService, glideraService, $state) {
+angular.module('copayApp.controllers').controller('indexController', function($rootScope, $scope, $log, $filter, $timeout, lodash, go, profileService, configService, isCordova, rateService, storageService, addressService, gettext, amMoment, nodeWebkit, addonManager, feeService, isChromeApp, bwsError, txFormatService, uxLanguage, $state, glideraService) {
var self = this;
self.isCordova = isCordova;
self.onGoingProcess = {};
@@ -39,35 +39,6 @@ angular.module('copayApp.controllers').controller('indexController', function($r
self.tab = 'walletHome';
- self.availableLanguages = [{
- name: 'English',
- isoCode: 'en',
- }, {
- name: 'Français',
- isoCode: 'fr',
- }, {
- name: 'Italiano',
- isoCode: 'it',
- }, {
- name: 'Deutsch',
- isoCode: 'de',
- }, {
- name: 'Español',
- isoCode: 'es',
- }, {
- name: 'Português',
- isoCode: 'pt',
- }, {
- name: 'Ελληνικά',
- isoCode: 'el',
- }, {
- name: '日本語',
- isoCode: 'ja',
- }, {
- name: 'Pусский',
- isoCode: 'ru',
- }];
-
self.feeOpts = feeService.feeOpts;
self.setOngoingProcess = function(processName, isOn) {
@@ -827,29 +798,9 @@ angular.module('copayApp.controllers').controller('indexController', function($r
};
self.setUxLanguage = function() {
- var userLang = configService.getSync().wallet.settings.defaultLanguage;
- if (!userLang) {
- // Auto-detect browser language
- var androidLang;
-
- if (navigator && navigator.userAgent && (androidLang = navigator.userAgent.match(/android.*\W(\w\w)-(\w\w)\W/i))) {
- userLang = androidLang[1];
- } else {
- // works for iOS and Android 4.x
- userLang = navigator.userLanguage || navigator.language;
- }
- userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en';
- }
- if (userLang != gettextCatalog.getCurrentLanguage()) {
- $log.debug('Setting default language: ' + userLang);
- gettextCatalog.setCurrentLanguage(userLang);
- amMoment.changeLocale(userLang);
- }
-
+ var userLang = uxLanguage.update();
self.defaultLanguageIsoCode = userLang;
- self.defaultLanguageName = lodash.result(lodash.find(self.availableLanguages, {
- 'isoCode': self.defaultLanguageIsoCode
- }), 'name');
+ self.defaultLanguageName = uxLanguage.getName(userLang);
};
self.initGlidera = function(accessToken) {
diff --git a/src/js/controllers/preferences.js b/src/js/controllers/preferences.js
index 34130559d..585c47079 100644
--- a/src/js/controllers/preferences.js
+++ b/src/js/controllers/preferences.js
@@ -1,10 +1,11 @@
'use strict';
angular.module('copayApp.controllers').controller('preferencesController',
- function($scope, $rootScope, $filter, $timeout, $modal, $log, lodash, configService, profileService) {
+ function($scope, $rootScope, $filter, $timeout, $modal, $log, lodash, configService, profileService, uxLanguage) {
var config = configService.getSync();
this.unitName = config.wallet.settings.unitName;
this.bwsurl = config.bws.url;
+ this.currentLanguageName = uxLanguage.getCurrentLanguageName();
this.selectedAlternative = {
name: config.wallet.settings.alternativeName,
isoCode: config.wallet.settings.alternativeIsoCode
diff --git a/src/js/controllers/preferencesLanguage.js b/src/js/controllers/preferencesLanguage.js
index f966abcc5..c00a8e277 100644
--- a/src/js/controllers/preferencesLanguage.js
+++ b/src/js/controllers/preferencesLanguage.js
@@ -1,8 +1,11 @@
'use strict';
angular.module('copayApp.controllers').controller('preferencesLanguageController',
- function($scope, $log, $timeout, configService, go) {
+ function($scope, $log, $timeout, configService, go, uxLanguage) {
+ this.availableLanguages = uxLanguage.getLanguages();
+
+console.log('[preferencesLanguage.js.7]', this.availableLanguages); //TODO
this.save = function(newLang) {
var opts = {
diff --git a/src/js/routes.js b/src/js/routes.js
index 2487cd4fe..e12f4ea71 100644
--- a/src/js/routes.js
+++ b/src/js/routes.js
@@ -463,22 +463,10 @@ angular
needProfile: false
});
})
- .run(function($rootScope, $state, $log, gettextCatalog, uriHandler, isCordova, amMoment, profileService, $timeout, nodeWebkit) {
+ .run(function($rootScope, $state, $log, uriHandler, isCordova, profileService, $timeout, nodeWebkit, uxLanguage) {
FastClick.attach(document.body);
- // Auto-detect browser language
- var userLang, androidLang;
-
- if (navigator && navigator.userAgent && (androidLang = navigator.userAgent.match(/android.*\W(\w\w)-(\w\w)\W/i))) {
- userLang = androidLang[1];
- } else {
- // works for iOS and Android 4.x
- userLang = navigator.userLanguage || navigator.language;
- }
-
- userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en';
- gettextCatalog.setCurrentLanguage(userLang);
- amMoment.changeLocale(userLang);
+ uxLanguage.init();
// Register URI handler, not for mobileApp
if (!isCordova) {
diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js
index 05e5fbd34..9044b8107 100644
--- a/src/js/services/profileService.js
+++ b/src/js/services/profileService.js
@@ -1,6 +1,6 @@
'use strict';
angular.module('copayApp.services')
- .factory('profileService', function profileServiceFactory($rootScope, $location, $timeout, $filter, $log, lodash, storageService, bwcService, configService, notificationService, isChromeApp, isCordova, gettext, nodeWebkit, bwsError, ledger) {
+ .factory('profileService', function profileServiceFactory($rootScope, $location, $timeout, $filter, $log, lodash, storageService, bwcService, configService, notificationService, isChromeApp, isCordova, gettext, nodeWebkit, bwsError, ledger, uxLanguage) {
var root = {};
@@ -165,11 +165,20 @@ angular.module('copayApp.services')
});
};
- root._seedWallet = function(walletClient) {
- var config = configService.getSync().wallet.settings;
-console.log('[profileService.js.169:config:]',config); //TODO
-asdd;
- walletClient.seedFromRandomWithMnemonic('livenet',null, mnemonicLang);
+ root._seedWallet = function(walletClient, network) {
+ var lang = uxLanguage.getCurrentLanguage();
+
+ try {
+ walletClient.seedFromRandomWithMnemonic(network, null, lang);
+ } catch (e) {
+ $log.info('Error creating seed: ' + e.message);
+ if (e.message.indexOf('language') > 0) {
+ $log.info('Using default language for mnemonic');
+ walletClient.seedFromRandomWithMnemonic(network);
+ } else {
+ throw (e);
+ }
+ }
};
root._createNewProfile = function(opts, cb) {
@@ -179,7 +188,7 @@ asdd;
}
var walletClient = bwcService.getClient();
- this._seedWallet(walletClient);
+ root._seedWallet(walletClient, 'livenet');
walletClient.createWallet('Personal Wallet', 'me', 1, 1, {
network: 'livenet'
@@ -209,10 +218,7 @@ asdd;
return cb(gettext('Could not create using the specified extended public key'));
}
}
- // TODO LANG...
- // TODO...
- $log.warn("TODO LANG!")
- walletClient.seedFromRandomWithMnemonic(opts.networkName);
+ root._seedWallet(walletClient, opts.networkName);
walletClient.createWallet(opts.name, opts.myName || 'me', opts.m, opts.n, {
network: opts.networkName
diff --git a/src/js/services/uxLanguage.js b/src/js/services/uxLanguage.js
new file mode 100644
index 000000000..e0cb59ac0
--- /dev/null
+++ b/src/js/services/uxLanguage.js
@@ -0,0 +1,95 @@
+'use strict';
+angular.module('copayApp.services')
+ .factory('uxLanguage', function languageService($log, lodash, gettextCatalog, amMoment, configService) {
+ var root = {};
+
+ root.availableLanguages = [{
+ name: 'English',
+ isoCode: 'en',
+ }, {
+ name: 'Français',
+ isoCode: 'fr',
+ }, {
+ name: 'Italiano',
+ isoCode: 'it',
+ }, {
+ name: 'Deutsch',
+ isoCode: 'de',
+ }, {
+ name: 'Español',
+ isoCode: 'es',
+ }, {
+ name: 'Português',
+ isoCode: 'pt',
+ }, {
+ name: 'Ελληνικά',
+ isoCode: 'el',
+ }, {
+ name: '日本語',
+ isoCode: 'ja',
+ }, {
+ name: 'Pусский',
+ isoCode: 'ru',
+ }];
+
+ root.currentLanguage = null;
+
+ root._detect = function() {
+ // Auto-detect browser language
+ var userLang, androidLang;
+
+ if (navigator && navigator.userAgent && (androidLang = navigator.userAgent.match(/android.*\W(\w\w)-(\w\w)\W/i))) {
+ userLang = androidLang[1];
+ } else {
+ // works for iOS and Android 4.x
+ userLang = navigator.userLanguage || navigator.language;
+ }
+ userLang = userLang ? (userLang.split('-', 1)[0] || 'en') : 'en';
+
+ return userLang;
+ };
+
+ root._set = function(lang) {
+ $log.debug('Setting default language: ' + lang);
+ gettextCatalog.setCurrentLanguage(lang);
+ amMoment.changeLocale(lang);
+ root.currentLanguage = lang;
+ };
+
+ root.getCurrentLanguage = function() {
+ return root.currentLanguage;
+ };
+
+ root.getCurrentLanguageName = function() {
+ return root.getName(root.currentLanguage);
+ };
+
+ root.getLanguages = function() {
+ return root.availableLanguages;
+ };
+
+ root.init = function() {
+ root._set(root._detect());
+ };
+
+ root.update = function() {
+ var userLang = configService.getSync().wallet.settings.defaultLanguage;
+
+ if (!userLang) {
+ userLang = root._detect();
+ }
+
+ if (userLang != gettextCatalog.getCurrentLanguage()) {
+ root._set(userLang);
+ }
+ return userLang;
+ };
+
+ root.getName = function(lang) {
+ return lodash.result(lodash.find(root.availableLanguages, {
+ 'isoCode': lang
+ }), 'name');
+ };
+
+ return root;
+ });