<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"  href="/xslt/final.xslt"?><html>
  <head>
    <title>Codeigniter.  Русификация, мультиязычность, мультидомены. UTF-8. Баги и траблы.</title>
    <meta name="css" content=""/>
    <meta name="js" content=""/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta name="id" content="14"/>
    <link rel="alternate" type="application/rss+xml" title="RSS" href="/rss.xml"/>
  </head>
  <body>
    <div class="main">
      <div class="wrap">
        <div class="L">
          <h1><a href="/">..</a> / Codeigniter.  Русификация, мультиязычность, мультидомены. UTF-8. Баги и траблы.</h1>
          <ol class="tags big"/>
          <div class="myContent"><h2>1. Русификация Codeigniter</h2>
<p>Там выше я написал, что русификация выполняется в ci просто. Это не так. Она выполняется очень просто.</p>
<h3>1.1 Config</h3>
<p>Находим в конфигурационном файле  S:\system\application\config\config.php строку <br/>
$config['language']    = "english";   <br/>
и заменяем на  <br/>
$config['language']    = "russian";</p>
<h3>1.2 Файлы языковой поддержки</h3>
<p>Файлы языковой поддержки ледат в директории  S:\system\language. <br/>
Копируем директорию S:\system\language\english в  S:\system\language\russian <br/>
Далее открываем требуемый языковой файл. Его имя соответствует имени класса/библиотеки.  Для русификации сообщений валидации необходимо открыть S:\system\language\russian\validation_lang.php  и перевести. <br/>
<br/>
$lang['required']         = "The %s field is required.";<br/>
$lang['valid_email']    = "The %s field must contain a valid email address.";<br/>
<br/>
$lang['required']         = 'Поле "%s"  обязательно к заполнению';<br/>
$lang['valid_email']    = "Неправильный e-mail (%s) ";<br/>
<br/>
Сохраняем  все и наслаждаемся.</p>
<p>Кстати , если вам лениво переводимть, или в школе вы учили албанский, можно воспользоваться <a href="#" title="rmcreative.ru/blog/post/russkie-jazykovye-fayly-dlja-codeigniter-1.6.3" rel="nofollow" class="external">готовым переводом</a>. А если вы в школе учили американский язык как родной, можете этот файл поправить - в нескольких местах он кривой.</p>
<h3>1.3 Проблемы с UTF-8</h3>
<p>Наверное этот раздел вообще лишний и к CI отношения не имеет. Но  слишком часто задается один и тот же вопрос - "откуда кракозябры вместо русского текста в PHP+MySQL" .  Чтобы  "кракозябр" не было. необходимо:<br/>
<br/>
a) настроить БД на работу с UNICODE.  Текстовые поля должны буть установлены в utf8_general_ci<br/>
b) перед началом работы с БД из Codeginiter должна быть выполнена команда: <br/>
$this-&gt;      db-&gt;      query('SET NAMES utf8');<br/>
c) все  файлы содержащие кириллицу нужно сохранить в кодировке UTF-8.  Если в редакторе есть несколько вариантов UTF-8 или опция сохранения "UTF-8 without BOM",  необходимо выбрать именно этот вариант. <br/>
d) перед отправкой данных пользователю нужно отправить заголовок принудительно устанавливающий кодировку.<br/>
header("Content-Type: text/html; charset=UTF-8");<br/>
e)  задаем кодировку в выходном HTML: <br/>
&lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;</p>
<h2>2. Мультиязычные и мультидоменные сайты на CodeIgniter</h2>
<p>Самый простой способ использования одного движка для поддержки мультидоменов заключается в переключении префикса таблиц базы данных в зависимости от домена. Для этого все домены объявляются алиасом основного домена. Например имеется основной сайт mysite.ru и его англоязычная версия eng.mysite.ru все таблицы основного сайта имеют имена типа  "rus_****",  все таблицы англоязычного сайта имена типа  "eng_****". Для того чтобы CMS производила переключение префиксов в зависимости от имени домена в конфигурационном файле  /system/application/config/database.php в конце нужно добавить следующий код: <br/>
<br/>
if ( $_SERVER["HTTP_HOST"]==='eng.ИМЯ_ОСНОВНОГО_ДОМЕНА')<br/>
$db['default']['dbprefix'] = "eng_"; else <br/>
$db['default']['dbprefix'] = "rus_";</p>
<p>Естественно способ имеет свои недостатки. Напрмер если есть  общие для обоих сайтов  данные (например таблица зарегистрированны пользователей) придется либо дублировать таблицы, либо придумывать другой подход.</p>
<p> </p>
<p> </p></div>
          <ol class="tags big">
            <li class="date">2007-09-03</li>
          </ol>
          <ol class="see"/>
          <ul class="comment">
            <li id="a85" title="a0">
              <a name="heckfy" title="" rel="08.09.08"/>
              <div>У меня проблема, никак не могу настроить нормальный выход русского языка, пробовал всё что написано в этой статье, но всё равно выходит абракадабра вместо русских букв, хотя если в броузере принудительно поменять кодировку на Utf-8 то всё ОК. Может кто ни буть подскажет в чём проблема?</div>
            </li>
            <li id="a87" title="a85">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x447;&#x430;&#x432;" title="" rel="08.09.08"/>
              <div>Ну не знаю. Попробуйте через htaccess установить<br/>DefaultCharset utf-8<br/>Если и это не получится - пытайтесь локализовать причину. Сначала считайте статический HTML. Если не получится - предявите претензии хостеру. У него там что-то не так.</div>
            </li>
            <li id="a93" title="a0">
              <a name="Sam" title="rmcreative.ru/" rel="12.09.08"/>
              <div>У меня в файлах перевод поактуальней будет…</div>
            </li>
            <li id="a94" title="a93">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="erum.ru" rel="12.09.08"/>
              <div>Спасибо, поправил. Заодно разместил ссылку на вас в навигационной колонке. Ваш сайт часто читаю</div>
            </li>
            <li id="a296" title="a0">
              <a name="Le capitaine Nemo" title="" rel="05.06.09"/>
              <div>саааааааааааааааааааааааааааа а</div>
            </li>
            <li id="a297" title="a296">
              <a name="Le capitaine Nemo" title="" rel="05.06.09"/>
              <div>Извиняюсь за предыдущий случайный комментарий =)</div>
            </li>
            <li id="a467" title="a0">
              <a name="Le capitaine Nemo" title="" rel="10.03.10"/>
              <div>Добрый день у меня пробл. с CD 1.7.2<br/>Я взял туториал и пишу просто комменты но если я их пишу на русс. они ваше в БД не записываются.<br/>Таблица создана(БД) создана под UTF8 UNICODE<br/>Что тут можно сделать ???</div>
            </li>
            <li id="a468" title="a467">
              <a name="&#x418;&#x441;&#x430;&#x430;&#x43A; &#x422;&#x44B;&#x43D;&#x433;&#x44B;&#x43B;&#x447;&#x430;&#x432;" title="" rel="10.03.10"/>
              <div>Затрудняюсь сказать. <br/>Попробуйте локализовать проблему.<br/>1) сначала попробуйте записать текст из phpmyadmin  <br/>2)если прошел п.1 напрямую из php скрипта без передачи из броузера <br/>3) ловите где баг при передаче из броузера в скрипт.</div>
            </li>
            <li id="a472" title="a0">
              <a name="Shal" title="" rel="16.03.10"/>
              <div>Доброго времени суток! Спасибо за пост! Но есть проблема! Не верно отображаются русские буквы! Я с таким уже сталкивался на ворд прессе и уладил драбл! Но тут я перепробывал все что знаю, но...!</div>
            </li>
            <li id="a494" title="a0">
              <a name="mishanya" title="" rel="12.04.10"/>
              <div>во вьюхах первой строчкой вставь<br/><a title="http://codeigniter.com/forums/viewthread/46207/" rel="nofollow" class="external" href="#">ссылка</a></div>
            </li>
            <li id="a678" title="a0">
              <a name="&#x41C;&#x430;&#x43A;&#x441;&#x438;&#x43C; &#x41F;&#x435;&#x440;&#x435;&#x43F;&#x435;&#x43B;&#x438;&#x446;&#x430;" title="" rel="20.01.12"/>
              <div>Руководство пользователя на русском языке для версии 2.0.0<br/><u class="external" title="codeigniter.su">http://codeigniter.su</u></div>
            </li>
          </ul>
        </div>
      </div>
      <div class="R">
        <a href="/" title="&#x41D;&#x430; &#x433;&#x43B;&#x430;&#x432;&#x43D;&#x443;&#x44E;"/>
      </div>
    </div>
    <div id="li"/>
  </body>
</html>

