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

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