Создание мультиязычных сайтов на CodeIgniter

Один из самых простых способов сделать сайт на нескольких языках на CodeIgniter, это:

  1. Создать на сервере папку, например /en/ и создать в ней файл .htaccess
AddDefaultCharset UTF-8

DirectoryIndex index.php

RewriteEngine on

RewriteBase /en/

RewriteRule ^js/(.+)$ /js/$1 [L]
RewriteRule ^css/(.+)$ /css/$1 [L]
RewriteRule ^img/(.+)$ /img/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php
  1. Создать в /en/ файл index.php
$assign_to_config['base_url'] = '/en/';
$assign_to_config['active_group'] = 'en.denis909.spb.ru';
$assign_to_config['language'] = 'en';
$assign_to_config['sess_cookie_name'] = 'en';

chdir('..');

require('index.php');
  1. В application/config/database.php в конце файла дописать:
$config = & get_config();

if (empty($config['active_group']) == FALSE)
{
    $active_group = $config['active_group'];
}
  1. Основной .htaccess должен быть примерно такой:
AddDefaultCharset UTF-8

DirectoryIndex index.php

RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

Дополнительный плюс этого метода в том, что css, js, и картинки загружаются из основной директории сайта, но можно их записать в папку /en/, и тогда сервер будет отдавать локализованные версии файлов.

23.06.2012