![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 182 Pomógł: 9 Dołączył: 30.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Efekt, który chcę osiągnąć to tłumaczenie ścieżek url. Obecnie korzystam z komponentów
Zend_Locale (ustawia język w sesji) Zend_Translate (ciągnie z pliku dla danego języka fragmenty urli, korzysta z Zend_Locale) Zend_Navigation (buduje menu z tłumaczonymi ścieżkami przez Zend_Translate) Zend_Controller_Router (tworzy i tłumaczy ścieżki). Przykładowa konfiguracja wygląda tak (zauwazyłem, że ważna jest kolejność, więc tak ją cytuję): CODE locale.default = pl locale.force = true resources.translate.adapter = ini resources.translate.content = APPLICATION_PATH "/languages/" resources.translate.scan = Zend_Translate::LOCALE_FILENAME resources.translate.registry_key = "Zend_Translate" resources.translate.options.scan = "filename" resources.translate.disableNotices = false resources.translate.options.logUntranslated = false resources.router.defaultTranslator = "Zend_Translate" resources.router.routes.module.type = Zend_Controller_Router_Route_Module resources.router.routes.lang.type = Zend_Controller_Router_Route resources.router.routes.lang.route = ":lang" resources.router.routes.lang.reqs.lang = "(pl|en|fr)" resources.router.routes.lang.defaults.module = default resources.router.routes.lang.defaults.controller = index resources.router.routes.lang.defaults.action = index resources.router.routes.some-page-part.type = Zend_Controller_Router_Route resources.router.routes.some-page-part.route = "@routeWhosSally" resources.router.routes.some-page-part.defaults.module = default resources.router.routes.some-page-part.defaults.controller = index resources.router.routes.some-page-part.defaults.action = branch resources.router.routes.some-page-part.defaults.id = sally resources.router.routes.some-page.type = Zend_Controller_Router_Route_Chain resources.router.routes.some-page.chain = "lang, some-page-part" ; na koniec wszystkich routingów dałem defaultowy resources.router.routes.default.type = Zend_Controller_Router_Route_Chain resources.router.routes.default.chain = "lang, module" ; nawigacja resources.navigation.pages.some-page.label = "menu/top/some-page" resources.navigation.pages.some-page.module = "default" resources.navigation.pages.some-page.controller = "index" resources.navigation.pages.some-page.action = "branch" resources.navigation.pages.some-page.params.id = 'someId' resources.navigation.pages.some-page.order = 1 resources.navigation.pages.some-page.route = some-page Wspomniany na początku pliku konfiguracyjnego plugin Language ma jedną metodę ustawiającą w rejestrze aktualny język na podstawie routingu:
Prawie wszystko działa jak należy. Wejście na adres www.strona.com lub www.strona.com/pl powoduje, że wszystkie ścieżki generują się po polsku, np. w wyżej wymienionej nawigacji otrzymuję www.strona.com/pl/jakas-strona Wystarczy, że zmienię na adres strony na www.strona.com/en i zmieniają się wszystkie tłumaczenia na angielskie, w nawigacji dostaję www.strona.com/en/some-page **Jest niemal idealnie, oprócz jednego szkopułu; kiedy wejdę na jeden z powyższych adresów (www.strona.com/pl/jakas-strona lub www.strona.com/en/some-page) **to otrzymuję niezmiennie błąd (zależnie od podanej wersji językowej inny kontroler jest wymieniony)**: Invalid controller specified (jakas-strona) in E:\www\library\Zend\Controller\Dispatcher\Standard.php (line 248) Wydaje mi się, że problem polega na tym, że w złym momencie zczytywane sa parametry routingu - dopiero po tym fakcie tworzone są routingi z pliku konfiguracyjnego. Próbowałem przenieść wszystko do bootstrap, potem do pluginu, ale nie zdało rezultatu. Domyslam sie, ze kolejnosc jaka powinna być to: 1. odczytanie języka z routingu (np. "pl") 2. ustawienie "pl" w Zend_Locale 3. załadowanie tłumaczeń z pliku pl.ini przez Zend_Translate 4. stworzenie i przetłumaczenie dalszej części routingów 5. odczytanie reszty parametrów z requestu i wykonanie odpowiedniego routingu. Domyślam się, że tak się nie dzieje i parametry próbuje się odczytać na samym początku, kiedy routingi nie są jeszcze zainicjowane. Domyślam się również, że Zend_Navigation potrafi wygenerować odpowiednie ścieżki, ponieważ dzieje się to dużo później (po inicjowaniu widoku). Co w takiej sytuacji? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 96 Pomógł: 6 Dołączył: 22.08.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj zmienić metodę w pluginie na routeStartup
-------------------- ZF developer
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.07.2025 - 03:31 |