web-dev-qa-db-fra.com

Indexer un site Web multilingue

J'essaie de créer un site Web multilingue en utilisant le framework Django , tout le contenu par défaut est en anglais. J'ai ajouté une traduction native (néerlandais).

https://mydomain.com/ redirige vers le paramètre de langue de la demande de l'utilisateur. (Ceci est le comportement par défaut en ajoutant LocaleMiddleware à Django)

LocaleMiddleware tente de déterminer la langue de préférence de l'utilisateur en suivant cet algorithme:

Tout d'abord, il recherche le préfixe de langue dans l'URL demandée. Cette opération est uniquement effectuée lorsque vous utilisez la fonction i18n_patterns dans votre URLconf racine. Voir Internationalisation: dans les modèles d'URL pour plus d'informations sur le préfixe de langue et sur la manière d'internationaliser les modèles d'URL.

À défaut, il recherche une clé Django_language dans la session de l'utilisateur actuel.

A défaut, il cherche un cookie.

Le nom du cookie utilisé est défini par le paramètre LANGUAGE_COOKIE_NAME. (Le nom par défaut est Django_language.)

À défaut, il examine l'en-tête HTTP Accept-Language. Cet en-tête est envoyé par votre navigateur et indique au serveur la ou les langues que vous préférez, par ordre de priorité. Django essaie chaque langue dans l'en-tête jusqu'à ce qu'elle en trouve une avec les traductions disponibles.

À défaut, il utilise le paramètre global LANGUAGE_CODE.

Donc, visiter '/' aura pour résultat:

https://mydomain.com/en/ ou https://mydomain.com/nl/

Le titre, la description, les mots-clés et le contenu sont basés sur la langue, de sorte que chaque page est (presque) entièrement traduite. Alors:

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

a un drapeau néerlandais (commutateur de langue) qui contient ce lien:

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

Cela fonctionne très bien. De plus, l'en-tête de ma page contient un contenu alternatif basé sur la variable de langue. Voici le pseudo-code:

<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>

La page anglaise ressemblera à ceci:

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

Maintenant, mon problème est que Google indexe ma page d'accueil en anglais, alors que je veux que les visiteurs néerlandais voient le titre et la description néerlandais dans les résultats de Google (à moins qu'ils ne recherchent la traduction anglaise).

Je pense que le problème pourrait être dû à la redirection automatique de l'URL racine ('/') ou à la définition automatique de la langue. Devrais-je exclure les robots? J'ai lu cet article mais je n'ai pas compris le problème:

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

De même, si j'ajoute une carte de site à un site multilingue, serait-il préférable d'ajouter un plan du site différent pour chaque langue ou de créer un grand arbre basé sur les racines de la langue?

3
Hedde

Je pense que le problème pourrait être dû à la redirection automatique de l'URL racine ('/') ou à la définition automatique de la langue. Devrais-je exclure les robots?

Correct. Googlebot et al ne pas envoyer un en-tête Accept-Language, ou accepter les cookies, afin que le contenu par défaut du site s'affiche, ce qui semble être l'anglais dans ce cas. Vous pouvez le vérifier en utilisant Fetch en tant que Googlebot dans les Outils pour les webmasters.

Vous pourriez exclure les robots, mais votre site ne serait pas indexé du tout, ce qui jetterait plutôt le bébé avec l'eau du bain. Le meilleur conseil est ne redirigez pas automatiquement en fonction de la langue perçue de vos utilisateurs . Personnellement, j'étends cela aussi à l'emplacement perçu . Offre Google le même conseil .

Laissez vos utilisateurs choisir les paramètres de langue et de localisation qui leur conviennent le mieux, et laissez ce choix persister via un cookie.

De même, si j'ajoute une carte de site à un site multilingue, serait-il préférable d'ajouter un plan du site différent pour chaque langue ou de créer un grand arbre basé sur les racines de la langue?

Cela ne ferait aucune différence, en supposant que les limites de taille habituelles soient respectées, bien que les séparer par langue puisse être plus facile dans le sens où il s'agit d'un séparation logique qui pourrait vous rendre la vie plus facile.

Vous devriez probablement également envisager d’utiliser le sitemap alternatif/hreflang de Google , qui est spécifiquement conçu pour les cas où il existe plusieurs versions/variantes linguistiques d’un site.

4
GDav