Php Zend#u Framework-在区域设置中未找到区域';zh';

Php Zend#u Framework-在区域设置中未找到区域';zh';,php,zend-framework,Php,Zend Framework,我浏览了一下互联网,似乎找不到解决我所遇到问题的方法。我正在尝试使用Zend_货币为中国获得货币,如下所示: $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

我浏览了一下互联网,似乎找不到解决我所遇到问题的方法。我正在尝试使用Zend_货币为中国获得货币,如下所示:

$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、美国等没有任何问题

我已经查看了
Zend/Locale/Data
,可以确认
zh.xml
zh_CN.xml
语言环境文件都在那里,但我承认我并不是100%都在寻找这些文件

有没有人知道问题是什么,我该如何着手解决

谢谢

编辑:

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

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

试试这种方法;)


我认为这是Zend中的一个错误,管理不好CN区域。
事实上,如果我没有弄错的话,区域设置的名称是
zh_Hans_CN
,当它管理
CN
区域zen时,看看它是否是变量
$\u 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'));

@James-告诉我这在您的后续代码中是否正确:谢谢你的回答。按照您建议的方式传递区域设置字符串确实有效!唯一的问题是Zend_语言环境似乎与它返回的内容不一致。例如,如果我使用Zend_语言环境(“CN”);它返回'zh',而我希望是'zh_CN'。这当然导致了最初的问题,那么Zend_语言环境中是否存在无法处理CN的bug呢?我觉得我不能依靠一致的输入来使用Zend_货币。谢谢你证实我的怀疑。这的确很有趣。还感谢Zend_Locale::getLocaleToTerritory的介绍,这肯定会暂时解决我的问题!不客气:花时间去理解并找到解决方案也很费劲,所以谢谢你提出这个问题。:)
$currency = new Zend_Currency(Zend_Locale::getLocaleToTerritory('CN'));