decide.nolog.cz/app/components/language-select.js
Jeldrik Hanschke 8a62662e6e
migrate from ember-i18n to ember-intl (#358)
* mark string as html safe before passing to translation instead of bypassing HTML escape using {{{unsafe}}} syntax
* replace ember-i18n with ember-intl
2020-01-30 00:23:12 +01:00

49 lines
1.2 KiB
JavaScript

import classic from 'ember-classic-decorator';
import { classNames, tagName } from '@ember-decorators/component';
import { computed } from '@ember/object';
import { inject as service } from '@ember/service';
import { readOnly } from '@ember/object/computed';
import Component from '@ember/component';
import localesMeta from 'croodle/locales/meta';
@classic
@tagName('select')
@classNames('language-select')
export default class LanguageSelect extends Component {
@service
intl;
@service
moment;
@service
powerCalendar;
@readOnly('intl.primaryLocale')
current;
@computed('intl.locales')
get locales() {
let currentLocale = this.intl.primaryLocale;
return Object.keys(localesMeta).map(function(locale) {
return {
id: locale,
selected: locale === currentLocale,
text: localesMeta[locale]
};
});
}
change() {
let locale = this.element.options[this.element.selectedIndex].value;
this.intl.set('locale', locale.includes('-') ? [locale, locale.split('-')[0]] : [locale]);
this.moment.changeLocale(locale);
this.powerCalendar.set('locale', locale);
if (window.localStorage) {
window.localStorage.setItem('locale', locale);
}
}
}