# Introduction [](https://www.npmjs.com/package/i18next-browser-languagedetector) This is a i18next language detection plugin use to detect user language in the browser with support for: - cookie (set cookie i18next=LANGUAGE) - sessionStorage (set key i18nextLng=LANGUAGE) - localStorage (set key i18nextLng=LANGUAGE) - navigator (set browser language) - querystring (append `?lng=LANGUAGE` to URL) - htmlTag (add html language tag lng.replace('-', '_') } ``` Options can be passed in: **preferred** - by setting options.detection in i18next.init: ```js import i18next from 'i18next'; import LanguageDetector from 'i18next-browser-languagedetector'; i18next.use(LanguageDetector).init({ detection: options, }); ``` on construction: ```js import LanguageDetector from 'i18next-browser-languagedetector'; const languageDetector = new LanguageDetector(null, options); ``` via calling init: ```js import LanguageDetector from 'i18next-browser-languagedetector'; const languageDetector = new LanguageDetector(); languageDetector.init(options); ``` ## Adding own detection functionality ### interface ```js export default { name: 'myDetectorsName', lookup(options) { // options -> are passed in options return 'en'; }, cacheUserLanguage(lng, options) { // options -> are passed in options // lng -> current language, will be called after init and on changeLanguage // store it }, }; ``` ### adding it ```js import LanguageDetector from 'i18next-browser-languagedetector'; const languageDetector = new LanguageDetector(); languageDetector.addDetector(myDetector); i18next.use(languageDetector).init({ detection: options, }); ``` Don't forget: You have to add the name of your detector (`myDetectorsName` in this case) to the `order` array in your `options` object. Without that, your detector won't be used. See the [Detector Options section for more](#detector-options). ---