[ZF 1.11] Site Multilingue

Eléphant du PHP | 314 Messages

17 mars 2011, 10:29

Bonjour,

Je me lance dans l'aventure Zend Framework, et je commence fort car je cherche déjà à faire des choses d'une complexité relativement haute pour moi d'entrée de jeu.

Tout d'abord, j'ai bien compris comment marche Zend_Translate, je l'ai testé et utilisé heures durant histoire de bien cernée la bête, ma question ne se posera pas sur ce dernier, elle se posera sur un sujet tout autre : en fait j'aimerai pour mon site des URL tel que :

http://domaine/ -> pointe sur index/index dans une langue définie comme étant par défaut ( dans le fichier ini par exemple )
http://domaine/fr/controller/action -> page en français
http://domaine/en/controller/action -> page en anglais

Je suis tombé sur une multitude de tutoriels, tous aussi différentes les un que les autres, et en tant que débutant j'aimerai vraiment suivre une démarche "pro" ( dans le sens clean ), pas de bidouillage, pas de bricolage.

Alors deux choix s'offre à moins je pense :
1, The worst - Faire une application par langue, ce qui me parait exagéré.
2 - Me débrouillé avec le fichier ini, le bootstrap et des plugins, mais là je comprend pas vraiment ce que je fait :/

Aussi, j'aimerai bien créer un helper qui me permette dans une view de faire $this->url("ctrleur","action","optionnal_langue");, qui crée le lien en incluant la langue en cours, avec la possibilité de lui passer 3eme paramètre une autre langue.

Vous remerciant d'avance pour les connaissances et les techniques que vous m'apporterez,

Julien
Cordialement,
Julien - http://laravel.fr/

ViPHP
ViPHP | 5462 Messages

17 mars 2011, 11:54


Eléphant du PHP | 314 Messages

17 mars 2011, 12:45

Salut, merci pour le lien je le garde de coté.

J'avance sur mon petit chemin, j'ai mis ceci dans application.ini :

Code : Tout sélectionner

resources.translate.registry_key = "Zend_Translate" resources.translate.adapter = "array" resources.translate.options.scan = "filename" resources.translate.data = APPLICATION_PATH "/languages" resources.translate.default = fr
Dans mon bootstrap j'ai créé la fonction _iniTranslate(), cependant je n'arrive ni à faire :
		$translate = Zend_Registry::get("Zend_Translate");
		var_dump($translate); // null
ni
		$translate = $this->getResource('translate');
		var_dump($translate);
Alors que
$translate = $this->getResource('frontController');
marche très bien . Ne puis-je pas créer ainsi mon objet Translate ?
Cordialement,
Julien - http://laravel.fr/

Eléphant du PHP | 314 Messages

17 mars 2011, 13:27

Je suis occupé de réalisé qu'en fait en collant le plus possible dans application.ini, je devrais laisser mon bootstrap vide, et plutôt tenter de faire un plugin, je suis dans la bonne voie ?
Cordialement,
Julien - http://laravel.fr/

Eléphant du PHP | 314 Messages

17 mars 2011, 14:18

Bon j'ai essayer de faire les choses simplement, mais j'ai pas du bien comprendre l'histoire des routes traduites ..


dans mon fichier ini - comme indiqué plus haut - j'ai tout ce qu'il faut en théorie pour la traduction ( j'ai remplacé translate.default par translate.locale ), et je test sur une url simple, le controller s'appelle "OurSolutionsController, donc la route par défault est our-solutions.

j'ai ajouté dnas mon fichier de langue FR : "our-solutions"=>"nos-solutions"

It doesn't work ( il me dit que le mobile nos-solutions existe pas ). D'après la doc "Put it into the registry with the key Zend_Translate.", ce que je fait avec le application.ini, donc je vois pas d'ou ça peut venir :/
Cordialement,
Julien - http://laravel.fr/