Home | History | Annotate | Line # | Download | only in rfc
rfc3866.txt revision 1.1.1.1.2.2
      1  1.1.1.1.2.2  yamt 
      2  1.1.1.1.2.2  yamt 
      3  1.1.1.1.2.2  yamt 
      4  1.1.1.1.2.2  yamt 
      5  1.1.1.1.2.2  yamt 
      6  1.1.1.1.2.2  yamt 
      7  1.1.1.1.2.2  yamt Network Working Group                                   K. Zeilenga, Ed.
      8  1.1.1.1.2.2  yamt Request for Comments: 3866                           OpenLDAP Foundation
      9  1.1.1.1.2.2  yamt Obsoletes: 2596                                                July 2004
     10  1.1.1.1.2.2  yamt Category: Standards Track
     11  1.1.1.1.2.2  yamt 
     12  1.1.1.1.2.2  yamt 
     13  1.1.1.1.2.2  yamt                     Language Tags and Ranges in the
     14  1.1.1.1.2.2  yamt               Lightweight Directory Access Protocol (LDAP)
     15  1.1.1.1.2.2  yamt 
     16  1.1.1.1.2.2  yamt Status of this Memo
     17  1.1.1.1.2.2  yamt 
     18  1.1.1.1.2.2  yamt    This document specifies an Internet standards track protocol for the
     19  1.1.1.1.2.2  yamt    Internet community, and requests discussion and suggestions for
     20  1.1.1.1.2.2  yamt    improvements.  Please refer to the current edition of the "Internet
     21  1.1.1.1.2.2  yamt    Official Protocol Standards" (STD 1) for the standardization state
     22  1.1.1.1.2.2  yamt    and status of this protocol.  Distribution of this memo is unlimited.
     23  1.1.1.1.2.2  yamt 
     24  1.1.1.1.2.2  yamt Copyright Notice
     25  1.1.1.1.2.2  yamt 
     26  1.1.1.1.2.2  yamt    Copyright (C) The Internet Society (2004).
     27  1.1.1.1.2.2  yamt 
     28  1.1.1.1.2.2  yamt Abstract
     29  1.1.1.1.2.2  yamt 
     30  1.1.1.1.2.2  yamt    It is often desirable to be able to indicate the natural language
     31  1.1.1.1.2.2  yamt    associated with values held in a directory and to be able to query
     32  1.1.1.1.2.2  yamt    the directory for values which fulfill the user's language needs.
     33  1.1.1.1.2.2  yamt    This document details the use of Language Tags and Ranges in the
     34  1.1.1.1.2.2  yamt    Lightweight Directory Access Protocol (LDAP).
     35  1.1.1.1.2.2  yamt 
     36  1.1.1.1.2.2  yamt 1.  Background and Intended Use
     37  1.1.1.1.2.2  yamt 
     38  1.1.1.1.2.2  yamt    The Lightweight Directory Access Protocol (LDAP) [RFC3377] provides a
     39  1.1.1.1.2.2  yamt    means for clients to interrogate and modify information stored in a
     40  1.1.1.1.2.2  yamt    distributed directory system.  The information in the directory is
     41  1.1.1.1.2.2  yamt    maintained as attributes of entries.  Most of these attributes have
     42  1.1.1.1.2.2  yamt    syntaxes which are human-readable strings, and it is desirable to be
     43  1.1.1.1.2.2  yamt    able to indicate the natural language associated with attribute
     44  1.1.1.1.2.2  yamt    values.
     45  1.1.1.1.2.2  yamt 
     46  1.1.1.1.2.2  yamt    This document describes how language tags and ranges [RFC3066] are
     47  1.1.1.1.2.2  yamt    carried in LDAP and are to be interpreted by LDAP implementations.
     48  1.1.1.1.2.2  yamt    All LDAP implementations MUST be prepared to accept language tags and
     49  1.1.1.1.2.2  yamt    ranges.
     50  1.1.1.1.2.2  yamt 
     51  1.1.1.1.2.2  yamt    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
     52  1.1.1.1.2.2  yamt    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
     53  1.1.1.1.2.2  yamt    document are to be interpreted as described in BCP 14 [RFC2119].
     54  1.1.1.1.2.2  yamt 
     55  1.1.1.1.2.2  yamt 
     56  1.1.1.1.2.2  yamt 
     57  1.1.1.1.2.2  yamt 
     58  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                     [Page 1]
     59  1.1.1.1.2.2  yamt 
     61  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
     62  1.1.1.1.2.2  yamt 
     63  1.1.1.1.2.2  yamt 
     64  1.1.1.1.2.2  yamt    This document replaces RFC 2596.  Appendix A summaries changes made
     65  1.1.1.1.2.2  yamt    since RFC 2596.
     66  1.1.1.1.2.2  yamt 
     67  1.1.1.1.2.2  yamt    Appendix B discusses differences from X.500(1997) "contexts"
     68  1.1.1.1.2.2  yamt    mechanism.
     69  1.1.1.1.2.2  yamt 
     70  1.1.1.1.2.2  yamt    Appendix A and B are provided for informational purposes only.
     71  1.1.1.1.2.2  yamt 
     72  1.1.1.1.2.2  yamt    The remainder of this section provides a summary of Language Tags,
     73  1.1.1.1.2.2  yamt    Language Ranges, and Attribute Descriptions.
     74  1.1.1.1.2.2  yamt 
     75  1.1.1.1.2.2  yamt 1.1.  Language Tags
     76  1.1.1.1.2.2  yamt 
     77  1.1.1.1.2.2  yamt    Section 2 of BCP 47 [RFC3066] describes the language tag format which
     78  1.1.1.1.2.2  yamt    is used in LDAP.  Briefly, it is a string of [ASCII] letters and
     79  1.1.1.1.2.2  yamt    hyphens.  Examples include "fr", "en-US" and "ja-JP".  Language tags
     80  1.1.1.1.2.2  yamt    are case insensitive.  That is, the language tag "en-us" is the same
     81  1.1.1.1.2.2  yamt    as "EN-US".
     82  1.1.1.1.2.2  yamt 
     83  1.1.1.1.2.2  yamt    Section 2 of this document details use of language tags in LDAP.
     84  1.1.1.1.2.2  yamt 
     85  1.1.1.1.2.2  yamt 1.2.  Language Ranges
     86  1.1.1.1.2.2  yamt 
     87  1.1.1.1.2.2  yamt    Section 2.5 of BCP 47 [RFC3066] describes the language ranges.
     88  1.1.1.1.2.2  yamt    Language ranges are used to specify sets of language tags.
     89  1.1.1.1.2.2  yamt 
     90  1.1.1.1.2.2  yamt    A language range matches a language tag if it is exactly equal to the
     91  1.1.1.1.2.2  yamt    tag, or if it is exactly equal to a prefix of the tag such that the
     92  1.1.1.1.2.2  yamt    first character following the prefix is "-".  That is, the language
     93  1.1.1.1.2.2  yamt    range "de" matches the language tags "de" and "de-CH" but not "den".
     94  1.1.1.1.2.2  yamt    The special language range "*" matches all language tags.
     95  1.1.1.1.2.2  yamt 
     96  1.1.1.1.2.2  yamt    Due to attribute description option naming restrictions in LDAP, this
     97  1.1.1.1.2.2  yamt    document defines a different language range syntax.  However, the
     98  1.1.1.1.2.2  yamt    semantics of language ranges in LDAP are consistent with BCP 47.
     99  1.1.1.1.2.2  yamt 
    100  1.1.1.1.2.2  yamt    Section 3 of this document details use of language ranges in LDAP.
    101  1.1.1.1.2.2  yamt 
    102  1.1.1.1.2.2  yamt 1.3.  Attribute Descriptions
    103  1.1.1.1.2.2  yamt 
    104  1.1.1.1.2.2  yamt    This section provides an overview of attribute descriptions in LDAP.
    105  1.1.1.1.2.2  yamt    LDAP attributes and attribute descriptions are defined in [RFC2251].
    106  1.1.1.1.2.2  yamt 
    107  1.1.1.1.2.2  yamt    An attribute consists of a type, a set of zero or more associated
    108  1.1.1.1.2.2  yamt    tagging options, and a set of one or more values.  The type and the
    109  1.1.1.1.2.2  yamt    options are combined into the AttributeDescription.
    110  1.1.1.1.2.2  yamt 
    111  1.1.1.1.2.2  yamt 
    112  1.1.1.1.2.2  yamt 
    113  1.1.1.1.2.2  yamt 
    114  1.1.1.1.2.2  yamt 
    115  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                     [Page 2]
    116  1.1.1.1.2.2  yamt 
    118  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    119  1.1.1.1.2.2  yamt 
    120  1.1.1.1.2.2  yamt 
    121  1.1.1.1.2.2  yamt    AttributeDescriptions can also contain options which are not part of
    122  1.1.1.1.2.2  yamt    the attribute, but indicate some other function (such as range
    123  1.1.1.1.2.2  yamt    assertion or transfer encoding).
    124  1.1.1.1.2.2  yamt 
    125  1.1.1.1.2.2  yamt    An AttributeDescription with one or more tagging options is a direct
    126  1.1.1.1.2.2  yamt    subtype of each AttributeDescription of the same type with all but
    127  1.1.1.1.2.2  yamt    one of the tagging options.  If the AttributeDescription's type is a
    128  1.1.1.1.2.2  yamt    direct subtype of some other type, then the AttributeDescription is
    129  1.1.1.1.2.2  yamt    also a direct subtype of the AttributeDescription which consists of
    130  1.1.1.1.2.2  yamt    the supertype and all of the tagging options.  That is,
    131  1.1.1.1.2.2  yamt    "CN;x-bar;x-foo" is a direct subtype of "CN;x-bar", "CN;x-foo", and
    132  1.1.1.1.2.2  yamt    "name;x-bar;x-foo".  Note that "CN" is a subtype of "name".
    133  1.1.1.1.2.2  yamt 
    134  1.1.1.1.2.2  yamt 2.  Use of Language Tags in LDAP
    135  1.1.1.1.2.2  yamt 
    136  1.1.1.1.2.2  yamt    This section describes how LDAP implementations MUST interpret
    137  1.1.1.1.2.2  yamt    language tags in performing operations.
    138  1.1.1.1.2.2  yamt 
    139  1.1.1.1.2.2  yamt    Servers which support storing attributes with language tag options in
    140  1.1.1.1.2.2  yamt    the Directory Information Tree (DIT) SHOULD allow any attribute type
    141  1.1.1.1.2.2  yamt    it recognizes that has the Directory String, IA5 String, or other
    142  1.1.1.1.2.2  yamt    textual string syntaxes to have language tag options associated with
    143  1.1.1.1.2.2  yamt    it.  Servers MAY allow language options to be associated with other
    144  1.1.1.1.2.2  yamt    attributes types.
    145  1.1.1.1.2.2  yamt 
    146  1.1.1.1.2.2  yamt    Clients SHOULD NOT assume servers are capable of storing attributes
    147  1.1.1.1.2.2  yamt    with language tags in the directory.
    148  1.1.1.1.2.2  yamt 
    149  1.1.1.1.2.2  yamt    Implementations MUST NOT otherwise interpret the structure of the tag
    150  1.1.1.1.2.2  yamt    when comparing two tags, and MUST treat them simply as strings of
    151  1.1.1.1.2.2  yamt    characters.  Implementations MUST allow any arbitrary string which
    152  1.1.1.1.2.2  yamt    conforms to the syntax defined in BCP 47 [RFC3066] to be used as a
    153  1.1.1.1.2.2  yamt    language tag.
    154  1.1.1.1.2.2  yamt 
    155  1.1.1.1.2.2  yamt 2.1.  Language Tag Options
    156  1.1.1.1.2.2  yamt 
    157  1.1.1.1.2.2  yamt    A language tag option associates a natural language with values of an
    158  1.1.1.1.2.2  yamt    attribute.  An attribute description may contain multiple language
    159  1.1.1.1.2.2  yamt    tag options.  An entry may contain multiple attributes with same
    160  1.1.1.1.2.2  yamt    attribute type but different combinations of language tag (and other)
    161  1.1.1.1.2.2  yamt    options.
    162  1.1.1.1.2.2  yamt 
    163  1.1.1.1.2.2  yamt    A language tag option conforms to the following ABNF [RFC2234]:
    164  1.1.1.1.2.2  yamt 
    165  1.1.1.1.2.2  yamt       language-tag-option = "lang-" Language-Tag
    166  1.1.1.1.2.2  yamt 
    167  1.1.1.1.2.2  yamt 
    168  1.1.1.1.2.2  yamt 
    169  1.1.1.1.2.2  yamt 
    170  1.1.1.1.2.2  yamt 
    171  1.1.1.1.2.2  yamt 
    172  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                     [Page 3]
    173  1.1.1.1.2.2  yamt 
    175  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    176  1.1.1.1.2.2  yamt 
    177  1.1.1.1.2.2  yamt 
    178  1.1.1.1.2.2  yamt    where the Language-Tag production is as defined in BCP 47 [RFC3066].
    179  1.1.1.1.2.2  yamt    This production and those it imports from [RFC2234] are provided here
    180  1.1.1.1.2.2  yamt    for convenience:
    181  1.1.1.1.2.2  yamt 
    182  1.1.1.1.2.2  yamt       Language-Tag = Primary-subtag *( "-" Subtag )
    183  1.1.1.1.2.2  yamt 
    184  1.1.1.1.2.2  yamt       Primary-subtag = 1*8ALPHA
    185  1.1.1.1.2.2  yamt 
    186  1.1.1.1.2.2  yamt       Subtag = 1*8(ALPHA / DIGIT)
    187  1.1.1.1.2.2  yamt 
    188  1.1.1.1.2.2  yamt       ALPHA = %x41-5A / %x61-7A   ; A-Z / a-z
    189  1.1.1.1.2.2  yamt 
    190  1.1.1.1.2.2  yamt       DIGIT = %x30-39             ; 0-9
    191  1.1.1.1.2.2  yamt 
    192  1.1.1.1.2.2  yamt    A language tag option is a tagging option.  A language tag option has
    193  1.1.1.1.2.2  yamt    no effect on the syntax of the attribute's values nor their transfer
    194  1.1.1.1.2.2  yamt    encoding.
    195  1.1.1.1.2.2  yamt 
    196  1.1.1.1.2.2  yamt    Examples of valid AttributeDescription:
    197  1.1.1.1.2.2  yamt 
    198  1.1.1.1.2.2  yamt       givenName;lang-en-US
    199  1.1.1.1.2.2  yamt       CN;lang-ja
    200  1.1.1.1.2.2  yamt       SN;lang-de;lang-gem-PFL
    201  1.1.1.1.2.2  yamt       O;lang-i-klingon;x-foobar
    202  1.1.1.1.2.2  yamt       description;x-foobar
    203  1.1.1.1.2.2  yamt       CN
    204  1.1.1.1.2.2  yamt 
    205  1.1.1.1.2.2  yamt    Notes: The last two have no language tag options.  The x-foobar
    206  1.1.1.1.2.2  yamt           option is fictious and used for example purposes.
    207  1.1.1.1.2.2  yamt 
    208  1.1.1.1.2.2  yamt 2.2.  Search Filter
    209  1.1.1.1.2.2  yamt 
    210  1.1.1.1.2.2  yamt    If language tag options are present in an AttributeDescription in an
    211  1.1.1.1.2.2  yamt    assertion, then for each entry within scope, the values of each
    212  1.1.1.1.2.2  yamt    attribute whose AttributeDescription consists of the same attribute
    213  1.1.1.1.2.2  yamt    type or its subtypes and contains each of the presented (and possibly
    214  1.1.1.1.2.2  yamt    other) options is to be matched.
    215  1.1.1.1.2.2  yamt 
    216  1.1.1.1.2.2  yamt    Thus, for example, a filter of an equality match of type
    217  1.1.1.1.2.2  yamt    "name;lang-en-US" and assertion value "Billy Ray", against the
    218  1.1.1.1.2.2  yamt    following directory entry:
    219  1.1.1.1.2.2  yamt 
    220  1.1.1.1.2.2  yamt    dn: SN=Ray,DC=example,DC=com
    221  1.1.1.1.2.2  yamt    objectClass: person                 DOES NOT MATCH (wrong type)
    222  1.1.1.1.2.2  yamt    objectClass: extensibleObject       DOES NOT MATCH (wrong type)
    223  1.1.1.1.2.2  yamt    name;lang-en-US: Billy Ray          MATCHES
    224  1.1.1.1.2.2  yamt    name;lang-en-US: Billy Bob          DOES NOT MATCH (wrong value)
    225  1.1.1.1.2.2  yamt    CN;lang-en-US: Billy Ray            MATCHES
    226  1.1.1.1.2.2  yamt 
    227  1.1.1.1.2.2  yamt 
    228  1.1.1.1.2.2  yamt 
    229  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                     [Page 4]
    230  1.1.1.1.2.2  yamt 
    232  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    233  1.1.1.1.2.2  yamt 
    234  1.1.1.1.2.2  yamt 
    235  1.1.1.1.2.2  yamt    CN;lang-en-US;x-foobar: Billy Ray   MATCHES
    236  1.1.1.1.2.2  yamt    CN;lang-en;x-foobar: Billy Ray      DOES NOT MATCH (differing lang-)
    237  1.1.1.1.2.2  yamt    CN;x-foobar: Billy Ray              DOES NOT MATCH (no lang-)
    238  1.1.1.1.2.2  yamt    name: Billy Ray                     DOES NOT MATCH (no lang-)
    239  1.1.1.1.2.2  yamt    SN;lang-en-GB;lang-en-US: Billy Ray MATCHES
    240  1.1.1.1.2.2  yamt    SN: Ray                             DOES NOT MATCH (no lang-,
    241  1.1.1.1.2.2  yamt                                            wrong value)
    242  1.1.1.1.2.2  yamt 
    243  1.1.1.1.2.2  yamt    Note that "CN" and "SN" are subtypes of "name".
    244  1.1.1.1.2.2  yamt 
    245  1.1.1.1.2.2  yamt    It is noted that providing a language tag option in a search filter
    246  1.1.1.1.2.2  yamt    AttributeDescription will filter out desirable values where the tag
    247  1.1.1.1.2.2  yamt    does not match exactly.  For example, the filter (name;lang-en=Billy
    248  1.1.1.1.2.2  yamt    Ray) does NOT match the attribute "name;lang-en-US:  Billy Ray".
    249  1.1.1.1.2.2  yamt 
    250  1.1.1.1.2.2  yamt    If the server does not support storing attributes with language tag
    251  1.1.1.1.2.2  yamt    options in the DIT, then any assertion which includes a language tag
    252  1.1.1.1.2.2  yamt    option will not match as such it is an unrecognized attribute type.
    253  1.1.1.1.2.2  yamt    No error would be returned because of this; a presence assertion
    254  1.1.1.1.2.2  yamt    would evaluate to FALSE and all other assertions to Undefined.
    255  1.1.1.1.2.2  yamt 
    256  1.1.1.1.2.2  yamt    If no options are specified in the assertion, then only the base
    257  1.1.1.1.2.2  yamt    attribute type and the assertion value need match the value in the
    258  1.1.1.1.2.2  yamt    directory.
    259  1.1.1.1.2.2  yamt 
    260  1.1.1.1.2.2  yamt    Thus, for example, a filter of an equality match of type "name" and
    261  1.1.1.1.2.2  yamt    assertion value "Billy Ray", against the following directory entry:
    262  1.1.1.1.2.2  yamt 
    263  1.1.1.1.2.2  yamt       dn: SN=Ray,DC=example,DC=com
    264  1.1.1.1.2.2  yamt       objectClass: person                 DOES NOT MATCH (wrong type)
    265  1.1.1.1.2.2  yamt       objectClass: extensibleObject       DOES NOT MATCH (wrong type)
    266  1.1.1.1.2.2  yamt       name;lang-en-US: Billy Ray          MATCHES
    267  1.1.1.1.2.2  yamt       name;lang-en-US: Billy Bob          DOES NOT MATCH (wrong value)
    268  1.1.1.1.2.2  yamt       CN;lang-en-US;x-foobar: Billy Ray   MATCHES
    269  1.1.1.1.2.2  yamt       CN;lang-en;x-foobar: Billy Ray      MATCHES
    270  1.1.1.1.2.2  yamt       CN;x-foobar: Billy Ray              MATCHES
    271  1.1.1.1.2.2  yamt       name: Billy Ray                     MATCHES
    272  1.1.1.1.2.2  yamt       SN;lang-en-GB;lang-en-US: Billy Ray MATCHES
    273  1.1.1.1.2.2  yamt       SN: Ray                             DOES NOT MATCH (wrong value)
    274  1.1.1.1.2.2  yamt 
    275  1.1.1.1.2.2  yamt 2.3.  Requested Attributes in Search
    276  1.1.1.1.2.2  yamt 
    277  1.1.1.1.2.2  yamt    Clients can provide language tag options in each AttributeDescription
    278  1.1.1.1.2.2  yamt    in the requested attribute list in a search request.
    279  1.1.1.1.2.2  yamt 
    280  1.1.1.1.2.2  yamt    If language tag options are provided in an attribute description,
    281  1.1.1.1.2.2  yamt    then only attributes in a directory entry whose attribute
    282  1.1.1.1.2.2  yamt    descriptions have the same attribute type or its subtype and contains
    283  1.1.1.1.2.2  yamt 
    284  1.1.1.1.2.2  yamt 
    285  1.1.1.1.2.2  yamt 
    286  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                     [Page 5]
    287  1.1.1.1.2.2  yamt 
    289  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    290  1.1.1.1.2.2  yamt 
    291  1.1.1.1.2.2  yamt 
    292  1.1.1.1.2.2  yamt    each of the presented (and possibly other) language tag options are
    293  1.1.1.1.2.2  yamt    to be returned.  Thus if a client requests just the attribute
    294  1.1.1.1.2.2  yamt    "name;lang-en", the server would return "name;lang-en" and
    295  1.1.1.1.2.2  yamt    "CN;lang-en;lang-ja" but not "SN" nor "name;lang-fr".
    296  1.1.1.1.2.2  yamt 
    297  1.1.1.1.2.2  yamt    Clients can provide in the attribute list multiple
    298  1.1.1.1.2.2  yamt    AttributeDescriptions which have the same base attribute type but
    299  1.1.1.1.2.2  yamt    different options.  For example, a client could provide both
    300  1.1.1.1.2.2  yamt    "name;lang-en" and "name;lang-fr", and this would permit an attribute
    301  1.1.1.1.2.2  yamt    with either language tag option to be returned.  Note there would be
    302  1.1.1.1.2.2  yamt    no need to provide both "name" and "name;lang-en" since all subtypes
    303  1.1.1.1.2.2  yamt    of name would match "name".
    304  1.1.1.1.2.2  yamt 
    305  1.1.1.1.2.2  yamt    If a server does not support storing attributes with language tag
    306  1.1.1.1.2.2  yamt    options in the DIT, then any attribute descriptions in the list which
    307  1.1.1.1.2.2  yamt    include language tag options are to be ignored, just as if they were
    308  1.1.1.1.2.2  yamt    unknown attribute types.
    309  1.1.1.1.2.2  yamt 
    310  1.1.1.1.2.2  yamt    If a request is made specifying all attributes or an attribute is
    311  1.1.1.1.2.2  yamt    requested without providing a language tag option, then all attribute
    312  1.1.1.1.2.2  yamt    values regardless of their language tag option are returned.
    313  1.1.1.1.2.2  yamt 
    314  1.1.1.1.2.2  yamt    For example, if the client requests a "description" attribute, and a
    315  1.1.1.1.2.2  yamt    matching entry contains the following attributes:
    316  1.1.1.1.2.2  yamt 
    317  1.1.1.1.2.2  yamt       objectClass: top
    318  1.1.1.1.2.2  yamt       objectClass: organization
    319  1.1.1.1.2.2  yamt       O: Software GmbH
    320  1.1.1.1.2.2  yamt       description: software products
    321  1.1.1.1.2.2  yamt       description;lang-en: software products
    322  1.1.1.1.2.2  yamt       description;lang-de: Softwareprodukte
    323  1.1.1.1.2.2  yamt 
    324  1.1.1.1.2.2  yamt    The server would return:
    325  1.1.1.1.2.2  yamt 
    326  1.1.1.1.2.2  yamt       description: software products
    327  1.1.1.1.2.2  yamt       description;lang-en: software products
    328  1.1.1.1.2.2  yamt       description;lang-de: Softwareprodukte
    329  1.1.1.1.2.2  yamt 
    330  1.1.1.1.2.2  yamt 2.4.  Compare
    331  1.1.1.1.2.2  yamt 
    332  1.1.1.1.2.2  yamt    Language tag options can be present in an AttributeDescription used
    333  1.1.1.1.2.2  yamt    in a compare request AttributeValueAssertion.  This is to be treated
    334  1.1.1.1.2.2  yamt    by servers the same as the use of language tag options in a search
    335  1.1.1.1.2.2  yamt    filter with an equality match, as described in Section 2.2.  If there
    336  1.1.1.1.2.2  yamt    is no attribute in the entry with the same attribute type or its
    337  1.1.1.1.2.2  yamt    subtype and contains each of the presented (or possibly other)
    338  1.1.1.1.2.2  yamt    language tag options, the noSuchAttributeType error will be returned.
    339  1.1.1.1.2.2  yamt 
    340  1.1.1.1.2.2  yamt 
    341  1.1.1.1.2.2  yamt 
    342  1.1.1.1.2.2  yamt 
    343  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                     [Page 6]
    344  1.1.1.1.2.2  yamt 
    346  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    347  1.1.1.1.2.2  yamt 
    348  1.1.1.1.2.2  yamt 
    349  1.1.1.1.2.2  yamt    Thus, for example, a compare request of type "name" and assertion
    350  1.1.1.1.2.2  yamt    value "Johann", against an entry containing the following attributes:
    351  1.1.1.1.2.2  yamt 
    352  1.1.1.1.2.2  yamt       objectClass: top
    353  1.1.1.1.2.2  yamt       objectClass: person
    354  1.1.1.1.2.2  yamt       givenName;lang-de-DE: Johann
    355  1.1.1.1.2.2  yamt       CN: Johann Sibelius
    356  1.1.1.1.2.2  yamt       SN: Sibelius
    357  1.1.1.1.2.2  yamt 
    358  1.1.1.1.2.2  yamt    would cause the server to return compareTrue.
    359  1.1.1.1.2.2  yamt 
    360  1.1.1.1.2.2  yamt    However, if the client issued a compare request of type
    361  1.1.1.1.2.2  yamt    "name;lang-de" and assertion value "Johann" against the above entry,
    362  1.1.1.1.2.2  yamt    the request would fail with the noSuchAttributeType error.
    363  1.1.1.1.2.2  yamt 
    364  1.1.1.1.2.2  yamt    If the server does not support storing attributes with language tag
    365  1.1.1.1.2.2  yamt    options in the DIT, then any comparison which includes a language tag
    366  1.1.1.1.2.2  yamt    option will always fail to locate an attribute, and
    367  1.1.1.1.2.2  yamt    noSuchAttributeType will be returned.
    368  1.1.1.1.2.2  yamt 
    369  1.1.1.1.2.2  yamt 2.5.  Add Operation
    370  1.1.1.1.2.2  yamt 
    371  1.1.1.1.2.2  yamt    Clients can provide language options in AttributeDescription in
    372  1.1.1.1.2.2  yamt    attributes of a new entry to be created.
    373  1.1.1.1.2.2  yamt 
    374  1.1.1.1.2.2  yamt    A client can provide multiple attributes with the same attribute type
    375  1.1.1.1.2.2  yamt    and value, so long as each attribute has a different set of language
    376  1.1.1.1.2.2  yamt    tag options.
    377  1.1.1.1.2.2  yamt 
    378  1.1.1.1.2.2  yamt    For example, the following is a valid request:
    379  1.1.1.1.2.2  yamt 
    380  1.1.1.1.2.2  yamt       dn: CN=John Smith,DC=example,DC=com
    381  1.1.1.1.2.2  yamt       objectClass: residentialPerson
    382  1.1.1.1.2.2  yamt       CN: John Smith
    383  1.1.1.1.2.2  yamt       CN;lang-en: John Smith
    384  1.1.1.1.2.2  yamt       SN: Smith
    385  1.1.1.1.2.2  yamt       SN;lang-en: Smith
    386  1.1.1.1.2.2  yamt       streetAddress: 1 University Street
    387  1.1.1.1.2.2  yamt       streetAddress;lang-en-US: 1 University Street
    388  1.1.1.1.2.2  yamt       streetAddress;lang-fr: 1 rue Universite
    389  1.1.1.1.2.2  yamt       houseIdentifier;lang-fr: 9e etage
    390  1.1.1.1.2.2  yamt 
    391  1.1.1.1.2.2  yamt    If a server does not support storing language tag options with
    392  1.1.1.1.2.2  yamt    attribute values in the DIT, then it MUST treat an
    393  1.1.1.1.2.2  yamt    AttributeDescription with a language tag option as an unrecognized
    394  1.1.1.1.2.2  yamt    attribute.  If the server forbids the addition of unrecognized
    395  1.1.1.1.2.2  yamt    attributes then it MUST fail the add request with an appropriate
    396  1.1.1.1.2.2  yamt    result code.
    397  1.1.1.1.2.2  yamt 
    398  1.1.1.1.2.2  yamt 
    399  1.1.1.1.2.2  yamt 
    400  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                     [Page 7]
    401  1.1.1.1.2.2  yamt 
    403  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    404  1.1.1.1.2.2  yamt 
    405  1.1.1.1.2.2  yamt 
    406  1.1.1.1.2.2  yamt 2.6.  Modify Operation
    407  1.1.1.1.2.2  yamt 
    408  1.1.1.1.2.2  yamt    A client can provide language tag options in an AttributeDescription
    409  1.1.1.1.2.2  yamt    as part of a modification element in the modify operation.
    410  1.1.1.1.2.2  yamt 
    411  1.1.1.1.2.2  yamt    Attribute types and language tag options MUST match exactly against
    412  1.1.1.1.2.2  yamt    values stored in the directory.  For example, if the modification is
    413  1.1.1.1.2.2  yamt    a "delete", then if the stored values to be deleted have language tag
    414  1.1.1.1.2.2  yamt    options, then those language tag options MUST be provided in the
    415  1.1.1.1.2.2  yamt    modify operation, and if the stored values to be deleted do not have
    416  1.1.1.1.2.2  yamt    any language tag option, then no language tag option is to be
    417  1.1.1.1.2.2  yamt    provided.
    418  1.1.1.1.2.2  yamt 
    419  1.1.1.1.2.2  yamt    If the server does not support storing language tag options with
    420  1.1.1.1.2.2  yamt    attribute values in the DIT, then it MUST treat an
    421  1.1.1.1.2.2  yamt    AttributeDescription with a language tag option as an unrecognized
    422  1.1.1.1.2.2  yamt    attribute, and MUST fail the request with an appropriate result code.
    423  1.1.1.1.2.2  yamt 
    424  1.1.1.1.2.2  yamt 3.  Use of Language Ranges in LDAP
    425  1.1.1.1.2.2  yamt 
    426  1.1.1.1.2.2  yamt    Since the publication of RFC 2596, it has become apparent that there
    427  1.1.1.1.2.2  yamt    is a need to provide a mechanism for a client to request attributes
    428  1.1.1.1.2.2  yamt    based upon set of language tag options whose tags all begin with the
    429  1.1.1.1.2.2  yamt    same sequence of language sub-tags.
    430  1.1.1.1.2.2  yamt 
    431  1.1.1.1.2.2  yamt    AttributeDescriptions containing language range options are intended
    432  1.1.1.1.2.2  yamt    to be used in attribute value assertions, search attribute lists, and
    433  1.1.1.1.2.2  yamt    other places where the client desires to provide an attribute
    434  1.1.1.1.2.2  yamt    description matching of a range of language tags associated with
    435  1.1.1.1.2.2  yamt    attributes.
    436  1.1.1.1.2.2  yamt 
    437  1.1.1.1.2.2  yamt    A language range option conforms to the following ABNF [RFC2234]:
    438  1.1.1.1.2.2  yamt 
    439  1.1.1.1.2.2  yamt       language-range-option = "lang-" [ Language-Tag "-" ]
    440  1.1.1.1.2.2  yamt 
    441  1.1.1.1.2.2  yamt    where the Language-Tag production is as defined in BCP 47 [RFC3066].
    442  1.1.1.1.2.2  yamt    This production and those it imports from [RFC2234] are provided in
    443  1.1.1.1.2.2  yamt    Section 2.1 for convenience.
    444  1.1.1.1.2.2  yamt 
    445  1.1.1.1.2.2  yamt    A language range option matches a language tag option if the language
    446  1.1.1.1.2.2  yamt    range option less the trailing "-" matches exactly the language tag
    447  1.1.1.1.2.2  yamt    or if the language range option (including the trailing "-") matches
    448  1.1.1.1.2.2  yamt    a prefix of the language tag option.  Note that the language range
    449  1.1.1.1.2.2  yamt    option "lang-" matches all language tag options.
    450  1.1.1.1.2.2  yamt 
    451  1.1.1.1.2.2  yamt 
    452  1.1.1.1.2.2  yamt 
    453  1.1.1.1.2.2  yamt 
    454  1.1.1.1.2.2  yamt 
    455  1.1.1.1.2.2  yamt 
    456  1.1.1.1.2.2  yamt 
    457  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                     [Page 8]
    458  1.1.1.1.2.2  yamt 
    460  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    461  1.1.1.1.2.2  yamt 
    462  1.1.1.1.2.2  yamt 
    463  1.1.1.1.2.2  yamt    Examples of valid AttributeDescription containing language range
    464  1.1.1.1.2.2  yamt    options:
    465  1.1.1.1.2.2  yamt 
    466  1.1.1.1.2.2  yamt       givenName;lang-en-
    467  1.1.1.1.2.2  yamt       CN;lang-
    468  1.1.1.1.2.2  yamt       SN;lang-de-;lang-gem-
    469  1.1.1.1.2.2  yamt       O;lang-x-;x-foobar
    470  1.1.1.1.2.2  yamt 
    471  1.1.1.1.2.2  yamt    A language range option is not a tagging option.  Attributes cannot
    472  1.1.1.1.2.2  yamt    be stored with language range options.  Any attempt to add or update
    473  1.1.1.1.2.2  yamt    an attribute description with a language range option SHALL be
    474  1.1.1.1.2.2  yamt    treated as an undefined attribute type and result in an error.
    475  1.1.1.1.2.2  yamt 
    476  1.1.1.1.2.2  yamt    A language range option has no effect on the transfer encoding nor on
    477  1.1.1.1.2.2  yamt    the syntax of the attribute values.
    478  1.1.1.1.2.2  yamt 
    479  1.1.1.1.2.2  yamt    Servers SHOULD support assertion of language ranges for any attribute
    480  1.1.1.1.2.2  yamt    type which they allow to be stored with language tags.
    481  1.1.1.1.2.2  yamt 
    482  1.1.1.1.2.2  yamt 3.1.  Search Filter
    483  1.1.1.1.2.2  yamt 
    484  1.1.1.1.2.2  yamt    If a language range option is present in an AttributeDescription in
    485  1.1.1.1.2.2  yamt    an assertion, then for each entry within scope, the values of each
    486  1.1.1.1.2.2  yamt    attribute whose AttributeDescription consists of the same attribute
    487  1.1.1.1.2.2  yamt    type or its subtypes and contains a language tag option matching the
    488  1.1.1.1.2.2  yamt    language range option are to be returned.
    489  1.1.1.1.2.2  yamt 
    490  1.1.1.1.2.2  yamt    Thus, for example, a filter of an equality match of type
    491  1.1.1.1.2.2  yamt    "name;lang-en-" and assertion value "Billy Ray", against the
    492  1.1.1.1.2.2  yamt    following directory entry:
    493  1.1.1.1.2.2  yamt 
    494  1.1.1.1.2.2  yamt       dn: SN=Ray,DC=example,DC=com
    495  1.1.1.1.2.2  yamt       objectClass: person                 DOES NOT MATCH (wrong type)
    496  1.1.1.1.2.2  yamt       objectClass: extensibleObject       DOES NOT MATCH (wrong type)
    497  1.1.1.1.2.2  yamt       name;lang-en-US: Billy Ray          MATCHES
    498  1.1.1.1.2.2  yamt       name;lang-en-US: Billy Bob          DOES NOT MATCH (wrong value)
    499  1.1.1.1.2.2  yamt       CN;lang-en-US: Billy Ray            MATCHES
    500  1.1.1.1.2.2  yamt       CN;lang-en-US;x-foobar: Billy Ray   MATCHES
    501  1.1.1.1.2.2  yamt       CN;lang-en;x-foobar: Billy Ray      MATCHES
    502  1.1.1.1.2.2  yamt       CN;x-foobar: Billy Ray              DOES NOT MATCH (no lang-)
    503  1.1.1.1.2.2  yamt       name: Billy Ray                     DOES NOT MATCH (no lang-)
    504  1.1.1.1.2.2  yamt       SN;lang-en-GB;lang-en-US: Billy Ray MATCHES
    505  1.1.1.1.2.2  yamt       SN: Ray                             DOES NOT MATCH (no lang-,
    506  1.1.1.1.2.2  yamt                                             wrong value)
    507  1.1.1.1.2.2  yamt 
    508  1.1.1.1.2.2  yamt    Note that "CN" and "SN" are subtypes of "name".
    509  1.1.1.1.2.2  yamt 
    510  1.1.1.1.2.2  yamt 
    511  1.1.1.1.2.2  yamt 
    512  1.1.1.1.2.2  yamt 
    513  1.1.1.1.2.2  yamt 
    514  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                     [Page 9]
    515  1.1.1.1.2.2  yamt 
    517  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    518  1.1.1.1.2.2  yamt 
    519  1.1.1.1.2.2  yamt 
    520  1.1.1.1.2.2  yamt    If the server does not support storing attributes with language tag
    521  1.1.1.1.2.2  yamt    options in the DIT, then any assertion which includes a language
    522  1.1.1.1.2.2  yamt    range option will not match as it is an unrecognized attribute type.
    523  1.1.1.1.2.2  yamt    No error would be returned because of this; a presence filter would
    524  1.1.1.1.2.2  yamt    evaluate to FALSE and all other assertions to Undefined.
    525  1.1.1.1.2.2  yamt 
    526  1.1.1.1.2.2  yamt 3.2.  Requested Attributes in Search
    527  1.1.1.1.2.2  yamt 
    528  1.1.1.1.2.2  yamt    Clients can provide language range options in each
    529  1.1.1.1.2.2  yamt    AttributeDescription in the requested attribute list in a search
    530  1.1.1.1.2.2  yamt    request.
    531  1.1.1.1.2.2  yamt 
    532  1.1.1.1.2.2  yamt    If a language range option is provided in an attribute description,
    533  1.1.1.1.2.2  yamt    then only attributes in a directory entry whose attribute
    534  1.1.1.1.2.2  yamt    descriptions have the same attribute type or its subtype and a
    535  1.1.1.1.2.2  yamt    language tag option matching the provided language range option are
    536  1.1.1.1.2.2  yamt    to be returned.  Thus if a client requests just the attribute
    537  1.1.1.1.2.2  yamt    "name;lang-en-", the server would return "name;lang-en-US" and
    538  1.1.1.1.2.2  yamt    "CN;lang-en;lang-ja" but not "SN" nor "name;lang-fr".
    539  1.1.1.1.2.2  yamt 
    540  1.1.1.1.2.2  yamt    Clients can provide in the attribute list multiple
    541  1.1.1.1.2.2  yamt    AttributeDescriptions which have the same base attribute type but
    542  1.1.1.1.2.2  yamt    different options.  For example a client could provide both
    543  1.1.1.1.2.2  yamt    "name;lang-en-" and "name;lang-fr-", and this would permit an
    544  1.1.1.1.2.2  yamt    attribute whose type was name or subtype of name and with a language
    545  1.1.1.1.2.2  yamt    tag option matching either language range option to be returned.
    546  1.1.1.1.2.2  yamt 
    547  1.1.1.1.2.2  yamt    If a server does not support storing attributes with language tag
    548  1.1.1.1.2.2  yamt    options in the DIT, then any attribute descriptions in the list which
    549  1.1.1.1.2.2  yamt    include language range options are to be ignored, just as if they
    550  1.1.1.1.2.2  yamt    were unknown attribute types.
    551  1.1.1.1.2.2  yamt 
    552  1.1.1.1.2.2  yamt 3.3.  Compare
    553  1.1.1.1.2.2  yamt 
    554  1.1.1.1.2.2  yamt    Language range options can be present in an AttributeDescription used
    555  1.1.1.1.2.2  yamt    in a compare request AttributeValueAssertion.  This is to be treated
    556  1.1.1.1.2.2  yamt    by servers the same as the use of language range options in a search
    557  1.1.1.1.2.2  yamt    filter with an equality match, as described in Section 3.1.  If there
    558  1.1.1.1.2.2  yamt    is no attribute in the entry with the same subtype and a matching
    559  1.1.1.1.2.2  yamt    language tag option, the noSuchAttributeType error will be returned.
    560  1.1.1.1.2.2  yamt 
    561  1.1.1.1.2.2  yamt    Thus, for example, a compare request of type "name;lang-" and
    562  1.1.1.1.2.2  yamt    assertion value "Johann", against the entry with the following
    563  1.1.1.1.2.2  yamt    attributes:
    564  1.1.1.1.2.2  yamt 
    565  1.1.1.1.2.2  yamt 
    566  1.1.1.1.2.2  yamt 
    567  1.1.1.1.2.2  yamt 
    568  1.1.1.1.2.2  yamt 
    569  1.1.1.1.2.2  yamt 
    570  1.1.1.1.2.2  yamt 
    571  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                    [Page 10]
    572  1.1.1.1.2.2  yamt 
    574  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    575  1.1.1.1.2.2  yamt 
    576  1.1.1.1.2.2  yamt 
    577  1.1.1.1.2.2  yamt       objectClass: top
    578  1.1.1.1.2.2  yamt       objectClass: person
    579  1.1.1.1.2.2  yamt       givenName;lang-de-DE: Johann
    580  1.1.1.1.2.2  yamt       CN: Johann Sibelius
    581  1.1.1.1.2.2  yamt       SN: Sibelius
    582  1.1.1.1.2.2  yamt 
    583  1.1.1.1.2.2  yamt    will cause the server to return compareTrue.  (Note that the language
    584  1.1.1.1.2.2  yamt    range option "lang-" matches any language tag option.)
    585  1.1.1.1.2.2  yamt 
    586  1.1.1.1.2.2  yamt    However, if the client issued a compare request of type
    587  1.1.1.1.2.2  yamt    "name;lang-de" and assertion value "Sibelius" against the above
    588  1.1.1.1.2.2  yamt    entry, the request would fail with the noSuchAttributeType error.
    589  1.1.1.1.2.2  yamt 
    590  1.1.1.1.2.2  yamt    If the server does not support storing attributes with language tag
    591  1.1.1.1.2.2  yamt    options in the DIT, then any comparison which includes a language
    592  1.1.1.1.2.2  yamt    range option will always fail to locate an attribute, and
    593  1.1.1.1.2.2  yamt    noSuchAttributeType will be returned.
    594  1.1.1.1.2.2  yamt 
    595  1.1.1.1.2.2  yamt 4.  Discovering Language Option Support
    596  1.1.1.1.2.2  yamt 
    597  1.1.1.1.2.2  yamt    A server SHOULD indicate that it supports storing attributes with
    598  1.1.1.1.2.2  yamt    language tag options in the DIT by publishing 1.3.6.1.4.1.4203.1.5.4
    599  1.1.1.1.2.2  yamt    as a value of the root DSE.
    600  1.1.1.1.2.2  yamt 
    601  1.1.1.1.2.2  yamt    A server SHOULD indicate that it supports language range matching of
    602  1.1.1.1.2.2  yamt    attributes with language tag options stored in the DIT by publishing
    603  1.1.1.1.2.2  yamt    1.3.6.1.4.1.4203.1.5.5 as a value of the "supportedFeatures"
    604  1.1.1.1.2.2  yamt    [RFC3674] attribute in the root DSE.
    605  1.1.1.1.2.2  yamt 
    606  1.1.1.1.2.2  yamt    A server MAY restrict use of language tag options to a subset of the
    607  1.1.1.1.2.2  yamt    attribute types it recognizes.  This document does not define a
    608  1.1.1.1.2.2  yamt    mechanism for determining which subset of attribute types can be used
    609  1.1.1.1.2.2  yamt    with language tag options.
    610  1.1.1.1.2.2  yamt 
    611  1.1.1.1.2.2  yamt 5.  Interoperability with Non-supporting Implementations
    612  1.1.1.1.2.2  yamt 
    613  1.1.1.1.2.2  yamt    Implementators of this specification should take care that their use
    614  1.1.1.1.2.2  yamt    of language tag options does not impede proper function of
    615  1.1.1.1.2.2  yamt    implementations which do not support language tags.
    616  1.1.1.1.2.2  yamt 
    617  1.1.1.1.2.2  yamt    Per RFC 2251, "an AttributeDescription with one or more options is
    618  1.1.1.1.2.2  yamt    treated as a subtype of the attribute type without any options."  A
    619  1.1.1.1.2.2  yamt    non-supporting server will treat an AttributeDescription with any
    620  1.1.1.1.2.2  yamt    language tag options as an unrecognized attribute type.  A non-
    621  1.1.1.1.2.2  yamt    supporting client will either do the same, or will treat the
    622  1.1.1.1.2.2  yamt    AttributeDescription as it would any other unknown subtype.
    623  1.1.1.1.2.2  yamt    Typically, non-supporting clients simply ignore unrecognized subtypes
    624  1.1.1.1.2.2  yamt    (and unrecognized attribute types) of attributes they request.
    625  1.1.1.1.2.2  yamt 
    626  1.1.1.1.2.2  yamt 
    627  1.1.1.1.2.2  yamt 
    628  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                    [Page 11]
    629  1.1.1.1.2.2  yamt 
    631  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    632  1.1.1.1.2.2  yamt 
    633  1.1.1.1.2.2  yamt 
    634  1.1.1.1.2.2  yamt    To ensure proper function of non-supporting clients, supporting
    635  1.1.1.1.2.2  yamt    clients SHOULD ensure that entries they populate with tagged values
    636  1.1.1.1.2.2  yamt    are also populated with non-tagged values.
    637  1.1.1.1.2.2  yamt 
    638  1.1.1.1.2.2  yamt    Additionally, supporting clients SHOULD be prepared to handle entries
    639  1.1.1.1.2.2  yamt    which are not populated with tagged values.
    640  1.1.1.1.2.2  yamt 
    641  1.1.1.1.2.2  yamt 6.  Security Considerations
    642  1.1.1.1.2.2  yamt 
    643  1.1.1.1.2.2  yamt    Language tags and range options are used solely to indicate the
    644  1.1.1.1.2.2  yamt    native language of values and in querying the directory for values
    645  1.1.1.1.2.2  yamt    which fulfill the user's language needed.  These options are not
    646  1.1.1.1.2.2  yamt    known to raise specific security considerations.  However, the reader
    647  1.1.1.1.2.2  yamt    should consider general directory security issues detailed in the
    648  1.1.1.1.2.2  yamt    LDAP technical specification [RFC3377].
    649  1.1.1.1.2.2  yamt 
    650  1.1.1.1.2.2  yamt 7.  IANA Considerations
    651  1.1.1.1.2.2  yamt 
    652  1.1.1.1.2.2  yamt    Registration of these protocol mechanisms [RFC3383] has been
    653  1.1.1.1.2.2  yamt    completed by the IANA.
    654  1.1.1.1.2.2  yamt 
    655  1.1.1.1.2.2  yamt    Subject: Request for LDAP Protocol Mechanism Registration
    656  1.1.1.1.2.2  yamt    Object Identifier: 1.3.6.1.4.1.4203.1.5.4
    657  1.1.1.1.2.2  yamt    Description: Language Tag Options
    658  1.1.1.1.2.2  yamt    Object Identifier: 1.3.6.1.4.1.4203.1.5.5
    659  1.1.1.1.2.2  yamt    Description: Language Range Options
    660  1.1.1.1.2.2  yamt    Person & email address to contact for further information:
    661  1.1.1.1.2.2  yamt         Kurt Zeilenga <kurt (a] openldap.org>
    662  1.1.1.1.2.2  yamt    Usage: Feature
    663  1.1.1.1.2.2  yamt    Specification: RFC 3866
    664  1.1.1.1.2.2  yamt    Author/Change Controller: IESG
    665  1.1.1.1.2.2  yamt    Comments: none
    666  1.1.1.1.2.2  yamt 
    667  1.1.1.1.2.2  yamt    These OIDs were assigned [ASSIGN] by OpenLDAP Foundation, under its
    668  1.1.1.1.2.2  yamt    IANA-assigned private enterprise allocation [PRIVATE], for use in
    669  1.1.1.1.2.2  yamt    this specification.
    670  1.1.1.1.2.2  yamt 
    671  1.1.1.1.2.2  yamt 8.  Acknowledgments
    672  1.1.1.1.2.2  yamt 
    673  1.1.1.1.2.2  yamt    This document is a revision of RFC 2596 by Mark Wahl and Tim Howes.
    674  1.1.1.1.2.2  yamt    RFC 2596 was a product of the IETF ASID and LDAPEXT working groups.
    675  1.1.1.1.2.2  yamt    This document also borrows from a number of IETF documents including
    676  1.1.1.1.2.2  yamt    BCP 47 by H. Alvestrand.
    677  1.1.1.1.2.2  yamt 
    678  1.1.1.1.2.2  yamt 
    679  1.1.1.1.2.2  yamt 
    680  1.1.1.1.2.2  yamt 
    681  1.1.1.1.2.2  yamt 
    682  1.1.1.1.2.2  yamt 
    683  1.1.1.1.2.2  yamt 
    684  1.1.1.1.2.2  yamt 
    685  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                    [Page 12]
    686  1.1.1.1.2.2  yamt 
    688  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    689  1.1.1.1.2.2  yamt 
    690  1.1.1.1.2.2  yamt 
    691  1.1.1.1.2.2  yamt 9.  References
    692  1.1.1.1.2.2  yamt 
    693  1.1.1.1.2.2  yamt 9.1.  Normative References
    694  1.1.1.1.2.2  yamt 
    695  1.1.1.1.2.2  yamt    [RFC2119]     Bradner, S., "Key words for use in RFCs to Indicate
    696  1.1.1.1.2.2  yamt                  Requirement Levels", BCP 14, RFC 2119, March 1997.
    697  1.1.1.1.2.2  yamt 
    698  1.1.1.1.2.2  yamt    [RFC2234]     Crocker, D., Ed. and P. Overell, "Augmented BNF for
    699  1.1.1.1.2.2  yamt                  Syntax Specifications: ABNF", RFC 2234, November 1997.
    700  1.1.1.1.2.2  yamt 
    701  1.1.1.1.2.2  yamt    [RFC2251]     Wahl, M., Howes, T. and S. Kille, "Lightweight
    702  1.1.1.1.2.2  yamt                  Directory Access Protocol (v3)", RFC 2251, December
    703  1.1.1.1.2.2  yamt                  1997.
    704  1.1.1.1.2.2  yamt 
    705  1.1.1.1.2.2  yamt    [RFC3066]     Alvestrand, H., "Tags for the Identification of
    706  1.1.1.1.2.2  yamt                  Languages", BCP 47, RFC 3066, January 2001.
    707  1.1.1.1.2.2  yamt 
    708  1.1.1.1.2.2  yamt    [RFC3377]     Hodges, J. and R. Morgan, "Lightweight Directory Access
    709  1.1.1.1.2.2  yamt                  Protocol (v3): Technical Specification", RFC 3377,
    710  1.1.1.1.2.2  yamt                  September 2002.
    711  1.1.1.1.2.2  yamt 
    712  1.1.1.1.2.2  yamt    [RFC3674]     Zeilenga, K., "Feature Discovery in Lightweight
    713  1.1.1.1.2.2  yamt                  Directory Access Protocol (LDAP)", RFC 3674, December
    714  1.1.1.1.2.2  yamt                  2003.
    715  1.1.1.1.2.2  yamt 
    716  1.1.1.1.2.2  yamt    [ASCII]       Coded Character Set--7-bit American Standard Code for
    717  1.1.1.1.2.2  yamt                  Information Interchange, ANSI X3.4-1986.
    718  1.1.1.1.2.2  yamt 
    719  1.1.1.1.2.2  yamt 9.2.  Informative References
    720  1.1.1.1.2.2  yamt 
    721  1.1.1.1.2.2  yamt    [X.501]       International Telecommunication Union -
    722  1.1.1.1.2.2  yamt                  Telecommunication Standardization Sector, "The
    723  1.1.1.1.2.2  yamt                  Directory -- Models," X.501(1997).
    724  1.1.1.1.2.2  yamt 
    725  1.1.1.1.2.2  yamt    [RFC3383]     Zeilenga, K., "Internet Assigned Numbers Authority
    726  1.1.1.1.2.2  yamt                  (IANA) Considerations for Lightweight Directory Access
    727  1.1.1.1.2.2  yamt                  Protocol (LDAP)", BCP 64, RFC 3383, September 2002.
    728  1.1.1.1.2.2  yamt 
    729  1.1.1.1.2.2  yamt    [ASSIGN]      OpenLDAP Foundation, "OpenLDAP OID Delegations",
    730  1.1.1.1.2.2  yamt                  http://www.openldap.org/foundation/oid-delegate.txt.
    731  1.1.1.1.2.2  yamt 
    732  1.1.1.1.2.2  yamt    [PRIVATE]     IANA, "Private Enterprise Numbers",
    733  1.1.1.1.2.2  yamt                  http://www.iana.org/assignments/enterprise-numbers.
    734  1.1.1.1.2.2  yamt 
    735  1.1.1.1.2.2  yamt 
    736  1.1.1.1.2.2  yamt 
    737  1.1.1.1.2.2  yamt 
    738  1.1.1.1.2.2  yamt 
    739  1.1.1.1.2.2  yamt 
    740  1.1.1.1.2.2  yamt 
    741  1.1.1.1.2.2  yamt 
    742  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                    [Page 13]
    743  1.1.1.1.2.2  yamt 
    745  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    746  1.1.1.1.2.2  yamt 
    747  1.1.1.1.2.2  yamt 
    748  1.1.1.1.2.2  yamt Appendix A. Differences from RFC 2596
    749  1.1.1.1.2.2  yamt 
    750  1.1.1.1.2.2  yamt    This document adds support for language ranges, provides a mechanism
    751  1.1.1.1.2.2  yamt    that a client can use to discover whether a server supports language
    752  1.1.1.1.2.2  yamt    tags and ranges, and clarifies how attributes with multiple language
    753  1.1.1.1.2.2  yamt    tags are to be treated.  This document is a significant rewrite of
    754  1.1.1.1.2.2  yamt    RFC 2596.
    755  1.1.1.1.2.2  yamt 
    756  1.1.1.1.2.2  yamt Appendix B. Differences from X.500(1997)
    757  1.1.1.1.2.2  yamt 
    758  1.1.1.1.2.2  yamt    X.500(1997) [X.501] defines a different mechanism, contexts, as the
    759  1.1.1.1.2.2  yamt    means of representing language tags (codes).  This section summarizes
    760  1.1.1.1.2.2  yamt    the major differences in approach.
    761  1.1.1.1.2.2  yamt 
    762  1.1.1.1.2.2  yamt    a) An X.500 operation which has specified a language code on a value
    763  1.1.1.1.2.2  yamt       matches a value in the directory without a language code.
    764  1.1.1.1.2.2  yamt 
    765  1.1.1.1.2.2  yamt    b) LDAP references BCP 47 [RFC3066], which allows for IANA
    766  1.1.1.1.2.2  yamt       registration of new tags as well as unregistered tags.
    767  1.1.1.1.2.2  yamt 
    768  1.1.1.1.2.2  yamt    c) LDAP supports language ranges (new in this revision).
    769  1.1.1.1.2.2  yamt 
    770  1.1.1.1.2.2  yamt    d) LDAP does not allow language tags (and ranges) in distinguished
    771  1.1.1.1.2.2  yamt       names.
    772  1.1.1.1.2.2  yamt 
    773  1.1.1.1.2.2  yamt    e) X.500 describes subschema administration procedures to allow
    774  1.1.1.1.2.2  yamt       language codes to be associated with particular attributes types.
    775  1.1.1.1.2.2  yamt 
    776  1.1.1.1.2.2  yamt Editor's Address
    777  1.1.1.1.2.2  yamt 
    778  1.1.1.1.2.2  yamt    Kurt D. Zeilenga
    779  1.1.1.1.2.2  yamt    OpenLDAP Foundation
    780  1.1.1.1.2.2  yamt 
    781  1.1.1.1.2.2  yamt    EMail: Kurt (a] OpenLDAP.org
    782  1.1.1.1.2.2  yamt 
    783  1.1.1.1.2.2  yamt 
    784  1.1.1.1.2.2  yamt 
    785  1.1.1.1.2.2  yamt 
    786  1.1.1.1.2.2  yamt 
    787  1.1.1.1.2.2  yamt 
    788  1.1.1.1.2.2  yamt 
    789  1.1.1.1.2.2  yamt 
    790  1.1.1.1.2.2  yamt 
    791  1.1.1.1.2.2  yamt 
    792  1.1.1.1.2.2  yamt 
    793  1.1.1.1.2.2  yamt 
    794  1.1.1.1.2.2  yamt 
    795  1.1.1.1.2.2  yamt 
    796  1.1.1.1.2.2  yamt 
    797  1.1.1.1.2.2  yamt 
    798  1.1.1.1.2.2  yamt 
    799  1.1.1.1.2.2  yamt Zeilenga                    Standards Track                    [Page 14]
    800  1.1.1.1.2.2  yamt 
    802  1.1.1.1.2.2  yamt RFC 3866            Language Tags and Ranges in LDAP           July 2004
    803  1.1.1.1.2.2  yamt 
    804  1.1.1.1.2.2  yamt 
    805  1.1.1.1.2.2  yamt Full Copyright Statement
    806  1.1.1.1.2.2  yamt 
    807  1.1.1.1.2.2  yamt    Copyright (C) The Internet Society (2004).  This document is subject
    808  1.1.1.1.2.2  yamt    to the rights, licenses and restrictions contained in BCP 78, and
    809  1.1.1.1.2.2  yamt    except as set forth therein, the authors retain all their rights.
    810  1.1.1.1.2.2  yamt 
    811  1.1.1.1.2.2  yamt    This document and the information contained herein are provided on an
    812  1.1.1.1.2.2  yamt    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
    813  1.1.1.1.2.2  yamt    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
    814  1.1.1.1.2.2  yamt    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
    815  1.1.1.1.2.2  yamt    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
    816  1.1.1.1.2.2  yamt    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
    817  1.1.1.1.2.2  yamt    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
    818  1.1.1.1.2.2  yamt 
    819  1.1.1.1.2.2  yamt Intellectual Property
    820  1.1.1.1.2.2  yamt 
    821  1.1.1.1.2.2  yamt    The IETF takes no position regarding the validity or scope of any
    822  1.1.1.1.2.2  yamt    Intellectual Property Rights or other rights that might be claimed to
    823  1.1.1.1.2.2  yamt    pertain to the implementation or use of the technology described in
    824  1.1.1.1.2.2  yamt    this document or the extent to which any license under such rights
    825  1.1.1.1.2.2  yamt    might or might not be available; nor does it represent that it has
    826  1.1.1.1.2.2  yamt    made any independent effort to identify any such rights.  Information
    827  1.1.1.1.2.2  yamt    on the procedures with respect to rights in RFC documents can be
    828  1.1.1.1.2.2  yamt    found in BCP 78 and BCP 79.
    829  1.1.1.1.2.2  yamt 
    830  1.1.1.1.2.2  yamt    Copies of IPR disclosures made to the IETF Secretariat and any
    831  1.1.1.1.2.2  yamt    assurances of licenses to be made available, or the result of an
    832  1.1.1.1.2.2  yamt    attempt made to obtain a general license or permission for the use of
    833  1.1.1.1.2.2  yamt    such proprietary rights by implementers or users of this
    834  1.1.1.1.2.2  yamt    specification can be obtained from the IETF on-line IPR repository at
    835  1.1.1.1.2.2  yamt    http://www.ietf.org/ipr.
    836  1.1.1.1.2.2  yamt 
    837  1.1.1.1.2.2  yamt    The IETF invites any interested party to bring to its attention any
    838  1.1.1.1.2.2  yamt    copyrights, patents or patent applications, or other proprietary
    839  1.1.1.1.2.2  yamt    rights that may cover technology that may be required to implement
    840  1.1.1.1.2.2  yamt    this standard.  Please address the information to the IETF at ietf-
    841  1.1.1.1.2.2  yamt    ipr (a] ietf.org.
    842  1.1.1.1.2.2  yamt 
    843  1.1.1.1.2.2  yamt Acknowledgement
    844                    
    845                       Funding for the RFC Editor function is currently provided by the
    846                       Internet Society.
    847                    
    848                    
    849                    
    850                    
    851                    
    852                    
    853                    
    854                    
    855                    
    856                    Zeilenga                    Standards Track                    [Page 15]
    857                    
    859