1 of 10

Intl.DisplayNames v2

for Stage 4

2 of 10

Motivation

To enable developers to get human translation of language, region, script, and other display names on the client.

Also, provide a straightforward API to provide the functionality to reduce developers to use “work in some context but not other” work around.

3 of 10

Enhanced Features

  • Add “languageDisplay” option:
    • For “language” type only
    • Accept “dialect” or “standard”
    • Default: “dialect”
  • Add new type “calendar” and “dateTimeField”

4 of 10

Examples of languageDisplay

d8> dn2 = new Intl.DisplayNames("en",

{type: "language",

languageDisplay: "dialect"})

d8> dn2.of("en")

"English"

d8> dn2.of("en-GB")

"British English"

d8> dn2.of("en-US")

"American English"

d8> dn2.of("en-AU")

"Australian English"

d8> dn2.of("en-CA")

"Canadian English"

d8> dn2.of("zh")

"Chinese"

d8> dn2.of("zh-Hant")

"Traditional Chinese"

d8> dn2.of("zh-Hans")

"Simplified Chinese"

d8> dn3 = new Intl.DisplayNames("en",

{type: "language",

languageDisplay: "standard"})

d8> dn3.of("en")

"English"

d8> dn3.of("en-GB")

"English (United Kingdom)"

d8> dn3.of("en-AU")

"English (Australia)"

d8> dn3.of("en-CA")

"English (Canada)"

d8> dn3.of("en-US")

"English (United States)"

d8> dn3.of("zh")

"Chinese"

d8> dn3.of("zh-Hant")

"Chinese (Traditional)"

d8> dn3.of("zh-Hans")

"Chinese (Simplified)"

5 of 10

Example of type: “calendar”

d8> dn = new Intl.DisplayNames("en", �{type: "calendar"})

d8> dn.of("roc")

"Minguo Calendar"

d8> dn.of("persian")

"Persian Calendar"

d8> dn.of("gregory")

"Gregorian Calendar"

d8> dn.of("ethioaa")

"Ethiopic Amete Alem Calendar"

d8> dn.of("japanese")

"Japanese Calendar"

d8> dn.of("dangi")

"Dangi Calendar"

d8> dn.of("chinese")

"Chinese Calendar"

d8> dn = new Intl.DisplayNames("zh", �{type: "calendar"})

d8> dn.of("roc")

"民国纪年"

d8> dn.of("persian")

"波斯历"

d8> dn.of("gregory")

"公历"

d8> dn.of("ethioaa")

"埃塞俄比亚阿米特阿莱姆日历"

d8> dn.of("japanese")

"和历"

d8> dn.of("dangi")

"檀纪历"

8> dn.of("chinese")

"农历"

6 of 10

Example of type: “dateTimeField”

d8> dn = new Intl.DisplayNames("zh", {type: "dateTimeField"})

d8> dn.of("era")

"纪元"

d8> dn.of("year")

"年"

d8> dn.of("month")

"月"

d8> dn.of("quarter")

"季度"

d8> dn.of("weekOfYear")

"周"

d8> dn.of("weekday")

"工作日"

d8> dn.of("dayPeriod")

"上午/下午"

d8> dn.of("day")

"日"

d8> dn.of("hour")

"小时"

d8> dn.of("minute")

"分钟"

d8> dn.of("second")

"秒"

d8> dn = new Intl.DisplayNames("es", {type: "dateTimeField"})

d8> dn.of("era")

"era"

d8> dn.of("year")

"año"

d8> dn.of("month")

"mes"

d8> dn.of("quarter")

"trimestre"

d8> dn.of("weekOfYear")

"semana"

d8> dn.of("weekday")

"día de la semana"

d8> dn.of("dayPeriod")

"a. m./p. m."

d8> dn.of("day")

"día"

d8> dn.of("hour")

"hora"

d8> dn.of("minute")

"minuto"

d8> dn.of("second")

"segundo"

7 of 10

History of Intl.DisplayNames v2

  • Sep 2020: Advanced to Stage 1
  • Jan 2021: Advanced to Stage 2
  • May 2021: Advanced to Stage 3
  • Browser Implementations after Stage 3:
    • Launched in Firefox 91 (Aug 2021)
    • Launched in V8/Chrome m95 (Oct 2021)
    • Safari Technology Preview 132 (Sept 2021)
    • JSC 227832
  • Test262: features: [Intl.DisplayNames-v2]
  • MDN - DisplayNames

8 of 10

Purpose / Acceptance Signifies / Spec Quality of Stage 4

Purpose: The addition is ready for inclusion in the formal ECMAScript standard

Acceptance Signifies: The addition will be included in the soonest practical standard revision

Spec Quality: Final: All changes as a result of implementation experience are integrated

9 of 10

Entrance Criteria For Stage 4

  • Test262 acceptance tests have been written for mainline usage scenarios, and merged DONE �(features: [Intl.DisplayNames-v2])
  • Two compatible implementations which pass the acceptance tests DONE
  • Significant in-the-field experience with shipping implementations, such as that provided by two independent VMs DONE
  • A pull request has been sent to tc39/ecma262 with the integrated spec text DONE #622
  • All ECMAScript editors have signed off on the pull request�✅ ryzokuken , ? gibson042

10 of 10

Requesting the Committee

Requesting the Committee Approval for advancement to Stage 4