2015-11-20 02:18:19 +01:00
|
|
|
export default {
|
|
|
|
name: 'i18n',
|
|
|
|
initialize: function({ container }) {
|
|
|
|
var i18n = container.lookup('service:i18n'),
|
|
|
|
availableLocales = i18n.get('locales'),
|
2015-11-23 13:32:40 +01:00
|
|
|
moment = container.lookup('service:moment'),
|
2015-11-20 02:18:19 +01:00
|
|
|
locale = getLocale(availableLocales);
|
|
|
|
|
|
|
|
i18n.set('locale', locale);
|
2015-11-23 13:32:40 +01:00
|
|
|
moment.changeLocale(locale);
|
2015-11-20 02:18:19 +01:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
function getLocale(availableLocales) {
|
|
|
|
var methods = [
|
|
|
|
getLocaleByBrowser,
|
|
|
|
getLocaleFromCookie
|
|
|
|
];
|
|
|
|
var locale;
|
|
|
|
|
|
|
|
methods.any((method) => {
|
|
|
|
var 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() {
|
|
|
|
var language;
|
|
|
|
|
|
|
|
var cookie = document.cookie.replace(" ", "").split(";");
|
|
|
|
cookie.forEach(function(t){
|
|
|
|
var x = t.split("=");
|
|
|
|
if (x[0] === "language") {
|
|
|
|
language = x[1];
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return language;
|
|
|
|
}
|