- 1
[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
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.
- 1