Русификация MovableType

Русификация MovableType состоит из таких шагов
  1. Русификация дат
  2. Русификация имен файлов для dirify
  3. Перевод темплейтов и системных сообщений
Первые два пункта требуют правок кода, каковые правки и были сделаны. Все действия производились над MovableType 3.33

UTF-8 и только он

Мы живем в 21-м веке, когда передача лишних байтов через всю планету не стоит вообще ничего. Работа с многобайтовыми кодировками сейчас поддержана везде, на очень старые версии браузеров закладываться смысла нет (примечание от меня, как от автора Russian Apache, — в ситуации 9-летней давности работа с однобайтными кодировками и разными кодировками у клиентов была необходимостью. Эта необходимость пропала примерно в 2000-м году).

Раз MT предлагает нам UTF-8, значит нужно пользоваться. Единственное изменение, которое нужно внести в настройки по-умолчанию в этом месте, это добавить в mt-config.cgi строчку

MailEncoding utf-8
Без этой настройки вся приходящая почта (о комментариях, от trackbacks) будет как-бы в ISO-8859-1, со знаками вопроса вместо русских букв.

Неделя начинается в понедельник

В России (как и во Франции, например) первый день недели - понедельник. Однако вычисление календаря в MT забитов в код и никак не настраивается. По счастью, правки очень простые, по одной строчке в Util.pm и MTUtil.php. До кучи, поправим и стандартный calendar.tmpl (перестановкой строчек, а не переводом):
Скачать патч календаря
(Если вы не знаете что такое патч и как его применять, используйте пожалуйста настроенный по-умолчанию MT).

Русские названия месяцев

По совету Влада Головача выбираем в качестве Date Language (меню Settings) итальянский язык. Это даст нам даты записей в формате DD.MM.YYYY и итальянские названия месяцев в архиве и над календарем. Я небольшой любитель цифровых дат, но они - куда меньшее зло чем "написано 12 Декабрь 2006", а склонять имена месяцев MT не умеет.

Следующим шагом нужно перевести названия месяцев (и, до кучи, дней недели) для итальянского языка на русский. Это опять делается патчем для Util.pm и MTUtil.php

В результате выбора итальянского языка для "Date Format", он появится еще и в теге <language> в RSS-экспорте. Потому что это вовсе не Date Format, а вообще язык блога. Ну да из темплейта index.xml можно и руками удалить (патч не прилагается)

Имена файлов для dirify

Dirify позволяет сделать читаемые URL (вроде movabletype_soset.html), что несомненно полезно.

Описанный у Михаила Шуленина способ меня удивил своей непрямолинейностью, сначала мы отключаем дирификацию для UTF-8, потом перекодируем в 1251, потом перекодируем по табличке HighAscii, которую еще нужно поправить.

Куда как проще просто дополнить табличку из UTF-8 в латиницу русскими буквами, причем сразу транслитерацией. Это и делает прилагаемый патч. Опять правим многострадальные Util.pm и MTUtil.php.

Русские сообщения в темплейтах

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

Надеюсь что с данной технической задачей вдумчивый читатель справится сам. Заодно икнется создателям системы темплейтов MT, когда выяснится, что одни и те же правки нужно делать в нескольких местах.

Все патчи вместе

  1. Русские названия дат
  2. Понедельник - первый день недели
  3. Русификатор dirify

Comments

А я русские даты по-другому сделал. В Util.pm добавил новую конструкцию типа:
'ru' => [
...
]
А затем в tmpl/cms/cfg_prefs.tmpl в нужном месте добавил строчку:
<option value="ru"<TMPL_IF NAME=LANGUAGE_RU> selected="selected"</TMPL_IF>><MT_TRANS phrase="Russian"></option>
После в настройках выбрал нужный язык.

to saahov.

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

Да, исправлений в Util.pm недостаточно, есть же еще PHP-часть.

Который нужен список - он один, в настройках блога.

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

Ну вот смотрите:
в настройках блога - один список языков
в настройках автора - другой список
в L10N - третий список
в I18N - четвертый

Я как это увидел, меня сразу стошнило.

А русификация frontend заключается только в редактировании шаблонов?

Или есть-таки более правильный метод, аналогично ru.pm?

Кроме перевода шаблонов нужно еще русские имена месяцев (это делает патч к Util.pm/MTUtil.php), начало недели в понедельник.

Если делать через ru.pm, то нужно переводить много лишнего. Я ниасилил

с месяцами и понедельником все понятно - сделал без проблем.

напрягает необходимость править несколько почти одинаковых шаблонов. ощущение бесполезности работы :(

И удивительно, что ru.pm к этим шаблонам никакого отношения не имеет, ведь в нем есть все иноязычные фразы из шаблонов.

Ага, тоже не нравится! saahov рекомендовал поиск и замену.

ru.pm работает на этапе инсталляции - при этом все макросы <MT_TRANS > раскрываются в выбранный язык.
Что, конечно, тоже не подарок.

Ужас!!!
И ЭТО стоит денег? :)

Хотя, признаться, все остальное на высоте!
Видно, мерикосы никак не могут поверить в платежеспособность иноземцев...

Я бы сказал, что вся темплейтная система сделана странно, даже текст про это написал.

С системой плагинов пока разбираюсь. Мне оказалось нужно из MTLJPost звать MTMacro и CodeBeautifier, пока ниасилил.

В-общем, не подарок. Но использовать можно

Ну, мой нетривиальный способ как раз и появился от того, что не получилось быстро найти соответствующую таблицу символов. А потом, когда она таки нашлась, править что бы то ни было стало ужасно лениво.

Расскажите, как патч этот ставить. Я не програмист, к сожалению

Андрей,

вынужден процитировать абзац из статьи выше:

Если вы не знаете что такое патч и как его применять, используйте пожалуйста настроенный по-умолчанию MT.

А mt-static/mt.js:dirify_table кто-нибудь локализовал ?

Эта третья таблица используется для заполнения basename из title во время создания новости.

А вроде и так все дирифицируется ? Моих правок мне оказалось достаточно, см. на URL-и

Да нафиг он нужен!

Что, нашли источник халявных ссылок ? Обломайтесь:

<noindex><a title="http://www.gazworld.ru" href="http:// www .gazworld .ru" rel="nofollow">Газовое оборудование</a></noindex>