Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] local et urls significatifs

Posted by raymond876 on 01/08/2008 02:33

Bonjours à tous,

Je suis un p'tit nouveau dans le monde de Jelix. Jusqu'à maintenant j'arrivais à faire ce que je voulais mais là je vien de passé plus de 4 heures à mélé local et urls significatifs, sans succès, alors j'appel à la communautée pour p'tit coups de main.

Mon problème :

Je voudrais avoir www.monsite.com et www.monsite.com/fr/ en francais et www.monsite.com/en/ en anglais.

je remerci d'avance la communautée.

Bonne nuit à tous

Raymond876

  [Opened] Re: local et urls significatifs

Reply #1 Posted by laurentj on 01/08/2008 10:49

Salut,

Le mieux est que tu fasses deux points d'entrés en plus du index.php, et que tu nommerais en.php et fr.php.

Ensuite, dans ton fichier urls.xml, tu définis les urls pour chacun des points d'entrées, et pour chaque url, tu indiques un paramètre statique 'lang' avec la bonne valeur. Enfin tu actives le plugin de coordinateur autolocale. Il permet de mettre à jour $GLOBALS['gJConfig']->locale (mais ne modifie pas le fichier de conf..) en fonction du paramètre lang qu'il reçoit.

Par exemple, le fichier urls.xml du site jelix.org ressemble à ça :

<code>
  <urls xmlns="http://jelix.org/ns/urls/1.0">
    <classicentrypoint name="index" default="true">
        <url pathinfo="/" module="main" action="default:index">
        </url>
    </classicentrypoint>
    <classicentrypoint name="en">
       <url pathinfo="/" module="main" action="default:indexen" optionalTrailingSlash="true">
          <static name="lang" value="en_EN" />
        </url>
       <url pathinfo="/news" module="news" action="default:index" optionalTrailingSlash="true">
          <static name="lang" value="en_EN" />
        </url>
       <url pathinfo="/news/rss" module="news" action="default:rss">
          <static name="lang" value="en_EN" />
        </url>
       <url pathinfo="/news/post/:newsid" module="news" action="default:article">
          <static name="lang" value="en_EN" />
          <param name="newsid" />
        </url>
    </classicentrypoint>
    <classicentrypoint name="fr">
       <url pathinfo="/" module="main" action="default:indexfr" optionalTrailingSlash="true">
          <static name="lang" value="fr_FR" />
        </url>
       <url pathinfo="/news" module="news" action="default:index" optionalTrailingSlash="true">
          <static name="lang" value="fr_FR" />
        </url>
       <url pathinfo="/news/rss" module="news" action="default:rss">
          <static name="lang" value="fr_FR" />
        </url>
       <url pathinfo="/news/post/:newsid" module="news" action="default:article">
          <static name="lang" value="fr_FR" />
          <param name="newsid" />
        </url>
    </classicentrypoint>
  </urls>
</code>

Dans la config, j'ai ça :

<code>
 [plugins]
 autolocale = autolocale.plugin.ini.php
</code>

Et dans la config du plugin autolocale, autolocale.plugin.ini.php, j'ai ça (la même chose je crois que le fichier autolocale.plugin.ini.php.dist fourni) :

<code>
  availableLanguageCode = fr_FR,en_EN
  enableUrlDetection= on
  urlParamNameLanguage=lang
  useDefaultLanguageBrowser = on
</code>

Tu remarqueras que dans le urls.xml, j'ai defini des urls pour les mêmes actions pour chacun des points d'entrées. Cela permet d'utiliser jUrl::get indépedament de la langue, si on indique le paramètre langue. Par exemple, si je fais :

jUrl::get('news~default:article', array('newsid'=>'the_id', 'lang'=>$GLOBALS[['gJConfig']]->locale))

J'aurais soit /en/news/post/the_id, soit /fr/new/post/the_id, en fonction donc de la langue.

L'idéal serait de ne pas avoir à indiquer ce paramètre 'lang' à jUrl::get mais ce n'est pas possible pour le moment.

 
Page
  1. Re: local et urls significatifs