TOC 
Network Working GroupA. Phillips, Ed.
Internet-DraftLab126
Obsoletes: 4646 (if approved)M. Davis, Ed.
Intended status: BCPGoogle
Expires: December 11, 2008June 9, 2008


Tags for Identifying Languages
draft-ietf-ltru-4646bis-15

Status of this Memo

By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work in progress.”

The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt.

The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html.

This Internet-Draft will expire on December 11, 2008.

Abstract

This document describes the structure, content, construction, and semantics of language tags for use in cases where it is desirable to indicate the language used in an information object. It also describes how to register values for use in language tags and the creation of user-defined extensions for private interchange.



Table of Contents

1.  Introduction
2.  The Language Tag
    2.1.  Syntax
    2.2.  Language Subtag Sources and Interpretation
        2.2.1.  Primary Language Subtag
        2.2.2.  Extended Language Subtags
        2.2.3.  Script Subtag
        2.2.4.  Region Subtag
        2.2.5.  Variant Subtags
        2.2.6.  Extension Subtags
        2.2.7.  Private Use Subtags
        2.2.8.  Grandfathered Registrations
        2.2.9.  Classes of Conformance
3.  Registry Format and Maintenance
    3.1.  Format of the IANA Language Subtag Registry
        3.1.1.  File Format
        3.1.2.  Record Definitions
        3.1.3.  Subtag and Tag Fields
        3.1.4.  Description Field
        3.1.5.  Deprecated Field
        3.1.6.  Preferred-Value Field
        3.1.7.  Prefix Field
        3.1.8.  Suppress-Script Field
        3.1.9.  Macrolanguage Field
        3.1.10.  Scope Field
        3.1.11.  Comments Field
    3.2.  Language Subtag Reviewer
    3.3.  Maintenance of the Registry
    3.4.  Stability of IANA Registry Entries
    3.5.  Registration Procedure for Subtags
    3.6.  Possibilities for Registration
    3.7.  Extensions and the Extensions Registry
    3.8.  Update of the Language Subtag Registry
4.  Formation and Processing of Language Tags
    4.1.  Choice of Language Tag
        4.1.1.  Tagging Encompassed Languages
        4.1.2.  Using Extended Language Subtags
    4.2.  Meaning of the Language Tag
    4.3.  Lists of Languages
    4.4.  Length Considerations
        4.4.1.  Working with Limited Buffer Sizes
        4.4.2.  Truncation of Language Tags
    4.5.  Canonicalization of Language Tags
    4.6.  Considerations for Private Use Subtags
5.  IANA Considerations
    5.1.  Language Subtag Registry
    5.2.  Extensions Registry
6.  Security Considerations
7.  Character Set Considerations
8.  Changes from RFC 4646
9.  References
    9.1.  Normative References
    9.2.  Informative References
Appendix A.  Acknowledgements
Appendix B.  Examples of Language Tags (Informative)
Appendix C.  Examples of Registration Forms
§  Authors' Addresses
§  Intellectual Property and Copyright Statements




 TOC 

1.  Introduction

Human beings on our planet have, past and present, used a number of languages. There are many reasons why one would want to identify the language used when presenting or requesting information.

A user's language preferences often need to be identified so that appropriate processing can be applied. For example, the user's language preferences in a Web browser can be used to select Web pages appropriately. Language preferences can also be used to select among tools (such as dictionaries) to assist in the processing or understanding of content in different languages.

In addition, knowledge about the particular language used by some piece of information content might be useful or even required by some types of processing; for example, spell-checking, computer-synthesized speech, Braille transcription, or high-quality print renderings.

One means of indicating the language used is by labeling the information content with an identifier or "tag". These tags can be used to specify user preferences when selecting information content, or for labeling additional attributes of content and associated resources.

Tags can also be used to indicate additional language attributes of content. For example, indicating specific information about the dialect, writing system, or orthography used in a document or resource may enable the user to obtain information in a form that they can understand, or it can be important in processing or rendering the given content into an appropriate form or style.

This document specifies a particular identifier mechanism (the language tag) and a registration function for values to be used to form tags. It also defines a mechanism for private use values and future extension.

This document replaces [RFC4646] (Phillips, A. and M. Davis, “Tags for Identifying Languages,” September 2006.), which replaced [RFC3066] (Alvestrand, H., “Tags for the Identification of Languages,” January 2001.) and its predecessor [RFC1766] (Alvestrand, H., “Tags for the Identification of Languages,” March 1995.). For a list of changes in this document, see Section 8 (Changes from RFC 4646).

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] (Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels,” March 1997.).



 TOC 

2.  The Language Tag

Language tags are used to help identify languages, whether spoken, written, signed, or otherwise signaled, for the purpose of communication. This includes constructed and artificial languages, but excludes languages not intended primarily for human communication, such as programming languages.



 TOC 

2.1.  Syntax

The language tag is composed of one or more parts, known as "subtags". Each subtag consists of a sequence of alphanumeric characters. Subtags are distinguished and separated from one another by a hyphen ("-", ABNF [RFC5234] (Crocker, D. and P. Overell, “Augmented BNF for Syntax Specifications: ABNF,” January 2008.) %x2D). Usually a language tag contains a "primary language" subtag, followed by a (possibly empty) series of subsequent subtags, each of which refines or narrows the range of languages identified by the overall tag.

Most subtags are distinguished by length, position in the tag, and content: subtags can be recognized solely by these features. This makes it possible to construct a parser that can extract and assign some semantic information to the subtags, even if the specific subtag values are not recognized. Thus, a parser need not have a list of valid tags or subtags (that is, a copy of some version of the IANA Language Subtag Registry) in order to perform common searching and matching operations. The grandfathered tags registered under RFC 3066 (Alvestrand, H., “Tags for the Identification of Languages,” January 2001.) [RFC3066], a fixed list that can never change, are the only exception to this ability to infer meaning from subtag structure.



The syntax of the language tag in ABNF [RFC5234] (Crocker, D. and P. Overell, “Augmented BNF for Syntax Specifications: ABNF,” January 2008.) is:

Language-Tag  = langtag
              / privateuse             ; private use tag
              / irregular              ; tags grandfathered by rule

langtag       = (language
                 ["-" script]
                 ["-" region]
                 *("-" variant)
                 *("-" extension)
                 ["-" privateuse])

language      = 2*3ALPHA               ; shortest ISO 639 code
                [extlang]              ; sometimes followed by 
                                       ;   extended language subtags
              / 4ALPHA                 ; reserved for future use
              / 5*8ALPHA               ; registered language subtag

extlang       = "-" 3ALPHA             ; selected ISO 639 codes
                *2[ "-" 3ALPHA]        ; permanently reserved

script        = 4ALPHA                 ; ISO 15924 code

region        = 2ALPHA                 ; ISO 3166-1 code
              / 3DIGIT                 ; UN M.49 code

variant       = 5*8alphanum            ; registered variants
              / (DIGIT 3alphanum)

extension     = singleton 1*("-" (2*8alphanum))

singleton     = %x41-57 / %x59-5A / %x61-77 / %x79-7A / DIGIT
              ; "a"-"w" / "y"-"z" / "A"-"W" / "Y"-"Z" / "0"-"9"
              ; Single alphanumerics
              ; "x" is reserved for private use

privateuse    = "x" 1*("-" (1*8alphanum))

irregular     = "en-GB-oed" / "i-ami" / "i-bnn" / "i-default"
              / "i-enochian" / "i-hak" / "i-klingon" / "i-lux"
              / "i-mingo" / "i-navajo" / "i-pwn" / "i-tao"
              / "i-tay" / "i-tsu" / "sgn-BE-FR" / "sgn-BE-NL"
              / "sgn-CH-DE"

alphanum      = (ALPHA / DIGIT)       ; letters and numbers

 Figure 1: Language Tag ABNF 

All subtags have a maximum length of eight characters and whitespace is not permitted in a language tag. There is a subtlety in the ABNF production 'variant': variants starting with a digit MAY be four characters long, while those starting with a letter MUST be at least five characters long. For examples of language tags, see Appendix B (Examples of Language Tags (Informative)).

Note Well: the ABNF syntax does not distinguish between upper and lowercase. The appearance of upper and lowercase letters in the various ABNF productions above do not affect how implementations interpret tags. That is, the tag "I-AMI" matches the item "i-ami" in the 'irregular' production. At all times, the tags and their subtags, including private use and extensions, are to be treated as case insensitive: there exist conventions for the capitalization of some of the subtags, but these MUST NOT be taken to carry meaning.

For example:

However, in the tags defined by this document, the uppercase US-ASCII letters in the range 'A' through 'Z' are considered equivalent and mapped directly to their US-ASCII lowercase equivalents in the range 'a' through 'z'. Thus, the tag "mn-Cyrl-MN" is not distinct from "MN-cYRL-mn" or "mN-cYrL-Mn" (or any other combination), and each of these variations conveys the same meaning: Mongolian written in the Cyrillic script as used in Mongolia.

Although case distinctions do not carry meaning in language tags, consistent formatting and presentation of the tags will aid users. The format of the tags and subtags in the registry is RECOMMENDED. In this format, all subtags, including all those following singletons (that is, in extension or private-use sequences) are in lowercase. The exceptions to this are: all other non-initial two-letter subtags are uppercase and all other non-initial four-letter subtags are titlecase.

Note that although [RFC5234] (Crocker, D. and P. Overell, “Augmented BNF for Syntax Specifications: ABNF,” January 2008.) refers to octets, the language tags described in this document are sequences of characters from the US-ASCII [ISO646] (International Organization for Standardization, “ISO/IEC 646:1991, Information technology -- ISO 7-bit coded character set for information interchange.,” 1991.) repertoire. Language tags MAY be used in documents and applications that use other encodings, so long as these encompass the relevant part of the US-ASCII repertoire. An example of this would be an XML document that uses the UTF-16LE [RFC2781] (Hoffman, P. and F. Yergeau, “UTF-16, an encoding of ISO 10646,” February 2000.) encoding of [Unicode] (Unicode Consortium, “The Unicode Consortium. The Unicode Standard, Version 5.0, (Boston, MA, Addison-Wesley, 2003. ISBN 0-321-49081-0),” January 2007.).



 TOC 

2.2.  Language Subtag Sources and Interpretation

The namespace of language tags and their subtags is administered by the Internet Assigned Numbers Authority (IANA) [RFC2860] (Carpenter, B., Baker, F., and M. Roberts, “Memorandum of Understanding Concerning the Technical Work of the Internet Assigned Numbers Authority,” June 2000.) according to the rules in Section 5 (IANA Considerations) of this document. The Language Subtag Registry maintained by IANA is the source for valid subtags: other standards referenced in this section provide the source material for that registry.

Terminology used in this document:

The definitions in this section apply to the various subtags within the language tags defined by this document, excepting those "grandfathered" tags defined in Section 2.2.8 (Grandfathered Registrations).

Language tags are designed so that each subtag type has unique length and content restrictions. These make identification of the subtag's type possible, even if the content of the subtag itself is unrecognized. This allows tags to be parsed and processed without reference to the latest version of the underlying standards or the IANA registry and makes the associated exception handling when parsing tags simpler.

Subtags in the IANA registry that do not come from an underlying standard can only appear in specific positions in a tag. Specifically, they can only occur as primary language subtags or as variant subtags.

Note that sequences of private use and extension subtags MUST occur at the end of the sequence of subtags and MUST NOT be interspersed with subtags defined elsewhere in this document.

Single-letter and single-digit subtags are reserved for current or future use. These include the following current uses:



 TOC 

2.2.1.  Primary Language Subtag

The primary language subtag is the first subtag in a language tag (with the exception of private use and certain grandfathered tags) and cannot be omitted. The following rules apply to the primary language subtag:

  1. All two-character primary language subtags were defined in the IANA registry according to the assignments found in the standard "ISO 639-1:2002, Codes for the representation of names of languages -- Part 1: Alpha-2 code" [ISO639‑1] (International Organization for Standardization, “ISO 639-1:2002. Codes for the representation of names of languages -- Part 1: Alpha-2 code,” 2002.), or using assignments subsequently made by the ISO 639-1 registration authority (RA) or governing standardization bodies.
  2. All three-character primary language subtags in the IANA registry were defined according to the assignments found in one of these additional ISO 639 parts or assignments subsequently made by the relevant ISO 639 registration authorities or governing standardization bodies:
    A.
    "ISO 639-2:1998 - Codes for the representation of names of languages -- Part 2: Alpha-3 code - edition 1" [ISO639‑2] (International Organization for Standardization, “ISO 639-2:1998. Codes for the representation of names of languages -- Part 2: Alpha-3 code, first edition,” 1998.)
    B.
    "ISO 639-3:2007 - Codes for the representation of names of languages -- Part 3: Alpha-3 code for comprehensive coverage of languages" [ISO639‑3] (International Organization for Standardization, “ISO 639-3:2007. Codes for the representation of names of languages -- Part 3: Alpha-3 code for comprehensive coverage of languages,” 2007.)
    C.
    "ISO 639-5:2008 - Codes for the representation of names of languages -- Part 5: Alpha-3 code for language families and groups" [ISO639‑5] (International Organization for Standardization, “ISO 639-5:1998. Codes for the representation of names of languages -- Part 5: Alpha-3 code for language families and groups,” May 2008.)
  3. The subtags in the range 'qaa' through 'qtz' are reserved for private use in language tags. These subtags correspond to codes reserved by ISO 639-2 for private use. These codes MAY be used for non-registered primary language subtags (instead of using private use subtags following 'x-'). Please refer to Section 4.6 (Considerations for Private Use Subtags) for more information on private use subtags.
  4. All four-character language subtags are reserved for possible future standardization.
  5. All language subtags of 5 to 8 characters in length in the IANA registry were defined via the registration process in Section 3.5 (Registration Procedure for Subtags) and MAY be used to form the primary language subtag. At the time this document was created, there were no examples of this kind of subtag and future registrations of this type will be discouraged: primary languages are strongly RECOMMENDED for registration with ISO 639, and proposals rejected by ISO 639/RA-JAC will be closely scrutinized before they are registered with IANA.
  6. The single-character subtag 'x' as the primary subtag indicates that the language tag consists solely of subtags whose meaning is defined by private agreement. For example, in the tag "x-fr-CH", the subtags 'fr' and 'CH' SHOULD NOT be taken to represent the French language or the country of Switzerland (or any other value in the IANA registry) unless there is a private agreement in place to do so. See Section 4.6 (Considerations for Private Use Subtags).
  7. The single-character subtag 'i' is used by some grandfathered tags (see Section 2.2.8 (Grandfathered Registrations)) such as "i-klingon" and "i-bnn". (Other grandfathered tags have a primary language subtag in their first position.)
  8. Other values MUST NOT be assigned to the primary subtag except by revision or update of this document.

Note: For languages that have both an ISO 639-1 two-character code and a three character code (assigned by ISO 639-2, ISO 639-3, or ISO 639-5), only the ISO 639-1 two-character code is defined in the IANA registry.

Note: For languages that have no ISO 639-1 two-character code and for which the ISO 639-2/T (Terminology) code and the ISO 639-2/B (Bibliographic) codes differ, only the Terminology code is defined in the IANA registry. At the time this document was created, all languages that had both kinds of three-character code were also assigned a two-character code; it is expected that future assignments of this nature will not occur.

Note: To avoid problems with versioning and subtag choice as experienced during the transition between RFC 1766 and RFC 3066, as well as the canonical nature of subtags defined by this document, the ISO 639 Registration Authority Joint Advisory Committee (ISO 639/RA-JAC) has included the following statement in [iso639.prin] (ISO 639 Joint Advisory Committee, “ISO 639 Joint Advisory Committee: Working principles for ISO 639 maintenance,” March 2000.):

"A language code already in ISO 639-2 at the point of freezing ISO 639-1 shall not later be added to ISO 639-1. This is to ensure consistency in usage over time, since users are directed in Internet applications to employ the alpha-3 code when an alpha-2 code for that language is not available."

In order to avoid instability in the canonical form of tags, if a two-character code is added to ISO 639-1 for a language for which a three-character code was already included in either ISO 639-2 or ISO 639-3, the two-character code MUST NOT be registered. See Section 3.4 (Stability of IANA Registry Entries).

For example, if some content were tagged with 'haw' (Hawaiian), which currently has no two-character code, the tag would not be invalidated if ISO 639-1 were to assign a two-character code to the Hawaiian language at a later date.

Note: An example of independent primary language subtag registration might include: one of the grandfathered IANA registrations is "i-enochian". The subtag 'enochian' could be registered in the IANA registry as a primary language subtag (assuming that ISO 639 does not register this language first), making tags such as "enochian-AQ" and "enochian-Latn" valid.



 TOC 

2.2.2.  Extended Language Subtags

Extended language subtags are used to identify certain specially-selected languages that, for various historical reasons, are closely identified with an existing primary language subtag. Extended language subtags are always used with their enclosing primary language subtag (indicated with a 'Prefix' field in the registry) when used to form the language tag. All languages that have an extended language subtag in the registry also have an identical primary language subtag record in the registry. This primary language subtag is RECOMMENDED for forming the language tag. The following rules apply to the extended language subtags:

  1. Extended language subtags consist solely of three-letter subtags. All extended language subtag records defined in the registry were defined in the IANA registry according to the assignments found in [ISO639‑3] (International Organization for Standardization, “ISO 639-3:2007. Codes for the representation of names of languages -- Part 3: Alpha-3 code for comprehensive coverage of languages,” 2007.). Language collections and groupings, such as defined in [ISO639‑5] (International Organization for Standardization, “ISO 639-5:1998. Codes for the representation of names of languages -- Part 5: Alpha-3 code for language families and groups,” May 2008.) are specifically excluded from being extended language subtags.
  2. Extended language subtag records MUST include exactly one 'Prefix' field indicating an appropriate subtag or sequence of subtags for that extended language subtag.
  3. Extended language subtag records MUST include a 'Preferred-Value' and 'Deprecated' field. The 'Preferred-Value' and 'Subtag' fields MUST be identical.
  4. Although the ABNF production 'extlang' permits up to three extended language tags in the language tag, extended language subtags MUST NOT include another extended language subtag in their Prefix. That is, the second and third extended language subtag positions in a language tag are permanently reserved and tags that include subtags in that position are invalid.

For example, the macrolanguage Chinese ('zh') encompasses a number of languages. For compatibility reasons, each of these languages has both a primary and extended language subtag in the registry. Some examples of these include Gan Chinese ('gan'), Cantonese Chinese ('yue') and Mandarin Chinese ('cmn'). Each is encompassed by the macrolanguage 'zh' (Chinese). Therefore, they each have the prefix "zh" in their registry records. Thus Gan Chinese is represented with tags beginning "zh-gan" or "gan"; Cantonese with tags beginning either "yue" or "zh-yue"; and Mandarin Chinese with "zh-cmn" or "cmn". The language subtag 'zh' can still be used without an extended language subtag to label a resource as some unspecified variety of Chinese, while the primary language subtag ('gan', 'yue', 'cmn') is preferred to using the extended language form ("zh-gan", "zh-yue", "zh-cmn").



 TOC 

2.2.3.  Script Subtag

Script subtags are used to indicate the script or writing system variations that distinguish the written forms of a language or its dialects. The following rules apply to the script subtags:

  1. Script subtags MUST follow the primary language subtag and MUST precede any other type of subtag.
  2. All four-character subtags were defined according to [ISO15924] (International Organization for Standardization, “ISO 15924:2004. Information and documentation -- Codes for the representation of names of scripts,” January 2004.)--"Codes for the representation of the names of scripts": alpha-4 script codes, or subsequently assigned by the ISO 15924 registration authority or governing standardization bodies, denoting the script or writing system used in conjunction with this language.
  3. The script subtags 'Qaaa' through 'Qabx' are reserved for private use in language tags. These subtags correspond to codes reserved by ISO 15924 for private use. These codes MAY be used for non-registered script values. Please refer to Section 4.6 (Considerations for Private Use Subtags) for more information on private use subtags.
  4. Script subtags MUST NOT be registered using the process in Section 3.5 (Registration Procedure for Subtags) of this document. Variant subtags MAY be considered for registration for that purpose.
  5. There MUST be at most one script subtag in a language tag, and the script subtag SHOULD be omitted when it adds no distinguishing value to the tag or when the primary language subtag's record includes a Suppress-Script field listing the applicable script subtag.

Example: "sr-Latn" represents Serbian written using the Latin script.



 TOC 

2.2.4.  Region Subtag

Region subtags are used to indicate linguistic variations associated with or appropriate to a specific country, territory, or region. Typically, a region subtag is used to indicate regional dialects or usage, or region-specific spelling conventions. A region subtag can also be used to indicate that content is expressed in a way that is appropriate for use throughout a region, for instance, Spanish content tailored to be useful throughout Latin America.

The following rules apply to the region subtags:

  1. Region subtags MUST follow any language or script subtags and MUST precede any other type of subtag.
  2. All two-character subtags following the primary subtag were defined in the IANA registry according to the assignments found in [ISO3166‑1] (International Organization for Standardization, “ISO 3166-1:2006. Codes for the representation of names of countries and their subdivisions -- Part 1: Country codes,” November 2006.) ("Codes for the representation of names of countries and their subdivisions -- Part 1: Country codes") using the list of alpha-2 country codes, or using assignments subsequently made by the ISO 3166-1 maintenance agency or governing standardization bodies. In addition, the codes that are "exceptionally reserved" (as opposed to "assigned") in ISO 3166-1 were also defined in the registry, with the exception of 'UK', which is an exact synonym for the assigned code 'GB'.
  3. All three-character subtags consisting of digit (numeric) characters following the primary subtag were defined in the IANA registry according to the assignments found in UN Standard Country or Area Codes for Statistical Use (Statistics Division, United Nations, “Standard Country or Area Codes for Statistical Use,” June 1999.) [UN_M.49] or assignments subsequently made by the governing standards body. Note that not all of the UN M.49 codes are defined in the IANA registry. The following rules define which codes are entered into the registry as valid subtags:
    A.
    UN numeric codes assigned to 'macro-geographical (continental)' or sub-regions MUST be registered in the registry. These codes are not associated with an assigned ISO 3166-1 alpha-2 code and represent supra-national areas, usually covering more than one nation, state, province, or territory.
    B.
    UN numeric codes for 'economic groupings' or 'other groupings' MUST NOT be registered in the IANA registry and MUST NOT be used to form language tags.
    C.
    When ISO 3166-1 reassigns a code formerly used for one country or area to another country or area and that code already is present in the registry, the UN numeric code for that country or area MUST be registered in the registry as described in Section 3.4 (Stability of IANA Registry Entries) and MUST be used to form language tags that represent the country or region for which it is defined (rather than the recycled ISO 3166-1 code).
    D.
    UN numeric codes for countries or areas for which there is an associated ISO 3166-1 alpha-2 code in the registry MUST NOT be entered into the registry and MUST NOT be used to form language tags. Note that the ISO 3166-based subtag in the registry MUST actually be associated with the UN M.49 code in question.
    E.
    UN numeric codes and ISO 3166-1 alpha-2 codes for countries or areas listed as eligible for registration in [RFC4645] (Ewell, D., “Initial Language Subtag Registry,” September 2006.) but not presently registered MAY be entered into the IANA registry via the process described in Section 3.5 (Registration Procedure for Subtags). Once registered, these codes MAY be used to form language tags.
    F.
    All other UN numeric codes for countries or areas that do not have an associated ISO 3166-1 alpha-2 code MUST NOT be entered into the registry and MUST NOT be used to form language tags. For more information about these codes, see Section 3.4 (Stability of IANA Registry Entries).
  4. Note: The alphanumeric codes in Appendix X of the UN document MUST NOT be entered into the registry and MUST NOT be used to form language tags. (At the time this document was created, these values matched the ISO 3166-1 alpha-2 codes.)
  5. There MUST be at most one region subtag in a language tag and the region subtag MAY be omitted, as when it adds no distinguishing value to the tag.
  6. The region subtags 'AA', 'QM'-'QZ', 'XA'-'XZ', and 'ZZ' are reserved for private use in language tags. These subtags correspond to codes reserved by ISO 3166 for private use. These codes MAY be used for private use region subtags (instead of using a private use subtag sequence). Please refer to Section 4.6 (Considerations for Private Use Subtags) for more information on private use subtags.

"de-AT" represents German ('de') as used in Austria ('AT').

"sr-Latn-RS" represents Serbian ('sr') written using Latin script ('Latn') as used in Serbia ('RS').

"es-419" represents Spanish ('es') appropriate to the UN-defined Latin America and Caribbean region ('419').



 TOC 

2.2.5.  Variant Subtags

Variant subtags are used to indicate additional, well-recognized variations that define a language or its dialects that are not covered by other available subtags. The following rules apply to the variant subtags:

  1. Variant subtags MUST follow any language, script, or region subtags, but MUST precede any extension or private use subtag sequences.
  2. Variant subtags, as a collection, are not associated with any particular external standard. The meaning of variant subtags in the registry is defined in the course of the registration process defined in Section 3.5 (Registration Procedure for Subtags). Note that any particular variant subtag might be associated with some external standard. However, association with a standard is not required for registration.
  3. More than one variant MAY be used to form the language tag.
  4. Variant subtags MUST be registered with IANA according to the rules in Section 3.5 (Registration Procedure for Subtags) of this document before being used to form language tags. In order to distinguish variants from other types of subtags, registrations MUST meet the following length and content restrictions:
    1. Variant subtags that begin with a letter (a-z, A-Z) MUST be at least five characters long.
    2. Variant subtags that begin with a digit (0-9) MUST be at least four characters long.
  5. The same variant subtag MUST NOT be used more than once within a language tag.

Variant subtag records in the language subtag registry MAY include one or more 'Prefix' fields. The 'Prefix' indicates a sequence of subtags that would make a suitable prefix (with other subtags, as appropriate) in forming a language tag with the variant. That is, each of the subtags in the prefix SHOULD appear, in order, before the variant. For example, the subtag 'nedis' has a Prefix of "sl", making it suitable for forming language tags such as "sl-nedis" and "sl-IT-nedis", but not suitable for use in a tag such as "zh-nedis" or "it-IT-nedis".

"sl-nedis" represents the Natisone or Nadiza dialect of Slovenian.

"de-CH-1996" represents German as used in Switzerland and as written using the spelling reform beginning in the year 1996 C.E.

Most variants that share a prefix are mutually exclusive. For example, the German orthographic variations '1996' and '1901' SHOULD NOT be used in the same tag, as they represent the dates of different spelling reforms. A variant that can meaningfully be used in combination with another variant SHOULD include a 'Prefix' field in its registry record that lists that other variant. For example, if another German variant 'example' were created that made sense to use with '1996', then 'example' should include two Prefix fields: "de" and "de-1996".



 TOC 

2.2.6.  Extension Subtags

Extensions provide a mechanism for extending language tags for use in various applications. They are intended to identify information which is commonly used in association with languages or language tags, but which is not part of language identification. See Section 3.7 (Extensions and the Extensions Registry). The following rules apply to extensions:

  1. An extension MUST follow at least a primary language subtag. That is, a language tag cannot begin with an extension. Extensions extend language tags, they do not override or replace them. For example, "a-value" is not a well-formed language tag, while "de-a-value" is.
  2. Extension subtags are separated from the other subtags defined in this document by a single-character subtag ("singleton"). The singleton MUST be one allocated to a registration authority via the mechanism described in Section 3.7 (Extensions and the Extensions Registry) and MUST NOT be the letter 'x', which is reserved for private use subtag sequences.
  3. Note: Private use subtag sequences starting with the singleton subtag 'x' are described in Section 2.2.7 (Private Use Subtags) below.
  4. Each singleton subtag MUST appear at most one time in each tag (other than as a private use subtag). That is, singleton subtags MUST NOT be repeated. For example, the tag "en-a-bbb-a-ccc" is invalid because the subtag 'a' appears twice. Note that the tag "en-a-bbb-x-a-ccc" is valid because the second appearance of the singleton 'a' is in a private use sequence.
  5. Extension subtags MUST meet all of the requirements for the content and format of subtags defined in this document.
  6. Extension subtags MUST meet whatever requirements are set by the document that defines their singleton prefix and whatever requirements are provided by the maintaining authority.
  7. Each extension subtag MUST be from two to eight characters long and consist solely of letters or digits, with each subtag separated by a single '-'.
  8. Each singleton MUST be followed by at least one extension subtag. For example, the tag "tlh-a-b-foo" is invalid because the first singleton 'a' is followed immediately by another singleton 'b'.
  9. Extension subtags MUST follow all language, script, region, and variant subtags in a tag.
  10. All subtags following the singleton and before another singleton are part of the extension. Example: In the tag "fr-a-Latn", the subtag 'Latn' does not represent the script subtag 'Latn' defined in the IANA Language Subtag Registry. Its meaning is defined by the extension 'a'.
  11. In the event that more than one extension appears in a single tag, the tag SHOULD be canonicalized as described in Section 4.5 (Canonicalization of Language Tags).

For example, if the prefix singleton 'r' and the shown subtags were defined, then the following tag would be a valid example: "en-Latn-GB-boont-r-extended-sequence-x-private"



 TOC 

2.2.7.  Private Use Subtags

Private use subtags are used to indicate distinctions in language important in a given context by private agreement. The following rules apply to private use subtags:

  1. Private use subtags are separated from the other subtags defined in this document by the reserved single-character subtag 'x'.
  2. Private use subtags MUST conform to the format and content constraints defined in the ABNF for all subtags.
  3. Private use subtags MUST follow all language, script, region, variant, and extension subtags in the tag. Another way of saying this is that all subtags following the singleton 'x' MUST be considered private use. Example: The subtag 'US' in the tag "en-x-US" is a private use subtag.
  4. A tag MAY consist entirely of private use subtags.
  5. No source is defined for private use subtags. Use of private use subtags is by private agreement only.
  6. Private use subtags are NOT RECOMMENDED where alternatives exist or for general interchange. See Section 4.6 (Considerations for Private Use Subtags) for more information on private use subtag choice.

For example: The Unicode Consortium defines a set of private use extensions in LDML ([UTS35] (Davis, M., “Unicode Technical Standard #35: Locale Data Markup Language (LDML),” December 2007.), Locale Data Markup Language, the Unicode standard for defining locale data) such as in the tag "es-419-x-ldml-collatio-traditio", which indicates Latin American Spanish with traditional order for sorted lists.



 TOC 

2.2.8.  Grandfathered Registrations

Prior to RFC 4646, whole language tags were registered according to the rules in RFC 1766 and/or RFC 3066. These registered tags maintain their validity. Of those tags, those that were made obsolete or redundant by the advent of RFC 4646, by this document, or by subsequent registration of subtags are maintained in the registry in records as "redundant" records. Those tags that do not match the 'langtag' production in the ABNF in this document or that contain subtags that do not individually appear in the registry are maintained in the registry in records of the "grandfathered" type.

Grandfathered tags contain one or more subtags that are not defined in the Language Subtag Registry (see Section 3 (Registry Format and Maintenance)). Redundant tags consist entirely of subtags defined above and whose independent registration was superseded by [RFC4646] (Phillips, A. and M. Davis, “Tags for Identifying Languages,” September 2006.). For more information see Section 3.8 (Update of the Language Subtag Registry).

Some grandfathered tags are "regular" in that they match the 'langtag' production in Figure 1 (Language Tag ABNF). In some cases, these tags could become redundant if their (currently unregistered) subtags were to be registered (as variants, for example). In other cases, although the subtags match the language tag pattern, the meaning assigned to the various subtags is prohibited by rules elsewhere in this document. Those tags can never become redundant.

The remaining grandfathered tags are "irregular" and do not match the 'langtag' production. These are listed in the 'irregular' production in Figure 1 (Language Tag ABNF). These grandfathered tags can never become redundant. Many of these tags have been superseded by other registrations: their record contains a Preferred-Value field that really ought to be used to form language tags representing that value.



 TOC 

2.2.9.  Classes of Conformance

Implementations sometimes need to describe their capabilities with regard to the rules and practices described in this document. Tags can be checked or verified in a number of ways, but two particular classes of tag conformance are formally defined here.

A tag is considered "well-formed" if it conforms to the ABNF (Syntax). Language tags may be well-formed in terms of syntax but not valid in terms of content. Irregular grandfathered tags are now listed in the 'irregular' production.

A tag is considered "valid" if it satisfies these conditions:

Note that a tag's validity depends on the date of the registry used to validate the tag. A more recent copy of the registry might contain a subtag that an older version does not.

A tag is considered "valid" for a given extension (Extensions and the Extensions Registry) (as of a particular version, revision, and date) if it meets the criteria for "valid" above and also satisfies this condition:

Each subtag used in the extension part of the tag is valid according to the extension.

Older language tag implementations sometimes reference [RFC3066] (Alvestrand, H., “Tags for the Identification of Languages,” January 2001.). Again, all valid tags under that version also match this document's language tag ABNF. However, a wider array of tags could be considered "well-formed" under that document. The 'Language-Tag' production used in that document matches the following:



    obs-language-tag = primary-subtag *( "-" subtag )
    primary-subtag = 1*8ALPHA
    subtag = 1*8(ALPHA / DIGIT)
 Figure 2: RFC 3066 Language Tag Syntax 

Subtags designated for private use or private-use sequences introduced by the 'x' subtag are available for cases in which no assigned subtags are available and registration is not a suitable option. For example, one might use a tag such as "no-QQ", where 'QQ' is one of a range of private-use ISO 3166-1 codes to indicate an otherwise-undefined region. Users MUST NOT assign and use subtags that do not appear in the registry other than in private-use sequences (such the subtag 'personal' in the tag "en-x-personal"). Not only is such assignment nonconformant, it also risks collision with a future possible assignment or registration.

Note well: although the 'Language-Tag' production appearing in this document is functionally equivalent to the one in [RFC4646] (Phillips, A. and M. Davis, “Tags for Identifying Languages,” September 2006.), it has been changed to prevent certain errors in well-formedness arising from the old 'grandfathered' production. This version of the ABNF is RECOMMENDED as a replacement for the older version.



 TOC 

3.  Registry Format and Maintenance

This section defines the Language Subtag Registry and the maintenance and update procedures associated with it, as well as a registry for extensions to language tags (Section 3.7 (Extensions and the Extensions Registry)).

The Language Subtag Registry contains a comprehensive list of all of the subtags valid in language tags. This allows implementers a straightforward and reliable way to validate language tags. The Language Subtag Registry will be maintained so that, except for extension subtags, it is possible to validate all of the subtags that appear in a language tag under the provisions of this document or its revisions or successors. In addition, the meaning of the various subtags will be unambiguous and stable over time. (The meaning of private use subtags, of course, is not defined by the IANA registry.)



 TOC 

3.1.  Format of the IANA Language Subtag Registry

The IANA Language Subtag Registry ("the registry") is a machine-readable file in the format described in this section, plus copies of the registration forms approved in accordance with the process described in Section 3.5 (Registration Procedure for Subtags).

Note: The existing registration forms for grandfathered and redundant tags taken from RFC 3066 have been maintained as part of the obsolete RFC 3066 registry. The subtags added to the registry by either [RFC4645] (Ewell, D., “Initial Language Subtag Registry,” September 2006.) or [registry‑update] (Ewell, D., Ed., “Update to the Language Subtag Registry,” September 2006.) do not have separate registration forms (so no forms are archived for these additions).



 TOC 

3.1.1.  File Format

The registry consists of a series of records stored in the record-jar format (described in [record‑jar] (Raymond, E., “The Art of Unix Programming,” 2003.)). Each record, in turn, consists of a series of fields that describe the various subtags and tags. The registry is a Unicode (Unicode Consortium, “The Unicode Consortium. The Unicode Standard, Version 5.0, (Boston, MA, Addison-Wesley, 2003. ISBN 0-321-49081-0),” January 2007.) [Unicode] text file, using the UTF-8 (Yergeau, F., “UTF-8, a transformation format of ISO 10646,” November 2003.) [RFC3629] character encoding.

Each field can be considered a single, logical line of Unicode (Unicode Consortium, “The Unicode Consortium. The Unicode Standard, Version 5.0, (Boston, MA, Addison-Wesley, 2003. ISBN 0-321-49081-0),” January 2007.) [Unicode] characters, comprising a field-name and a field-body separated by a COLON character (%x3A). Each field is terminated by the newline sequence CRLF. The text in each field MUST be in Unicode Normalization Form C (NFC).

A collection of fields forms a 'record'. Records are separated by lines containing only the sequence "%%" (%x25.25).

Although fields are logically a single line of text, each line of text in the file format is limited to 72 bytes in length. To accommodate this, the field-body can be split into a multiple-line representation; this is called "folding". Folding is done according to customary conventions for line-wrapping. This is typically on whitespace boundaries, but can occur between other characters when the value does not include spaces, such as when a language does not use whitespace between words. In any event, there MUST NOT be breaks inside a multibyte UTF-8 sequence nor in the middle of a combining character sequence. For more information, see [UAX14] (Freitag, A., “Unicode Standard Annex #14: Line Breaking Properties,” August 2006.).

Although the file format uses the UTF-8 encoding fields are restricted to the printable characters from the US-ASCII (International Organization for Standardization, “ISO/IEC 646:1991, Information technology -- ISO 7-bit coded character set for information interchange.,” 1991.) [ISO646] repertoire unless otherwise indicated in the specific field description below.

The format of the registry is described by the following ABNF (per [RFC5234] (Crocker, D. and P. Overell, “Augmented BNF for Syntax Specifications: ABNF,” January 2008.)):



registry   = record *("%%" CRLF record)
record     = 1*( field-name *SP ":" *SP field-body CRLF )
field-name = (ALPHA / DIGIT) [*(ALPHA / DIGIT / "-") (ALPHA / DIGIT)]
field-body = *([[*SP CRLF] 1*SP] 1*CHARS)
CHARS      = (%x21-10FFFF)      ; Unicode code points
 Figure 3: Registry Format ABNF 

The sequence '..' (%x2E.2E) in a field-body denotes a range of values. Such a range represents all subtags of the same length that are in alphabetic or numeric order within that range, including the values explicitly mentioned. For example 'a..c' denotes the values 'a', 'b', and 'c' and '11..13' denotes the values '11', '12', and '13'.

All fields whose field-body contains a date value use the "full-date" format specified in [RFC3339] (Klyne, G., Ed. and C. Newman, “Date and Time on the Internet: Timestamps,” July 2002.). For example: "2004-06-28" represents June 28, 2004, in the Gregorian calendar.



 TOC 

3.1.2.  Record Definitions

There are three types of records in the registry: "File-Date", "Subtag", and "Tag" records.

The first record in the registry is a "File-Date" record. This record contains the single field whose field-name is "File-Date" (see Figure 3 (Registry Format ABNF)). The field-body of this record contains the last modification date of this copy of the registry, making it possible to compare different versions of the registry. The registry on the IANA website is the most current. Versions with an older date than that one are not up-to-date.



File-Date: 2004-06-28
%%
 Figure 4: Example of the File-Date Record 

Subsequent records represent either subtags or tags in the registry. "Subtag" records contain a field with a field-name of "Subtag", while, unsurprisingly, "Tag" records contain a field with a field-name of "Tag". Each of the fields in each record MUST occur no more than once, unless otherwise noted below. Each record MUST contain the following fields:

Each record MAY also contain the following fields:

Future versions of this document might add additional fields to the registry, so implementations SHOULD ignore fields found in the registry that are not defined in this document.



 TOC 

3.1.3.  Subtag and Tag Fields

The 'Subtag' field MUST NOT use uppercase letters to form the subtag, with two exceptions. Subtags whose 'Type' field is 'script' (in other words, subtags defined by ISO 15924) MUST use titlecase. Subtags whose 'Type' field is 'region' (in other words, the non-numeric region subtags defined by ISO 3166-1) MUST use all uppercase. These exceptions mirror the use of case in the underlying standards.

Each subtag in the tags contained in a 'Tag' field MUST be formatted using the rules in the preceding paragraph. That is, all subtags are lowercase except for subtags that represent script or region codes.



 TOC 

3.1.4.  Description Field

The field 'Description' contains a description of the tag or subtag in the record. The 'Description' field MAY appear more than once per record, that is, there can be multiple descriptions for a given record. The 'Description' field MAY include the full range of Unicode characters. At least one of the 'Description' fields MUST be written or transcribed into the Latin script; additional 'Description' fields MAY also include a description in a non-Latin script. Each 'Description' field MUST be unique, both within the record in which it appears and for the collection of records of the same type. Moreover, formatting variations of the same description MUST NOT occur in that specific record or in any other record of the same type. For example, while the ISO 639-1 code 'fy' contains both the descriptions "Western Frisian" and "Frisian, Western", only one of these descriptions appears in the registry.

The 'Description' field is used for identification purposes. It doesn't necessarily represent the actual native name of the item in the record, nor are any of the descriptions guaranteed to be in any particular language (such as English or French, for example).

For subtags taken from a source standard (such as ISO 639 or ISO 15924), the 'Description' value(s) SHOULD also be taken from the source standard. Multiple descriptions in the source standard MUST be split into separate 'Description' fields. The source standard's descriptions MAY be edited, either prior to insertion or via the registration process. For fields of type 'language', the first 'Description' field appearing in the Registry corresponds whenever possible to the Reference Name assigned by ISO 639-3. This helps facilitate cross-referencing between ISO 639 and the registry.

When creating or updating a record due to the action of one of the source standards, the Language Subtag Reviewer SHOULD remove duplicate or redundant descriptions and MAY edit descriptions to correct irregularities in formatting (such as misspellings, inappropriate apostrophes or other punctuation, or excessive or missing spaces) prior to submitting the proposed record to the ietf-languages list.

Note: Descriptions in registry entries that correspond to ISO 639, ISO 15924, ISO 3166-1, or UN M.49 codes are intended only to indicate the meaning of that identifier as defined in the source standard at the time it was added to the registry. The description does not replace the content of the source standard itself. The descriptions are not intended to be the localized English names for the subtags. Localization or translation of language tag and subtag descriptions is out of scope of this document.

Descriptions SHOULD contain all and only that information necessary to distinguish one subtag from others that it might be confused with. They are not intended to provide general background information, nor to provide all possible alternate names or designations.



 TOC 

3.1.5.  Deprecated Field

The field 'Deprecated' MAY be added, changed, or removed from any record via the maintenance process described in Section 3.3 (Maintenance of the Registry) or via the registration process described in Section 3.5 (Registration Procedure for Subtags). Usually, the addition of a 'Deprecated' field is due to the action of one of the standards bodies, such as ISO 3166, withdrawing a code. Although valid in language tags, subtags and tags with a 'Deprecated' field are deprecated and validating processors SHOULD NOT generate these subtags. Note that a record that contains a 'Deprecated' field and no corresponding 'Preferred-Value' field has no replacement mapping.

In some historical cases, it might not have been possible to reconstruct the original deprecation date. For these cases, an approximate date appears in the registry. Some subtags and some grandfathered or redundant tags were deprecated before the initial creation of the registry. The exact rules for this appear in Section 2 of [RFC4645] (Ewell, D., “Initial Language Subtag Registry,” September 2006.). Note that these records have a 'Deprecated' field with an earlier date then the corresponding 'Added' field!



 TOC 

3.1.6.  Preferred-Value Field

The field 'Preferred-Value' contains a mapping between the record in which it appears and another tag or subtag. The value in this field is strongly RECOMMENDED as the best choice to represent the value of this record when selecting a language tag. These values form three groups:

  1. ISO 639 language codes that were later withdrawn in favor of other codes. These values are mostly a historical curiosity.
  2. Subtags (other than language codes) taken from codes or values that have been withdrawn in favor of a new code. In particular, this applies to region subtags taken from ISO 3166-1, because sometimes a country will change its name or administration in such a way that warrants a new region code. In some cases, countries have reverted to an older name, which might already be encoded.
  3. Tags or subtags that have become obsolete because the values they represent were later encoded. Many of the grandfathered or redundant tags were later encoded by ISO 639, for example, and fit this pattern.

Records that contain a 'Preferred-Value' field MUST also have a 'Deprecated' field. This field contains the date on which the tag or subtag was deprecated in favor of the preferred value.

Note that 'Preferred-Value' mappings in records of type 'region' sometimes do not represent exactly the same meaning as the original value. There are many reasons for a country code to be changed, and the effect this has on the formation of language tags will depend on the nature of the change in question.

A 'Preferred-Value' MAY be added to, changed, or removed from records according to the rules in Section 3.3 (Maintenance of the Registry). Addition, modification, or removal of a 'Preferred-Value' field in a record does not imply that content using the affected subtag needs to be retagged.

The 'Preferred-Value' field in records of type "grandfathered" and "redundant" contains language ranges that are strongly RECOMMENDED for use in place of the record's value. In many cases, these mappings were created via deprecation of the tags during the period before [RFC4646] (Phillips, A. and M. Davis, “Tags for Identifying Languages,” September 2006.) was adopted. For example, the tag "no-nyn" was deprecated in favor of the ISO 639-1-defined language code 'nn'.

The 'Preferred-Value' field in subtag records of type "extlang" use the same format as grandfathered or redundant tags. This allows the subtag to be deprecated in favor of either a single primary language subtag or a new language-extlang sequence.

Usually the addition, removal, or change of a Preferred-Value field for a subtag is done to reflect changes in one of the source standards. For example, if an ISO 3166-1 region code is deprecated in favor of another code, that SHOULD result in the addition of a Preferred-Value field.

Changes to one subtag MAY affect other subtags as well: when proposing changes to the registry, the Language Subtag Reviewer will review the registry for such effects and propose the necessary changes using the process in Section 3.5 (Registration Procedure for Subtags), although anyone MAY request such changes. For example:

Suppose that subtag 'XX' has a Preferred-Value of 'YY'. If 'YY' later changes to have a Preferred-Value of 'ZZ', then the Preferred-Value for 'XX' MUST also change to be 'ZZ'.

Suppose that a registered language subtag 'dialect' represents a language not yet available in any part of ISO 639. The later addition of a corresponding language code in ISO 639 SHOULD result in the addition of a Preferred-Value for 'dialect'.



 TOC 

3.1.7.  Prefix Field

The 'Prefix' field contains an extended language range whose subtags are appropriate to use with this subtag: each of the subtags in one of the subtag's Prefix fields SHOULD appear before the variant in a valid tag. For example, the variant subtag '1996' has a 'Prefix' field of "de". This means that tags starting with the sequence "de-" are appropriate with this subtag, so "de-Latg-1996" and "de-CH-1996" are both acceptable, while the tag "fr-1996" is an inappropriate choice.

The field of type 'Prefix' MUST NOT be removed from any record. The field-body for this type of field MAY be modified, but only if the modification broadens the meaning of the subtag. That is, the field-body can be replaced only by a prefix of itself. For example, the Prefix "be-Latn" (Belarusian, Latin script) could be replaced by the Prefix "be" (Belarusian) but not by the Prefix "ru-Latn" (Russian, Latin script).

Records of type 'variant' MAY have more than one field of type 'Prefix'. Additional fields of this type MAY be added to a 'variant' record via the registration process. Fields of type 'extlang' MUST have exactly one Prefix field.

The field-body of the 'Prefix' field MUST NOT conflict with any 'Prefix' already registered for a given record. Such a conflict would occur when no valid tag could be constructed that would contain the prefix, such as when two subtags each have a 'Prefix' that contains the other subtag. For example, suppose that the subtag 'avariant' has the prefix "es-bvariant". Then the subtag 'bvariant' cannot given the prefix 'avariant', for that would require a tag of the form "es-avariant-bvariant-avariant", which would not be valid.



 TOC 

3.1.8.  Suppress-Script Field

The field 'Suppress-Script' contains a script subtag (whose record appears in the registry). The field 'Suppress-Script' MUST only appear in records whose 'Type' field-body is 'language'. This field MUST NOT appear more than one time in a record. This field indicates a script used to write the overwhelming majority of documents for the given language. This script code therefore adds no distinguishing information to a language tag. This helps ensure greater compatibility between the language tags generated according to the rules in this document and language tags and tag processors or consumers based on RFC 3066 by indicating that the script subtag SHOULD NOT be used for most documents in that language. For example, virtually all Icelandic documents are written in the Latin script, making the subtag 'Latn' redundant in the tag "is-Latn".

Many language subtag records do not have a Suppress-Script field. The lack of a Suppress-Script might indicate that the language is customarily written in more than one script or that the language is not customarily written at all. It might also mean that sufficient information was not available when the record was created and thus remains a candidate for future registration.



 TOC 

3.1.9.  Macrolanguage Field

The field 'Macrolanguage' contains a primary language subtag (whose record appears in the registry). This field indicates a language that encompasses this subtag's language according to assignments made by ISO 639-3.

ISO 639-3 labels some languages in the registry as "macrolanguages". ISO 639-3 defines the term "Macrolanguage" to mean "clusters of closely-related language varieties that [...] can be considered distinct individual languages, yet in certain usage contexts a single language identity for all is needed". These correspond to codes registered in ISO 639-2 as individual languages that were found to correspond to more than one language in ISO 639-3.

A language contained within a macrolanguage is called an "encompassed language". The record for each encompassed language contains a 'Macrolanguage' field in the registry; the macrolanguages themselves are not specially marked. Note that some encompassed languages have ISO 639-1 or ISO 639-2 codes.

The Macrolanguage field can only occur in records of type 'language' or 'extlang'. Only values assigned by ISO 639-3 will be considered for inclusion. Macrolanguage fields MAY be added or removed via the normal registration process whenever ISO 639-3 defines new values or withdraws old values. Macrolanguages are informational, and MAY be removed or changed if ISO 639-3 changes the values. For more information on the use of this field and choosing between macrolanguage and encompassed language subtags, see Section 4.1.1 (Tagging Encompassed Languages).

For example, the language subtags 'nb' (Norwegian Bokmal) and 'nn' (Norwegian Nynorsk) each have a Macrolanguage entry of 'no' (Norwegian). For more information see Section 4.1 (Choice of Language Tag).



 TOC 

3.1.10.  Scope Field

The field 'Scope' contains classification information about a primary or extended language subtag derived from ISO 639. This information can sometimes be helpful in selecting language tags, since it indicates the purpose of the code assignment within ISO 639. The available values are:

The Scope field MUST appear in all records of type 'language' or 'extlang'. Records of type 'extlang' MUST NOT include a value other than 'individual'. Note that most of the prefixes for extended language subtags will have a Scope of 'macrolanguage' (although some will not).

The Scope fied MAY be modified via the registration process, should ISO 639 change the assignment's classification. Such a change is expected to be rare.

For example, the primary language subtag 'zh' (Chinese) has a Scope of 'macrolanguage', while its enclosed language 'nan' (Min Nan Chinese) has a Scope of 'individual'. The special value 'und' (Undetermined) has a Scope of 'special'. The ISO 639-5 collection 'gem' (Germanic languages) has a Scope of 'collection'.



 TOC 

3.1.11.  Comments Field

The field 'Comments' conveys additional information about the record and MAY appear more than once per record. The field-body MAY include the full range of Unicode characters and is not restricted to any particular script. This field MAY be inserted or changed via the registration process and no guarantee of stability is provided.

The content of this field is not restricted, except by the need to register the information, the suitability of the request, and by reasonable practical size limitations. The primary reason for the Comments field is subtag identification: to help distinguish the subtag from others with which it might be confused. In particular, large amounts of information about the use, history, or general background of a subtag are frowned upon as these generally belong and are encouraged in registration request forms themselves, but do not belong in the registry record proper.



 TOC 

3.2.  Language Subtag Reviewer

The Language Subtag Reviewer moderates the ietf-languages mailing list, responds to requests for registration, and performs the other registry maintenance duties described in Section 3.3 (Maintenance of the Registry). Only the Language Subtag Reviewer is permitted to request IANA to change, update, or add records to the Language Subtag Registry. The Language Subtag Reviewer MAY delegate list moderation and other clerical duties as needed.

The Language Subtag Reviewer is appointed by the IESG for an indefinite term, subject to removal or replacement at the IESG's discretion. The IESG will solicit nominees for the position (upon adoption of this document or upon a vacancy) and then solicit feedback on the nominees' qualifications. Qualified candidates should be familiar with BCP 47 and its requirements; be willing to fairly, responsively, and judiciously administer the registration process; and be suitably informed about the issues of language identification so that the reviewer can assess the claims and draw upon the contributions of language experts and subtag requesters.

The subsequent performance or decisions of the Language Subtag Reviewer MAY be appealed to the IESG under the same rules as other IETF decisions (see [RFC2026] (Bradner, S., “The Internet Standards Process -- Revision 3,” October 1996.)). The IESG can reverse or overturn the decisions of the Language Subtag Reviewer, provide guidance, or take other appropriate actions.



 TOC 

3.3.  Maintenance of the Registry

Maintenance of the registry requires that as codes are assigned or withdrawn by ISO 639, ISO 15924, ISO 3166, and UN M.49, the Language Subtag Reviewer MUST evaluate each change and determine the appropriate course of action according to the rules in this document. Such updates follow the registration process described in Section 3.5 (Registration Procedure for Subtags). Usually the Language Subtag Reviewer will start the process for the new or updated record by filling in the registration form and submitting it. If a change to one of these standards takes place and the Language Subtag Reviewer does not do this in a timely manner, then any interested party MAY submit the form. Thereafter the registration process continues normally.

Note that some registrations affect other subtags--perhaps more than one--as when a region subtag is being deprecated in favor of a new value. The Language Subtag Reviewer is responsible for ensuring that any such changes are properly registered, with each change requiring its own registration form.

The Language Subtag Reviewer MUST ensure that new subtags meet the requirements elsewhere in this document (and most especially in Section 3.4 (Stability of IANA Registry Entries)) or submit an appropriate registration form for an alternate subtag as described in that section. Each individual subtag affected by a change MUST be sent to the ietf-languages list with its own registration form and in a separate message.



 TOC 

3.4.  Stability of IANA Registry Entries

The stability of entries and their meaning in the registry is critical to the long-term stability of language tags. The rules in this section guarantee that a specific language tag's meaning is stable over time and will not change.

These rules specifically deal with how changes to codes (including withdrawal and deprecation of codes) maintained by ISO 639, ISO 15924, ISO 3166, and UN M.49 are reflected in the IANA Language Subtag Registry. Assignments to the IANA Language Subtag Registry MUST follow the following stability rules:

  1. Values in the fields 'Type', 'Subtag', 'Tag', and 'Added' MUST NOT be changed and are guaranteed to be stable over time.
  2. Values in the fields 'Preferred-Value' and 'Deprecated' MAY be added, altered, or removed via the registration process. These changes SHOULD be limited to changes necessary to mirror changes in one of the underlying standards (ISO 639, ISO 15924, ISO 3166-1, or UN M.49) and typically alteration or removal of a Preferred-Value is limited specifically to region codes.
  3. Values in the 'Description' field MUST NOT be changed in a way that would invalidate previously-existing tags. They MAY be broadened somewhat in scope, changed to add information, or adapted to the most common modern usage. For example, countries occasionally change their names; a historical example of this would be "Upper Volta" changing to "Burkina Faso".
  4. The field 'Prefix' MUST NOT be removed from any record in which it appears. This field SHOULD be included in the initial registration of any records of type 'variant' and MUST be included in any records of type 'extlang'.
  5. Values in the field 'Prefix' MAY be added to existing records of type 'variant' via the registration process. If a prefix is added to a variant record, 'Comment' fields SHOULD be used to explain different usages with the various prefixes.
  6. Values in the field 'Prefix' in records of type 'variant' MAY also be modified, so long as the modifications broaden the set of prefixes. That is, a prefix MAY be replaced by one of its own prefixes. For example, the prefix "en-US" could be replaced by "en", but not by the prefixes "en-Latn", "fr", or "en-US-boont". If one of those prefixes were needed, a new Prefix SHOULD be registered.
  7. Values in the field 'Prefix' in records of type 'extlang' MUST NOT be added, modified, or removed.
  8. The field 'Comments' MAY be added, changed, modified, or removed via the registration process or any of the processes or considerations described in this section.
  9. The field 'Suppress-Script' MAY be added or removed via the registration process.
  10. The field 'Macrolanguage' MAY be added or removed via the registration process, but only in response to changes made by ISO 639. The Macrolanguage field appears whenever a language has a corresponding Macrolanguage in ISO 639. That is, the Macrolanguage fields in the registry exactly match those of ISO 639. No other macrolanguage mappings will be considered for registration.
  11. The field 'Scope' MUST NOT be added or removed from a primary or extended language subtag after initial registration, howeiver it MAY be modified in order to match any changes made by ISO 639.
  12. Primary and extended language subtags (other than independently registered values created using the registration process) are created according to the assignments of the various parts of ISO 639, as follows:
    1. Codes assigned by ISO 639-1 that do not conflict with existing two-letter primary language subtags and which have no corresponding three-letter primary defined in the registry are entered into the IANA registry as new records of type 'language'. Note that languages given an ISO 639-1 code cannot be extended language subtags, even if enclosed by a macrolanguage.
    2. Codes assigned by ISO 639-3 or ISO 639-5 that do not conflict with existing three-letter primary language subtags and which do not have ISO 639-1 codes assigned (or expected to be assigned) are entered into the IANA registry as new records of type 'language'. Codes that have a defined "macrolanguage" mapping at the time of their registration MUST contain a "Macrolanguage" field.
    3. Codes assigned by ISO 639-3 MAY also be considered for an extended language subtag registration. Note that they MUST be assigned a primary language subtag record of type 'language' even when an 'extlang' record is proposed. When considering extended language subtag assignment, these criteria apply:
      1. Languages whose macrolanguage mapping at the time of their creation that maps to a language that has extended language records assigned SHOULD have an 'extlang' record. For example, any language with a macrolanguage of 'zh' or 'ar'.
      2. 'Extlang' records SHOULD NOT be created for languages if other languages enclosed by the macrolanguage do not also include 'extlang' records. For example, if a new Serbo-Croatian ('sh') language were registered, it would not get an extlang record because other languages enclosed such as Serbian ('sr') do not include one in the registry.
      3. Sign languages SHOULD have an 'extlang' record with a 'Prefix' of 'sgn'.
      4. 'Extlang' records MUST NOT be created for items already in the registry. Extended language subtags will only be considered at the time of initial registration.
      5. Extended language subtag records MUST include the fields 'Prefix', 'Deprecated', and 'Preferred-Value' with field-values assigned as described in Section 2.2.2 (Extended Language Subtags).
    4. Any other codes assigned by ISO 639-2 that do not conflict with existing three-letter primary or extended language subtags and which do not have ISO 639-1 two-letter codes assigned are entered into the IANA registry as new records of type 'language'. This type of registration is not supposed to occur in the future.
  13. Codes assigned by ISO 15924 and ISO 3166-1 that do not conflict with existing subtags of the associated type and whose meaning is not the same as an existing subtag of the same type are entered into the IANA registry as new records.
  14. Codes assigned by ISO 639, ISO 15924, or ISO 3166-1 that are withdrawn by their respective maintenance or registration authority remain valid in language tags. A 'Deprecated' field containing the date of withdrawal MUST be added to the record. If a new record of the same type is added that represents a replacement value, then a 'Preferred-Value' field MAY also be added. The registration process MAY be used to add comments about the withdrawal of the code by the respective standard.
    Example
    The region code 'TL' was assigned to the country 'Timor-Leste', replacing the code 'TP' (which was assigned to 'East Timor' when it was under administration by Portugal). The subtag 'TP' remains valid in language tags, but its record contains the a 'Preferred-Value' of 'TL' and its field 'Deprecated' contains the date the new code was assigned ('2004-07-06').
  15. Codes assigned by ISO 639, ISO 15924, or ISO 3166-1 that conflict with existing subtags of the associated type, including subtags that are deprecated, MUST NOT be entered into the registry. The following additional considerations apply to subtag values that are reassigned:
    A.
    For ISO 639 codes, if the newly assigned code's meaning is not represented by a subtag in the IANA registry, the Language Subtag Reviewer, as described in Section 3.5 (Registration Procedure for Subtags), SHALL prepare a proposal for entering in the IANA registry as soon as practical a registered language subtag as an alternate value for the new code. The form of the registered language subtag will be at the discretion of the Language Subtag Reviewer and MUST conform to other restrictions on language subtags in this document.
    B.
    For all subtags whose meaning is derived from an external standard (that is, by ISO 639, ISO 15924, ISO 3166-1, or UN M.49), if a new meaning is assigned to an existing code and the new meaning broadens the meaning of that code, then the meaning for the associated subtag MAY be changed to match. The meaning of a subtag MUST NOT be narrowed, however, as this can result in an unknown proportion of the existing uses of a subtag becoming invalid. Note: ISO 639 registration authority (RA) has adopted a similar stability policy.
    C.
    For ISO 15924 codes, if the newly assigned code's meaning is not represented by a subtag in the IANA registry, the Language Subtag Reviewer, as described in Section 3.5 (Registration Procedure for Subtags), SHALL prepare a proposal for entering in the IANA registry as soon as practical a registered variant subtag as an alternate value for the new code. The form of the registered variant subtag will be at the discretion of the Language Subtag Reviewer and MUST conform to other restrictions on variant subtags in this document.
    D.
    For ISO 3166-1 codes, if the newly assigned code's meaning is associated with the same UN M.49 code as another 'region' subtag, then the existing region subtag remains as the preferred value for that region and no new entry is created. A comment MAY be added to the existing region subtag indicating the relationship to the new ISO 3166-1 code.
    E.
    For ISO 3166-1 codes, if the newly assigned code's meaning is associated with a UN M.49 code that is not represented by an existing region subtag, then the Language Subtag Reviewer, as described in Section 3.5 (Registration Procedure for Subtags), SHALL prepare a proposal for entering the appropriate UN M.49 country code as an entry in the IANA registry.
    F.
    For ISO 3166-1 codes, if there is no associated UN numeric code, then the Language Subtag Reviewer SHALL petition the UN to create one. If there is no response from the UN within ninety days of the request being sent, the Language Subtag Reviewer SHALL prepare a proposal for entering in the IANA registry as soon as practical a registered variant subtag as an alternate value for the new code. The form of the registered variant subtag will be at the discretion of the Language Subtag Reviewer and MUST conform to other restrictions on variant subtags in this document. This situation is very unlikely to ever occur.
  16. UN M.49 has codes for both countries and areas (such as '276' for Germany) and geographical regions and sub-regions (such as '150' for Europe). UN M.49 country or area codes for which there is no corresponding ISO 3166-1 code SHOULD NOT be registered, except as a surrogate for an ISO 3166-1 code that is blocked from registration by an existing subtag. If such a code becomes necessary, then the registration authority for ISO 3166-1 SHOULD first be petitioned to assign a code to the region. If the petition for a code assignment by ISO 3166-1 is refused or not acted on in a timely manner, the registration process described in Section 3.5 (Registration Procedure for Subtags) MAY then be used to register the corresponding UN M.49 code. This way, UN M.49 codes remain available as the value of last resort in cases where ISO 3166-1 reassigns a deprecated value in the registry.
  17. Stability provisions apply to grandfathered tags with this exception: should it become possible to compose one of the grandfathered tags from registered subtags, then the field 'Type' in that record is changed from 'grandfathered' to 'redundant'. Note that this will not affect language tags that match the grandfathered tag, since these tags will now match valid generative subtag sequences. For example, the variant subtag '1901' is registered, making the formerly-grandfathered tags such as "de-1901" and "de-AT-1901" redundant as a result. Of course, these tags, where applied to existing content or in existing implementations, remain valid (all of their subtags are in the registry, after all), while new tags or applications using these subtags become possible.

Note: The redundant and grandfathered entries together are the complete list of tags registered under [RFC3066] (Alvestrand, H., “Tags for the Identification of Languages,” January 2001.). The redundant tags are those that can now be formed using the subtags defined in the registry together with the rules of Section 2.2 (Language Subtag Sources and Interpretation). The grandfathered entries include those that can never be legal under those same provisions plus those tags that contain subtags not yet registered or, perhaps, inappropriate for registration.

The set of redundant and grandfathered tags is permanent and stable: new entries in this section MUST NOT be added and existing entries MUST NOT be removed. Records of type 'grandfathered' MAY have their type converted to 'redundant'; see item 12 in Section 3.6 (Possibilities for Registration) for more information. The decision-making process about which tags were initially grandfathered and which were made redundant is described in [RFC4645] (Ewell, D., “Initial Language Subtag Registry,” September 2006.).

RFC 3066 tags that were deprecated prior to the adoption of [RFC4646] (Phillips, A. and M. Davis, “Tags for Identifying Languages,” September 2006.) are part of the list of grandfathered tags, and their component subtags were not included as registered variants (although they remain eligible for registration). For example, the tag "art-lojban" was deprecated in favor of the language subtag 'jbo'.



 TOC 

3.5.  Registration Procedure for Subtags

The procedure given here MUST be used by anyone who wants to use a subtag not currently in the IANA Language Subtag Registry.

Only subtags of type 'language' and 'variant' will be considered for independent registration of new subtags. Subtags needed for stability and subtags necessary to keep the registry synchronized with ISO 639, ISO 15924, ISO 3166, and UN M.49 within the limits defined by this document also use this process, as described in Section 3.3 (Maintenance of the Registry). Stability provisions are described in Section 3.4 (Stability of IANA Registry Entries).

This procedure MAY also be used to register or alter the information for the 'Comments', 'Deprecated', 'Description', 'Prefix', 'Preferred-Value', or 'Suppress-Script' fields in a subtag's record as described in Section 3.4 (Stability of IANA Registry Entries). Changes to all other fields in the IANA registry are NOT permitted.

Registering a new subtag or requesting modifications to an existing tag or subtag starts with the requester filling out the registration form reproduced below. Note that each response is not limited in size so that the request can adequately describe the registration. The fields in the "Record Requested" section SHOULD follow the requirements in Section 3.1 (Format of the IANA Language Subtag Registry).


LANGUAGE SUBTAG REGISTRATION FORM
1. Name of requester:
2. E-mail address of requester:
3. Record Requested:

   Type:
   Subtag:
   Description:
   Prefix:
   Preferred-Value:
   Deprecated:
   Suppress-Script:
   Macrolanguage:
   Comments:

4. Intended meaning of the subtag:
5. Reference to published description
   of the language (book or article):
6. Any other relevant information:

 Figure 5: The Language Subtag Registration Form 

Examples of completed registration forms can be found in Appendix C (Examples of Registration Forms) or online at http://www.iana.org/assignments/lang-subtags-templates/.

The subtag registration form MUST be sent to <ietf-languages@iana.org> for a two-week review period before it can be submitted to IANA. If modifications are made to the request during the course of the registration process (such as corrections to meet the requirements in Section 3.1 (Format of the IANA Language Subtag Registry)) the modified form MUST also be sent to <ietf-languages@iana.org> at least one week prior to submission to IANA.

The ietf-languages list is an open list and can be joined by sending a request to <ietf-languages-request@iana.org>. The list can be hosted by IANA or by any third party at the request of IESG.

Before forwarding a new registration to IANA, the Language Subtag Reviewer MUST ensure that all requirements in this document are met and that values in the 'Subtag' field match case according to the description in Section 3.1 (Format of the IANA Language Subtag Registry). The Reviewer MUST also ensure that an appropriate File-Date record is included in the request, to assist IANA when updating the registry (see Section 5.1 (Language Subtag Registry)).

Some fields in both the registration form as well as the registry record itself permit the use of non-ASCII characters. Registration requests SHOULD use the UTF-8 encoding for consistency and clarity. However, since some mail clients do not support this encoding, other encodings MAY be used for the registration request. The Language Subtag Reviewer is responsible for ensuring that the proper Unicode characters appear in both the archived request form and the registry record. In the case of a transcription or encoding error by IANA, the Language Subtag Reviewer will request that the registry be repaired, providing any necessary information to assist IANA.

Extended language subtags (type 'extlang'), by definition, are always enclosed by another language. All records of type 'extlang' MUST, therefore, contain a 'Prefix' field at the time of registration. This prefix value can never be altered or removed.

Variant subtags are usually registered for use with a particular range of language tags. For example, the subtag 'rozaj' is intended for use with language tags that start with the primary language subtag "sl", since Resian is a dialect of Slovenian. Thus, the subtag 'rozaj' would be appropriate in tags such as "sl-Latn-rozaj" or "sl-IT-rozaj". This information is stored in the 'Prefix' field in the registry. Variant registration requests SHOULD include at least one 'Prefix' field in the registration form.

The 'Prefix' field for a given registered variant subtag exists in the IANA registry as a guide to usage. Additional prefixes MAY be added by filing an additional registration form. In that form, the "Any other relevant information:" field MUST indicate that it is the addition of a prefix.

Requests to add a 'Prefix' field to a variant subtag that imply a different semantic meaning SHOULD be rejected. For example, a request to add the prefix "de" to the subtag '1994' so that the tag "de-1994" represented some German dialect or orthographic form would be rejected. The '1994' subtag represents a particular Slovenian orthography and the additional registration would change or blur the semantic meaning assigned to the subtag. A separate subtag SHOULD be proposed instead.

The 'Description' field MUST contain a description of the tag being registered written or transcribed into the Latin script; it MAY also include a description in a non-Latin script. The 'Description' field is used for identification purposes and doesn't necessarily represent the actual native name of the language or variation or to be in any particular language.

While the 'Description' field itself is not guaranteed to be stable and errata corrections MAY be undertaken from time to time, attempts to provide translations or transcriptions of entries in the registry itself will probably be frowned upon by the community or rejected outright, as changes of this nature have an impact on the provisions in Section 3.4 (Stability of IANA Registry Entries).

When the two-week period has passed, the Language Subtag Reviewer MUST take one of the following actions: