LanguageConverter.js 992 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import locales from '@root/resource/locales';
  2. class LanguageConverter {
  3. constructor(langDetector) {
  4. this.name = 'languageConverter';
  5. this.type = 'languageDetector';
  6. this.langDetector = langDetector;
  7. }
  8. detect() {
  9. const lang = this.langDetector.detect(['userSettingDetector', 'navigator', 'querystring']);
  10. if (lang == null) {
  11. return;
  12. }
  13. const browserLanguageIdMapping = {};
  14. Object.values(locales).forEach((locale) => {
  15. browserLanguageIdMapping[locale.meta.browserLanguageId] = locale.meta.id;
  16. });
  17. if (Object.values(browserLanguageIdMapping).includes(lang)) {
  18. return lang;
  19. }
  20. return browserLanguageIdMapping[lang];
  21. }
  22. init(services, options = {}, i18nOptions = {}) {
  23. this.services = services;
  24. this.i18nOptions = i18nOptions;
  25. this.langDetector.init(services);
  26. }
  27. cacheUserLanguage(lng, caches) {
  28. return this.langDetector.cacheUserLanguage(lng, caches);
  29. }
  30. }
  31. export default LanguageConverter;