2017-02-28 20:55:12 -06:00
|
|
|
import BrowserLanguageDetector from 'i18next-browser-languagedetector';
|
|
|
|
|
|
|
|
|
|
import configLanguageDetector from './configLanguageDetector';
|
2020-05-11 15:29:17 -03:00
|
|
|
|
2017-02-28 20:55:12 -06:00
|
|
|
/**
|
|
|
|
|
* The ordered list (by name) of language detectors to be utilized as backends
|
|
|
|
|
* by the singleton language detector for Web.
|
|
|
|
|
*
|
|
|
|
|
* @type {Array<string>}
|
|
|
|
|
*/
|
|
|
|
|
const order = [
|
|
|
|
|
'querystring',
|
2020-05-11 15:29:17 -03:00
|
|
|
'localStorage'
|
2017-02-28 20:55:12 -06:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
// Allow i18next to detect the system language reported by the Web browser
|
|
|
|
|
// itself.
|
2025-09-23 16:46:25 -05:00
|
|
|
interfaceConfig.LANG_DETECTION && order.push('navigator');
|
2020-05-11 15:29:17 -03:00
|
|
|
|
|
|
|
|
// Default use configured language
|
|
|
|
|
order.push(configLanguageDetector.name);
|
2017-02-28 20:55:12 -06:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The singleton language detector for Web.
|
|
|
|
|
*/
|
|
|
|
|
const languageDetector
|
|
|
|
|
= new BrowserLanguageDetector(
|
|
|
|
|
/* services */ null,
|
|
|
|
|
/* options */ {
|
|
|
|
|
caches: [ 'localStorage' ],
|
|
|
|
|
lookupLocalStorage: 'language',
|
|
|
|
|
lookupQuerystring: 'lang',
|
|
|
|
|
order
|
|
|
|
|
});
|
|
|
|
|
|
2022-08-01 10:14:54 +03:00
|
|
|
// @ts-ignore
|
2017-02-28 20:55:12 -06:00
|
|
|
languageDetector.addDetector(configLanguageDetector);
|
|
|
|
|
|
|
|
|
|
export default languageDetector;
|