Как получить список временных зон на разных языках (PHP)?

260
12 марта 2017, 08:04

При регистрации пользователя хочу предложить выбор его временной зоны (часового пояса). Но при этом список временных зон показывать на родном пользователю языке (локаль "ru_RU", либо "en_US", либо какая угодно). Насколько я понимаю, необходимо лезть в ICU чтобы получить канонические названия временных зон. И потом уже мержить массивы из разных локалей. Как такое реализовать?

Answer 1

Вроде бы заработало. Ловится всего 6 исключений из 425 элементов.

$except = [];
$timezonesData = [];
$timezonesIdentifiers = \DateTimeZone::listIdentifiers();
foreach ($timezonesIdentifiers as $timezone) {
    try {
        $formatter = new \IntlDateFormatter(
            "en_US",
            \IntlDateFormatter::FULL,
            \IntlDateFormatter::FULL,
            $timezone,
            \IntlDateFormatter::GREGORIAN,
            'zzzz - ZZZZ - vvvv - VV - VVV - VVVV'
        );
        if ($formatter) {
            $t10n = $formatter->format(0);
        } else {
            $except[] = 'exception 1 '.$e->getMessage(); // continue;
        }
    } catch (\Throwable $e) {
        $except[] = 'exception 2 '.$e->getMessage(); // continue;
    } catch (\Exception $e) {
        $except[] = 'exception 3 '.$e->getMessage(); // continue;
    }
    $timezonesData[$timezone] = $t10n;
}
var_dump($except);
var_dump($timezonesData);

Стоит отметить, что должно быть установлено расширение PHP - intl с библиотекой ICU (поновее). Дальше преобразовать текущий код и, я думаю, нетрудно будет получить список в том виде, который нужен. Всем спасибо.

READ ALSO
PDO не работает запрос

PDO не работает запрос

Проблема заключается в том, что пересмотрел множество постов здесь же, и на phpnet смотрел в первую очередь, но мой код ни в какую не хочет находить...

252
Как перевести некоторые заголовки в Wordpress?

Как перевести некоторые заголовки в Wordpress?

Такая проблема, есть интернет магазин на Вордпрессе (woocommerce), установлен шаблон, в настройках всё перевёл на русязык, но 4 элемента, которые...

207
вывести без повтора

вывести без повтора

есть код рабочий но в нем при выборке всегда повторяется $content пробовал ставить group by но это не спасает так как выборка из соседней таблицы...

175
Своя сортировка массива

Своя сортировка массива

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

213