我有以下代码,我正在尝试使用Zend框架和Zend_Locale()
$supported_langs = array(
'en' => 'English',
'zh_CN' => '中文(简体)',
'zh_HK' => '中國(傳統)',
'es' => 'Español',
'ja' => '日本',
'pt' => 'Português',
'de' => 'Deutsch',
'ar' => 'العربية',
'fr' => 'Française',
'ru' => 'Pусский',
'ko' => '한국의',
'hi' => 'हिन्दी',
'vi' => 'Việt'
);
echo '<pre>';
foreach ($supported_langs as $lang => $desc) {
print Zend_Locale::getTranslation($lang, 'language', 'en') . "\n";
}
echo '</pre>';
以上的输出是:
English
Spanish
Japanese
Portuguese
German
Arabic
French
Russian
Korean
Hindi
Vietnamese
zh_CN
,zh_HK
不提供输出。如果我将其中一个 zh 值更改为zh
,它会打印出中文,这是好的,我想,但是我的工作方式不行希望?
zh_CN和zh_HK是两种不同的语言...我希望能够打印两种语言的翻译......而不是简单地将其简化为中文......
修改
原来,如果我使用zh_Hans
和zh_Hant
,那么它会打印出正确的。所以我想:
问题:为什么Zend_Locale不尊重zh_HK或zh_CN这样的缩写格式?
答案 0 :(得分:0)
计算机本质上是愚蠢的,你必须告诉他们一切。 Zend_Locale从相当多的XML文件中获取信息,并在那里定义了什么。您的中文代码未知,不知道“正式”是什么的正确缩写。
通过以下内容,您可以在框架中提取包含所有受支持语言的列表。
$locale = new Zend_Locale();
$langList = $locale->getTranslationList('language');
array [..
['zh'] => 'Chinese'
['zh_Hans'] => 'Simplified Chinese'
['zh_Hant'] => 'Traditional Chinese'
.. ]
您可以传递第二个$locale
参数,您将获得该语言的语言值。默认值是浏览器发送的内容。
更新 zh_CN和zh_HK是中国与香港的区域参考,而不是语言!台湾还有zh_TW