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
Zend2Skelleten应用程序没有针对en_US语言环境的任何传输-因此,我对该语言的所有翻译请求都会导致空字符串返回,这将导致使用默认的区域设置。
发布于 2016-01-26 10:07:13
Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']有可能不是返回en-US,而是返回其他东西,例如en。
如果是这样,则设置回退de_DE。
您确定返回的值是正确的吗?先检查一下..。
在语言头定义中有这样的文字:
每个语言范围可以被赋予一个相关的质量值,该值表示用户对该范围指定的语言的偏好的估计。质量值默认为"q=1“。
使用en设置q=0.9,这是不可用的。然后是de-DE和q=0.8。
可能是因为en不可用,所以它将使用de-DE。
另一方面,它应该为q=1字段设置默认en-US。尝试用一些简单的方法进行测试,例如,单个值en-US、de-DE或pt-PT。
https://stackoverflow.com/questions/35010898
复制相似问题