Блог :: ЮБ

12 августа 2007

Wordpress по-русски и PHP5

Нередко на форумах поддержки встречаются сообщения, что де Wordpress забывает русский язык, попав на сервер с PHP5. Мне и самому довелось столкнуться с такой неприятной особенностью. Советы же в основном заключаются в рекомендациях перейти на PHP4. А это, понятное дело, не всегда возможно. Однако оказалось, что решение существует, и притом очень простое.

Я нашел его на trac.wordpress.org Суть в том, что подпрограмма загрузки файла локализации ru_RU.mo неправильно определяет его сигнатуру и порядок следования байт, видимо, из-за несоответствия типов данных. В файле /wp-includes/gettext.php есть следующий фрагмент кода:

if ($magic == ($MAGIC1 & 0xFFFFFFFF) || ($magic == ($MAGIC3 & 0xFFFFFFFF)) { // to make sure it works for 64-bit platforms
$this->BYTEORDER = 0;
} elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) {
$this->BYTEORDER = 1;
} else {
$this->error = 1; // not MO file
return false;
}

Достаточно его поменять на такой:
if (($magic & 0xFFFFFFFF) == ($MAGIC1 & 0xFFFFFFFF) || ($magic & 0xFFFFFFFF) == ($MAGIC3 & 0xFFFFFFFF)) { // to make sure it works for 64-bit platforms
$this->BYTEORDER = 0;
} elseif (($magic & 0xFFFFFFFF) == ($MAGIC2 & 0xFFFFFFFF)) {
$this->BYTEORDER = 1;
} else {
$this->error = 1; // not MO file
return false;
}

и magic`и будут нормально сравниваться.

Исправленный gettext.php для Wordpress 2.2.2 можно взять тут. Хочется верить, что в версии 2.2.3 этот момент уже будет учтен.

Автор: Ю.Б.
Разделы: WordPress

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
См. также:
Почта и WordPress
Сброс пароля к WP
Include на странице

Disclaimer. Я никого не принуждаю к миру использованию плагинов.
Плагины имеют полное право не работать на ваших сайтах.
Использование моих плагинов - не повод перекладывать свои заботы на меня.