フォーマットの概要#
html タグの lang 属性は、7 つの部分から構成されており、一般的には MDN で説明されている 1 番目、2 番目、4 番目の部分が使用されます。
- 言語:例えば中国語の場合は
zh
、英語の場合はen
- 拡張言語(方言):例えば
cmn
は標準中国語、yue
は広東語、lzh
は文語文を指します。これは主にスクリーンリーダーの読み上げ効果を示すために使用されます。 - 書記システム / フォーマット:例えば
Hans
は簡体字中国語、Hant
は繁体字中国語を表します。 - 地域:例えば
CN
は中国、HK
は香港を表します。 - バリアント:言語の特定のバリエーションを指定するために使用されます。
zh
で始まり、この項目を書くことができるものは比較的少なく、例えばpinyin
は私たちが認識するピンインを表し、wadegile
は威妥瑪拼音を表します。これらの例は、zh-Latn
の接頭辞が必要な場合にのみ使用できます。 - 拡張:言語固有の拡張を追加するために使用されます。
- プライベート使用:プライベートなサブタグとして予約されています。特別な必要がない限り、一般的には使用されません。
拡張言語 / 方言(2 番目の部分)#
zh
で始まる場合、現時点では 13 の承認された ** 方言(すべてのzh
で始まるものではありません)** があります。以下はその一部です:
-
cdo - 閩東語
-
cjy - 晋語
-
cpx - 莆仙語
-
czh - 惠州語
-
czo - 閩中語
-
gan - 贛州語
-
hak - 客家語
-
hsn - 湘語
-
lzh - 文言文
-
mnp - 閩北語
-
nan - 閩南語
-
wuu - 吳語
-
yue - 広東語
混乱を避けるために、これらのタグは extlang(2 番目の位置)として方言を表すこともできます(例:zh-cdo)、または language(1 番目の位置)として主言語を表すこともできます(例:cdo-Hans)。では、これらのタグと伝統的な「zh」タグはどのような関係があるのでしょうか?IANA は「zh」を「マクロ言語」と定義していますが、私はどのように翻訳すべきか確信が持てません。マクロ言語?それとも言語ファミリー?BCP 47は、中国語にはいくつかの言語が含まれると述べており、中国語の方言は独立した言語と見なされるべきだと考えているようです。
したがって、以下の2 つの方法はどちらも正しいです。
<html lang="zh-cdo-Hans">
(zh を 1 番目の位置の主言語として使用)<html lang="cdo-Hans">
(cdo という方言を 1 番目の位置の主言語として使用)
方言に関連する混乱が解消された後、私の個人的な提案は「zh」を主言語として使用することです。私は政治的な議論をしたり、難解な学術的な問題を研究したりするつもりはありませんが、主言語のサブタグとして「zh」のみを使用することを提案する唯一の理由は、混乱を避けるためです。IANA のエキスパートたちが将来どれだけの中国語の言語を承認するかわからないでしょうし、私たちはそれらをすべて覚える必要がありますか?それともコードをメンテナンスする際に AI に尋ねるか、辞書で調べてどの角落の外国語 / 方言なのかを確認するべきでしょうか?
「zh」は中国語を表し、「zh-xxx」は依然として中国語を表しますが、方言の特性を考慮する必要があります。このような表現は誤解を招くことはありません。
HTML の lang 属性の書き方#
できるだけ短く!
W3C のガイドラインでは次のように述べられています:
The golden rule when creating language tags is to keep the tag as short as possible
したがって、W3C の例である「zh-Hans」は最も適切な使用方法となります。また、個人的には「zh」のみを使用することも可能だと考えています。簡体字と繁体字を混在させても問題ありません。
CSS のマッチング方法#
接頭辞のみを記述!
私はいくつかの GitHub のオープンソースプロジェクトで、いくつかの作者が CSS ですべての言語と 2 番目の部分を真剣にリストアップしているのを見ました(例:zh
、zh-CN
、zh-SG
、zh-Hans
、cmn
、cmn-Hans
、zh-cmn-Hans
)。作者のこの真剣な姿勢に感心し、彼はドラゴンボールを集めるために多くの情報を調べたに違いないと思いますが、これは必要ありません。例を見てみましょう。図からわかるように、html
タグのlang
属性がどれだけ複雑に書かれていても、CSS では接頭辞のみを記述すればマッチングされます。すべての方言を列挙する必要はなく、列挙すると漏れが生じる可能性がありますし、新しい方言が登場する可能性もあります。これは CSS のマッチングに問題を引き起こす可能性があります。
自分が何をしているのかわからない場合は、列挙する必要はありません。接頭辞のみを記述すれば十分です。
互換性の問題#
実際、多くの中国のウェブサイトでzh-CN
の表記をよく見かけますが、この表記がどれだけのブラウザで互換性がないのかはわかりません。形式的には、CN
の要素を表す必要がある場合、おそらくzh-Hans-CN
の方が良いでしょう(スクリーンリーダー用の方言の部分を省略するだけ)。