PHP: Помогите заменить текст даты

Я работаю с испанским веб-сайтом CMS и пытаюсь заменить месяцы на испанский.

Вот как это выглядит с функцией даты date("F j, Y, g:i a"):

August 24, 2011, 1:47 pm

Теперь я хочу, чтобы это выглядело так:

Agosto 24, 2011, 1:47 pm

С помощью функции str_replace строка заменяется, но день и час отсутствуют.

Agosto

Это код, который я использую для его определения:

    date_default_timezone_set("America/Belize");
    $p['time'] = date("F j, Y, g:i a");
    $time = $p['time'];
    $search  = array('August', 'September', 'October', 'November', 'December');
    $subject ='August';
    $replace = array('Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
    $time = str_replace($search, $replace, $subject);

    $echo = $time;

person Gabriel Meono    schedule 24.08.2011    source источник


Ответы (4)


Попробуйте использовать setlocale, чтобы указать правильный язык перед вызовом date. Например.

/* Set locale to Spanish */
setlocale(LC_ALL, 'es_ES');

P.S. В вашем исходном коде, используя этот подход, вам нужно заменить:

$time = str_replace($search, $replace, $subject);

с

$time = str_replace($search, $replace, $time);

Но я бы рекомендовал использовать setlocale, чтобы вам не пришлось беспокоиться об этом самостоятельно. Также,

$echo = $time;

совершенно неправильно; должен быть:

echo $time;
person Bobby Jack    schedule 24.08.2011
comment
У меня почему-то не работает, дата всегда остается на английском. - person Gabriel Meono; 25.08.2011
comment
Хммм... возможно у вас нет испанской локали. Если вы работаете в системе UNIX, попробуйте проверить /usr/share/locale/ — там есть что-нибудь, относящееся к «es»? - person Bobby Jack; 25.08.2011
comment
Хорошо, как указал gAMBOOKa, вам нужно использовать strftime(), чтобы воспользоваться преимуществами локали. - person Bobby Jack; 25.08.2011

Не изобретайте велосипед

Используйте strftime

person HyderA    schedule 24.08.2011

$echo = $time; ?!
Разве это не должно быть echo $time; ?

ваш код должен быть примерно таким:

date_default_timezone_set("America/Belize");
$time = date("F j, Y, g:i a");
$search  = array('August', 'September', 'October', 'November', 'December');
$replace = array('Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
$time = str_replace($search, $replace, $time);
echo $time;
person Pedro Lobito    schedule 24.08.2011

Я думаю, что $subject вашего str_replace должно быть $time, иначе вы выполняете поиск и заменяете строку «Август»

person Clive    schedule 24.08.2011