Последние темы: английские даты - Страница 2 - Дизайн и модификация Invision Power Board

Перейти к содержимому

 

Правила раздела

Здесь обсуждаются вопросы по настройке и администрированию форумов IPB 3.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Установка, настройка и обслуживание форумов IPB 2.x.
Оформление форумов, включая верстку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

Теги не найдены

  • 3 Страниц +
  • 1
  • 2
  • 3

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

#16 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 276
  • Регистрация: 20-Март 09
  • Репутация: 2 078
  • IPB version:3.1.x
 

Отправлено 06 Март 2015 - 21:06

Просмотреть сообщениеcyrax_02 сказал(а):

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

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

Просмотреть сообщениеcyrax_02 сказал(а):

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

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

#17 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 276
  • Регистрация: 20-Март 09
  • Репутация: 2 078
  • IPB version:3.1.x
 

Отправлено 06 Март 2015 - 21:12

Просмотреть сообщениеcyrax_02 сказал(а):

В общем, что мне сейчас нужно: найти место в исходных кодах IP.Board, где непосредственно получается строковое представление даты

/admin/sources/classes/class_localization.php
class_localization::getDate

Через это место форматируются все даты на форуме. И то, что метка там сработает ничего по сути не даст. Если дата на английском, значит локаль каким-то образом "слетает". Поиски нужно начать с хука, определив там какая текущую локаль класса.
0

#18 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 06 Март 2015 - 21:37

Навскидку:
а) хук "Последние темы" перед использованием функции strftime русскую локаль не устанавливает
б) код хука "Последние темы" выполняется раньше остального кода (логично, т.к. плавающий блок (float: right) в шаблоне расположен выше и обрабатывается в первую очередь)

Сейчас проверю...
0

#19 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 276
  • Регистрация: 20-Март 09
  • Репутация: 2 078
  • IPB version:3.1.x
 

Отправлено 06 Март 2015 - 21:47

Просмотреть сообщениеcyrax_02 сказал(а):

хук "Последние темы" перед использованием функции strftime русскую локаль не устанавливает

Локаль устанавливается при загрузке класса class_localization

Просмотреть сообщениеcyrax_02 сказал(а):

код хука "Последние темы" выполняется раньше остального кода

Шаблонные хуки выполняются после отработки основного шаблона. Даже если б было на наоборот, сначала загружается ядро, потом модули которые вызывают нужные им шаблоны.
0

#20 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 06 Март 2015 - 21:54

Цитата

Навскидку:
а) хук "Последние темы" перед использованием функции strftime русскую локаль не устанавливает
б) код хука "Последние темы" выполняется раньше остального кода (логично, т.к. плавающий блок (float: right) в шаблоне расположен выше и обрабатывается в первую очередь)


Всё так и есть. Хук не устанавливает локаль, указанную в свойствах текущего языкового пакета. Вернее, ядро IP.Board устанавливает локаль только после обработки некоторых хуков, в число которых попал "Последние темы".

Если вот здесь
/admin/applications/forums/sources/classes/forums/class_forums.php
class_forums::hooks_recentTopics()

public function hooks_recentTopics( $topicCount=5, $output=true )
{
...
return $this->registry->output->getTemplate('boards')->hookRecentTopics( $topics_rows );
...
}

перед вызовом hookRecentTopics добавить код установки локали:
setlocale(LC_ALL, 'ru_RU.utf8');

то в блоке "Последние темы" все даты становятся русскими.

Недоработка разработчиков. Впрочем, может, в 4-й версии исправили...
0

#21 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 06 Март 2015 - 21:56

Цитата

Локаль устанавливается при загрузке класса class_localization

Значит, этот класс загружается после обработки хука "Последние темы"...

Цитата

Даже если б было на наоборот, сначала загружается ядро, потом модули которые вызывают нужные им шаблоны.

Это заявленная логика. Но бывают и ошибки разработчиков.

Сообщение изменено: cyrax_02 (06 Март 2015 - 22:03)

0

#22 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 06 Март 2015 - 21:58

siv1987, у вас есть ваш собственный форум ?
Установите локаль на сервере или на уровне php.ini в англоязычную - в последних темах даты станут английскими.
0

#23 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 276
  • Регистрация: 20-Март 09
  • Репутация: 2 078
  • IPB version:3.1.x
 

Отправлено 06 Март 2015 - 22:24

Просмотреть сообщениеcyrax_02 сказал(а):

Значит, этот класс загружается после обработки хука "Последние темы"

Просмотреть сообщениеcyrax_02 сказал(а):

Вернее, ядро IP.Board устанавливает локаль только после обработки некоторых хуков

Этот класс инициализируется ядром одним из первых, а не загружается хуками, или в отдельных избирательных случаях. Локаль устанавливается один раз для всей системы при создание экземпляра класса.

Просмотреть сообщениеcyrax_02 сказал(а):

Если вот здесь

Вот здесь нужно добавить
var_dump( $this->registry->class_localization->local ); exit;

Просмотреть сообщениеcyrax_02 сказал(а):

Установите локаль на сервере или на уровне php.ini в англоязычную - в последних темах даты станут английскими.

1. На этом форуме локаль php по умолчанию английская.
2. Как-то не вяжется с другим вашим постом.

Имхо, проблема в вашем форуме. Либо вы что-то правили, либо что-то устанавливали. Я лично больше склоняюсь к первому, хотя возможно и то и другое. Потому что, из всех кто использует IPB вы первый от кого я слышу о таком "баге". Что намекает.
0

#24 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 276
  • Регистрация: 20-Март 09
  • Репутация: 2 078
  • IPB version:3.1.x
 

Отправлено 06 Март 2015 - 22:36

Просмотреть сообщениеcyrax_02 сказал(а):

Это заявленная логика. Но бывают и ошибки разработчиков.

Это не заявленные логика, это профайлинг форума. Вряд ли разработчики могли так ошибиться, чтобы перепутать порядок инициализации ядра с обработкой шаблонов.
0

#25 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 06 Март 2015 - 23:28

Цитата

Вот здесь нужно добавить
var_dump( $this->registry->class_localization->local ); exit;

string(11) "ru_RU.UTF-8"
Та же локаль указана в текущем языковом пакете.

Вывод: хук не использует локаль из class_localization

Цитата

Этот класс инициализируется ядром одним из первых, а не загружается хуками, или в отдельных избирательных случаях. Локаль устанавливается один раз для всей системы при создание экземпляра класса.

В качестве доказательства покажите мне в исходных кодах IP.Board php-команду
setlocale(...);


Цитата

Имхо, проблема в вашем форуме. Либо вы что-то правили, либо что-то устанавливали...

...либо что-то не то съел. Это не серьёзный подход. Тем более для вас. Все исходники у нас перед глазами.
Если установка локали перед getTemplate решает проблему, значит, локаль в системе НЕ УСТАНАВЛИВАЕТСЯ до этого момента.

Сообщение изменено: cyrax_02 (06 Март 2015 - 23:30)

0

#26 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 276
  • Регистрация: 20-Март 09
  • Репутация: 2 078
  • IPB version:3.1.x
 

Отправлено 07 Март 2015 - 00:04

Просмотреть сообщениеcyrax_02 сказал(а):

Вывод: хук не использует локаль из class_localization

Даты форматируются в другом классе. И локаль не "используется" как аргумент для функций, она устанавливается. Если свойство класса содержит эту локаль, значит при инициализации ядра она была установлена, переменная его принимает перед вызовом setlocale.

Покажите в этом месте результат
var_dump( setlocale( LC_ALL, "0" ) ); exit;

Просмотреть сообщениеcyrax_02 сказал(а):

...либо что-то не то съел. Это не серьёзный подход. Тем более для вас. Все исходники у нас перед глазами.

Я вам говорю то, что вижу по исходникам. Но это не значит, что я могу видеть кривые хуки или правки на вашем форуме.

Просмотреть сообщениеcyrax_02 сказал(а):

Если установка локали перед getTemplate решает проблему, значит, локаль в системе НЕ УСТАНАВЛИВАЕТСЯ до этого момента.

Ничего это не значит. У вас тоже перед глазами есть все исходники, возьмите и посмотрите стэк вызовов этих классов и увидите где class_localization и где output, и когда вообще отрабатывают хуки. setlocale может быть вызван сотню раз и кем угодно с разными значениями. Наличие правильной локали в этой переменной говорит о том, что она была установлена.
0

#27 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 07 Март 2015 - 09:52

Цитата

Покажите в этом месте результат
var_dump( setlocale( LC_ALL, "0" ) ); exit;

string(1) "C"

Цитата

Если свойство класса содержит эту локаль, значит при инициализации ядра она была установлена, переменная его принимает перед вызовом setlocale.

Цитата

Наличие правильной локали в этой переменной говорит о том, что она была установлена.

То, что свойство класса содержит имя некоторой локали ещё ни о чём не говорит. Чтобы эта локаль использовалась при выполнении тех или иных функций эту локаль нужно установить функцией setlocale. Тот факт, что перед выполнением кода хука локаль имеет значение "C" (по умолчанию), в большой степени говорит о том, что локаль до этого момента в системе не устанавливалась.

Цитата

setlocale может быть вызван сотню раз и кем угодно с разными значениями.

Маловероятно, что стандартный движок IP.Board где-то в своём коде будет устанавливать локаль, отличную от той, что указана в текущем языковом пакете. Никаких сторонних приложений и хуков, как я уже говорил, не установлено и не устанавливалось.
0

#28 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 276
  • Регистрация: 20-Март 09
  • Репутация: 2 078
  • IPB version:3.1.x
 

Отправлено 07 Март 2015 - 10:47

Цитата

То, что свойство класса содержит имя некоторой локали ещё ни о чём не говорит.

Я устал уже повторять десять раз одно и тоже

siv1987 сказал(а):

переменная его принимает перед вызовом setlocale.

Вы упорно не хотите слушать то что вам говорят.
Каким образом она может не установится, если все остальные даты на русском, и задается локаль один раз именно при инициализации класса (только пожалуйста на надо говорить нам про очередность загрузки классов и тд. прежде чем что-то утверждать сначала смотрим в коде). Этот факт говорит наоборот о том, что локаль устанавливается, но до хука она изменяется. Раз это происходит именно в хуке (которые отрабатывают последние в этой цепочки), можно предположить что изменяется она другим хуком который отробатывает перед ним.

По поводу стандартности движка я также сомневаюсь. В них копирайты от ибр не ставят.
0

#29 Пользователь не на сайте   cyrax_02 ответил: »

 
 
  • Advanced
  • ***
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 101
  • Регистрация: 19-Февраль 15
  • Репутация: 0
  • IPB version:3.4.x
 

Отправлено 07 Март 2015 - 12:23

Цитата

По поводу стандартности движка я также сомневаюсь

Я установил пакет локализации от IBResource, который приобретал у них за денюжку. Хотите сказать, что у меня ломаная лицензия ? Что мой форум сейчас не пройдёт проверку подлинности лицензии от IP.Board ?

Цитата

В них копирайты от ибр не ставят.

Так у меня нет копирайтов от IBResource. Только IP.Board'овские копирайты.
А знак "@" в строке "Лицензия зарегистрирована на: ..." - не касается движка форума.
0

#30 Пользователь не на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 276
  • Регистрация: 20-Март 09
  • Репутация: 2 078
  • IPB version:3.1.x
 

Отправлено 07 Март 2015 - 12:30

Просмотреть сообщениеcyrax_02 сказал(а):

Я установил пакет локализации от IBResource, который приобретал у них за денюжку. Хотите сказать, что у меня ломаная лицензия ?

Локализация от IBR уже не оригинальный движок, оно затрагивает ядро форума и многие файлы. Не даром патчи безопасности для русских локализаций рекомендуют устанавливать с ИБР.
0

Сообщить об этой теме:


  • 3 Страниц +
  • 1
  • 2
  • 3


Быстрый ответ

  

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна