Сегодня мы продолжаем разработку собственной системы отслеживания ошибок. В предыдущих частях мы рассмотрели добавление записей о багах и комментариев к ним.
Но при этом не решенным остался вопрос локализации.
По-умолчанию CodeIgniter выводит сообщения об ошибках на английском языке. Прежде всего, это касается описаний ошибок, которые возникают при некорректном заполнении форм.
В этой части я расскажу, как перевести эти сообщения на русский язык.
Самое интересное, что часть работы мы уже сделали при создании правил для проверки полей форм.
Например, правила для проверки email выглядят следующим образом.
$this->form_validation->set_rules('email', 'lang:email', 'required|valid_email');
Здесь мы вызываем метод set_rules из библиотеки form_validation. В первом параметре указываем имя поля в форме (атрибут name), во втором – его описание, в третьем – правила.
Сейчас нас интересует второй параметр. Нам нужно, чтобы CodeIgniter подставил вместо него правильное описание поля.
Для этого нужно выполнить 4 шага.
1) Открываем файл \application\config\config.php и устанавливаем язык по-умолчанию.
$config['language'] = "russian";
Теперь CodeIgniter будет прежде всего искать файлы с описаниями в папке \application\language\russian.
2) Создаем папку \application\language\russian и в ней файл form_fields_lang.php. Обратите внимание: окончание _lang обязательно.
3) В этом файле создаем массив с описаниями полей:
<?php $lang['title'] = '"Заголовок"'; $lang['uname'] = '"Ваше имя"'; $lang['category_id'] = '"Категория ошибки"'; $lang['description'] = '"Описание ошибки"'; $lang['email'] = '"eMail"'; $lang['password'] = '"Пароль"'; ?>
Ключи элементов этого массива должны совпадать с именами, которые указаны после lang: (во втором параметре метода set_rules).
4) Загружаем файл с описаниями полей. Для этого в конструктор контроллера добавляем строку.
$this->load->language('form_fields');
Обратите внимание. Окончание _lang.php не указываем.
После этих манипуляций описания полей будут правильно отображаться. Но сами ошибки будут на английском.
Для их руссификации нужно скачать файлы с переводами.
Архив распаковываем в папку \application\language\russian.
Всё. На этом работа заканчивается. Названия этих файлов совпадают с названиями их английских версий, поэтому CodeIgniter загрузит их автоматически.
Заключение.
В данном случае мы просто русифицировали баг трекер. Ничего сложного, но проблема в том, что выполнить обратную операцию, т.е. перевести приложение на английский, намного сложнее.
Для этого нужно найти и исправить весь русский текст в исходниках баг трекера. А их довольно много. Это и файлы шаблонов, и сообщения в контроллере, и текст в представлениях.
Я не ставил задачи сделать мультиязычное приложение, но если этот пункт для вас важен, в CodeIgniter входит Language Helper для этих целей. Использовать его не сложно, самый трудоёмкий этап – создание файлов с переводами. И нужно внимательно следить, чтобы в исходниках проекта напрямую не был жестко прописан текст.
До встречи!
P.S. Думаю, к следующему выпуску будет готова демонстрационная версия баг трекера. И безусловно выложу архив файлами проекта.


