默认区域设置上的 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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章