.. / Codeigniter. Русификация, мультиязычность, мультидомены. UTF-8. Баги и траблы.

    1. Русификация Codeigniter

    Там выше я написал, что русификация выполняется в ci просто. Это не так. Она выполняется очень просто.

    1.1 Config

    Находим в конфигурационном файле S:\system\application\config\config.php строку
    $config['language'] = "english";
    и заменяем на
    $config['language'] = "russian";

    1.2 Файлы языковой поддержки

    Файлы языковой поддержки ледат в директории S:\system\language.
    Копируем директорию S:\system\language\english в S:\system\language\russian
    Далее открываем требуемый языковой файл. Его имя соответствует имени класса/библиотеки. Для русификации сообщений валидации необходимо открыть S:\system\language\russian\validation_lang.php и перевести.

    $lang['required'] = "The %s field is required.";
    $lang['valid_email'] = "The %s field must contain a valid email address.";

    $lang['required'] = 'Поле "%s" обязательно к заполнению';
    $lang['valid_email'] = "Неправильный e-mail (%s) ";

    Сохраняем все и наслаждаемся.

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

    1.3 Проблемы с UTF-8

    Наверное этот раздел вообще лишний и к CI отношения не имеет. Но слишком часто задается один и тот же вопрос - "откуда кракозябры вместо русского текста в PHP+MySQL" . Чтобы "кракозябр" не было. необходимо:

    a) настроить БД на работу с UNICODE. Текстовые поля должны буть установлены в utf8_general_ci
    b) перед началом работы с БД из Codeginiter должна быть выполнена команда:
    $this-> db-> query('SET NAMES utf8');
    c) все файлы содержащие кириллицу нужно сохранить в кодировке UTF-8. Если в редакторе есть несколько вариантов UTF-8 или опция сохранения "UTF-8 without BOM", необходимо выбрать именно этот вариант.
    d) перед отправкой данных пользователю нужно отправить заголовок принудительно устанавливающий кодировку.
    header("Content-Type: text/html; charset=UTF-8");
    e) задаем кодировку в выходном HTML:
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />

    2. Мультиязычные и мультидоменные сайты на CodeIgniter

    Самый простой способ использования одного движка для поддержки мультидоменов заключается в переключении префикса таблиц базы данных в зависимости от домена. Для этого все домены объявляются алиасом основного домена. Например имеется основной сайт mysite.ru и его англоязычная версия eng.mysite.ru все таблицы основного сайта имеют имена типа "rus_****", все таблицы англоязычного сайта имена типа "eng_****". Для того чтобы CMS производила переключение префиксов в зависимости от имени домена в конфигурационном файле /system/application/config/database.php в конце нужно добавить следующий код:

    if ( $_SERVER["HTTP_HOST"]==='eng.ИМЯ_ОСНОВНОГО_ДОМЕНА')
    $db['default']['dbprefix'] = "eng_"; else
    $db['default']['dbprefix'] = "rus_";

    Естественно способ имеет свои недостатки. Напрмер если есть общие для обоих сайтов данные (например таблица зарегистрированны пользователей) придется либо дублировать таблицы, либо придумывать другой подход.

     

     

    1. 2007-09-03
Go Index Test