blob: df502abeb0a9aa6b8d00a38d701f8cd0dc1954fa [file] [log] [blame]
import {configureLocalization, updateWhenLocaleChanges} from '@lit/localize';
import {LitElement} from 'lit';
import MWI18nClient from '../common/mainWorldI18n/Client.js';
import {allLocales, sourceLocale, targetLocales} from '../lit-locales/generated/locales.js';
export class I18nLitElement extends LitElement {
#MWI18nClient;
constructor() {
super();
updateWhenLocaleChanges(this);
this.#MWI18nClient = new MWI18nClient();
this.#setUpLitL10n();
}
#setUpLitL10n() {
let pLocale;
if (typeof chrome !== 'undefined' && chrome.i18n) {
pLocale = Promise.resolve(chrome.i18n.getUILanguage());
} else {
pLocale = this.#MWI18nClient.getUILanguage();
}
pLocale.then(browserLocale => {
let locale = browserLocale.substr(0, 2).toLowerCase();
if (locale == 'pt') locale = 'pt_BR';
const sanitizedLocale = allLocales.includes(locale) ? locale : 'en';
setLocale(sanitizedLocale);
});
}
}
export const {getLocale, setLocale} = configureLocalization({
sourceLocale,
targetLocales,
loadLocale: locale => {
if (!allLocales.includes(locale)) locale = 'en';
return import(
/* webpackMode: "eager" */
/* webpackExclude: /locales\.json$/ */
`../lit-locales/generated/${locale}.js`);
},
});