語言文件爲en_US
和de_DE
Zend的2翻譯setFallbackLocale
存在於我的Module.php
在onBootstrap
方法我定義:
$oTranslator = $oServiceManager->get('translator');
$oTranslator->setLocale(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']));
$oTranslator->setFallbackLocale('de_DE');
如果我進入頁面HTTP_ACCEPT_LANGUAGE
:en-US,en;q=0.9,de-DE;q=0.8,de;q=0.6,pl-PL;q=0.5,pl;q=0.4,pt-PT;q=0.3,pt;q=0.1
Zend的用途定義的fallbackLocale de_DE
- 但是爲什麼?
如果我沒有設置fallbackLocale Zend使用正確的en_US
區域設置。
我想有Zend的使用給定的語言環境,或者,如果沒有找到,回退到de_DE
- 但如果fallbackLocale定義,他總是使用de_DE
區域
我怎樣才能擺脫這種行爲?
編輯
我module.config.php翻譯的內容是:
'translator' => array(
'locale' => 'de_DE',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
),
編輯2
在Zend 2 Skelleten應用程序沒有任何transaltions en_US語言環境 - 所以我的這種語言的所有翻譯請求都會導致空字符串返回,這將內在地導致使用默認語言環境。
我測試了'\ Locale :: acceptFromHttp($ _ SERVER ['HTTP_ACCEPT_LANGUAGE'])'的輸出,如果我拿出us頭文件,它會返回'en_US',如果我拿出德文文件,它會返回'de_DE'頭。語言文件具有完全相同的文件名: - / – exxecc