ページのローカライズ版について Google に知らせる

ページに言語や地域ごとの複数のバージョンがある場合、こうした別バージョンについて Google にお知らせください。それにより、Google 検索はユーザーの言語や地域に応じた最適なページのバージョンを表示できるようになります。

こうした情報がなくても、ページの別言語のバージョンを Google が検出することはありますが、言語や地域ごとのページを明示してあるほうが正確です。

次のような場合に、代替ページを指定することをおすすめします。

  • ナビゲーションやフッターなど、テンプレートのみを翻訳し、コンテンツの大部分は 1 つの言語を使用する場合。フォーラムなど、ユーザー生成コンテンツを掲載するページでは、これが一般的です。
  • コンテンツが 1 つの言語で書かれていて、コンテンツの大部分はほとんど同じであり、地域ごとにわずかに変化がある場合。たとえば、米国、英国、アイルランドのユーザーをターゲットにした英語のコンテンツです。
  • サイトのコンテンツが複数の言語に完全に翻訳されている場合。たとえば、各ページについてドイツ語版と英語版の両方があるような場合です。

ページのローカライズ版は、ページのメイン コンテンツが翻訳されていない場合にのみ、重複と見なされます。

代替ページを指定する方法

ページに言語や地域ごとの複数のバージョンがあることを Google に知らせる方法は 3 つあります。

すべての方法に共通するガイドライン

  • 他の言語のバージョンだけでなく、記載している言語のバージョンもリストに含める必要があります。
  • 代替 URL は、転送プロトコル(http または https)を含む完全修飾形式で指定する必要があります。
    つまり、//example.com/foo または /foo ではなくhttps://example.com/foo と指定します。
  • 代替 URL は同じドメイン内に存在する必要はありません。
  • 同じ言語でも地域が異なるユーザーをターゲットにする代替 URL が複数ある場合、その言語で地域を特定できないユーザーを対象とする汎用の URL を提供することもおすすめします。たとえば、アイルランド(en-ie)、カナダ(en-ca)、オーストラリア(en-au)の英語ユーザーそれぞれに専用の URL を設けるなら、米国、英国など、英語を話す他のすべてのユーザーに汎用の英語(en)ページを提供することも必要です。専用ページのいずれかを汎用ページとして指定してもかまいません。
  • 2 つのページが互いに参照し合っていない場合、参照するタグは無視されます。これは、あなたのページの別バージョンを名乗るタグを、他のサイトの誰かが勝手に作成できないようにするためです。
  • 各言語の双方向リンクをすべて含めたセットを維持するのが難しくなったら、一部のページで一部の言語についての指定を省略することができます。その場合でも Google は互いに参照し合うページについて処理します。ただし、新たに拡張した言語のページについては、元の言語または主要な言語のページと相互にリンクを設定することが重要です。たとえば、サイトが元々フランス語で作成されていて .fr の URL がある場合、後から作成するメキシコ(.mx)とスペイン(.es)向けのページについては、同じスペイン語のバリエーションであるページ(.mx.es)の間で双方向リンクを設定することよりも、主要なサイトである .fr との間で双方向リンクを設定することのほうが重要です。
  • どの言語にも一致しない場合の代替ページとして、言語や国を選択できるページや、自動リダイレクト先のホームページを指定することを検討してください。次のように、x-defaultを使用します。
    <link rel="alternate" href="http://example.com/" hreflang="x-default" />

HTML タグ

ページのヘッダーに <link rel="alternate" hreflang="lang_code"... > 要素を追加して、ページの言語や地域ごとのすべてのバージョンを Google に提示します。これはそのサイトに対して、サイトマップを指定していない場合や、HTTP レスポンス ヘッダーを指定できない場合に便利です。

ページの各バージョンへのリンクを指定した <link> 要素を一式作成し、それを各バージョンの <head> 要素に、そのページ自体へのリンクも含めて指定します。ページのどのバージョンについても、同じリンク一式を指定することになります。その他のガイドラインもご確認ください。

link 要素の構文は次のとおりです。

<link rel="alternate" hreflang="lang_code" href="url_of_page" />
構文
lang_code ページのこのバージョンが対象とするサポートされている言語または地域のコード、またはページの hreflang タグで明示されていない任意の言語と一致する x-default
url_of_page 指定された言語 / 地域に対応するこのページのバージョンの完全修飾 URL。

Example Widgets 社が、米国、英国、日本のユーザーを対象にしたウェブサイトを作成しているとします。URL は次のとおりで、ほとんど同一のコンテンツですが、地域ごとに多少の違いがあります。

URL の地域別のバージョン
http://en.example.com/page.html 汎用的な英語のホームページ。米国から各国への送料に関する情報が掲載されています。
http://en-gb.example.com/page.html 料金がポンドで表示される英国のホームページ。
http://en-us.example.com/page.html 料金が米ドルで表示される米国のホームページ。
http://de.example.com/page.html ドイツ語のホームページ。
http://www.example.com/ 特定の言語と地域を対象としないデフォルト ページ。ユーザーが言語と地域を選択できるセレクタがあります。

こうした URL 内の言語ごとのサブドメイン(enen-gben-usde)は、そのページのターゲット ユーザーを Google が判断する際には使用されないので、ターゲット ユーザーを明示する必要があります。

上記のすべてのページの <head> セクションに下記の HTML を貼り付ける必要があります。これにより、米国のユーザー、英国のユーザー、その他英語を話すユーザー、日本のユーザーにはローカライズされたページが表示され、それ以外のすべてのユーザーにはデフォルトのホームページが表示されます。Google 検索は、ユーザーのブラウザの設定に応じて適切な結果を返します。

<head>
 <title>Widgets, Inc</title>
  <link rel="alternate" hreflang="en-gb"
       href="http://en-gb.example.com/page.html" />
  <link rel="alternate" hreflang="en-us"
       href="http://en-us.example.com/page.html" />
  <link rel="alternate" hreflang="en"
       href="http://en.example.com/page.html" />
  <link rel="alternate" hreflang="de"
       href="http://de.example.com/page.html" />
 <link rel="alternate" hreflang="x-default"
       href="http://www.example.com/" />
</head>

HTTP ヘッダー

ページの GET レスポンスに返す HTTP ヘッダーを使って、そのページの言語や地域ごとのすべてのバージョンを Google に知らせることができます。これは、PDF のような HTML 以外のファイルの場合に便利です。

次の形式のヘッダーを返します。

Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...
構文
<url_x> 関連する hreflang 属性に割り当てられた言語 / 地域の文字列に対応する代替ページの完全修飾 URL。URL は < 記号と > 記号で囲む必要があります。例: <https://www.google.com>
lang_code_x ページのこのバージョンが対象とするサポートされている言語または地域のコード、またはページの hreflang タグで明示されていない任意の言語と一致する x-default

下記の例に示すように、ページの各バージョン(リクエストされているバージョンも含む)について <url>rel="alternate"hreflang の一式をカンマで区切って指定します。ページのどのバージョンでも、返される Link: ヘッダーは同じです。その他のガイドラインもご確認ください。

PDF ファイルに 3 つのバージョンがあるサイトから返される Link: ヘッダーの例を示します。3 つのうち、1 つは英語を話すユーザー用、1 つはドイツ語を話すスイスのユーザー用、もう 1 つはその他のドイツ語を話すすべてのユーザー用です。

Link: <http://example.com/file.pdf>; rel="alternate"; hreflang="en",
      <http://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch",
      <http://de.example.com/file.pdf>; rel="alternate"; hreflang="de"

サイトマップ

サイトマップを使用して、各 URL について言語や地域ごとのすべてのバージョンを Google に知らせることができます。そのためには、各 URL を示す <loc> 要素を追加し、それぞれの要素に対して、ページの言語 / 地域別のバージョンのリスト(そのページ自体も含む)を子エントリ <xhtml:link> として指定します。したがって、ページに 3 つのバージョンがある場合、サイトマップには 3 つのエントリを追加し、それぞれに 3 つの同じ子エントリを指定します。

サイトマップのルール:

  • xhtml 名前空間を次のように指定します。
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • URL ごとに <url> 要素を作成します。
  • <url> 要素に、そのページの URL を示す <loc> 子要素を指定します。
  • <url> 要素には、そのページの代替バージョン(およびその URL)をすべて列挙する子要素 <xhtml:link rel="alternate" hreflang="supported_language-code"> が必要です。この子要素 <xhtml:link> の順序は問いませんが、誤りを確認しやすくするために、同じ順序にすることをおすすめします。
  • その他のガイドラインもご確認ください。

英語を話す世界中のユーザーを対象とした英語のページのほか、同等の内容で、ドイツ語を話す世界中のユーザーが対象のバージョンと、ドイツ語を話すスイスのユーザーが対象のバージョンがあるとします。サイト内のすべての URL を次に示します。

  • www.example.com/english/page.html は、英語を話すユーザーを対象とします。
  • www.example.com/deutsch/page.html は、ドイツ語を話すユーザーを対象とします。
  • www.example.com/schweiz-deutsch/page.html は、ドイツ語を話すスイスのユーザーを対象とします。

上記の 3 つのページのサイトマップは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>http://www.example.com/english/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>http://www.example.com/deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>http://www.example.com/schweiz-deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
</urlset>

サポートされている言語または地域のコード

hreflang 属性の値については、代替 URL の言語を ISO 639-1 形式で指定し、必要に応じて地域を ISO 3166-1 Alpha 2 形式で指定します。コードを 1 つだけ指定した場合、Google はそのコードを言語コードと見なします。言語が地域と関連している必要はありません。次に例を示します。

  • de: ドイツ語のコンテンツ、地域指定なし
  • en-GB: 英語のコンテンツ、英国のユーザー向け
  • de-ES: ドイツ語コンテンツ、スペインのユーザー向け

1 つの言語に複数の文字体系がある場合は、国コードから適切な文字体系が取得されます。たとえば、台湾のユーザー向けに zh-TW を使用すると、自動的に文字体系が取得されます(この場合は繁体字中国語)。次のように、ISO 15924 を使用して文字体系を明示的に指定することもできます。

  • zh-Hant: 中国語(繁体)
  • zh-Hans: 中国語(簡体)

また、文字体系と地域を組み合わせて指定することもできます。たとえば、台湾のユーザー向けに中国語(簡体)を指定するには zh-Hans-TW を使用します。

一致しない言語用に x-default タグを使用する

予約値である hreflang="x-default" は、ユーザーのブラウザの設定が、他に指定されているどの言語や地域とも一致しない場合に使用されます。この値の指定は省略できますが、どの言語にも一致しない場合のページを管理する方法として指定することをおすすめします。おすすめの一例は、ユーザーが国を選択できるようなクリック可能な地図を掲載したサイトのホームページをターゲットにすることです。

困ったときに

よくある誤り

hreflang を使用するうえで最もよくある誤りは次のとおりです。

  • 相互リンクになっていない: ページ X がページ Y にリンクしている場合、ページ Y もページ X にリンクしている必要があります。hreflang アノテーションを使用するすべてのページでこうした相互リンクが設定されていないと、そのアノテーションは無視されるか、正しく解釈されない可能性があります。
  • 言語コードが正しくない: 言語コードを使用する場合は、必ず、代替 URL の言語を ISO 639-1 形式で指定し、必要に応じて地域を ISO 3166-1 alpha-2 形式で指定します。地域を単独で指定しても有効なコードにはなりません。

hreflang エラーをデバッグする

インターナショナル ターゲティング レポートを使用して、よくある問題をデバッグできます。Google がページをクロールできるように時間をおいてから、レポートの [言語] タブに移動して、エラーが検出されているかどうかを確認します。

利用できるサードパーティのツールも多数あります。よく利用されるツールをいくつか紹介します(Google はこれらのツールを管理またはチェックしていません)。