[spip-dev] Multilinguisme: Langue en fonction du nom de domaine... gros hack.

Bonjour,

J'écris sur -dev car j'ai bien peur que j'ai tripaturé le code au point de dépaser le niveau -user.

Mon objectif est d'avoir un SPIP unique (une base, un répertoire) mais accessible par plusieur nom de domaine et pour chaque nom de domaine, une langue par défault.

En fait je n'aime pas d'avoir une langue par défault car c'est politiquement délicat de préférer une langue par rapport à une autre...

Je pense avoir trouvé l'endroit et la façon de mettre en place ce que je voullais, la fonction "verifier_lang_url" de ecrire/inc_lang.php3 mais je dois avouer que le code est pas très claire. Il y a la langue du site, la langue de l'interface privée dans le COOKIE, la langue de la partie publique demandée par le COOKIE, et la langue passée dans l'URL ?lang=xx.

Ma solution est de forcer "?lang=xx" chaquefois qu'il est absent, et de me servir du nom de domaine pour choisir la langue. L'inconvéniant c'est que je ne tient pas compte d'un COOKIE et que je ne met pas à jour le COOKIE.

Ce que j'aimerais faire c'est me débarasser complètement des "?lang=xx" car il sont redondant avec le nom du site et rendent les URL plus longs. Est-ce que quelqu'un à une idée?

Aussi, je ne peut plus utiliser #MENU_LANG car l'idéal pour moi serait de changer de nom de domaine lorsque l'on veut changer de langue (sauf pour des langues pour laquelle il n'existe pas de nom de domaine).

Là où j'ai vraiment peur, c'est le fonctionnement du cache et comment être certain que le cache comprendra qu'il y a plusieur langue et ne pas renvoyer une mauvaise langue en prenant l'information du cache plustôt que celle demandée. Et avant de tenter autre chose, j'aimerais savoir comment fonctionne le cache et le multilinguisme.

Est-ce que quelqu'un qui comprend le code dans "inc_lang.php3" pourrait donner son avis sur ma version, ou contribuer des idées sur la bonne façon de faire un site SPIP avec plusieurs langue par default (en fonction de l'URL).

David GLAUDE

une autre méthode est de pouvoir determiner si l'utilisateur a configuré
les préférences de langage de son navigateur.

par exemple:

    if ($_SERVER['HTTP_ACCEPT_LANGUAGE']) {
      $ltmp = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);

      for ( $i=0; $i< sizeof($ltmp); $i++ ) {
        if (strstr($ltmp[$i],';'))
          list($lg,) = explode(';',$ltmp[$i]);
        else
          $lg = $ltmp[$i];
        $lang[] = trim($lg);
      }
    } else {
        $lang[] = 'en';
    }

aussi, un mélange des 3 méthodes reste quelque chose qui semble
cohérent, entre détecter que, forcer, permettre de.

a+

Alex