|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
![]() ![]() Michaël Étudiant Inscription : septembre 2005 Messages : 1 367 ![]() |
Bonjour,
J'ai développé un plugin de controlleur pour pouvoir détecter la langue (stockée dans l'URL) et l'utiliser pour traduire tout le site (les routes, le texte et le texte affiché par Zend_Navigation). Comme je comprends la doc, Zend_Translate est censé récupérer Zend_Locale comme locale à utiliser. Mon plugin effectue quelque chose dans routeStartup, donc avant la traduction de la route (ou n'importe quelle traduction). Logiquement, si je change la locale contenue dans le registre (enregistrée avec la clé Zend_Locale), cette locale sera automatiquement utilsiée par tous les Zend_Translate et je n'aurais donc pas besoin de modifier manuellement la locale de mes différents Zend_Translate. Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Membre expérimenté
![]() Emmanuel BelairDéveloppeur informatique Inscription : septembre 2004 Messages : 463 ![]() |
Salut,
En fait Zend_Translate va par defaut récupérer la locale par de defaut définie dans Zend_Locale, il te suffit juste de définir la locale par defaut dans ton plugin: Personnellement je stocke la locale en session, comme ça pas besoin de la fournir dans l'url, voici le plugin que j'utilise pour gérer la locale dans tout le site: Code :
__________________
Les idiots sont ceux qui ne posent jamais de question! |
||
|
|
00
|
|
|
#3 |
![]() ![]() Michaël Étudiant Inscription : septembre 2005 Messages : 1 367 ![]() |
Mmmhh bizarre que ça marche chez toi, j'ai essayé il me faut toujours les deux lignes.
Ou définis-tu ton (ou tes) Zend_Translate ? Je peux voir ton fichier de configuration et ton bootstrap ? Sinon je préfère garder la langue dans l'url car mes pages sont différentes suivant la langue (en terme de contenu). |
|
|
00
|
|
|
#4 | ||||||
|
Membre expérimenté
![]() Emmanuel BelairDéveloppeur informatique Inscription : septembre 2004 Messages : 463 ![]() |
Bootstrap:
Code :
Code :
Code :
__________________
Les idiots sont ceux qui ne posent jamais de question! |
||||||
|
|
00
|
|
|
#5 |
![]() ![]() Michaël Étudiant Inscription : septembre 2005 Messages : 1 367 ![]() |
Code :
Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('translate')->setLocale($langLocale); Pour moi (et d'après la doc), chaque fois qu'une instance de Zend_Translate veut traduire un message, il doit récupérer la locale à partir du registre, pour peu qu'on l'ait enregistré en suivant la convention du framework (donc sous le nom de Zend_Locale), et donc pour peu qu'on l'ait mis à jour dans la fonction routeStartup, c'est bien cette locale mise à jour qui devrait être utilisée. Or ce n'est pas le cas. J'ai regardé un peu le code source des différents composants et ça semble être le cas pourtant, mais ça ne marche pas comme je le comprends. |
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() Emmanuel BelairDéveloppeur informatique Inscription : septembre 2004 Messages : 463 ![]() |
Le problème c'est que Zend_Locale et Zend_Translate s'inisialisent dans le bootstrap. A ce moment tu n'a pas encore détecté la langue, mais Zend_Translate lui a deja defini sa langue de trad.... via l'init de Zend_Locale
En fait dans le plugin tu es obligé de dire à Zend_Translate d'utiliser la nouvelle locale détectée dans l'url. Et ce n'est pas parce que tu défini une nouvelle locale dans zend_locale que ça va automatiquement changer le parametre dans zend_translate vu que chaque composant du ZF est indépendant
__________________
Les idiots sont ceux qui ne posent jamais de question! |
|
|
00
|
|
|
#7 |
![]() ![]() Michaël Étudiant Inscription : septembre 2005 Messages : 1 367 ![]() |
D'accord. Mais les différents composants ne pourraient pas, à l'appel de la fonction translate, récupérer non pas la locale qu'il a créé à l'initialisation, mais récupérer celle stockée dans Zend_Translate ? Et pas seulement à la création. Ainsi un changement de la locale à un endroit du code se répercuterait sur tous les composants l'utilisant, sans avoir besoin de le changer.
|
|
|
00
|
|
|
#8 |
|
Membre expérimenté
![]() Emmanuel BelairDéveloppeur informatique Inscription : septembre 2004 Messages : 463 ![]() |
Je vois pas trop l'intérêt..... en tout cas dans la réalité je n'ai jamais eu besoin de changer la locale de tout mes composant en plein milieu d'exécution d'un dispatch.
__________________
Les idiots sont ceux qui ne posent jamais de question! |
|
|
00
|
|
|
#9 |
![]() ![]() Michaël Étudiant Inscription : septembre 2005 Messages : 1 367 ![]() |
Disons qu'il y a une relation quand même entre la locale et la traduction. Quand ta locale est fr, tu t'attends à ce que le texte soit en français. Enfin bon, c'est pas comme si c'était ultra gênant non plus, ça fait que deux lignes de code en plus
.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com