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

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /* @flow */
  2. import BrowserLanguageDetector from 'i18next-browser-languagedetector';
  3. import configLanguageDetector from './configLanguageDetector';
  4. declare var interfaceConfig: Object;
  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. configLanguageDetector.name
  15. ];
  16. // Allow i18next to detect the system language reported by the Web browser
  17. // itself.
  18. interfaceConfig.LANG_DETECTION && order.push('navigator');
  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. languageDetector.addDetector(configLanguageDetector);
  34. export default languageDetector;