This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The NavigatorLanguage.languages read-only property returns an array of DOMStrings representing the user's preferred languages. The language is described using BCP 47 language tags. In the returned array they are ordered by preference with the most preferred language first.

The value of navigator.language is the first element of the returned array [3]. (But it refers to the system language setting.)

When its value changes, as the user's preferred languages are changed a languagechange event is fired on the Window object.

The Accept-Language HTTP header in every HTTP request from the user's browser uses the same value for the navigator.languages property except for the extra qvalues (quality values) field (e.g. en-US;q=0.8).

Syntax

preferredLanguages = globalObj.navigator.languages

Examples

navigator.language   //"en-US"
navigator.languages  //["en-US", "zh-CN", "ja-JP"]

Specification

Specification Status Comment
HTML 5.1
The definition of 'NavigatorLanguage.languages' in that specification.
Recommendation Initial definition.

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support321 Yes3221132411
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support321321 Yes4224 Yes ?

1. In Chrome, navigator.language is the language of the browser UI, and is not guaranteed to be equal to navigator.languages[0].

2. In Firefox, the navigator.languages property's value is taken from the intl.accept_languages preference.

3. Closest available (non-standard) properties are userLanguage and browserLanguage.

See also

Document Tags and Contributors

Last updated by: fscholz,