【发布时间】:2016-01-26 09:47:08
【问题描述】:
存在en_US 和de_DE 的语言文件
在我的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 应用程序没有任何 en_US 语言环境的翻译 - 所以我对这种语言的所有翻译请求都会返回空字符串,这将在内部导致使用默认语言环境。
【问题讨论】:
标签: php internationalization zend-framework2 locale translation