2014-03-25 70 views
0

我有兩個字段的數據庫 - translation.nametranslation.value從DB ZF2翻譯

可以在ZF2中創建自定義翻譯器,如使用數據庫翻譯的標準$this->translate("SomeKey");一樣?請告訴我,如何在我的項目中實現它?

回答

1

您正在尋找的只是一個簡單的ViewHelper,它取代了當前分配給$this->translate()ViewHelper

基本上你需要把它添加到您的配置:

'view_helpers' => [ 
    'factories' => [ 
     'translate' => 'My\View\Helper\Factory\TranslateFactory' 
    ] 
] 

然後,你需要寫你的工廠類實現FactoryInterface。然後這個工廠將創建您的實際ViewHelper。您需要通過工廠來完成此任務,因爲您的ViewHelper將數據庫訪問權限視爲依賴項。此外,您需要注入用於ViewHelper的當前locale

這使我想到最後一點:什麼樣的翻譯表是那種?任何翻譯表都應支持多種語言,可以添加語言鍵或根本不使用數據庫。

最終:確保緩存所有的東西!如果一個密鑰已經翻譯過一次,它不可能隨時更改,所以它將被緩存,並且不會在將來發生不必要的數據庫調用!一定要讓你的緩存只運行一個文件,這樣你就不會進行5000次I/O調用。

+0

謝謝你的回答!也許,請問你有幾個例子嗎?我是ZF2的新手,不明白這個=( – Walllter

+1

)@Walllter,谷歌關於ZF2 ViewHelper,瞭解一下ViewHelper是什麼,然後開始用默認的ViewHelper替換一些簡單的返回字符串。 ZF2。那裏有很多信息:) – Sam

+0

你好Sam。你可以幫我嗎?我有這個問題,我創建了一個新的話題在http://stackoverflow.com/questions/22824423/translations-from-db-in-zf2 – Walllter