Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('translate')->setLocale($langLocale);
Voilà ! Ayant deux instances de Zend_Translate (un pour le texte normal, la navigation), et un pour les routes (pour éviter les conflits, about devant être traduit a-propos et non a propos, par exemple), je dois appeler la fonction setLocale deux fois. C'est pas génant en soi, mais je comprends pas pourquoi ça ne fonctionne pas.
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.
Partager