en.wikipedia.org/wiki/IETF_language_tag
3 corrections found
Up to three optional extended language subtags composed of three letters each, separated by hyphens;
Valid BCP 47 tags can have at most one extended language subtag, not three.
Full reasoning
RFC 5646's ABNF leaves space for up to three extlang positions for compatibility, but Section 2.2.2 explicitly says the 2nd and 3rd positions are permanently reserved and that tags using them are invalid. The RFC states: "Although the ABNF production 'extlang' permits up to three extended language tags in the language tag ... the second and third extended language subtag positions in a language tag are permanently reserved and tags that include those subtags in that position are, and will always remain, invalid." An RFC 5646 erratum also clarifies the validity rule: a valid tag has "no more than one extended language subtag." So the article's syntax summary overstates what is actually valid in BCP 47.
2 sources
- RFC 5646: Tags for Identifying Languages
Section 2.2.2: "Although the ABNF production 'extlang' permits up to three extended language tags in the language tag ... the second and third extended language subtag positions in a language tag are permanently reserved and tags that include those subtags in that position are, and will always remain, invalid."
- RFC 5646 Errata
Errata ID 5457 notes that a valid tag must satisfy: "There is no more than one extended language subtag."
syc
`syc` is the code for Classical Syriac, not generic Syriac.
Full reasoning
The IANA Language Subtag Registry distinguishes syc from syr. In the registry, syc is labeled Classical Syriac, while syr is labeled Syriac and marked as a macrolanguage. So the table entry that pairs Syriac with syc is incorrect: the generic Syriac subtag is syr, whereas syc refers specifically to Classical Syriac.
1 source
- IANA Language Subtag Registry
The registry lists `Subtag: syr` with `Description: Syriac` and `Scope: macrolanguage`. Nearby, it lists `Description: Classical Syriac` for `Subtag: syc`.
country subdivisions (sd, rg)
`sd` is a subdivision key, but `rg` is not; `rg` means Region Override.
Full reasoning
In the Unicode locale extension, sd and rg are different kinds of keys. The Unicode LDML spec defines rg as Region Override: it supplies an alternate region to use for region-based defaults such as currency, calendar/week data, hour cycle, and measurement preferences. The same spec separately defines sd as Regional Subdivision. So the article's grouping of both sd and rg under "country subdivisions" is incorrect.
2 sources
- Unicode Locale Data Markup Language (LDML)
The spec defines `"rg" Region Override` and says it "specifies an alternate region to use for obtaining certain region-specific default values." It separately defines `"sd" Regional Subdivision` as a unicode_subdivision_id.
- Unicode Locale Data Markup Language (LDML) Part 6: Supplemental
The supplemental spec says locale items may be provided explicitly using an `"rg" Region Override` locale key.