Zend Framework - 在区域内找不到区域'zh'

时间:2014-05-20 10:40:32

标签: php zend-framework

我已经浏览过互联网,似乎无法找到解决我遇到的问题的方法。我试图使用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.xmlzh_CN.xml语言环境文件已存在,但我承认我不是100%我在每个人中寻找的东西!

任何人对于问题是什么以及如何解决这个问题都有任何想法?

由于

编辑:

这是一个反映评论讨论的编辑。

Zend_Locale似乎在给定国家/地区代码zh时返回CN,而不是预期的字符串zh_CN。这意味着我无法找到任何可以传递给Zend_Currency以避免错误的一致性。

2 个答案:

答案 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');