| // Copyright (C) 2017 André Bargull. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| |
| /*--- |
| esid: sec-intl.getcanonicallocales |
| description: > |
| Implementations are allowed to canonicalize extension subtag sequences. |
| info: | |
| 8.2.1 Intl.getCanonicalLocales (locales) |
| 1. Let ll be ? CanonicalizeLocaleList(locales). |
| 2. Return CreateArrayFromList(ll). |
| |
| 9.2.1 CanonicalizeLocaleList (locales) |
| ... |
| 7. Repeat, while k < len |
| ... |
| c. If kPresent is true, then |
| ... |
| v. Let canonicalizedTag be CanonicalizeLanguageTag(tag). |
| ... |
| |
| 6.2.3 CanonicalizeLanguageTag (locale) |
| The specifications for extensions to BCP 47 language tags, such as |
| RFC 6067, may include canonicalization rules for the extension subtag |
| sequences they define that go beyond the canonicalization rules of |
| RFC 5646 section 4.5. Implementations are allowed, but not required, |
| to apply these additional rules. |
| ---*/ |
| |
| var locale = "it-u-nu-latn-ca-gregory"; |
| |
| // RFC 6067: The canonical order of keywords is in US-ASCII order by key. |
| var sorted = "it-u-ca-gregory-nu-latn"; |
| |
| var canonicalLocales = Intl.getCanonicalLocales(locale); |
| assert.sameValue(canonicalLocales.length, 1); |
| |
| var canonicalLocale = canonicalLocales[0]; |
| assert((canonicalLocale === locale) || (canonicalLocale === sorted)); |