首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend2翻译setFallbackLocale

Zend2翻译setFallbackLocale
EN

Stack Overflow用户
提问于 2016-01-26 09:47:08
回答 1查看 92关注 0票数 0

en_USde_DE存在语言文件

在我的Module.php中,在onBootstrap方法中,我定义:

代码语言:javascript
复制
    $oTranslator = $oServiceManager->get('translator');
    $oTranslator->setLocale(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']));
    $oTranslator->setFallbackLocale('de_DE');

如果我用HTTP_ACCEPT_LANGUAGEen-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的内容是:

代码语言:javascript
复制
'translator' => array(
    'locale' => 'de_DE',
    'translation_file_patterns' => array(
        array(
            'type'     => 'gettext',
            'base_dir' => __DIR__ . '/../language',
            'pattern'  => '%s.mo',
        ),
    ),
),

编辑2

Zend2Skelleten应用程序没有针对en_US语言环境的任何传输-因此,我对该语言的所有翻译请求都会导致空字符串返回,这将导致使用默认的区域设置。

EN

回答 1

Stack Overflow用户

发布于 2016-01-26 10:07:13

Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']有可能不是返回en-US,而是返回其他东西,例如en

如果是这样,则设置回退de_DE

您确定返回的值是正确的吗?先检查一下..。

语言头定义中有这样的文字:

每个语言范围可以被赋予一个相关的质量值,该值表示用户对该范围指定的语言的偏好的估计。质量值默认为"q=1“。

使用en设置q=0.9,这是不可用的。然后是de-DEq=0.8

可能是因为en不可用,所以它将使用de-DE

另一方面,它应该为q=1字段设置默认en-US。尝试用一些简单的方法进行测试,例如,单个值en-USde-DEpt-PT

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35010898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档