默认区域设置上的 ZF2 CurrencyFormat 不起作用

Posted

技术标签:

【中文标题】默认区域设置上的 ZF2 CurrencyFormat 不起作用【英文标题】:ZF2 CurrencyFormat on Default locale not working 【发布时间】:2013-01-09 09:58:07 【问题描述】:

在我的应用程序中,我使用服务语言。我是我的 module.php,我通过以下方法设置用户的语言环境:

$translator = $e->getApplication()->getServiceManager()->get('translator');
$translator ->setLocale(\Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']))
            ->setFallbackLocale($this->setDomainLocale());

此应用程序(不同语言)上正在运行服务器 domain.tdl,因此我在后备中使用一个函数来设置每个域的后备语言环境...

我想使用currencyFormat,但我无法将它与用户的语言环境一起使用。我尝试了下面的代码,有无 '\Locale::getDefault())'; 像“1509053”这样的数字应该返回为“€ 1.509.053.00”或“,”取决于语言环境,我只得到“€ 1509053.00”。

$this->plugin("currencyformat")->setCurrencyCode("EUR")->setLocale(\Locale::getDefault());

\Locale::getDefault()) 的输出

string(11) "en_US_POSIX"

module.php $translator 的输出

   class Zend\I18n\Translator\Translator#193 (8)  protected $messages => array(0)   
protected $files => array(0)   protected $patterns => array(1)  'default' => array(1)  [0] => array(3)  'type' => string(7) "gettext" 'baseDir' => string(119) "..../module/.../config/../language" 'pattern' => string(5) "%s.mo"    protected $remote => array(0)   protected $locale => string(35) "nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4" protected $fallbackLocale => string(5) "nl_NL" protected $cache => NULL protected $pluginManager => NULL 

希望有人能把我引向正确的方向 :) Thnx

【问题讨论】:

这只是一个假设,但错误可能在设置的Locale 内部。它不应该是en_US_POSIX,而是en_US。尝试手动设置语言环境,而不是 acceptFromHttp hmm.. 如果我将两者 (http|fallback) 都设置为 nl_NL,则默认输出仍然是“en_US_POSIX”。当我在货币中设置 nl_NL 'hard' ->setLocale() 时,它的工作原理就像假设的那样 好的,我想我明白了。我想,通过设置翻译语言环境,我们自动设置了 Locale::getDefault() aswel。这似乎不对,需要通过 Locale::setDefault(); 为这个函数设置语言环境; 如果你找到了一个可行的解决方案,你不妨发布一个你的问题的答案并接受它;) 【参考方案1】:

使用函数'\Locale::getDefault();'我们需要先设置 '\Locale::setDefault(language_code);' $translate->setLocale 没有设置 Locale::getDefault();.

【讨论】:

没错。 $translate->setLocale()(或者,任何 $component->setLocale()),总是只会为特定的组件/实例设置一个固定的语言环境。

以上是关于默认区域设置上的 ZF2 CurrencyFormat 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

ZF2 - 如何正确设置标题?

使用 Apache 虚拟主机在 ubuntu 13.10 上设置 zf2

ZF2 Redis:如何设置密钥的到期时间

ZF2维护页面

如何使用ZF2中的数组表单设置使字段验证依赖于另一个字段?

如何为ZF2中使用Sql对象创建的Sql语句的结果集设置数组对象原型