Локаль и дата в новостях

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Локаль и дата в новостях

Post by von-hamster »

Может кто знает, а может кому поможет:

Вобщем засада была следующей: когда устанавливаешь date_format например, в '%b, %d' - тоесть отображение краткого названия месяца, и если локаль русская, то на некоторых хостингах текст отображался вопросами. Смысл в том, что в cms используется стандартная функция формирования даты, в зависимости от локали. А на этих самых хостингах чаще всего либо не настроена локаль, либо стоит не utf.

Варианты решения следующие:
1. попросить настроить локаль
2. применить модификатор в шаблоне, например, {$entry->postdate|cms_date_format:'%b, %d'|mb_convert_encoding:'utf8':'iso-8859-5'}. Естественно, mb расширение должно быть включено, а вместо iso-8859-5 - та кодировка, которая у вас по умолчанию.
Last edited by von-hamster on Mon Aug 31, 2009 7:28 am, edited 1 time in total.
ilia3d

Re: Локаль и дата в новостях

Post by ilia3d »

von-hamster wrote: Может кто знает, а может кому поможет:

Вобщем засада была следующей: когда устанавливаешь date_format например, в '%b, %d' - тоесть отображение краткого названия месяца, и если локаль русская, то на некоторых хостингах текст отображался вопросами. Смысл в том, что в cms используется стандартная функция формирования даты, в зависимости от локали. А на этих самых хостингах чаще всего либо не настроена локаль, либо стоит не utf.

Варианты решения следующие:
1. попросить настроить локаль
2. применить модификатор в шаблоне, например, {$entry->postdate|cms_date_format:'%b, %d'|mb_convert_encoding:'utf8':'iso-8859-5'}. Естественно, mb расширение должно быть включено, а вместо iso-8859-5 - та кодировка, которая у вас по умолчанию.
было у меня такое, потом само рассосалось... теперь понятно, откуда ноги растут. Спасибо! )
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Локаль и дата в новостях

Post by ZYV »

Вариант 1 идеологически правильный =) а кто не хочет, того по морде чайником.
unsigned double ZYV;
Leee
Forum Members
Forum Members
Posts: 22
Joined: Sun Jun 07, 2009 8:41 pm

Re: Локаль и дата в новостях

Post by Leee »

{$entry->postdate|cms_date_format:'%d %B %Y'|mb_convert_encoding:'utf8':'windows-1251'}
Вот после этого у меня заработало на сайте, спасибо.
А как сделать, чтобы в административной панели новости вопросиками не отображались?
Leee
Forum Members
Forum Members
Posts: 22
Joined: Sun Jun 07, 2009 8:41 pm

Re: Локаль и дата в новостях

Post by Leee »

Ребят, я разобрался с проблемой.
Как я это сделал, сейчас напишу. Может кому-нибудь пригодится.
1.
Написал в техподдержку. Мне продемонстрировали, что локаль настроена правильно вот таким скриптом
setlocale(LC_ALL,'ru_RU.utf-8');
echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978));

2. Видимо локаль правится где-то еще. Я нашел 2 скрипта, где выводится дата для юзер-интерфейса и для админки.
/lib/smarty/plugins/modifier.date_format.php
/admin/moduleinterface.php
И прописал в обоих скриптах такую строчку.
setlocale(LC_ALL,'ru_RU.utf-8');

3. Все заработало. Названия месяцев отображаются правильно. МОжет быть я как-то топорно решил проблему. Но времени на более изящное решение у меня не было.
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Локаль и дата в новостях

Post by von-hamster »

Напиши разработчикам. Чтобы они это внесли в код или просто исправили.
Leee
Forum Members
Forum Members
Posts: 22
Joined: Sun Jun 07, 2009 8:41 pm

Re: Локаль и дата в новостях

Post by Leee »

Я в английском слабоват, чтобы писать разработчикам.
PhantomX
New Member
New Member
Posts: 9
Joined: Sat Jul 18, 2009 1:11 pm

Re: Локаль и дата в новостях

Post by PhantomX »

В последней версии 1.6.6 в config.php внесена установка глобальной локали

Пример для моего хостинга:
$config['locale'] = 'ru_RU.UTF-8';
(Регистр имеет значение)

Сам 3 часа парился пока разобрался. Зато изучил новую функцию:
http://php.su/functions/?setlocale
http://php.net/manual/en/function.setlocale.php
Post Reply

Return to “Russian - русский”