Jestem w trakcie tworzenia wielojęzycznej strony www i natrafiłem na poważny problem

Część adresów url jest tłumaczona przez moduł Zend_Translate współpracujący z Routerem, np: :lang/@firma/:action. I tutaj jest problem - żeby skorzystać z Zend_Translate do tłumaczenia urli, musze w nim ustawic setLocale() - bez tego nie bede mogl wygenerowac tras routingu, a znowu bez ich wygenerowania nie uzyskam parametru lang i robi sie bledne koło.
W bootstrapie kolejnosc wyglada tak:
protected function _initLocale() {}
protected function _initTranslations() {}
protected function _initRoutes() {}
Parametr lang z url'a potrzebny jest juz w metodzie _initLocale(), natomiast jest on dostepny dopiero po wywolaniu _initRoutes().
Moge oczywiscie ustawic domyslnie Zend_Locale na np. BROWSER zeby stamtad pobierala jezyk, ale nie sprawdzi sie to w momencie jesli ktos ma przegladarke ustawiona na jezyk 'pl' a wklei link "/en/company" - wtedy domyslnie bedzie mial Zend_Locale ustawione na 'pl' a nie na 'en'.
Czy ktos spotkał sie z takim problemem i wie jak go rozwiazac?
Wklejam plik Boostrap'a:
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { protected function _initDoctype() { $this->bootstrap('view'); $view = $this->getResource('view'); $view->doctype('XHTML1_STRICT'); } protected function _initAutoload() { 'namespace' => 'Default', 'basePath' => APPLICATION_PATH . '/modules/default', 'path' => 'forms', 'namespace' => 'Form', ), 'path' => 'models', 'namespace' => 'Model', ), ), )); 'namespace' => 'Admin', 'basePath' => APPLICATION_PATH . '/modules/admin', 'path' => 'forms', 'namespace' => 'Form', ), 'path' => 'models', 'namespace' => 'Model', ), ), )); } protected function _initLocale() { $locale = new Zend_Locale(Zend_Locale::BROWSER); Zend_Registry::set('Zend_Locale', $locale); } protected function _initTranslations() { $translator = new Zend_Translate('array', APPLICATION_PATH . '/modules/default/languages/polish.php', 'pl'); $translator->addTranslation(APPLICATION_PATH . '/modules/default/languages/english.php', 'en'); $translator->addTranslation(APPLICATION_PATH . '/modules/default/languages/deutsch.php', 'de'); $locale = Zend_Registry::get('Zend_Locale'); $translator->setLocale($locale->getLanguage()); $view = $this->getResource('view'); $view->translate()->setTranslator($translator); Zend_Registry::set('Zend_Translate', $translator); } protected function _initRoutes() { $front = Zend_Controller_Front::getInstance(); $router = $front->getRouter(); $translator = Zend_Registry::get('Zend_Translate'); Zend_Controller_Router_Route::setDefaultTranslator($translator); $locale = Zend_Registry::get('Zend_Locale'); $route = new Zend_Controller_Router_Route( ':lang/:controller/:action', 'lang' => $locale->getLanguage(), 'module' => 'default', 'controller' => 'index', 'action' => 'index' ) ); $router->addRoute('default', $route); $route = new Zend_Controller_Router_Route( ':lang/@firma/:action', 'lang' => $locale->getLanguage(), 'module' => 'default', 'controller' => 'company', 'action' => 'index' ) ); $router->addRoute('company', $route); $route = new Zend_Controller_Router_Route( ':lang/@produkty/:action', 'lang' => $locale->getLanguage, 'module' => 'default', 'controller' => 'products', 'action' => 'index' ) ); $router->addRoute('products', $route); } } ?>