开发者

why doesn't the Zend_Locale honor abbreviated formats like zh_HK or zh_CN

I have the following piece of code and am trying to do something simple with the Zend framework and 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>';

The output from the above is:

English


Spanish
Japanese
Portuguese
German
Arabic
French
Russian
Korean
Hindi
Vietnamese

zh_CN, zh_HK don't provide output. If I change one of the zh values to zh, it prints out Chinese, which is Ok, I suppose, but doesn't quite work the way I hoped?

zh_CN and z开发者_StackOverflow社区h_HK are two different languages ... I would like to be able to print the translation for both ...without over simplifying it to just Chinese...

Edit

Turns out, if I use zh_Hans and zh_Hant then it prints out as correct. So I suppose:

Question: why doesn't the Zend_Locale honor the abbreviated formats like zh_HK or zh_CN?


Computer are inherently stupid, you have to tell them everything. Zend_Locale gets its information from quite a bunch of XML files and what is defined there. Your Chinese language codes are not known, dunno what is "officially" the correct abbreviation for this.

With the following you can pull a list with all supported languages in the framework.

$locale = new Zend_Locale();
$langList = $locale->getTranslationList('language');
array [..
  ['zh']      => 'Chinese'
  ['zh_Hans'] => 'Simplified Chinese'
  ['zh_Hant'] => 'Traditional Chinese'
.. ]

You can pass a second $locale argument and you will get the values for the language in that language. The default is what the browser sends.

UPDATE zh_CN and zh_HK are region reference for China versus Hongkong and not languages! There is also zh_TW for Taiwan

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜