我有Zend Framework 3應用程序與工作翻譯使用po文件。zf3更改區域設置取決於用戶選擇
我有這樣的配置在我的\設置\ global.php文件:
'translator' => [
'locale' => 'en_US',
'translation_file_patterns' => [
[
'type' => 'gettext',
'base_dir' => getcwd() . '/data/language/',
'pattern' => '/%s/general.mo',
],
],
],
當我改變的價值「區域設置」它的工作原理確定並找到正確的.po文件。 我需要能夠根據保存在數據庫中的用戶配置文件的值來設置區域設置。
我檢查了這裏的文檔http://zendframework.github.io/zend-i18n/translation/和這裏的教程https://docs.zendframework.com/tutorials/i18n/,但他們只是提到setLocale()方法,沒有解釋或例子。這裏有類似的線程Zend framework 2 : How to set locale globaly?,但它是ZF2,它不提供工作解決方案只是一些建議。
總結我的問題 - 我應該如何以及在哪裏使用setLocale()方法,以便在整個應用程序中有效,並且所有視圖文件中的$this->translate($message)
將使用新的區域設置,而不是配置文件中使用的默認區域?
謝謝托馬斯,這真的有用,我也會嘗試與工廠,但我會感謝一些幫助。我認爲在這種情況下使用框架工具會更加一致。我會給其他人建議其他東西的機會,如果沒有人跳過,我會將您的答案標記爲「已接受」。再次感謝你, – Ivomasterche
我剛剛更新了答案...這是一個稍長的IMO,可能在某個時候有點混淆,如果需要,請詢問更多細節。 –
再次感謝您。我想我明白了 - 我們用這個委託人「包裝」翻譯服務,每次調用'$ this-> translate($ msg)'時都應該調用它(並設置語言環境)。不幸的是,我無法讓它工作,我已經將配置添加到應用程序模塊的module.config.php,並且我在/Application/src/Factory/TranslatorFactory.php文件中創建了TranslatorFactory類是這一切嗎? – Ivomasterche