Перейти к содержимому
Русский язык для Invision Community 5

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

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

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

 

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

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

  • Автор

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

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

Всё так и есть. На сервере локаль "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. Дебри дремучие. Хрен что найдёшь...

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

  • Автор

Спустя 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 специалистам.

 

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

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

  • Автор

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

 

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

 

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

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

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

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

 

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

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

 

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

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

 

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

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

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

Этот патч не затрагивает ничего, что связано с локалью и форматированием даты.

 

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

Тогда бы скорее даты слетели везде, а не только в определенном месте.

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

Важная информация

При использовании данного сайта, вы согласаетесь с Условия использования и Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим..

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.