use browser language as default locale

This commit is contained in:
antelle 2017-01-29 10:04:18 +01:00
parent cff110fde5
commit a832768668
7 changed files with 31 additions and 22 deletions

View File

@ -5,7 +5,7 @@ const Locale = require('./locale');
const SettingsManager = {
neutralLocale: null,
activeLocale: null,
activeLocale: 'en',
setBySettings: function(settings) {
if (settings.get('theme')) {
@ -14,8 +14,13 @@ const SettingsManager = {
if (settings.get('fontSize')) {
this.setFontSize(settings.get('fontSize'));
}
if (settings.get('locale') && settings.get('locale') !== 'en') {
let locale = settings.get('locale');
if (locale) {
this.setLocale(settings.get('locale'));
} else {
try {
this.setLocale(this.getBrowserLocale());
} catch (ex) {}
}
},
@ -40,20 +45,25 @@ const SettingsManager = {
document.documentElement.style.fontSize = fontSize ? (12 + fontSize * 2) + 'px' : '';
},
setLocale(locale) {
setLocale(loc) {
if (!loc || loc === this.activeLocale) {
return;
}
let localeValues;
if (loc !== 'en') {
localeValues = require('../locales/' + loc + '.json');
}
if (!this.neutralLocale) {
this.neutralLocale = _.clone(Locale);
}
let activeLocale = locale && locale !== 'en' ? locale : null;
if (activeLocale !== this.activeLocale) {
_.extend(Locale, this.neutralLocale);
if (activeLocale) {
let localeValues = require('../locales/' + locale + '.json');
_.extend(Locale, localeValues);
}
this.activeLocale = activeLocale;
Backbone.trigger('set-locale', activeLocale);
}
_.extend(Locale, this.neutralLocale, localeValues);
this.activeLocale = loc;
Backbone.trigger('set-locale', loc);
},
getBrowserLocale: function() {
let language = navigator.languages && navigator.languages[0] || navigator.language;
return language ? language.substr(0, 2).toLowerCase() : null;
}
};

View File

@ -13,6 +13,7 @@ var Backbone = require('backbone'),
Storage = require('../../storage'),
FeatureDetector = require('../../util/feature-detector'),
Locale = require('../../util/locale'),
SettingsManager = require('../../util/settings-manager'),
Links = require('../../const/links');
var SettingsGeneralView = Backbone.View.extend({
@ -58,11 +59,11 @@ var SettingsGeneralView = Backbone.View.extend({
allLocales: {
en: 'English',
'de-DE': 'Deutsch',
'fr-FR': 'Français',
'it-IT': 'Italiano',
'pl': 'Polski',
'pt-PT': 'Português'
de: 'Deutsch',
fr: 'Français',
it: 'Italiano',
pl: 'Polski',
pt: 'Português'
},
initialize: function() {
@ -80,7 +81,7 @@ var SettingsGeneralView = Backbone.View.extend({
themes: this.allThemes,
activeTheme: AppSettingsModel.instance.get('theme'),
locales: this.allLocales,
activeLocale: AppSettingsModel.instance.get('locale') || 'en',
activeLocale: SettingsManager.activeLocale,
fontSize: AppSettingsModel.instance.get('fontSize'),
expandGroups: AppSettingsModel.instance.get('expandGroups'),
canClearClipboard: !!Launcher,
@ -187,9 +188,6 @@ var SettingsGeneralView = Backbone.View.extend({
changeLocale: function(e) {
var locale = e.target.value;
if (locale === 'en') {
locale = null;
}
if (locale === '...') {
e.target.value = AppSettingsModel.instance.get('locale') || 'en';
Alerts.info({

View File

@ -3,6 +3,7 @@ Release notes
##### v1.4.0 (WIP)
`+` password generator usability improvements
`+` warning about several tabs
`+` use browser language as default locale
##### v1.3.3 (2016-09-20)
`+` translations: fr, pl, pt