Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
cyrax_02

Последние темы: английские даты

Рекомендованные сообщения

В последних темах на главной странице форума отображаются английские даты, например, "Mar" вместо "Мар".

Похоже, используется php-функция date, которая с русским не дружит.

 

Какой самый простой вариант русификации этой даты ?

Поделиться сообщением


Ссылка на сообщение
03/06/15 15:55 (изменено)

- на сервере должна быть установлена русская локаль

- в настройках языка нужно прописать русскую локаль

Всё так и есть. На сервере локаль "ru_RU.UTF-8" установлена (проверил через locale -a). В текущем языковом пакете "ru_RU.UTF-8" указана. В итоге все даты - на русском языке (если изменить, например, на "ru_RU.UTF-81", то язык везде меняется на английский - т.е. русская локаль применяется и работает нормально).

 

Но сабжевая проблема касается именно блока "Последние темы". Только там даты английские.

Похоже, виноват стандартный хук последних тем.

Изменено пользователем cyrax_02

Поделиться сообщением


Ссылка на сообщение

В стандартном шаблоне стандартного хука последние темы используется тег parse date с форматом "Сокращенный формат".

Поделиться сообщением


Ссылка на сообщение
...используется тег parse date с форматом "Сокращенный формат".

Это вы используете терминологию шаблонов IP.Board, в коих я ещё не разбираюсь.

 

Т.е. всё-таки, на уровне php хук ошибочно использует функцию date вместо комбинации setlocale() + strftime() - это вы хотели сказать ?

Не понимаю я иерархию классов IP.Board. Дебри дремучие. Хрен что найдёшь...

Поделиться сообщением


Ссылка на сообщение

Другими словами, на уровне хука все должно быть нормально, так как используется тот же метод вывода дат что и в других местах (сокращенный формат). Смотрите в шаблоне.

Поделиться сообщением


Ссылка на сообщение
03/06/15 17:09 (изменено)

Спустя 30 минут поиска всё-таки нашёл шаблоны хуков. Оказывается, они расположены в группе "Список форумов".

Смотрим шаблон "hookRecentTopics":

 

<if test="recenttopics:|:is_array( $topics ) && count( $topics )">
<div class='ipsSideBlock clearfix'>
<h3>{$this->lang->words['recently_added_topics']}</h3>
<div class='_sbcollapsable'>
	<ul class='ipsList_withminiphoto'>
	<foreach loop="topics_hook:$topics as $r">
	<li class='clearfix'>
		{parse template="userSmallPhoto" group="global" params="$r"}
		<div class='list_content'>
			<a href="{parse url="showtopic={$r['tid']}" base="public" template="showtopic" seotitle="{$r['title_seo']}"}" rel='bookmark' class='ipsType_small' title='{parse expression="strip_tags($r['topic_title'])"} {$this->lang->words['topic_started_on']} {parse date="$r['start_date']" format="LONG"}'>{$r['topic_title']}</a>
			<p class='desc ipsType_smaller'>
				<if test="$r['members_display_name']">{parse template="userHoverCard" group="global" params="$r"}<else />{$this->settings['guest_name_pre']}{$r['starter_name']}{$this->settings['guest_name_suf']}</if>
				- {parse date="$r['start_date']" format="short"}
			</p>
		</div>
	</li>
	</foreach>
	</ul>
</div>
</div>
</if>

 

Вот эта строка:

- {parse date="$r['start_date']" format="short"}

мне ни о чём не говорит. Я больше доверяю php-коду.

Изменено пользователем cyrax_02

Поделиться сообщением


Ссылка на сообщение

Попробуйте поменять short на long.

 

Настройки -> Дополнительно -> Формат чисел, времени и дат: Сокращенный формат

Поделиться сообщением


Ссылка на сообщение
Попробуйте поменять short на long.

Получаем "March". И только в блоке последних тем. Во всех остальных местах все даты на русском.

 

Выходит, не бывает рабочих программных систем. Всегда всё руками нужно шлифовать. Как так можно. Ужас...

И ведь на нулёвом лицензионном IP.Board без всяких дополнительных хуков на стандартных стилях.

Поделиться сообщением


Ссылка на сообщение

class_forums::hooks_recentTopics()

Не надо приводить бесполезные блоки кода. Во первых, мы и так его знаем, во вторых дата форматируется в шаблоне а не в хуке. Вы уверены что это стандартный хук? Укажите правильный адрес форума в board url.

Поделиться сообщением


Ссылка на сообщение
Вы уверены что это стандартный хук?

Абсолютно. Система нулёвая. Все хуки нулёвые "из коробки".

 

Укажите правильный адрес форума в board url.

Я его скрыл в целях конфиденциальности. Отправил адрес форума в личку. Можете убедиться сами, что даты в этом блоке - английские.

Блок последних тем - стандартный "из коробки".

Поделиться сообщением


Ссылка на сообщение

Не нужно больше ничего удалять. Через месяц приспичит код хука найти...

 

/admin/applications/forums/sources/classes/forums/class_forums.php

class_forums::hooks_recentTopics()

Поделиться сообщением


Ссылка на сообщение

Через месяц приспичит код хука найти.

Вы весь форум будете сюда выкладывать если через месяц что-то приспичит?.. Для этого существует блокнот, куда обычно записывают нужные места и фрагменты кода.

 

Я его скрыл в целях конфиденциальности.

В целях конфиденциальности это поле видно только администрации и IPB специалистам.

 

Абсолютно. Система нулёвая.

Тогда должно работать. Отключайте все кастомные хуки.

Поделиться сообщением


Ссылка на сообщение
03/06/15 17:56 (изменено)

Могу предположить, что причиной сабжевой проблемы стал патч 3_4_x_patch_nov_14

 

У меня есть вариант того же форума (той же версии), но без этого патча - там в блоке "Последние темы" даты русские, как и положено (правда, с точкой в конце - но это, наверное, от версии php зависит (в старых php strftime после сокращённых месяцев и дней недели ставит точку, в новых версях php -нет)).

 

Другая возможная причина - определённая комбинация стандартных настроек IP.Board приводит к сабжевому артефакту.

Изменено пользователем cyrax_02

Поделиться сообщением


Ссылка на сообщение
03/06/15 18:03 (изменено)
Тогда должно работать. Отключайте все кастомные хуки.

Кастомных хуков нет. Только стандартные.

 

----------------------------

В общем, что мне сейчас нужно: найти место в исходных кодах IP.Board, где непосредственно получается строковое представление даты (используются php-функции date и strftime). Всё остальное - это танцы с бубном на закате.

 

Поставим туда строку кода:

if(strpos($date, 'Mar', 0) > 0) { die('Вот она - кузявка: '....); }

 

Только так можно гарантированно локализовать проблему.

Изменено пользователем cyrax_02

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...