![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 29.01.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam problem z ustawieniem rouingu i tłumaczeniami w ZF1. Chcę, aby wyglądało to tak: domain.tld - główna strona, domyślnie angielska (en) de.domain.tld - ta sama strona, ale po niemiecku XX.domain.tld - każde inne tłumaczenie, ta sama strona etc.domain.tld - nieistniejące tłumaczenie -> przekierowanie na domain.tld sub.domain.tld - inny moduł, bez tłumaczeń DNSy są ustawione, serwer http przekierowuje wszystko do ZF poprawnie, ale coś poszło nie po mojej myśli, bo rezultat mam taki: domain.tld - działa ok, jest po angielsku etc.domain.tld - przekierowuje na domain.tld - jest ok sub.domain.tld - jest ok de.domain.tld - tłumaczy poprawnie index/index, ale każda inna podstrona pokazuje tylko i wyłącznie index/index (nie przekierowuje, po prostu ładuje zły kontroler i akcję) Czy ktoś ma jakiś pomysł, co może być nie tak? Mam to zrobione tak: Application.ini Kod resources.router.routes.radio.type = "Zend_Controller_Router_Route_Hostname" resources.router.routes.radio.route = ":sub.domain.tld" resources.router.routes.radio.defaults.module = "radio" resources.router.routes.radio.chains.index.defaults.controller = "index" resources.router.routes.radio.chains.index.defaults.action = "listen" resources.router.routes.radio.chains.listen.route = "listen/:station" resources.router.routes.radio.chains.listen.defaults.controller = "index" resources.router.routes.radio.chains.listen.defaults.action = "listen" resources.router.routes.lang.type = "Zend_Controller_Router_Route_Hostname" resources.router.routes.lang.route = ":language.domain.tld" resources.router.routes.lang.reqs.language= "[a-z]{2}" resources.router.routes.lang.defaults.language = "en" resources.router.routes.lang.defaults.controller = "index" resources.router.routes.lang.defaults.action = "index" Bootstrap.php Kod $translate = new Zend_Translate('array', APPLICATION_PATH . "/langs/", 'en, array('scan' => Zend_Translate::LOCALE_DIRECTORY)); $registry = Zend_Registry::getInstance(); $registry->set('Zend_Translate', $translate); /* Activation of plugin for translations in controllers */ $subTranslate = new Stream_Controller_Plugin_SubTranslate(); $front = Zend_Controller_Front::getInstance(); $front->registerPlugin($subTranslate); Plugin kontrolera Kod <?php
class Stream_Controller_Plugin_SubTranslate extends Zend_Controller_Plugin_Abstract { public function routeShutdown(Zend_Controller_Request_Abstract $request) { $translate = Zend_Registry::get("Zend_Translate"); $urlLang = $request->getParam('language'); $translate->setLocale(new Zend_Locale('en_EN')); if(isset($urlLang)) { if ($translate->isAvailable($urlLang)) { $translate->setLocale(new Zend_Locale($urlLang)); } else { $this->getResponse()->setRedirect('http://domain.tld', 301); } } } } |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 5.07.2025 - 19:57 |