Задать вопрос

Не склоняются названия месяцев (centos+php)?

Не склоняются названия месяцев на русском и на украинском языках:

  • вместо «16 Апреля» — «16 Апрель»
  • и вместо «16 Квітня» — «16 Квітень»


Сервер:

CentOS release 6.4 (Final)

PHP Version 5.3.3

Скрипт для теста:
<?php
echo setlocale(LC_ALL, 'ru_RU.utf8'); // аналогично и echo setlocale(LC_ALL, 'uk_UA.utf8');
echo strftime("%d %B");


Результат:
ru_RU.utf8
16 Апрель


Необходимо:
ru_RU.utf8
16 Апреля



Подскажите как можно вылечить?
  • Вопрос задан
  • 9061 просмотр
Подписаться 15 Оценить 2 комментария
Решения вопроса 1
@adebt
«быть самому себе злобным буратино» — это плодить костыли, вместо того, чтобы использовать уже реализованный функционал

По самому вопросу:

выдержка из файла украинской локали CentOS

% Initially alt_digits was supposed to hold alternative symbols for _digits_,
% corresponding to %O modified conversion specification.
% Although in Ukrainian language alternate _names_ are used instead of digits.
% We'll use this keyword to present a list of month names in proper form for
% date, see mon. (%Om)
%
% This hack is dedicated for months it won't work for other %O* modifiers
% (weeks, days etc).
%


Вкратце суть такова, что для правильного склонения месяцев в функции strftime нужно использовать вместо модификатора %B модификатор %Om

У меня в результате дата с 16 квітень 2013, 16:22 изменилась на 16 квітня 2013, 16:22
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@egorinsk
Если надо выводить даты на русском языке в приложении, я бы написал свою функцию. Использовать для этого strftime — быть самому себе злобным буратино.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы