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 этот момент уже будет учтен.


Comment Denis — 16 августа 2007 в 20:32
Здравствуйте.
Извините, что пишу Вам в блоге, но на mywordpress.ru какие-то траблы с регистрацией, а помощь нужна “еще вчера”
Я не силен в PHP, а хочется сделать так, чтобы запись относящаяся к конкретой рубрике имела цвет заголовка отличный от записи из другой рубрики.
Например - рубрика “Номер1″ - цвет заголовка синий, рубрика “Номер2″ - цвет заголовка зеленый и т.д.
Понимаю, что сделать это просто - т.е. конструкция такого вида - если рубрика “Номер1″ - то применяем DIV такой-то, если “Номер2″ - такой-то и т.д.
Пытался использовать такое:
- однако - видимо “лыжи не едут”.
Можете подсказать решение?
Заранее спасибо.
Comment Denis — 16 августа 2007 в 20:34
странно как-то - не прописалась ПХп-шная кода которую я пытался использовать - попробую повторить в скобках
{*
*}
Comment Denis — 16 августа 2007 в 20:36
может так сработает
извиняюсь за кол-во комментов
Comment phillip — 18 августа 2007 в 21:04
Такое дело…. Один чел мне заявляет, мол, на php4 сдият одни старые пердуны, которые не хотят с него слазить. А все грамотные люди берут хостинг с php5.
Я с ним и поспорил…. Лично у меня php4. Вот и вы пишите о том, что с пятой версией траблы.
Хотелось бы услышать ваше мнение о том, остались ли на php4 одни дураки, или все же эта версия актуальна по сей день. сенкс.
Comment Ю.Б. — 18 августа 2007 в 21:27
Линия php4 приказала долго жить, поэтому разработки новых движков лучше делать сразу ориентируясь на php5. А особо умные могут даже на php6.
На самом деле, какая разница, что стоит на сервере, если он честно выполняет свои обязанности? Вот когда прижмет, тогда хостеры и начнут ставить php5, а нормальные еще и дадут возможность выбора php4 или php5. Потому что многие неплохие разработки в принципе не работают на php5, а платить за их переделку мало кто захочет.
Не сломалось - не чини. Меня так учили.
Comment phillip — 19 августа 2007 в 06:36
хе-хе… да уж, точно. не слоамлось- не чини
Comment sonika — 21 августа 2007 в 02:54
Мне тут ссылка попалась про PHP5 и вордпресс, может пригодится кому:
http://ocaoimh.ie/2007/08/18/notes-when-upgrading-to-php5/
Comment shalun — 23 августа 2007 в 23:16
Огромное спасибо. Теперь работает.
Comment developers.IN.UA — 24 августа 2007 в 10:31
Скажу о том, что PHP4 уже не поддерживается, так как выходит PHP6. Поэтому не стоит рекомендовать люди оставаться на 4 версии PHP. Я рекомендую всем переходить на PHP5, чтобы далее можно было безболезненно перейти на PHP6, как будет стабильный релиз.
Спасибо за внимание.
Comment developers.IN.UA — 24 августа 2007 в 10:35
И еще. Я замечу, что на PHP5 на Windows платформе все работает, а на UNIX платформе наблюдаются баги с языковыми настройками.
Comment Anton — 11 сентября 2007 в 11:11
В версии 2.2.3 этот глюк не исправили, что напрягает при установке новой версии.
Comment Ю.Б. — 11 сентября 2007 в 11:46
Мало того, в 2.3 тоже не исправили.
Comment Юрий — 5 ноября 2007 в 23:37
О, спасибо большое
а я все никак не мог справиться, и суппорт руками разводил…
Comment Владимир — 27 ноября 2007 в 00:00
ну спасибо. Наконец-то я нашел ответ на свой вопрос. два дня в пустую и наконец-то свобода.
Comment Степан — 19 декабря 2007 в 18:11
Спасибо большое за фикс! Жутко помогло.
Comment Сергей — 5 января 2008 в 00:15
>>>>Хочется верить, что в версии 2.2.3 этот момент уже будет учтен.
Да уж, уже версия 2.3.2, а это так и не поправили
Спасибо за заметку
Comment my-xcalibur.ru — 26 января 2008 в 06:57
Спасибо камрад! Выручил.
Comment Дмитрий Дианов — 11 февраля 2008 в 00:54
Вот 2.3.3 - вроде баг пофикшен, а русскую локаль не воспринимает. ЮБ, что скажете?
Comment Ю.Б. — 11 февраля 2008 в 10:37
В 2.3.3 действительно внесены изменения, но не такие, как описано выше. Возможные варианты нежелания работать:
1. новый вариант от Создателей не лучше предыдущего (не проверял) -> пробуем патч;
2. файл ru_RU.mo при копировании превратился в ru_ru.mo -> меняем ftp-клиента на правильный;
3. завозившись с gettext, забыли прописать в wp-config.php define (’WPLANG’, ‘ru_RU’); или прописали неправильно -> исправляем;
4. проблемы с хостингом, точнее с php (кажется в 5.2.3 есть баг, проявляющийся в этом месте WP) -> кланяемся суппорту хостинга или пинаем его, это уже по обстоятельствам.
Comment Владимир — 15 марта 2008 в 13:52
Спасибо ! Подправил свой бложик…
Comment Николай — 1 февраля 2009 в 17:49
От за это спасибочки!