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.2KB

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