Перейдём к завершающей стадии этой статьи — интернационализации, или проще говоря — работе с языковыми файлами. Часто у распространяемых приложений или мульти-язычных проектов разработчики используют не разные дизайны (для каждого языка отдельный), а языковые файлы, содержащие в себе текст общего интерфейса сайта. Это позволяет не трогая ни кода ни дизайна приложения удобно и быстро изменять его язык. В CI для этих целей есть библиотека «Language» (http://code-igniter.ru/user_guide/libraries/language.html) и хэлпер с таким же названием (http://code-igniter.ru/user_guide/helpers/language_helper.html). Сейчас мы с помощью них попытаемся перевести часть нашего приложения на использование языковых файлов.
Возьмёмся за локализацию системной части — это всевозможные сообщения и ошибки которые генерируются CI. Например сообщения класса валидации о том что не заполнено какое-то поле, или ошибка библиотеки «Image lib» о том что не верно указан путь к изображению. Языковые файлы этой части находятся в директории «system/language». В свою очередь каждый язык находится в отдельной папке. Создайте в «system/language» папку «russian» и скопируйте туда содержимое папки «english». Теперь откройте файл основной конфигурации («application/config/config.php») и установите значение ячейки «language» в «russian». Для проверки того что мы сделали в директории «russian» откройте файл «db_lang.php», и в ячейку «db_unable_to_connect», содержащую сообщение о невозможности подключения к базе данных, впишите «Не могу соединиться с указанной базой данных.». Теперь откройте файл конфигурации БД и измените имя хоста базы на что угодно. После этого, при обращении к любой странице сайта, Вы должны видеть русскоязычную ошибку о том что к базе невозможно подключиться. Так Вы можете совершить полный русскоязычный (или другой) перевод всего движка. Далее очередь языковой части приложения. Под использование языковых файлов мы переделаем лишь шаблон редактирования альбома. Принцип такой переделки везде одинаков, поэтому достаточно будет только одного примера. Пользовательские языковые файлы хранятся в другой директории - «application/language». Создайте в нём папку «russian», поместите туда пустой файл «albums_lang.php» и впишите в него одну ячейку:
PHP код:
$lang['album_editing'] = 'Редактирование альбома';
Эта надпись отображается у нас в самом начале страницы редактирования. Отображение языковых данных происходит с помощью метода «line»
PHP код:
$this->lang->line('ячейка_lang_массива');
Заменим надпись «Редактирование альбома» в шаблоне на код
PHP код:
<?=$this->lang->line('album_editing');?>
Теперь при обращении к странице Вы должны видеть данные из языкового файла. Можете поменять в нём текст, для пущей убедительности. Обсудим хэлпер. Вызовы метода «line» довольно большие по количеству символов. Куда приятнее работать с менее длинными вызовами, в чём нам поможет хэлпер «Language». Он содержит единственную функцию «lang» которой нужно передать один параметр — имя ячейки lang-массива. Поместите его в автозагрузку, а в шаблоне за место
PHP код:
<?=$this->lang->line('album_editing');?>
впишите
PHP код:
<?=lang('album_editing');?>
Если хэлпер подключился нормально то надпись о редактировании отобразится на том же месте. Давайте создадим другие ячейки с фразами из нашего шаблона.
PHP код:
<?php
$lang['album_editing'] = 'Редактирование альбома';
$lang['album_name'] = 'Название альбома';
$lang['album_about'] = 'Его описание';
$lang['album_photos_count'] = 'Количество фотографий в альбоме';
$lang['album_save'] = 'Сохранить альбом';
$lang['album_add_photo'] = 'Добавить фотографию';
$lang['album_add_photo_archive'] = 'Добавить архив фотографий';
$lang['album_photo_add'] = 'Добавить';
$lang['album_photo_del'] = 'Удалить';
?>
И вставим их в шаблон на свои места. Вот и всё. Как видите с локализацией, как и со всем остальным, всё очень просто. Если у Вас что-то не получается то готовый код галереи Вы можете взять в приложенных файлах, в архиве «gellery.zip»
Надеюсь что эта статья поможет Вам в освоении столь лёгкого и отличного фреймворка. Code Igniter действительно заслуживает уважения так как является возможно самым наипростейшим инструментом для создания веб-приложений сохраняя, в то же время, огромную мощность и простоту изучения. Удачи Вам в Ваших проектах!