2012-09-17 57 views
0

我將「自己的」框架中的PHP應用程序與Doctrine2一起移植到Zend Framework(1.11.11)。除了應用程序有荷蘭語和德語兩種語言外,這一切都很順利。我正在尋找一種方式來提出兩個URL的accesable:使用Zend Framework提供兩種語言的路由

我想這與正則表達式的路線,但因爲現在必須總是報錯「頁」參數組裝時,它是不是很好:

resources.router.routes.viewreviews.type = "Zend_Controller_Router_Route_Regex" 
resources.router.routes.viewreviews.route = "(klantbeoordelingen|kundenbewertung)[/]?([0-9]*)" 
resources.router.routes.viewreviews.reverse = "%s/%d" 
resources.router.routes.viewreviews.defaults.module = "default" 
resources.router.routes.viewreviews.defaults.controller = "review" 
resources.router.routes.viewreviews.defaults.action = "index" 
resources.router.routes.viewreviews.map.name = 1 
resources.router.routes.viewreviews.map.page = 2 

關鍵是,它應該是可能的,我應該忽略現在是不可能的頁面參數。儘管我可以製作兩個正則表達式路線,但這不是一個好方法。因爲我會得到很多路線,他們幾乎看起來都一樣。

我想我不尋找鏈接路由,因爲語言不包含在URL中。該語言由您正在訪問的域名(.nl或.de)定義。

有什麼想法嗎?提示?

回答

1

經過一番研究後,有一個解決方案。我所做的是以下幾點:

  • 我在一個routes.xml文件中重寫了我的路由。例如:

    <viewreviews> 
        <type>BestBuy_Router_Route</type> 
        <route>@klantbeoordelingen/:page</route> 
        <translate>klantbeoordelingen</translate> 
        <defaults> 
         <module>default</module> 
         <controller>review</controller> 
         <action>index</action> 
         <page>0</page> 
        </defaults> 
    </viewreviews> 
    

注意@中的路由配置。這將導致它被翻譯。然後,我添加一個沒有幫助的(用於ZF)標籤'翻譯',以便Poedit能夠找到它。

  • 的修改我的.po文件,並做poEdit的如下:poedit and xml files

  • 然後,我爬我的XML文件poEdit後它會找到的標籤和會質疑你對他們翻譯。

  • 翻譯完這些之後,請確保在路由器中設置了正確的翻譯器。我在自己的書面frontcontroller插件做到這一點,我routeStartup週期:

    Zend_Controller_Router_Route::setDefaultLocale($translate->getLocale()); 
        Zend_Controller_Router_Route::setDefaultTranslator($translate); 
    

$翻譯是一個Zend_Translate對象。

這應該適合你。翻譯過的路線只有適用於Zend_Controller_Router_Route。我擴大了這個類和改進(BestBuy_Router_Route),因爲我想要所有的路線被組裝成下套等。

乾杯!