lang グローバル属性は、要素の言語の定義に使われます。編集不可の要素では記述されている言語、また、編集可能な要素ではユーザーが書き込むべき言語です。属性には単一の「言語タグ」を Tags for Identifying Languages (BCP47) で定義された書式で持ちます。

属性値が空文字列 (lang="") の場合、言語は unknown に設定されます。言語タグが BCP47 に準拠していない場合は、 invalid に設定されます。

言語タグの構文

BCP47 の完全な構文は、細かい特定の言語の方言まで示せるようにとても複雑になっていますが、ほとんどの使い方ではずっと単純です。

言語タグはハイフンで区切られた言語サブタグより成り、それぞれのサブタグは言語の特定の特性を示します。3つのサブタグがもっともよく使われます。

言語サブタグ
必須です。基本言語を定義する2~3文字のコードで、ふつうすべて小文字で書かれます。例えば、英語の言語コードは en であり、バデシ語のコードは bdz です。
書記体系サブタグ
任意です。このサブタグは、言語で使われる書記体系を定義し、常に4文字の長さで、最初の文字は大文字です。例えば、ブライユ (点字) のフランス語は fr-Brail であり、 ja-Kana はカタカナで書かれた日本語です。言語がとても一般的な方法で記述される場合、例えば英語でアルファベットを使う場合などは、このサブタグを使用する必要はありません。
地域サブタグ
任意です。このサブタグは基本言語の特定の場所における方言を定義し、国コードを示す大文字2文字または地域を示す3桁の数字です。例えば、 es-ES はスペインで使われているスペイン語であり、 es-013 は中央アメリカで使われているスペイン語です。「国際スペイン語」は単なる es になります。

両方がある場合、書式体系サブタグは地域サブタグよりも先に置きます。 — ru-Cyrl-BY はベラルーシで使われているキリル文字によるロシア語です。

言語の正しいサブタグコードを探すには、 the Language Subtag Lookup を見てみてください。

lang 属性が設定されていても、 xml:lang 属性の方が優先するので、効果がないことがあります。

CSS 疑似クラスの :lang においては、名前が異なると二つの無効な言語名を区別します。ですから、 :lang(es)lang="es-ES" 及び lang="es-419" にも一致しますが、 :lang(xyzzy)lang="xyzzy-Zorp!" とは一致しません。

仕様書

仕様書 状態 備考
HTML Living Standard
lang の定義
現行の標準 最新のスナップショットである HTML 5.1 から変更なし。
HTML 5.1
lang の定義
勧告 HTML Living Standard のスナップショット。HTML5 から変更なし。
HTML5
lang の定義
勧告 HTML Living Standard のスナップショット。xml:lang の振る舞いと言語判断のアルゴリズムを定義。真にグローバルな属性となった。
HTML 4.01 Specification
lang の定義
勧告 <applet>, <base>, <basefont>, <br>, <frame>, <frameset>, <iframe>, <param>, and <script> を除くすべての要素で対応。

ブラウザーの対応

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 あり あり あり あり あり あり
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり あり あり あり あり あり

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mfuji09, sutara79, yyss
最終更新者: mfuji09,