Почему Zend_Locale не поддерживает такие сокращенные форматы, как zh_HK или zh_CN
У меня есть следующий кусок кода, и я пытаюсь сделать что-то простое с Zend Framework и 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?
1 ответ
Компьютеры по своей сути глупы, вы должны рассказать им все. 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 - это региональные ссылки для Китая и Гонконга, а не языки! Есть и ж_ТВ для Тайваня