The Intl.Locale.prototype.language property is an accessor property that returns the language associated with the locale.


Language is one of the core features of a locale. The Unicode specification treats the language identifier of a locale as the language and the region together (to make a distinction between dialects and variations, e.g. British English vs. American English). The language property of a Locale returns strictly the locale's language subtag.


Setting the language in the locale identifer string argument

In order to be a valid Unicode locale identifier, a string must start with the language subtag. The main argument to the Locale constructor must be a valid Unicode locale identifier, so whenever the constructor is used, it must be passed an identifier with a language subtag.

let langStr = new Intl.Locale("en-Latn-US");

console.log(langStr.language); // Prints "en"

Overriding language via the configuration object

While the language subtag must be specified, the Locale constructor takes a configuration object, which can override the language subtag.

let langObj = new Intl.Locale("en-Latn-US", {language: "es"});

console.log(langObj.language); // Prints "es"


ECMAScript Internationalization API Specification (ECMAScript Internationalization API)
# sec-Intl.Locale.prototype.language

Browser compatibility

BCD tables only load in the browser

See also