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.js 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /* @flow */
  2. import BrowserLanguageDetector from 'i18next-browser-languagedetector';
  3. import configLanguageDetector from './configLanguageDetector';
  4. import customNavigatorDetector from './customNavigatorDetector';
  5. declare var interfaceConfig: Object;
  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. languageDetector.addDetector(customNavigatorDetector);
  36. languageDetector.addDetector(configLanguageDetector);
  37. export default languageDetector;