Undefined property: stdClass::$domain sur site multilingue

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

J'essaye de monter un site multilingue sous Drupal7 (plus exactement la distribution wetkit) avec deux sous-domaines (fr.site.com et en.site.com). Tous mes articles seront disponibles en deux langues avec un système de correspondance (en.site.com/article1english qui correspond à fr.site.com/article1francais).

Je veux ajouter à mon menu principal un item qui redirige vers la version du même article dans l'autre langue. Ainsi, si on est sur fr.site.com/un-article-en-français et qu'on clique sur "English" dans le menu, on se retrouve sur en.site.com/corresponding-article-in-english et vice-versa sur l'article en anglais avec un lien "Français".

Pour ça j'utilise un module custom qui fait ça et qui correspond à peu près à ce code.

Le problème, c'est que j'obtiens l'erreur suivante sur toutes les pages :

Notice : Undefined property: stdClass::$domain in locale_language_url_rewrite_url() (line 437 in /home/includes/locale.inc).

Pour la petite anecdote, cette ligne 437 dans locale correspond au passage suivant :

if (isset($options['language'])) {
switch (variable_get('locale_language_negotiation_url_part', LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX)) {
  case LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN:
    if ($options['language']->domain) {
      // Save the original base URL. If it contains a port, we need to
      // retain it below.
      if (!empty($options['base_url'])) {
        // The colon in the URL scheme messes up the port checking below.
        $normalized_base_url = str_replace(array('https://', 'http://'), '', $options['base_url']);
      }

Cette erreur a un effet sur mon lien de menu. Il redirige vers la bonne URL d'article, mais pas sur le bon domaine. C'est-à-dire qu'au lieu de m'envoyer sur en.site.com/corresponding-article-in-english il m'envoie sur fr.site.com/corresponding-article-in-english - qui n'existe pas et crée donc une erreur 404.

Je ne suis pas codeur et pas super à l'aise en syntaxe mais si je comprends bien l'idée, il y a une variable qui correspond à $options['language']->domain et qui n'est pas initialisée alors qu'elle le devrait ?

Une idée de ce que je fais de travers et de comment réparer ça ?

Merci d'avance !

Version de Drupal :