105 lines
2.5 KiB
JavaScript
105 lines
2.5 KiB
JavaScript
'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',
|
||
useIdeograms: true,
|
||
}, {
|
||
name: 'Pусский',
|
||
isoCode: 'ru',
|
||
}, {
|
||
name: 'Türk',
|
||
isoCode: 'tr',
|
||
}];
|
||
|
||
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.getCurrentLanguageInfo = function() {
|
||
return lodash.find(root.availableLanguages, {
|
||
'isoCode': 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;
|
||
});
|