| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import locales from '@root/resource/locales';
- class LanguageConverter {
- constructor(langDetector) {
- this.name = 'languageConverter';
- this.type = 'languageDetector';
- this.langDetector = langDetector;
- }
- detect() {
- const lang = this.langDetector.detect(['userSettingDetector', 'navigator', 'querystring']);
- if (lang == null) {
- return;
- }
- const browserLanguageIdMapping = {};
- Object.values(locales).forEach((locale) => {
- browserLanguageIdMapping[locale.meta.browserLanguageId] = locale.meta.id;
- });
- if (Object.values(browserLanguageIdMapping).includes(lang)) {
- return lang;
- }
- return browserLanguageIdMapping[lang];
- }
- init(services, options = {}, i18nOptions = {}) {
- this.services = services;
- this.i18nOptions = i18nOptions;
- this.langDetector.init(services);
- }
- cacheUserLanguage(lng, caches) {
- return this.langDetector.cacheUserLanguage(lng, caches);
- }
- }
- export default LanguageConverter;
|