[READ-ONLY] Mirror of https://github.com/wojtekmaj/get-user-locale. A function that returns user's locale as an IETF language tag, based on all available sources.
i18n language language-detection locale
0

Configure Feed

Select the types of activity you want to include in your feed.

TypeScript 98.2%
JavaScript 1.5%
Other 0.4%
351 4 19

Clone this repository

https://git.vm.fail/wojtekmaj.pl/get-user-locale https://git.vm.fail/did:plc:5bl2odkavlwwh4chtgrf3i5l
ssh://git@knot1.tangled.sh:2222/wojtekmaj.pl/get-user-locale ssh://git@knot1.tangled.sh:2222/did:plc:5bl2odkavlwwh4chtgrf3i5l

For self-hosted knots, clone URLs may differ based on your setup.


README.md

npm downloads CI

Get-User-Locale#

A function that returns user's locale as an IETF language tag, based on all available sources.

tl;dr#

  • Install by executing npm install get-user-locale or yarn add get-user-locale.
  • Import by adding import getUserLocale from 'get-user-locale'.
  • Do stuff with it!
    const userLocale = getUserLocale();
    

User guide#

getUserLocale()#

A function that returns user's preferred locale as an IETF language tag, based on all available sources.

Sample usage#

import getUserLocale from 'get-user-locale';

getUserLocale(); // 'de-DE'

or

import { getUserLocale } from 'get-user-locale';

getUserLocale(); // 'de-DE'
Options#

getUserLocale() may be called with an optional options argument.

options object may contain the following properties:

Property Description Default value
fallbackLocale A locale to use as a fallback. en-US
useFallbackLocale Whether to use the fallback locale. true

getUserLocales()#

A function that returns an array of user's preferred locales as an IETF language tags, based on all available sources.

Sample usage#

import { getUserLocales } from 'get-user-locale';

getUserLocales(); // ['de-DE', 'de', 'en-US', 'en']
Options#

getUserLocales() may be called with an optional options argument.

options object may contain the following properties:

Property Description Default value
fallbackLocale A locale to use as a fallback. en-US
useFallbackLocale Whether to use the fallback locale. true

Technical details#

There are a few ways of determining user's locale:

  • window.navigator.languages
  • window.navigator.language

…languages is an array of strings, …language is a string. Some browsers return mixed-case IETF language tags (e.g. de-DE), while others return lowercase ones (e.g. de-de). Finally, non-browser environments will not return anything, so you need a fallback.

Get-User-Locale does the following:

  • Combines all of them into one sane set of locales - in that particular order,
  • Dedupes them,
  • Fixes invalid, lowercased IETF language tags (so that the part after - is always uppercased),
  • Adds a fallback to en-US, so if all else fails, you will get a result that won't crash your app.

License#

The MIT License.

Author#

Wojciech Maj Wojciech Maj