You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

languageDetector.web.ts 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import BrowserLanguageDetector from 'i18next-browser-languagedetector';
  2. import configLanguageDetector from './configLanguageDetector';
  3. import customNavigatorDetector from './customNavigatorDetector';
  4. // eslint-disable-next-line no-var
  5. declare var interfaceConfig: any;
  6. /**
  7. * The ordered list (by name) of language detectors to be utilized as backends
  8. * by the singleton language detector for Web.
  9. *
  10. * @type {Array<string>}
  11. */
  12. const order = [
  13. 'querystring',
  14. 'localStorage'
  15. ];
  16. // Allow i18next to detect the system language reported by the Web browser
  17. // itself.
  18. interfaceConfig.LANG_DETECTION && order.push(customNavigatorDetector.name);
  19. // Default use configured language
  20. order.push(configLanguageDetector.name);
  21. /**
  22. * The singleton language detector for Web.
  23. */
  24. const languageDetector
  25. = new BrowserLanguageDetector(
  26. /* services */ null,
  27. /* options */ {
  28. caches: [ 'localStorage' ],
  29. lookupLocalStorage: 'language',
  30. lookupQuerystring: 'lang',
  31. order
  32. });
  33. // Add the language detector which looks the language up in the config. Its
  34. // order has already been established above.
  35. // @ts-ignore
  36. languageDetector.addDetector(customNavigatorDetector);
  37. // @ts-ignore
  38. languageDetector.addDetector(configLanguageDetector);
  39. export default languageDetector;