MyTetra Share
Делитесь знаниями!
Интернационализация, вариант mihailt
Время создания: 15.02.2011 14:55
Текстовые метки: CI, CodeIgniter, i18n, язык
Раздел: Компьютер - Программирование - Язык PHP - CodeIgniter
Запись: xintrea/mytetra_syncro/master/base/0000003421/text.html на raw.github.com

Сама идея такая – в файле мы держим набор преопределенных названий выражений. И используем их из разных файлов в зависимости от текущего языка. Техническая реализация мне понравилась от человека с ником mihailt. Я возьму от его примера только часть – реализация многоязычности.

Вырезка из его статьи:

Для начала подготовим наше приложение.

Нужно расширить роуты. Открываем routes.php (/system/application/config/routes.php) и добавляем следующие строчки:

$route['(ru|ua)'] = $route['default_controller'];

$route['(ru|ua)/(.+)'] = "$2";

таким образом, теперь мы к любому методу, любого контроллера можем обращаться тремя способами:

baraholka.local/controller/action

http:// baraholka.local/ru/controller/action

http:// baraholka.local/ua/controller/action

Создаём также 2 языковых файла main_lang.php

/system/application/language/english/main_lang.php и /system/application/language/russian/main_lang.php

Создадим файл My_Controller.php (/system/application/libraries/My_Controller.php)

<?php

class MY_Controller extends Controller

{

var $language;

public function MY_Controller()

{

parent::Controller();

//$this->output->enable_profiler(true);

// определяем язык

$lang = $this->uri->segment(1);

if($lang == 'ru')

{

$this->language = $lang;

}

else

{

$this->language = 'ua';

}

// подгружаем нужный язык

switch($lang)

{

case 'ru':

$this->lang->load('main', 'ru');

$this->config->set_item('language', 'ru');

break;

default:

$this->lang->load('main', 'ua');

$this->config->set_item('language', 'ua');

break;

}

}

}

?>

Измените наш контроллер main. Теперь он должен наследоватся от MY_Controller, а не от Controller.

Протестируйте нашу страницу. Она должна откликаться на

baraholka.local/main/index

baraholka.local/ua/main/index

baraholka.local/ru/main/index

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования