Skip to content
`Intl.Locale` specification [draft]
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.travis.yml Travis auto-deployment Dec 26, 2017 List V8 implementation May 20, 2019
biblio.json Editorial: Hyperlink references to ECMA402. Sep 18, 2018 Travis auto-deployment Dec 26, 2017
package.json Travis auto-deployment Dec 26, 2017

Intl.Locale API Specification [draft]



The JavaScript Intl library (ECMA 402) has used strings to identify locales since the beginning. This works well for many simple cases, and is lightweight and user-friendly. ICU uses a Locale class instead. Defining a Locale class allows the following:

  • Parsing and manipulating the language, region and script of a locale
  • Reading or writing the Unicode extension tags in a locale
  • A serializable, standard format to store user locale preferences for use in Intl APIs rather than a combination of language and options bag.
  • In follow-on proposals, a Locale class can be used for an interface to get at various kinds of locale data, including likely subtags, first day of the week, various display names, etc.

Intl.Locale has a toString method which represents the complete contents of the locale. This method allows Locale instances to be provided as an argument to existing Intl constructors, serialized in JSON, or any other context where an exact string representation is useful.

Intl.Locale is proposed to be the class that HTML uses to expose the current locale to the Web. Currently, HTML supports only navigator.languages, but with navigator.locales, an Array of Intl.Locale instances, browsers may expose user preferences for calendar, numbering system, and more to Progressive Web applications.

Usage examples

The following example shows how to use Intl.Locale

let loc = new Intl.Locale("pl-u-hc-h12", {
  calendar: 'gregory'
console.log(loc.language); // "pl"
console.log(loc.hourCycle); // "h12"
console.log(loc.calendar); // "gregory"
console.log(loc.toString()); // "pl-u-ca-gregory-hc-h12"

Implementation Status

Stage 3

Implementation Progress



  • Zibi Braniecki (@zbraniecki)
  • Daniel Ehrenberg (@littledan)





You can view the spec text or rendered as HTML.

Prior Art


Render Spec

npm install
npm run build
open index.html
You can’t perform that action at this time.