| 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`); |
| }, |
| }); |