Source code
Revision control
Copy as Markdown
Other Tools
const valid_language_tags = {
en: [
'en-Latn',
'en-Latn-GB',
'en-GB',
'en-fonipa-scouse',
'en-Latn-fonipa-scouse',
'en-Latn-GB-fonipa-scouse',
'en-Latn-x-this-is-a-private-use-extensio-n',
'EN',
'en-lATN',
'EN-lATN-gb',
'EN-gb',
'EN-scouse-fonipa',
'EN-lATN-scouse-fonipa',
'EN-lATN-gb-scouse-fonipa',
],
es: [
'es-419',
'es-ES',
'es-ES-1979',
],
};
const invalid_language_tags = [
'e',
'Latn',
'enLatnGBfonipa',
'11',
'en_Latn',
'en-Lat',
'en-A999',
];
function assert_is_canonical(language_tag) {
const locale = new Intl.Locale(language_tag);
assert_equals(locale.toString(), language_tag);
}
function assert_is_variation(variation_language_tag, expected_language_tag) {
const variation_locale = new Intl.Locale(variation_language_tag);
const expected_locale = new Intl.Locale(expected_language_tag);
assert_equals(variation_locale.language, expected_locale.language);
}