вторник, 10 декабря 2013 г.

Перевод DLE на UTF-8 10

В наш век тотальной компьютеризации и глобализации, использование кодировок, отличных от UTF-8 - как минимум признак дурного тона. Всякие архаичные маргиналы, "затачивающие" свои продукты (которые они потом ещё и продают) под CP1251 должны убить себя об стену жэстачайшэ (с).

Одно из таких поделий, недавно попавших мне в руки - DataLife Engine, производимый некоей российской конторой, в которой, видимо, не в курсе, что есть операционки, отличные от Windows и языки, отличные от Великого и Могучего Русского языка. В этой статье кратко расскажу, как быстро и безболезненно перевести этот "мегапродукт" на рельсы юникода.
Итак, по-умолчанию DLE использует кодировку "windows-1251" как внутри себя, при отдаче конечного контента пользователям, так и для хранения данных в БД. Отучивать движок от этой дурной привычки будем в три этапа:
  1. Настройка DLE для работы с БД, используя UTF-8
    Предполагается, что сама БД уже настроена на юникод и её настройка не потребуется.
    Идём в директорию {DLE HOME}/engine/data, где находим файл dbconfig.php. Внутри этого файла ищем строку define ("COLLATE", "windows-1251"); и заменяем её на define ("COLLATE", "utf-8"); После этого сконвертируем находящийся тут же файлик config.php в новую кодировку командой iconv -f cp1251 -t utf-8 -o ./config.php ./config.php
  2. Конвертируем "кишки" движка в новую кодировку
    Идём в директорию {DLE HOME}/language/Russian и выполняем команду for i in `ls ./*`; do iconv -f cp1251 -t utf-8 -o ./$i ./$i; done
  3. Конвертируем используемую тему для использования юникода
    Идём в директорию {DLE HOME}/templates, ищем директорию с нужной темой, входим в неё и запускаем следующую команду: for i in `ls ./*.tpl`; do iconv -f cp1251 -t utf-8 -o ./$i ./$i; done

Вот, в принципе, и всё. Теперь DLE должен использовать в своей работе идеологически правильную кодировку как на web-сайте, так и в админке.
Спасибо за внимание :)


Подробнее на http://www.slyder.me/2011/08/19/perevod-dle-na-utf-8#ixzz2n4e6aCAi