2014-01-20 2 views
0

У меня есть следующая дата: 18/07/2013. Я хочу, чтобы он был выпущен в следующем формате 18 июля 2013 года, где July следует заменить на русское название месяца. Итак, вот что я делаю:
1) Сделайте отметку времени из строки 18/07/2013.
2) Установить русский язык setlocale(LC_ALL, 'ru_RU.utf-8');
3) Форматировать время с использованием strftime("%d %B %Y", date);
Но он выводит 18 July 2013 без замены July с русским именем на месяц. Что не так?php - как я могу вывести дату в русском языке

+0

Возможный дубликат https://stackoverflow.com/questions/10486658/php-date-international-month-names – reikyoushin

+1

se tlocale(): возвращает новую текущую локаль, __or FALSE, если функциональность языкового стандарта не реализована на вашей платформе__, указанная локаль не существует или имя категории недействительно ... проверяете ли вы возвращаемое значение из setlocale()? –

+0

@MarkBaker, вы правы, он возвращает FALSE. Как проверить, не установлен ли языковой стандарт или неверно имя категории? –

ответ

1

То, что я делал для достижения того же результата на испанском языке, было определение двух массивов, $ шаблонов для имен на английском языке и замену $ с эквивалентными именами на испанском языке и вызов функции preg_replace, передающей их как первый и второй параметры, так и результат форматирования введите третий параметр.

Это функция я построил:

function MonthToSpanish($str, $three = false) 
{ 
    $months = array(
     '/January/', '/February/', '/March/', 
     '/April/', '/May/', '/June/', '/July/', 
     '/August/', '/September/', '/October/', '/November/', '/December/', 
     '/Jan/', '/Apr/', '/Aug/', '/Dec/', 
    ); 
    $meses = array(
     'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 
     'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre', 
     'Ene', 'Abr', 'Ago', 'Dic', 
    ); 
    $res = preg_replace($months, $meses, $str); 
    if ($three) { 
     $res = str_replace('Mayo', 'May', $res); 
    } 
    return $res; 
} 

Надеется, что вы найдете его рода полезный.

0

Если расширение Intl будет установлена, вы можете использовать MessageFormatter делает свой формат и возможные различия грамматических

Пример: http://php.budgegeria.de/zrffntr-sbeznggre

PHP Doc: http://www.php.net/manual/en/class.messageformatter.php

Если вам не нужны целые предложения Вы также может использовать IntlDateFormatter: http://www.php.net/manual/en/intldateformatter.format.php

Смежные вопросы