API Reference - Locale Detection (@lingui/detect-locale)¶
@lingui/detect-locale is little package just (922 B Gzip) with some helper functions that will help you detect the locale of the user:
Installation¶
Install @lingui/detect-locale as a dependency:
npm install --save @lingui/detect-locale
# Or using yarn
# yarn add @lingui/detect-locale
Usage¶
@lingui/detect-locale:exports multiple methods:detect- Will return the first occurence of detectorsmultipleDetect- Will return an array with all the locales detected by each detector
- and some helpers:
fromCookie(key: string)- Accepts a key as param will recover from navigator cookies the valuefromHtmlTag(tag: string)- Will find on HtmlDocument the attribute passed in params (normally it’s used lang or xml:lang)fromNavigator()- Recovers the navigator language, it’s also compatible with old browsers like IE11fromPath(localePathIndex: number)- Splits the location.pathname in an array so you have to specify the index of the array where’s locale is setfromStorage(key: string, { useSessionStorage: boolean }- Will search on localStorage by default the item that has that key, if **useSessionStorage** is passed, will search on sessionStoragefromSubdomain(localeSubdomainIndex: number)- Like fromPath, splits the location.href on segments you must specify the index of that segmentfromUrl(parameter: string)- Uses a query-string parser to recover the correct parameter
Practically all detectors accepts a custom document, location, or window object as param, it’s usefull when testing or using some server-side strategy
Usage with detect¶
import { detect, fromUrl, fromStorage, fromNavigator } from "@lingui/detect-locale"
// can be a function with custom logic or just a string, `detect` method will handle it
const DEFAULT_FALLBACK = () => "en"
const result = detect(
fromUrl("lang"),
fromStorage("lang"),
fromNavigator(),
DEFAULT_FALLBACK
)
console.log(result) // "en"
Usage with multipleDetect¶
import { multipleDetect, fromUrl, fromStorage, fromNavigator } from "@lingui/detect-locale"
// can be a function with custom logic or just a string, `detect` method will handle it
const DEFAULT_FALLBACK = () => "en"
const result = multipleDetect(
fromUrl("lang"),
fromStorage("lang"),
fromNavigator(),
DEFAULT_FALLBACK
)
console.log(result) // ["en", "es"]