[1] [CITE@en[[[RFC 3080]]: The Blocks Extensible Exchange Protocol Core]], [TIME[2023-12-02T12:55:37.000Z]], [TIME[2023-12-02T13:03:30.364Z]] <https://www.rfc-editor.org/rfc/rfc3080#section-2.3.1.1>

[2] [[RFC 3066]] [[言語タグ]]を1つ[[以上]]指定する [SRC[>>1]] とされます。

[3] 構文は [[XML DTD]] で定義されていて、
[[属性値]]は
[CODE[NMTOKEN]],
[[既定値]]は [CODE[i-default]] とされています。

[4] 
[[NMTOKEN]] なのに複数指定できるというのは矛盾します。

[5] 
[[DTD]] の[[注釈]]には、 [CODE[NMTOKENS]] で0個[[以上]]指定できる、とあります。
ただし [CODE[localize]] [[属性]]に対する説明ではなく、その[[データ型]]に対する説明です。

[6] 
本来 [CODE[NMTOKENS]] とするべきところが、誤って [CODE[NMTOKEN]] とされてしまったと思われます。

[7] 
ただし0個のみの指定は、[[属性]]に対する明文規定が優先されるべきですから、
認めないと解釈するべきです。

[8] 
なお、 [[XML]] では [CODE[NMTOKENS]] は1個以上でなければなりません。
[[DTD]] の注釈が不適切です。

[9] 
[[DTD]] の注釈には [CODE[en-US]] と指定する例があります。


[10] [CITE@en[[[RFC 4324]]: Calendar Access Protocol (CAP)]], [TIME[2023-12-02T07:30:13.000Z]], [TIME[2023-12-02T13:20:51.352Z]] <https://www.rfc-editor.org/rfc/rfc4324.html#section-7.6>

[11] 
[[CAP]] では [DFN[[CODE[LOCALIZE]]]] [[引数]]に
[[BEEP]] [CODE[greeting]] [CODE[localize]] で指定する値を書くことになっています。
[SRC[>>10]]

[12] 
ところが [[CAP]] の [[RFC]] の例文では値が [CODE[fr_CA]] と[[POSIXロケール]]風になっています。

[13] 
これについて何の説明もありません。


[14] [CITE@en[RFC 4324: Calendar Access Protocol (CAP)]], [TIME[2023-12-02T07:30:13.000Z]], [TIME[2023-12-02T13:26:59.337Z]] <https://www.rfc-editor.org/rfc/rfc4324.html#section-10.13>


[15] 
[[CAP]] では [CODE[SET-LOCALE]] [[命令]]で[[ロケール]]の指定ができ、
その値について

>
[PRE[
         newlocale     =  ; Any locale supplied in the initial [BEEP]
                          ; "greeting" "localize" parameter and
                          ; and any charset supported by the CS
                          ; and listed in the DEFAULT-CHARSET property
                          ; of the VCALSTORE
]PRE]

と説明があって、

>
[PRE[
         CMD:OPTIONS=en_US.UTF-8:SET-LOCALE
         CMD:OPTIONS=th_TH.ISO8859-11:SET-LOCALE
         CMD:OPTIONS=es_MX.ISO8859-1:SET-LOCALE
]PRE]

と具体例が挙げられています。

[16] 
[CODE[localize]] と [[charset]] と説明があるので、 [CH[.]]
の前は [CODE[localize]]、後は [[charset]] でしょうか。
でも2つ合わせて [[POSIXロケール]]風にも見えますが。

[17] 
しかし [CODE[DEFAULT-CHARSET]] の値は [[IANA charset]] なのですが、
[CODE[ISO8859-1]]
や
[CODE[ISO8859-11]] 
は [[IANA charset]] 名ではありません。
([CODE[ISO-8859-1]] や [CODE[ISO-8859-11]] なら [[IANA charset]] なのですが。)


[18] 
そもそも [[BEEP]] では [CODE[localize]] は[[言語]]だとしか書かれていないのですが、
それがここでは [[charset]] と組み合わされることでなぜか[[ロケール]]にすり替わっています。
[[ロケール]]というのは[[言語]]と[[文字コード]]の組み合わせのことなのでしょうか。

;; [19] [[ロケール]]というのも説明・定義が難しい概念ですが、
[[カレンダー]]を扱うプロトコルなのに[[日時]]のことに何も言及がないのもおかしいし。

