AliasToLocaleMapper.js 985 B

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