decide.nolog.cz/app/instance-initializers/i18n.js

69 lines
1.3 KiB
JavaScript
Raw Normal View History

import Ember from 'ember';
const { getOwner } = Ember;
2015-11-20 02:18:19 +01:00
export default {
name: 'i18n',
initialize(appInstance) {
const i18n = appInstance.lookup('service:i18n');
2016-01-28 23:48:14 +01:00
const availableLocales = i18n.get('locales');
2015-12-07 22:21:38 +01:00
i18n.addObserver('locale', i18n, localeChanged);
i18n.set('locale', getLocale(availableLocales));
2015-11-20 02:18:19 +01:00
}
};
function getLocale(availableLocales) {
2016-01-28 23:48:14 +01:00
const methods = [
getSavedLocale,
2015-12-07 22:21:38 +01:00
getLocaleByBrowser
2015-11-20 02:18:19 +01:00
];
2016-01-28 23:48:14 +01:00
let locale;
2015-11-20 02:18:19 +01:00
methods.any((method) => {
2016-01-28 23:48:14 +01:00
let l = method();
2015-11-20 02:18:19 +01:00
if (l && availableLocales.indexOf(l) !== -1) {
locale = l;
return true;
}
});
if (locale) {
return locale;
} else {
return 'en';
}
}
function getLocaleByBrowser() {
2016-01-28 23:48:14 +01:00
return (window.navigator.userLanguage || window.navigator.language).split('-')[0];
2015-11-20 02:18:19 +01:00
}
function getSavedLocale() {
let { localStorage } = window;
2015-11-20 02:18:19 +01:00
// test browser support
if (!localStorage) {
return;
}
return localStorage.getItem('locale');
}
function saveLocale(locale) {
let { localStorage } = window;
// test browser support
if (!localStorage) {
return;
}
localStorage.setItem('locale', locale);
}
function localeChanged() {
let locale = this.get('locale');
getOwner(this).lookup('service:moment').changeLocale(locale);
saveLocale(locale);
2015-11-20 02:18:19 +01:00
}