自社サイトのソースを開いたら、先頭のほうに lang=”ja” という文字があった。これは何のために書いてあるのか。消してしまっても、検索順位は変わらないのか。
制作会社に任せたままで、中身を聞いたことがない。そういう経営者やWeb担当者に向けて、この記事を書いています。
結論から言います。lang属性は、その要素の中身が何語で書かれているかを示す属性です。日本語のページなら、html要素に lang=”ja” と書きます。
Googleは、ページの言語を本文の文字から判断します。Googleの公式文書は、lang のようなコードの注釈は使わないと明記しています。つまり、書いても検索順位は上がりません。
それでも全ページに書く理由は、別のところにあります。読み上げ機能、ブラウザの翻訳や表示、そして人にもAIにも読まれるページの土台として、言語の宣言が使われるからです。
先に答え:lang属性を読むのは誰か
この属性を読む相手を、4者に分けて整理しました。Googleの検索は、この中で唯一、使わないと公式に書かれている相手です。
| 読む相手 | 使うか | 根拠にした資料 |
|---|---|---|
| 読み上げ機能(画面の文字を音声にする仕組み) | 使う。発音の規則を選ぶ手がかりになる | W3Cのウェブアクセシビリティ解説(達成基準3.1.1) |
| ブラウザ・翻訳機能 | 使う。翻訳や表示の規則を選ぶ手がかりになる | HTMLの仕様(WHATWG) |
| Google検索 | 使わない。本文の文字から言語を判断する | Google検索セントラルの2つの文書 |
| AIのクローラー(ChatGPT・Claudeなどの情報収集ロボット) | 公式に記載なし | OpenAI・Anthropicの公式文書を開いて確認 |
AIのクローラーの行は、確かめた結果の報告です。公式の文書に、この属性についての記述が見つかりませんでした。記述がないものを、あるかのようには書きません。
この記事の読み方
悩みの種類によって、読む節が変わります。
| いまの悩み | 読む節 |
|---|---|
| 何のための属性なのか分からない | lang属性とは |
| 書いても検索順位は上がらないのか知りたい | 誰が読むのか/「Googleが見ない」と「書かなくてよい」は別の話 |
| ja・en・zhの書き分けが分からない | 値の書き方 |
| 英語や中国語が混ざるページの書き方を知りたい | ページの一部だけ別の言語にする |
| 自社のサイトがどうなっているか確かめたい | 弊社サイトで実測した結果/WordPressで確かめて直す |
| すぐ点検したい | 今日できる点検 |
この記事の根拠にした資料
この記事は、次の資料を2026年11月6日に実際に開いて読んでから書いています。
- HTMLの仕様(WHATWG)の最新版(2026年11月5日更新)
- Google検索セントラル「多地域、多言語のサイトの管理」(日本語版・2025年12月18日更新)
- Google検索セントラル「Google がサポートしているメタタグと HTML 属性」(日本語版・2026年3月8日更新)
- Google検索セントラル「翻訳された Google 検索結果」(日本語版・2026年2月20日更新)
- Google検索セントラル「AI機能とウェブサイト」(日本語版・2025年12月31日更新)
- W3Cのウェブアクセシビリティ解説 達成基準3.1.1(2026年3月9日更新)と3.1.2(2026年7月12日更新)
- W3Cの国際化の解説(HTMLでの言語の宣言/言語タグの選び方の2本)
- IANAの言語サブタグレジストリ(2026年9月17日付)
- OpenAIとAnthropicのクローラーに関する公式文書
- WordPress開発者向けリファレンス
書くのは、そこで確かめられた範囲だけです。確かめられなかったことは「公式に記載なし」と書きます。
Q&Aサイトで見かけた、lang の ja と en の違いを聞く質問
先日、Q&Aサイトでこのような悩みを拝見しました。投稿から2年ほど経っていますが、いまも同じ疑問を持つ人は多いと思います。
投稿者は、HTMLのlangをjaにする場合とenにする場合とで、コードを書くうえで何が違うのかを知りたがっていました。書き方そのものより、書いた結果に何が起きるのかを聞いているようでした。
回答は複数つきました。ひとつは、言語ごとに表示に使われる文字の形やフォントが変わる、という内容の参考ページを示したものです。
別の回答は、違いはなく、ブラウザがそのページの言語を判断するだけだと答えていました。そのうえで、翻訳を提案するボタンが出ることがある、と添えていました。
もうひとつの回答は、日本語で書かれたページに lang=”en” と書くことに利点はあるのか、という疑問を投げかけていました。
質問と回答から読み取れる3つの疑問
この質問と回答の中には、3つの疑問が混ざっています。
1つ目は、jaとenで表示や動作が実際に変わるのか。2つ目は、翻訳ボタンのような機能が、この属性に左右されるのか。3つ目は、日本語のページに間違った値を書いたら、何が困るのか。
この記事は、この3つに順番に答えます。回答の中の「ありません」という言い切りは、半分だけ正しいと私は考えています。公式の資料を読むと、人に見える違いは小さくても、機械が言語を判断する場面では違いが出うる、と書かれているからです。
先に短く答える
jaとenで、画面の見た目がはっきり変わるとは限りません。ただし、HTMLの仕様は、ブラウザが言語に応じてフォントの選び方や発音を決めてよい、と書いています。
つまり、書いた値は、見えないところで使われることがあります。使われるのに間違っていると、その分だけ損をします。
lang属性とは:要素の中身の言語を示す属性
lang属性は、HTMLのグローバル属性のひとつです。グローバル属性とは、どの要素にも付けられる属性のことです。
HTMLの仕様(WHATWG)は、この属性について次のように書いています。
「lang属性は、要素の内容と、テキストを含む要素の属性値の主要な言語を指定する。」
これは、仕様書の英語の記述を、私が日本語に訳したものです。要素の中の文字だけでなく、その要素の属性に書かれた文字(たとえば title 属性の文)も対象に含まれる点が大事です。
html要素に書くのが基本
ページ全体の言語を宣言するときは、いちばん外側のhtml要素に書きます。
<html lang="ja">
HTMLの仕様(WHATWG)は、html要素について「ルート要素に lang 属性を指定することが推奨される」と書いています。理由として、音声合成の道具が発音を決めるため、翻訳の道具がどの規則を使うかを決めるため、と挙げています。
W3Cの国際化の解説も、同じ結論です。ページの既定の言語は html 要素に書くように勧めています。body 要素に書く方法は勧めていません。body に書くと、head の中にある文字(ページのタイトルなど)が対象から外れるからです。
親から子へ引き継がれる
lang を書かなかった要素の言語は、親の要素と同じになります。HTMLの仕様(WHATWG)に、こう書かれています。
「これらの属性が省略された場合、その要素の言語は、親要素の言語と同じになる。」
だから、html要素に ja と書けば、その中のすべての要素が日本語として扱われます。段落ごとに書く必要はありません。
子の要素に別の値を書けば、その要素とその中身だけ、別の言語になります。この仕組みが、後の節で扱う「ページの一部だけ別の言語にする」書き方の土台です。
値が空のときと、見知らぬ値のとき
仕様には、細かい取り決めもあります。値が空の文字列のときは、言語が不明であることを明示した、という意味になります。
値が仕様に載っていない言語タグのときは、未知の言語として、そのままの文字で扱われます。たとえば lang=”xyzzy” は、xyzzyという名前の未知の言語です。ブラウザが勝手に別の言語に読み替えることはありません。
間違った値を書くと、「間違った言語だと宣言した」ことになります。何も書かない場合とは違い、積極的に間違いを伝えてしまいます。
弊社の整理:lang は「言語の名札」
弊社では、この属性を「文章に付ける言語の名札」と考えています。名札は、読む側が使うためのものです。書く側が検索順位のために付けるものではありません。
名札が正しければ、読み上げ機能も翻訳機能も、正しい規則を選べます。名札がなければ、機械は文字を見て推測するしかありません。名札が間違っていれば、推測よりも悪くなる場面があります。
この考え方は、HTMLの仕様の書き方とも合っています。仕様書は、書き手には「推奨」、読む側には「使ってよい」とだけ書いていて、効果を約束してはいません。
誰が読むのか:読み上げ・ブラウザ・Google・AIの4者
lang を読む相手は、1者ではありません。相手ごとに、公式の資料に書いてあることが違います。1者ずつ、確かめた範囲で書きます。
読み上げ機能:発音の規則を選ぶ手がかり
W3Cのウェブアクセシビリティ解説は、達成基準3.1.1「ページの言語」について、次のように述べています。
「各ウェブページの既定の人間の言語が、プログラムで判断できること。」
これも、英語の原文を私が日本語に訳したものです。この基準は、3段階ある適合レベルのうち、いちばん基本のレベルAに置かれています。
解説は、目的を具体的に説明しています。読み上げ機能は正しい発音の規則を読み込める。ブラウザは文字や書体を正しく表示できる。動画の再生機能は字幕を正しく出せる、という内容です。
つまり、読み上げ機能にとって lang は、どの言語の発音ルールで読むかを選ぶための、最初の手がかりです。目が見えない人や、文字を読むのが苦手な人が、ページを耳で聞くとき、この指定が効いてきます。
ブラウザと翻訳機能:翻訳や表示の規則を選ぶ
HTMLの仕様(WHATWG)は、html要素の説明の中で、書き手に lang の指定を勧める理由を書いています。音声合成の道具が発音を決めるため、翻訳の道具がどの規則を使うかを決めるため、という理由です。
lang の節には、ブラウザの側についても記述があります。ブラウザは、要素の言語を使って、適切なフォントや発音の選択、辞書の選択、日付を選ぶ部品などの画面の見せ方を決めてよい、とされています。
「決めてよい」という書き方は、必ず決めると約束するものではありません。ブラウザごとに実際の動きは違いうる、という含みがあります。
翻訳を提案する表示が出るかどうかは、Q&Aサイトの回答にも登場しました。この動きを細かく説明した公式の文書は、今回の確認では見つかりませんでした。ここは公式に記載なしです。
Google検索:使わないと明記されている
Google検索セントラルが2025年12月18日に更新した「多地域、多言語のサイトの管理」によると、次のとおりです。
「Google では、ページの表示内容からその言語を判断します。lang 属性のようなコードレベルの言語情報や、URL は使用しません。」
もうひとつ、「Google がサポートしているメタタグと HTML 属性」という文書にも、同じ趣旨の1項目があります。
「Google 検索では、ページのテキスト コンテンツに基づいてそのページの言語を検出します。lang などのコード注釈は利用しません。」
2つの文書が、別々の場所で同じことを書いています。前者は2025年12月18日、後者は2026年3月8日の更新版です。lang を使うと検索に効く、という説明は、公式の文書とは合いません。
AIのクローラー:公式に記載なし
OpenAIの公式文書(クローラーの概要を説明したページ)には、OAI-SearchBot、GPTBot、ChatGPT-User などのロボットの役割と、robots.txt での制御の方法が書かれています。lang についての記述は、見つかりませんでした。
Anthropicの公式ヘルプも同じです。ClaudeBot、Claude-User、Claude-SearchBot の3つのロボットの用途と、robots.txt での制御が書かれていますが、lang の記述は見つかりませんでした。
GoogleのAIによる概要とAIモードについては、検索セントラルの「AI機能とウェブサイト」が答えています。AI機能にページが表示されるための条件は、インデックスに登録されていて、スニペットが表示されること以外にない、という内容です。追加の技術要件はない、と書かれています。
つまり、AIのクローラーが lang を読んでいるかは、公式の資料からは分かりません。読んでいる、とも、読んでいない、とも言えません。
弊社の整理:4者の違いを表にする
| 読む相手 | 公式に書かれていること | この記事での扱い |
|---|---|---|
| 読み上げ機能 | 発音の規則を選ぶために使える(W3C) | 使う。書く最大の理由 |
| ブラウザ・翻訳 | 表示や翻訳の規則を決めるのに使ってよい(WHATWG) | 使われうる。動きは公式に細かく書かれていない |
| Google検索 | 使わないと明記(検索セントラル2文書) | 順位や表示のために書く理由にならない |
| AIのクローラー | 公式に記載なし | 効くとも効かないとも言わない |
この表のとおり、書く理由の中心は、読み上げ機能とブラウザです。検索やAIは、書く理由に含めないほうが誤解がありません。
「Googleが見ない」と「書かなくてよい」は別の話
ここまで読むと、「Googleが見ないなら、書かなくてよい」と考えたくなります。この考え方には、2つの飛躍があります。
飛躍の1つ目は、読む相手がGoogleだけだと決めてかかっていること。2つ目は、書かないときに何が起きるかを確かめていないことです。
書かないと、何が起きるのか
lang を書かなかった場合、HTMLの仕様は、言語を決める最後の手がかりを示しています。HTTPなどの上位の取り決めに言語情報があればそれを使い、なければ言語は不明になります。
不明になった場合、ブラウザや読み上げ機能は、文字を見て推測するしかありません。日本語のページなら、推測が当たる場面も多いと考えられます。ただし、これは私の推測です。公式の文書は、推測の精度を保証していません。
W3Cの解説も、書き手が宣言することを勧めています。宣言があれば、推測に頼らずに済むからです。
間違った値を書くと、何が起きるのか
日本語のページに lang=”en” と書いた場合を考えます。HTMLの仕様では、これは「このページは英語だ」という宣言です。
読み上げ機能は、英語の発音の規則で日本語の文字を読みに行く可能性があります。W3Cの解説は、読み上げ機能が言語の規則を読み込むために、この宣言を使うと述べています。宣言が間違っていれば、規則の選択も間違いうる、というのが筋の通った読み方です。
Googleは本文の文字から言語を判断するため、この間違いで検索の扱いが変わるとは、公式からは読み取れません。困るのは、読み上げ機能やブラウザを使う人です。
「langを入れると順位が上がる」という説明を聞いたら
制作会社や営業の人から、「lang属性を入れるとSEOに効きます」と聞くことがあるかもしれません。そのときは、公式の文書を一緒に開いて、確かめるのが確実です。
確かめる文書は2つ。「多地域、多言語のサイトの管理」の「ページの言語が明確にわかるようにする」の項と、「Google がサポートしているメタタグと HTML 属性」の lang の項です。どちらも、日本語で読めます。
書くこと自体は正しい作業です。ただし、書いた理由を「順位のため」とすると、効果が測れず、後で説明に困ります。理由は「読み上げと表示のため」と説明するのが安全です。
Googleが言語を間違えるのは、どんなときか
Googleの文書は、言語の判断を正しくしてもらうための注意を書いています。各ページの本文とナビゲーションには1つの言語を使い、原文と訳文を一緒に表示することは避けること、という内容です。
また、ページの定型文だけが翻訳されて、本文の大部分が1つの言語のままのページは、検索ユーザーにとって不便になる、とも書かれています。
つまり、Googleの言語判断を助けるのは、ページの本文そのものです。lang の指定は、その役を担いません。本文が日本語なら、日本語のまま書き切ること。これが、検索のための言語対策の中身です。
値の書き方:ja・en・zh-Hans・zh-Hant
lang に書く値は、好きな文字列を入れてよいわけではありません。HTMLの仕様(WHATWG)は、値が「BCP 47という規格にのっとった言語タグ」か、空の文字列のどちらかでなければならない、と定めています。
BCP 47は、言語タグの付け方を決めたインターネット標準の規格です。実際に使える部品の一覧は、IANAの言語サブタグレジストリにまとまっています。この記事を書いた2026年11月6日に、2026年9月17日付の版を開いて確認しました。
日本語はja、英語はen
よく使う言語のタグは、2文字の言語コードだけで足ります。日本語はja、英語はen、韓国語はko、フランス語はfr、ドイツ語はdeです。
W3Cの国際化の解説によると、言語タグは「できるだけ短く」するのが原則です。ほかの言語と区別するために必要なときだけ、部品を足す、という考え方です。
日本語のサイトなら、ほとんどの場合、ja の2文字で足ります。
国や地域は、付けなくてよい
jaの後ろに国の記号を足した ja-JP という書き方も、よく見かけます。形式としては正しい書き方です。
ただし、W3Cの解説は、国の部品は「その言語を他と区別するために必要なときだけ」使うと書いています。例として、英語のイギリス式とアメリカ式の違いが挙げられ、en-GB は綴りの確認に役立つかもしれない、とあります。一方で、ja-JP の JP は、日本語を他の地域の日本語と対比させたいのでなければ、役に立つ見込みは低い、と書かれています。
つまり、ja-JP を書いても間違いではありませんが、書く意味は小さいです。
中国語は、字体で書き分ける
中国語は少し事情が違います。zh は中国語全体を指す言語コードです。W3Cの国際化の解説は、zh を使い続けてよい、としています。
字体を明示したいときは、zh の後ろに字体の部品を足します。レジストリには、簡体字を表す Hans と、繁体字を表す Hant が載っています。簡体字の中国語なら zh-Hans、繁体字の中国語なら zh-Hant です。
W3Cの解説にも、簡体字の中国語を zh-Hans と書いた例が載っています。国で書き分ける zh-CN のような書き方も、これまで使われてきました。ただし、国と字体は同じ話ではありません。字体で書き分けるほうが、中身に合っています。
値の一覧
よく使う値を、表にまとめました。
| 言語 | 値 | 補足 |
|---|---|---|
| 日本語 | ja | 国の記号は不要 |
| 英語 | en | イギリス式を示すなら en-GB |
| 中国語(簡体字) | zh-Hans | 字体で書き分ける |
| 中国語(繁体字) | zh-Hant | 字体で書き分ける |
| 韓国語 | ko | 国の記号は不要 |
| フランス語 | fr |
間違えやすい書き方
W3Cの解説とレジストリを突き合わせると、間違えやすい書き方が見えてきます。
| 書いた値 | 何が起きるか | 直し方 |
|---|---|---|
| jp | レジストリに言語としての jp はない。JP は国の記号 | ja |
| cn | レジストリに言語としての cn はない。CN は国の記号 | zh-Hans または zh-Hant |
| ch | レジストリでは ch はチャモロ語を指す | 中国語なら zh-Hans または zh-Hant |
| 空欄 | 言語が不明という意味になる | ja など正しい値を入れる |
| 大文字小文字の混在 | 慣習は言語が小文字、字体が先頭だけ大文字。ただし区別は必須ではない | 慣習どおりに書く |
Q&Aサイトには、中国語を lang=”ch” と書いた例がありました。レジストリを引くと、ch はチャモロ語です。見た目が似ていても、別の言語になってしまいます。
大文字小文字については、W3Cの解説が、これは慣習にすぎず、どう書いても自由だと述べています。ただ、ファイル名など区別される場面でも使えるように、慣習に合わせておくのが無難です。
値を決める順番
迷ったときは、次の順番で決めると、短い値にたどり着けます。
まず、ページの本文が何語かを決めます。次に、言語コードを2文字で調べます。国や字体を足す理由があるかを考え、なければ足しません。最後に、書いた値がレジストリにあるかを見ます。
ページの一部だけ別の言語にする
日本語のページの中に、英語の文や中国語の名前が混ざることがあります。その部分だけ別の言語であることを示したいときは、その部分を囲む要素に lang を書きます。
親の言語は、子に引き継がれます。子に別の値を書けば、その要素の中身だけ別の言語になります。
書き方の例
W3Cの国際化の解説は、周りに適当な要素がないときは、span 要素で文字を囲んで書く方法を示しています。次は、日本語の文の中に英語の名前を入れる例です。
<p>この商品は<span lang="en">Open House</span>と呼ばれます。</p>
html要素に ja と書いてあるページなら、この span の中だけが英語になります。日本語の部分はそのまま日本語です。
すべての外国語に付ける必要はない
ページの中の外国語すべてに lang を付けなくてよい、と解説は述べています。W3Cのウェブアクセシビリティ解説(達成基準3.1.2「一部分の言語」)には、例外が4つ書かれています。
| 例外 | 解説の言い方 |
|---|---|
| 固有名詞 | 製品のブランド名や人名・地名は、翻訳せずに言語をまたいで使われる |
| 専門用語 | 付けなくてよい |
| 言語が特定できない語 | 付けなくてよい |
| 周りの文章に溶け込んだ語 | 辞書に載り、周りの言語の読み上げで正しく読まれる語は付けなくてよい |
解説は、英語の文の中に入ったフランス語由来の rendezvous のように、辞書に載って周りの言語に溶け込んだ語は、周りの言語の一部として扱ってよい、と述べています。日本語のカタカナ語にも同じ考え方を当てはめられる、というのは弊社の読み方です。迷ったときは、その語が周りの言語の読み方でも通じるかを考えます。
この達成基準は、レベルAAに置かれています。レベルAのページの言語(3.1.1)より一段高い要求です。
属性の中の文字は、別の要素に分ける
lang は、要素の中の文字だけでなく、その要素の属性に書かれた文字にも及びます。W3Cの国際化の解説には、この落とし穴の例が英語のページで載っています。日本語のページに置き換えて紹介します。
リンクの中の文字をスペイン語にしたくて、a 要素に lang=”es” を付けると、title 属性に書いた日本語のヒントまでスペイン語の宣言の対象になってしまいます。解説は、文字を span で囲んで、そちらに lang を付けるように勧めています。
title 属性の中で言語が混ざる場合は、現時点でよい解決策がない、とも解説に書かれています。属性の値の中には、タグを入れられないためです。
翻訳させたくない語は、translate 属性
lang とは別に、HTMLの仕様(WHATWG)には translate という属性があります。値を no にすると、その要素の文字や属性の値を、ページを別の言語にするときに翻訳しないよう指定できます。
ブランド名のように、翻訳されると困る語に使う属性です。lang が「何語か」を示すのに対し、translate は「訳すかどうか」を示します。役割が違います。
なお、Google検索の翻訳機能を止めるときは、別の仕組みを使います。検索セントラルの「翻訳された Google 検索結果」は、meta タグまたは HTTP ヘッダーで書く notranslate というルールを案内しています。translate 属性をGoogleが読むかは、今回確認した範囲では公式に記載なしでした。
日本語のサイトに外国語が混ざるときの決め方
日本語が中心のサイトに、英語や中国語のページが混ざる場合があります。どこまで lang で書き分けるかは、サイトの作りで決まります。
日本語7割、中国語3割のページ
Q&Aサイトには、日本語が7割、中国語が3割のサイトで、html要素にどちらを書くべきか迷っている質問がありました。
W3Cのウェブアクセシビリティ解説は、ページの既定の言語を「いちばん多く使われている言語」とすると述べています。複数の言語が同じ程度に使われているときは、最初に使われている言語を選びます。
この質問の場合は、日本語が7割なので、html要素は ja です。中国語の部分には、span などで lang=”zh-Hans” か lang=”zh-Hant” を付けます。
言語ごとにページを分けるとき
日本語版と英語版を別のページとして作るなら、それぞれのページのhtml要素に、そのページの言語を書きます。日本語版は ja、英語版は en です。
Googleは、言語のバージョンごとに別のURLを使うことを勧めています。Cookieやブラウザの設定で内容を切り替える方法は、勧めていません。ユーザーの言語の推測に基づく自動転送も、避けるように書かれています。
別の言語版を、検索結果に正しく出すための仕組みが hreflang です。この記事は lang の話に絞ります。hreflang の書き方や、AI検索との関係は、既存の記事で扱っています。
lang と hreflang の違い
名前が似ているため、混同しやすい2つを、表で分けます。
| 項目 | lang | hreflang |
|---|---|---|
| 書く場所 | html要素や、一部を囲む要素 | link要素・HTTPヘッダー・サイトマップ |
| 示すこと | その文章が何語か | ほかの言語版のページがどこにあるか |
| Google検索が使うか | 使わない(検索セントラル) | 使う(検索セントラル) |
| 主な読み手 | 読み上げ機能・ブラウザ | 検索エンジン |
lang は文章の名札、hreflang はページ同士の対応表、と覚えると区別しやすくなります。この整理は、弊社の言い方です。
lang を書き換えても、文章は翻訳されない
Q&Aサイトには、ボタンを押したら日本語のページを英語や中国語に切り替えたい、という質問もありました。html要素の lang を ja から en に書き換えれば切り替わるのか、という疑問です。
回答は、書き換えても文章は翻訳されない、というものでした。lang は言語の宣言にすぎません。中身の文章が英語でなければ、英語のページにはなりません。
HTMLの仕様(WHATWG)の書き方とも合っています。lang は要素の言語を示す属性で、翻訳を行う属性ではありません。
弊社サイトで実測した結果:lang はどう書かれているか
公式の資料だけでなく、弊社の自社サイトを実際に開いて、lang がどう書かれているかを測りました。測ったのは2026年11月6日です。
測り方
対象は、弊社サイトの公開記事のうち、新しい順に100ページです。各ページを実際に開き、html要素の lang の値を読みました。あわせて、直近の公開記事300本の本文に、lang の指定が入っているかも調べました。
結果
| 調べたこと | 結果 |
|---|---|
| 開けた記事ページの数 | 100ページ中68ページ(残りは、測定中にサーバーが応答せず取得できなかった) |
| html要素の lang の値 | 取得できた68ページのすべてが ja |
| http-equiv の content-language を使ったページ | 0ページ |
| 直近300本の本文に書かれた lang の指定 | 0本 |
| html要素のほかにある lang の指定 | 取得できた68ページのすべてで、span 要素の en が1か所だけ |
そのhtml要素以外の指定は、中身を確かめた1ページでは、フッターの著作権記号(©)を囲む span 要素でした。値は en です。サイトのテーマが、全ページに共通で入れているものです。
この数字から言えること
弊社のサイトは、ページ全体の言語は ja で統一されています。記事の本文は日本語だけで書いているので、本文の中で別の言語を宣言する必要がなく、指定は0本でした。
もうひとつ分かるのは、制作の道具が、利用者の知らないところで lang を書いてくれる場合があることです。弊社は、html要素の値も、フッターの en も、自分で書いた覚えがありません。WordPressのテーマが出力したものです。
自社サイトにも同じことが起きているかもしれません。次の節で、WordPressでの確かめ方を説明します。
WordPressで確かめて直す
WordPressでは、html要素の lang は、テーマが書き出しています。仕組みを、公式のリファレンスで確かめました。
lang の値は、どこから来るのか
WordPress開発者向けリファレンスの get_language_attributes() に、ソースコードが載っています。html要素に入れる属性を作る関数で、中では、サイトの言語を get_bloginfo の「language」という項目から取り出しています。
get_bloginfo のソースによると、この項目は、まず言語ファイルの翻訳文字列を探します。見つからなければ、サイトのロケール(地域設定)を取り出し、アンダースコアをハイフンに置き換えて使います。
つまり、サイトの言語の設定が日本語なら、html要素には ja が入るのが普通です。この動きは、リファレンスのソースから読み取った内容です。
テーマが、この関数を呼んでいるか
get_language_attributes() を呼んで画面に出す関数が、language_attributes() です。リファレンスの例では、テーマのヘッダーに、html要素の開始タグの中で、この関数を呼ぶ書き方が載っています。
テーマが、この関数を使わずに lang=”en” を直接書いていると、サイトの言語の設定を日本語にしても、html要素は en のままです。英語のテーマを日本語化したときに、起きうる状況です。
もうひとつ、リファレンスには、出力を書き換えるための仕組み(language_attributes という名前のフィルター)も載っています。多言語化のための追加機能が、この仕組みを使って値を変える場合があります。
確かめる手順
次の順番で確かめると、迷いません。
| 順番 | やること | 見るもの |
|---|---|---|
| 1 | WordPressの管理画面で、設定の一般を開く | 「サイトの言語」が日本語か |
| 2 | 公開中のトップページを、ブラウザで開く | 画面で右クリックして、ページのソースを表示 |
| 3 | ソースの先頭付近の、html という文字を探す | lang の値が ja か |
| 4 | 記事、固定ページ、個別のLPでも同じ作業をする | ページごとに値が違わないか |
| 5 | 英語の文が入っている箇所を探す | 周りの要素に en が付いているか |
WordPressの公式ドキュメントでは、設定の「サイトの言語」を「WordPressのダッシュボードの言語」と説明しています。画面の言語の設定が、そのままhtml要素の値につながるかは、テーマ次第です。だからこそ、ソースで実物を見て確かめます。
直し方の考え方
実物のソースで ja になっていれば、直す必要はありません。
en などの別の値になっていたら、次の順に原因を探します。
| 見つかった状態 | 考えられる原因 | 次にすること |
|---|---|---|
| サイトの言語の設定が日本語以外 | 設定が違う | 設定の一般で、サイトの言語を日本語にする |
| 設定は日本語なのに、html要素が en | テーマが値を直接書いている | テーマの制作者か、管理を任せている会社に、書き方の変更を依頼する |
| ページによって値が違う | 多言語化の機能や、個別のテンプレートの影響 | 値が違うページと、同じ値のページの作り方の違いを確かめる |
| lang がそもそも書かれていない | テーマが html要素に出力していない | テーマの制作者に、html要素の書き方を確かめてもらう |
テーマのファイルを自分で書き換えるときは、事前にバックアップを取ります。制作会社に任せているサイトでは、確かめた結果(どのページで、何が書かれていたか)を伝えると、話が早く進みます。
作業を頼むときの伝え方
制作会社に依頼するときは、次の3点を伝えると、作業が正確になります。
1つ目は、直したいページの一覧です。2つ目は、現状の値(たとえば、ページのソースに lang=”en” と書かれていた)。3つ目は、望む値(ja)です。
「SEOのためにlangを直してほしい」という理由づけは、避けたほうがよいと思います。公式の文書とは合わないため、制作会社が確認したときに、話がかみ合わなくなります。理由は「読み上げ機能やブラウザが、正しい言語を選べるようにするため」と書いてください。
よくある間違いと、その確かめ方
lang まわりで起きがちな間違いを、まとめます。多くは、1ページ開けば見つかるものです。
6つの間違い
| 間違い | 何が問題か | 確かめ方・直し方 |
|---|---|---|
| body要素に書いていて、html要素には書いていない | head の中の文字(タイトルなど)が対象から外れる(W3C) | html要素に書き直す |
| 値を jp や cn と書いている | レジストリに言語としては存在しない | ja や zh-Hans に直す |
| 英語のテンプレートのまま en | 日本語のページに、英語の宣言が付いてしまう | ソースを見て ja に直す |
| meta要素の content-language で言語を指定している | HTMLの仕様では非適合。lang を使うよう勧められている | meta要素をやめ、lang に一本化する |
| xml:lang だけを書いている | HTMLの文書では、言語の処理に影響しない(WHATWG) | lang を書く |
| 外部で作ったLPや完了ページに書かれていない | 部分的に作られたページは、テーマの対象外 | 一度ページのソースで確かめる |
meta要素の content-language は、使わない
HTMLの仕様(WHATWG)は、meta要素の content-language を使う方法について、適合しない書き方で、lang を使うよう勧めている、と書いています。W3Cの国際化の解説も、ページの言語を示すためには、この方法を使うべきではないとしています。
古いサイトの制作の手引きには、この方法が載っていることがあります。見つけたら、lang に置き換えるのが安全です。
xml:lang は、HTMLでは効かない
HTMLの仕様(WHATWG)は、HTMLの文書に書かれた xml:lang には「言語の処理に影響しない」と書いています。lang と同時に書くことは許されていますが、2つの値が同じでなければなりません。
古い書き方が残っているテンプレートでは、2つが並んでいることがあります。値が違っていないかを、あわせて見てください。
作ったページの種類ごとに、漏れが出やすい
lang の指定は、通常の記事ページよりも、特別なページで抜けやすくなります。次の表は、起きやすい状況の例です。これは弊社の整理で、公式の分類ではありません。
| ページの種類 | 漏れやすい理由 |
|---|---|
| 広告用のLP | テーマとは別に、単独のHTMLで作られることがある |
| 申込み完了ページ | 外部のフォームサービスの画面に切り替わることがある |
| 404ページ | 作った覚えのない、標準のテンプレートが使われている |
| 英語版の案内ページ | 日本語のテンプレートを複製して作ると、ja が残る |
特に、日本語のページを複製して英語版を作ったときは、本文を英語に変えても、lang が ja のまま残りがちです。これは、本文と宣言が食い違う、最も典型的な状態です。
dir 属性にも触れておく
lang と対になる属性として、文字を書く向きを示す dir という属性があります。アラビア語やヘブライ語のように、右から左へ書く言語のページでは、dir の指定が必要です。W3Cの解説は、こうした言語を扱うときは、dir も併せて使うように述べています。
日本語や英語のサイトでは、通常は気にしなくて構いません。WordPressでは、右から左へ書く言語の設定のときだけ、関数が dir=”rtl” を足します。
AIに読まれるページの土台として、言語の宣言をどう位置づけるか
ここまでの結論を、AI検索の文脈に置き直します。経営者や担当者が知りたいのは、結局「AIに引用されやすくなるのか」だと思います。
公式に書かれていること
Google検索セントラルの「AI機能とウェブサイト」によると、AIによる概要やAIモードにページが表示されるための追加の要件はありません。条件は、ページがインデックスに登録されていて、スニペットが表示されることと、検索の技術的な要件を満たしていること。これ以外の技術要件はありません。
同じ文書に、AI機能のために新たに用意する機械向けのファイルや、AI専用のテキストファイル、特別なマークアップは要らない、とも書かれています。
OpenAIとAnthropicの公式文書は、ロボットの名前と、robots.txt での制御方法を説明しています。lang については、どちらの文書にも記述がありませんでした。
だから、「AI対策としての lang」は売らない
ここまでの確認で言えることは限られます。lang を書くとAIに引用されやすくなる、と言える公式の根拠は、今回の確認では見つかりませんでした。
制作会社や営業の人からそう説明されたら、根拠となる公式文書の名前を聞いてください。名前が出てこなければ、その説明は検証できません。
弊社の整理:lang は、土台の衛生項目
弊社は、AIにも人にも読まれやすいページを、次の4つの層で考えています。この整理は弊社の考え方であり、公式の分類ではありません。
| 層 | 中身 | lang との関係 |
|---|---|---|
| 1. 本文 | 質問に直接答える、具体的な文章 | Googleが言語を判断する材料は、この本文 |
| 2. 構造 | 見出し・表・画像の説明 | 別の記事で扱う |
| 3. 宣言 | 言語・文字コード・ページの説明 | lang はここ。読み上げ機能とブラウザが読む |
| 4. 配置 | robots.txt・サイト内の導線 | AIのロボットが入れるかを決める |
lang は、3層目の小さな項目です。書いていないから順位が落ちる項目でも、書いたから引用される項目でもありません。書いていないと読み上げ機能やブラウザが推測に頼る、というだけの、基本の衛生項目です。
点検の優先順位
限られた時間で見るなら、次の順番がよいと思います。
| 優先 | 点検すること | 理由 |
|---|---|---|
| 1 | html要素の lang が、本文の言語と合っているか | 最も影響する場所 |
| 2 | 本文を日本語で書き切っているか(原文と訳文を併記しない) | Googleの言語判断の材料 |
| 3 | 英語のテンプレートの名残で、en が残っていないか | 間違った宣言になる |
| 4 | 古い指定(content-language のmeta要素、xml:lang)が残っていないか | 非適合や無効な書き方 |
| 5 | 広告用のLPや完了ページなど、特別なページの宣言 | 漏れやすい |
近い話は、既存の記事へ
lang の周りには、別の記事で詳しく扱っている話があります。この記事では繰り返しません。
この記事で繰り返さないこと
言語別のページを検索結果に正しく出す書き方(hreflang)は、既存の記事で扱っています。
head の中に書くほかのタグ(ページの説明やロボットへの指示など)は、metaタグの記事にまとめています。
画像の説明を機械に伝える alt 属性は、別の記事で扱っています。
表のHTMLでは、見出しのセルに scope という属性を付けて、読み上げ機能に表の構造を伝えます。lang と同じく、読み上げ機能やブラウザが読む属性です。書き方は、同じ日に公開した表のタグの記事で説明しています。
よくある質問
Q. lang を書かないと、SEOで不利になりますか
Google検索セントラルの2つの文書は、Googleはページの言語を本文から判断し、lang などのコードの注釈は使わないと書いています。書かないことで検索で不利になる、と読める記述は、見つかりませんでした。
ただし、読み上げ機能やブラウザは、この宣言を使います。書くことに意味はあります。理由が検索ではない、というだけです。
Q. 日本語のサイトで ja-JP と書いても、間違いですか
間違いではありません。形式として正しい書き方です。
ただし、W3Cの解説は、国の部品は他と区別する必要があるときだけ付けるもので、ja-JP の JP が役に立つ見込みは低いと述べています。短い ja で足ります。すでに ja-JP で運用しているサイトを、直す必要はありません。
Q. 日本語の文章に英語の単語が混ざる程度なら、全部に en を付けるのですか
付けなくて構いません。W3Cのウェブアクセシビリティ解説は、固有名詞や専門用語、周りの文章に溶け込んだ語には、言語の指定は要らないとしています。
英語の文や段落がそのまま入っているときに、その部分だけを span などで囲んで en を付けます。
Q. lang を en に書き換えれば、ページは英語になりますか
なりません。lang は、中身の文章が何語かを示す宣言にすぎません。文章そのものは翻訳されません。
英語のページにしたいなら、英語の文章を用意して、そのページのhtml要素に en と書きます。
Q. AI検索のために lang を書くべきですか
書いたからAIに引用される、という公式の根拠は、今回確認した資料の中にはありませんでした。OpenAIとAnthropicの文書にも、記述がありません。
書く理由は、読み上げ機能とブラウザのためです。AI検索のための対策としては、本文や構造の整備を先にしたほうが、効果を見込めます。
まとめ:言語の名札は、正しく付けて、効果は約束しない
lang属性は、要素の中身が何語かを示す名札です。日本語のページなら、html要素に lang=”ja” と書きます。
Googleは、ページの言語を本文から判断します。公式の2つの文書が、lang などのコードの注釈は使わないと明記しています。
読み上げ機能とブラウザは、この宣言を手がかりにして、発音や表示や翻訳の規則を選びます。書く理由は、ここにあります。
AIのクローラーとの関係は、公式の文書に記述が見つかりませんでした。効くとも効かないとも言えません。
値は、日本語なら ja の2文字で足ります。中国語は zh-Hans か zh-Hant、jp や cn のような書き方は誤りです。
一部だけ別の言語にするときは、その部分を span などで囲んで lang を付けます。固有名詞や溶け込んだ語には、付けなくて構いません。
WordPressでは、テーマが html要素の値を書き出します。設定が日本語でも、テーマが en を直接書いていることがあるので、実物のソースで確かめてください。
今日できる点検
| 点検すること | 方法 | 合格の目安 |
|---|---|---|
| html要素の lang の値 | トップページのソースを表示し、先頭付近の html を探す | 日本語のサイトなら ja になっている |
| ページの種類による違い | 記事・固定ページ・LP・完了ページ・404で同じ作業をする | すべて本文の言語と合っている |
| 設定の確認 | WordPressの管理画面で、設定の一般を開く | サイトの言語が日本語になっている |
| 古い指定の残り | ソースで content-language と xml:lang を探す | 残っていない、または lang と同じ値になっている |
| 外国語の部分 | 英語や中国語の文章が入っている箇所を探す | その部分を囲む要素に、en や zh-Hans が付いている |
| 英語版のページ | 日本語版を複製して作ったページを開く | 本文が英語なら、html要素も en になっている |
この記事に書いたことを、そのまま御社のページに
生成AIに引用されるページを、お話しいただくだけでお作りします。お時間をいただくのは初回15分のヒアリングだけです。まず1ページ、無料でお作りします。
OKが出るまで、何度でも直します。事実が違う、言い回しが硬い、この話は入れないでほしい。どれも遠慮なくおっしゃってください。何度お直ししても、追加の料金はいただきません。
これまでに127社にご利用いただきました。毎月ご依頼いただいている方の6割以上が、月10ページを選ばれています。料金はページに掲載しています。
ページを増やしても問い合わせが来ないなら、原因はページの外にあります。その場合は、下の入口からご相談ください。
自社のマーケティング課題を根本から解決しませんか?
ウェブサイトから要素を引き算し、訪れた人が迷わず次の一歩に進む形へ組み直す。初回60分のオンラインで御社のサイトを一緒に読み、どこから直すべきかをお伝えします。手順をまとめた無料の診断と解説動画もご用意しています。
初回は無料・60分・オンライン完結・その場で契約のお願いはいたしません


