web-dev-qa-db-ja.com

多言語Webサイトのインデックス作成

Django framework を使用して多言語Webサイトを作成しようとしています。デフォルトのコンテンツはすべて英語です。ネイティブ翻訳(オランダ語)を追加しました。

https://mydomain.com/ は、ユーザー要求言語設定にリダイレクトします。 (これは、Djangoの LocaleMiddleware を追加することによるデフォルトの動作です)

LocaleMiddlewareは、このアルゴリズムに従ってユーザーの言語設定を決定しようとします。

まず、要求されたURLで言語プレフィックスを探します。これは、ルートURLconfでi18n_patterns関数を使用している場合にのみ実行されます。言語プレフィックスとURLパターンを国際化する方法の詳細については、URLパターンの国際化を参照してください。

それに失敗すると、現在のユーザーのセッションでDjango_languageキーを探します。

それに失敗すると、Cookieを探します。

使用されるCookieの名前は、LANGUAGE_COOKIE_NAME設定によって設定されます。 (デフォルト名はDjango_languageです。)

それに失敗すると、Accept-Language HTTPヘッダーを調べます。このヘッダーはブラウザから送信され、優先度の順に、どの言語を好むかをサーバーに伝えます。 Djangoは、使用可能な翻訳がある言語が見つかるまで、ヘッダー内の各言語を試します。

それに失敗すると、グローバルなLANGUAGE_CODE設定が使用されます。

したがって、「/」にアクセスすると、次のいずれかの結果になります。

https://mydomain.com/en/ または https://mydomain.com/nl/

タイトル、説明、キーワード、およびコンテンツは言語ベースであるため、すべてのページが(ほぼ)完全に翻訳されています。そう:

https://mydomain.com/en/my-awesome-page/

このリンクを保持するオランダ語フラグ(言語切り替え)があります。

https://mydomain.com/nl/mijn-fantastische-pagina/

これはうまく機能します。また、私のページのヘッダーには、言語変数に基づいた代替コンテンツが含まれています。これが擬似コードです。

<html lang="{{ current_language }}" />
<head>
    {% for lang_code in other_languages %}
        <link rel="alternate" hreflang="{{ lang_code }}" href="{% url current_url language=lang_code %}"/>
    {% endfor %}
</head>

これにより、英語のページは次のようになります。

<html lang="en" />
<head>
    <link rel="alternate" hreflang="nl" href="https://mydomain.com/nl/mijn-fantastische-pagina/"/>
</head>

私の問題は、Googleが私のホームページを英語でインデックス化することですが、オランダ語の訪問者には、グーグルの検索結果でオランダ語のタイトルと説明を表示する必要があります(英語の翻訳を探している場合を除く)。

この問題は、ルートURL( '/')の自動リダイレクトまたは言語の自動設定が原因であると考えられますが、どういうわけかロボットを除外する必要がありますか?私はこの記事を読みましたが、問題を理解していません。

http://googlewebmastercentral.blogspot.nl/2010/03/working-with-multilingual-websites.html

また、サイトマップを多言語サイトに追加する場合、言語ごとに異なるサイトマップを追加するか、言語ルートに基づいて1つの大きなツリーを作成する方が良いでしょうか?

3
Hedde

この問題は、ルートURL( '/')の自動リダイレクトまたは言語の自動設定が原因であると考えられますが、どういうわけかロボットを除外する必要がありますか?

正しい。 Googlebot他 送信しないAccept-Languageヘッダー、またはCookieを受け入れるため、サイトがデフォルトで表示されない場合は、この場合は英語のように表示されます。ウェブマスターツールでFetch as Googlebotを使用してこれを確認できます。

あなたはロボットを除外できましたが、あなたのサイトはまったくインデックスに登録されず、むしろお風呂の赤ちゃんを捨てます。最良のアドバイスはユーザーの知覚言語に基づいて自動的にリダイレクトしないです。個人的には、知覚されたlocationにも拡張します。 Googleのオファー 同じアドバイス

ユーザーにどの言語とローカリゼーション設定が適切であるかを決定させ、その選択をCookieを介して持続させます。

また、サイトマップを多言語サイトに追加する場合、言語ごとに異なるサイトマップを追加するか、言語ルートに基づいて1つの大きなツリーを作成する方が良いでしょうか?

通常のサイズ制限が考慮されている場合、違いはありませんが、言語でそれらを分割する方が簡単かもしれませんという意味で、論理的な分離はあなたの人生を作るかもしれませんより簡単に。

また、おそらく Googleのalternate/hreflangサイトマップ を使用することを検討する必要があります。これは、サイトの複数の言語バージョン/バリアントが存在するインスタンス専用です。

4
GDav