• HTMLのlang属性はページの言語をhtml要素へ指定する

HTMLのlang属性はページの言語をhtml要素へ指定する

公開日: 執筆:佐藤

日本語を中心に書いたHTML文書では、html要素へlang="ja"を指定します。ページ全体の基準となる言語を最上位の要素で示し、英語などへ切り替わる部分があれば、その部分の要素でlangを指定し直します。

<html lang="ja">

lang属性は、文字コードや文字の表示方向を指定する属性ではありません。何の言語で書かれた内容かをHTMLに記述するための属性です。

日本語ページではhtml要素へlang="ja"を指定する

HTML 4.01の言語情報に関する仕様は、lang属性を、要素の内容と属性値の基準言語を示すものと定義しています。文書全体の基準言語は、次のようにhtml要素へ指定します。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
  <title>会社案内</title>
</head>
<body>
  <p>事業内容をご案内します。</p>
</body>
</html>

日本語の言語コードはjaです。jpは日本という国を表すコードと混同した値であり、日本語の基準言語として指定しません。日本語で書いたページなら、まずlang="ja"を使います。

言語情報は、音声合成による発音、引用符、文字の形、ハイフン処理、綴りの確認などを利用者の環境が選ぶ手掛かりになります。WCAG 2.0の実装方法H57も、文書の既定の言語をhtml要素のlangまたはxml:langで示す方法を説明しています。

lang属性と文字コードは別に指定する

lang="ja"とcharset=UTF-8は、どちらか一方を指定すればよい関係ではありません。langは内容の言語を示し、文字コードは文字をどの符号で保存し、読み取るかを示します。

<html lang="ja">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>会社案内</title>
</head>

日本語の文字が正しく表示されていても、langが正しいとは限りません。反対に、lang="ja"があっても、文字コードの指定と実際のファイルが食い違えば文字化けします。出力されたHTMLでは、言語と文字コードを別々に確認します。

一部だけ言語が変わる場合はその要素で指定し直す

html要素に指定した言語は、内側の要素へ引き継がれます。ページの大半が日本語なら、すべての段落へlang="ja"を繰り返す必要はありません。

英語の文章をまとまった範囲で掲載する場合は、その範囲を囲む要素へlang="en"を指定します。

<html lang="ja">
<body>
  <p>英語でのご案内は次のとおりです。</p>
  <blockquote lang="en">
    <p>Information about our services.</p>
  </blockquote>
</body>
</html>

WCAG 2.0の実装方法H58は、ページ内で人間の言語が変わる箇所へ、文書形式に応じたlangまたはxml:langを指定する方法を示しています。ただし、日本語文中に現れる固有名詞、技術用語、日常語として定着した短い語まで、一語ずつ機械的に囲む必要はありません。文章や引用の言語が切り替わる範囲を見て判断します。

HTMLとXHTMLでは使う属性を分ける

HTML 4.01ではlang属性を使います。XHTMLでは、配信する内容形式によって指定が変わります。

文書と配信形式 html要素への指定
HTML 4.01 lang="ja"
XHTML 1.0をtext/htmlで配信 lang="ja" xml:lang="ja"
XHTMLをapplication/xhtml+xmlで配信 xml:lang="ja"

見た目だけでHTMLかXHTMLかを決めず、文書型宣言とHTTPのContent-Typeを確認します。テンプレートの一行だけを別形式の書き方へ変えるのではなく、サイトが実際に出力する文書形式に合わせます。

lang属性とdir属性を混同しない

lang属性は言語、dir属性は文字や表の基準方向を示します。HTML 4.01は、文字の方向をlangから決めてはいけないとしています。

日本語ページにlang="ja"を指定することと、左から右または右から左という方向を指定することは別です。右から左へ書く言語を含むページでは、言語の指定だけで表示方向まで処理させず、内容に応じてdir属性も検討します。

テンプレートと出力HTMLの両方を確認する

サイト全体で共通のテンプレートを使っているなら、html要素は通常、そのテンプレートから出力されます。個々の本文だけを直しても、最上位のlangは変わらない場合があります。

まず一ページのソースを開き、開始タグが<html lang="ja">になっているかを確認してください。次に、文書型宣言とHTTP応答のContent-Typeを見て、HTMLとXHTMLのどちらとして出力しているかを照合します。ページ内に別言語のまとまった文章がある場合だけ、その範囲のlangも確認します。

戻る