decide.nolog.cz/app/instance-initializers/i18n.js
2016-01-28 23:48:14 +01:00

65 lines
1.4 KiB
JavaScript

/* global webshim */
export default {
name: 'i18n',
initialize({ container }) {
const i18n = container.lookup('service:i18n');
const availableLocales = i18n.get('locales');
const moment = container.lookup('service:moment');
const locale = getLocale(availableLocales);
i18n.set('locale', locale);
moment.changeLocale(locale);
webshim.activeLang(locale);
i18n.addObserver('locale', i18n, function() {
const locale = this.get('locale');
// give cookie a lifetime of one year
const maxAge = 60 * 60 * 24 * 356;
moment.changeLocale(locale);
webshim.activeLang(locale);
// save selected locale in cookie
document.cookie = `language=${locale};max-age=${maxAge};`;
});
}
};
function getLocale(availableLocales) {
const methods = [
getLocaleFromCookie,
getLocaleByBrowser
];
let locale;
methods.any((method) => {
let l = method();
if (l && availableLocales.indexOf(l) !== -1) {
locale = l;
return true;
}
});
if (locale) {
return locale;
} else {
return 'en';
}
}
function getLocaleByBrowser() {
return (window.navigator.userLanguage || window.navigator.language).split('-')[0];
}
function getLocaleFromCookie() {
let language;
const cookie = document.cookie.replace(' ', '').split(';');
cookie.forEach(function(t) {
let x = t.split('=');
if (x[0] === 'language') {
language = x[1];
}
});
return language;
}