我已经浏览过互联网,似乎无法找到解决我遇到的问题的方法。我试图使用Zend_Currency来获取中国的货币:
$currency = new Zend_Currency('CN');
但是,我一直收到以下错误:
Fatal error: Uncaught exception 'Zend_Currency_Exception' with message 'No region found within the locale 'zh'' in /Library/WebServer/Documents/vendor/zendframework/zendframework1/library/Zend/Currency.php on line 561
这是Zend Framework 1.12.3的全新安装,据我所知,我在这里没有做错任何事情。从错误中我可以看出Zend已将国家/地区代码与区域设置相匹配。
这是一个问题,因为我的应用程序依赖于从国家/地区代码获取货币信息。我对GB,US等没有任何问题。
我已查看Zend/Locale/Data
并确认zh.xml
,zh_CN.xml
语言环境文件已存在,但我承认我不是100%我在每个人中寻找的东西!
任何人对于问题是什么以及如何解决这个问题都有任何想法?
由于
编辑:
这是一个反映评论讨论的编辑。
Zend_Locale似乎在给定国家/地区代码zh
时返回CN
,而不是预期的字符串zh_CN
。这意味着我无法找到任何可以传递给Zend_Currency以避免错误的一致性。
答案 0 :(得分:3)
我认为这是Zend对CN地区管理不善的一个错误
事实上,如果我没有弄错,那么语言环境的名称为zh_Hans_CN
,当它管理CN
区域时,Zend会查看它是否是变量$_localeData
的一部分(在Zend / Locale.php文件)并且由于情况并非如此,它会分解zh_Hans_CN
并仅保留zh
他也不知道。
如果你想保持与$currency = new Zend_Currency('CN');
相同的原则
你可以尝试一下:
Zend_Locale::getLocaleToTerritory('CN');
默认情况下,将检索正确的语言环境。 (例如'US'
给'en_US'
)
这给出了:
$currency = new Zend_Currency(Zend_Locale::getLocaleToTerritory('CN'));
答案 1 :(得分:1)
试试这种方式;)
$currency = new Zend_Currency('zh_CN');