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

PHP date() на иностранных языках - например. Mar 25 Aoû 09

У меня есть script, который должен отображать данные даты международной аудитории - например,

"отправлено Вт 25 авг. 09"

Есть ли более простой/чистый способ получить это преобразование во французском (и т.д.) эквиваленте "Mar 25 Aoû 09", чем:

Установка константного массива LANG и $LANGUAGES включенных файлов и:

if(LANG != 'EN')
{
include $LANGUAGES['LANG'];
}

& то включенный файл отображает дни и месяцы и заменяет соответствующий язык?

Спасибо

Дэвид

4b9b3361

Ответ 1

Я думаю, вы не можете уйти от этого, не устанавливая LOCALE:

<?php
setlocale(LC_ALL, 'fr_FR');

echo strftime("%A %e %B %Y");
?> 

Некоторые сведения о strftime: http://us2.php.net/manual/en/function.strftime.php

Ответ 2

В соответствии с date справочной страницей функции, вы должны использовать setlocale. Затем методы, такие как strftime, будут использовать указанный локаль. date, однако, по какой-то причине не будет.

Ответ 3

Вы также можете посмотреть Zend_Date.

Ответ 4

Я думаю, что лучший способ сделать это с помощью функций strftime и setlocale. Но это не сработает, если на вашем сервере нет нужного языкового стандарта (в текущих вопросах это fr_FR).

Нижеприведенный код генерирует исключение, если изменение локали будет неудачным.

<?php

$result = setlocale(LC_ALL, 'fr_FR');

if($result === false){
    throw new \RuntimeException(
        'Got error changing locale, check if locale is installed on the system'
    );
}

$dayOfMonth = '%e';
//if it is Windows we will use %#d as %e is not supported
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
   $dayOfMonth = '%#d';
}

//Mar 25 Aoû 09 - month shortname, day of month, day shortname, year last two digits
echo strftime("%b $dayOfMonth %a %y");