0

我有以下一段代码,并试图用 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_CNzh_HK不提供输出。如果我将其中一个zh值更改为zh,它会打印出Chinese,我想这没问题,但不像我希望的那样工作?

zh_CN 和 zh_HK 是两种不同的语言...我希望能够打印这两种语言的翻译...而不是将其简化为中文...

编辑

事实证明,如果我使用zh_Hans然后zh_Hant它打印出来是正确的。所以我想:

问题:为什么 Zend_Locale 不支持 zh_HK 或 zh_CN 之类的缩写格式?

4

1 回答 1

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

于 2011-08-01T16:48:14.277 回答