Подтвердить что ты не робот

Вывод функции PHP Date на итальянском языке

Я пытаюсь вывести даты в итальянском формате с помощью date() следующим образом:

<?php 
    setlocale(LC_ALL, 'it_IT');
    echo date("D d M Y", $row['eventtime']); 
?>

Однако он все еще выходит в английском формате. Что еще я мог сделать? Здесь что-то не так?

Решение должно быть script конкретным, а не сервером...

Спасибо

Шади

4b9b3361

Ответ 1

date() не является локальным. Вы должны использовать strftime() и его спецификаторы формата для вывода языковых дат (из date() Руководство по PHP):

Чтобы форматировать даты на других языках, вы должны использовать setlocale() и strftime() вместо date().

Что касается комментария Anti Veeranna, он абсолютно прав, поскольку вы должны быть очень осторожны с настройкой локалей, поскольку они иногда не ограничиваются текущей областью script, Лучший способ:

$oldLocale = setlocale(LC_TIME, 'it_IT');
echo utf8_encode( strftime("%a %d %b %Y", $row['eventtime']) );
setlocale(LC_TIME, $oldLocale);

Ответ 2

it_IT locale должен быть установлен/активирован администратором сервера, иначе это не сработает.

Итак, решение Джонатана, вероятно, самое лучшее.

Ответ 4

Я обнаружил, что setlocale не является надежным, поскольку он установлен для каждого процесса, а не для потока (в руководстве упоминается об этом). Это означает, что другие исполняемые скрипты могут изменить языковой стандарт в любое время. Решение использует IntlDateFormatter из расширения intl php.

$fmt = new \IntlDateFormatter('it_IT', NULL, NULL);
$fmt->setPattern('d MMMM yyyy HH:mm'); 
// See: http://userguide.icu-project.org/formatparse/datetime for pattern syntax
echo $fmt->format(new \DateTime()); 

Если это не сработает, вам может потребоваться:

  • Установите intl расширение php (пример ubuntu): sudo apt-get install php5-intl

  • Установите язык, который вы хотите использовать: sudo locale-gen it_IT

Ответ 5

О статье http://www.phpnews.it/articoli/ottenere-date-in-italiano/ response, блог предлагает альтернативный метод, но код не работает, вот верный код:

function timestamp_to_date_italian($date)
    {       
        $months = array(
                '01' => 'Gennaio', 
                '02' => 'Febbraio', 
                '03' => 'Marzo', 
                '04' => 'Aprile',
                '05' => 'Maggio', 
                '06' => 'Giugno', 
                '07' => 'Luglio', 
                '08' => 'Agosto',
                '09' => 'Settembre', 
                '10' => 'Ottobre', 
                '11' => 'Novembre',
                '12' => 'Dicembre');

        list($day, $month, $year) = explode('-',date('d-m-Y', $date));      
        return $day . ' ' . $months[$month] . ' ' . $year;

    }