Combinando il sistema di routing del componente
Zend_Controller e il modulo
Zend_Locale, lo
Zend Framework permette di utilizzare dei
translated segment per la composizione delle stringhe utilizzate negli URL. In questo modo è possibile ottenere degli
URL search engine friendly and human readable espressi nelle lingua specifica propria del contenuto cui sono riferiti.
Nel caso in cui un utente cerchi di accedere a una risorsa mediante un URL composto in una lingua differente da quella di default dell'applicazione, se il client utilizzato dall'utente non ha memorizzato in un cookie o in una sessione dati relativi al contenuto locale, può accadere che il sistema di routing dell'applicazione si trovi a inviare all'utente il
messaggio di errore 404.
Questo comportamento è dovuto al fatto che il meccanismo di routing, nel caso in particolare, dipende dal
locale e non potendone individuare uno differente viene preso in considerazione quello di default, portando al non riconoscimento della stringa localizzata utilizzata nell'URL richiesto.
In un
articolo pubblicato recentemente sul proprio
blog,
Robert Basic suggerisce
un hack per evitare questo tipo di inconvenienti; i suggerimenti sono frutto dell'esperienza e del tempo che l'autore ha trascorso confrontandosi con il sistema di
routing multilingua messo a disposizione dallo
Zend Framework. Nel contributo citato, Basic propone di sopperire all'eventuale assenza di un cookie contenente l'impostazione della lingua locale attribuendo a un
front controller plug-in – illustrato mediante alcune righe di codice — il compito di modificare il
locale mediante l'
hook del
postDispatch.