blob: 7f4aa16e8f73a7399c676c3901e37628273c8ac2 [file] [log] [blame]
// 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));