decide.nolog.cz/app/instance-initializers/i18n.js
jelhan acc05d68c5 remove webshim polyfills
UX in browser which does not support time input type should be okay know by
validation messages and placeholder. Wasn't even used anymore in latest release.

Affects #90 but does not resolve 'unsafe-inline' requirement cause to
ember-bootstrap (https://github.com/kaliber5/ember-bootstrap/pull/98#discussion_r66586065).
2016-06-10 11:35:55 +02:00

61 lines
1.4 KiB
JavaScript

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);
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);
// 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;
}