Название страны с Zend Locale

Когда я сохраняю страны в своей базе данных, я использую международное сокращение.

Как я могу преобразовать эту аббревиатуру с zend_locale на полное название страны?

3 ответа

Решение

Вот метод. Он пытается использовать локаль браузера и по умолчанию использует американский английский, если это не удается.

try {
    $locale = new Zend_Locale(Zend_Locale::BROWSER);
    $countries = $locale->getTranslationList('Territory', Zend_Locale::BROWSER, 2);
} catch (exception $e) {
    $locale = new Zend_Locale('en_US');
    $countries = $locale->getTranslationList('Territory', 'en_US', 2);
}

asort($countries, SORT_LOCALE_STRING);

// Unset invalid countries
// SU = USSR
// ZZ = Unknown or Invalid Region
// VD = North Vietnam
// DD = East Germany
unset($countries['SU'], $countries['ZZ'], $countries['VD'], $countries['DD']);

Вы можете использовать функциональность из intl расширение, которое связано с PHP 5.3.0 или как расширение PECL с PHP 5.2.0.

Чтобы отобразить регион с использованием локали:

<?php
print \Locale::getDisplayRegion('da_DK') . "\n";
print \Locale::getDisplayRegion('en_US') . "\n";
print \Locale::getDisplayRegion('ru_RU', 'ru_RU') . "\n";
?>

Будет выводить:

Denmark
United States
Россия

http://php.net/manual/en/locale.getdisplayregion.php

Использование Zend_Locale::getTranslationList() или же Zend_Locale::getTranslation(), Смотрите пример № 7 в руководстве.

Другие вопросы по тегам