Языковой класс 

Языковой класс предоставляет функции для получения языковых файлов и строк текста для интернационализации.

В папке CodeIgniter system вы найдете подкаталог language содержащий набор языковых файлов для english (английского) языка. Файлы в этой директории (system/language/english/) определяют регулярные сообщения, сообщения об ошибках и как правило, вывод терминов или выражений, для различных частей фреймворка CodeIgniter.

Вы можете создавать или добавлять свои собственные языковые файлы, по мере необходимости, в целях обеспечения сообщениий ошибок и других сообщений или для обеспечения перевода основных сообщений на другие языки. Эти переводы находятся внутри application/language/ директории, разделенные подкаталогами для каждого языка (например, ‘french’ or ‘german’).

Фреймворк CodeIgniter поставляется с набором языковых файлов для “english” (английского) языка. Дополнительные переводы на разные языки могут быть найдены в репозитории переводов CodeIgniter 3. Каждый репозиторий имеет дело с одним языком.

Когда CodeIgniter загружает языковые файлы, сначала загружается system/language/ и ищет переопределение в файле для application/language/ папки.

Примечание

Каждый язык должен храниться в своей папке. Например, английские файлы находятся в: system/language/english

Обработка нескольких языков 

Если вы хотите использовать несколько языков в вашем приложении, вам следует разместить папки внутри application/language/ каталога для каждого языка и указать язык по умолчанию в application/config/config.php.

Папка application/language/english/ может содержать любые языковые файлы, необходимые для запуска вашего приложения, например сообщения об ошибках.

Каждый из катологов может содержать ядро языковых файлов, которое получено из репозитория переводов или переведенных лично, а также любые дополнительные файлы, необходимые для вашего приложения.

Храните язык, который вы используете, например в переменной сеанса.

Образец языковых файлов 

system/
        language/
                english/
                        ...
                        email_lang.php
                        form_validation_lang.php
                        ...

application/
        language/
                english/
                        error_messages_lang.php
                french/
                        ...
                        email_lang.php
                        error_messages_lang.php
                        form_validation_lang.php
                        ...

Пример переключения языков 

$idiom = $this->session->get_userdata('language');
$this->lang->load('error_messages', $idiom);
$oops = $this->lang->line('message_key');

Интернационализация 

Языковой класс в CodeIgniter предназначен для обеспечения простого и легкого способа поддержки нескольких языков в вашем приложении. Это не означает полную реализацию того, что обычно называют интернационализацией и локализацией.

Мы используем термин “язык” для обозначения языка с помощью общего имени не используя какого-либо из международных стандартов, таких как “en”, “en-US” или “en-CA-x-ca” для английского языка и некоторых его вариантов.

Примечание

Вам ничего не мешает использовать эти сокращения в приложении!

Использование языкового класса 

Создание языковых файлов 

Языковые файлы должны содержать в имени _lang.php как расширение имени файла. Например, допустим, вы хотите создать файл, содержащий сообщения об ошибках. Вы может назвать его: error_lang.php

Внутри файла, вы присвоите каждой текстовой строке массив с названием $lang с помощью этого прототипа:

$lang['language_key'] = 'The actual message to be shown';

Примечание

Это хорошая практика использования общего префикса для всех сообщений в данном файле, во избежание конфликтов с аналогичным названием в других файлах. Например, если вы создаете сообщения об ошибках пометьте его префиксом error_

$lang['error_email_missing'] = 'You must submit an email address';
$lang['error_url_missing'] = 'You must submit a URL';
$lang['error_username_missing'] = 'You must submit a username';

Загрузка языкового файла 

Для того, чтобы извлечь строки из определенного файла необходимо сначала загрузить файл. Загрузка языкового файла осуществляется с помощью следующего кода:

$this->lang->load('filename', 'language');

Где filename - имя файла, который вы хотите загрузить (без расширения файла) и language - язык, с установленным набором содержимого (т.е. english). Если второй параметр отсутствует, по умолчанию используется язык установленный в application/config/config.php файле.

Вы также можете загружать файлы на нескольких языках одновременно, передавая массив языковых файлов в качестве первого параметра.

$this->lang->load(array('filename1', 'filename2'));

Примечание

Параметр language может состоять только из букв.

Извлечение строки с текстом 

Как только нужный языковой файл загружен, вы можете получить доступ к любой строке текста, используя эту функцию:

$this->lang->line('language_key');

Где language_key - ключ массива, соответствующий строке которую вы хотите показать.

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

$this->lang->line('misc_key', FALSE);

Примечание

Этот метод просто возвращает строку. Он ее не выводит.

Использование языковых строк для меток в формах 

Данная возможность является устаревшей для языковой библиотеки и переехала в lang() функцию языкового хелпера.

Автозагрузка языков 

Если вы обнаружите, что вам нужен конкретный язык для всего приложения, можете указать CodeIgniter автозагрузку во время инициализации системы. Это делается путем открытия application/config/autoload.php файла и добавлением языка(ов) в массив автозагрузки.

Настройки класса 

class CI_Lang 
load($langfile[, $idiom = ''[, $return = FALSE[, $add_suffix = TRUE[, $alt_path = '']]]]) 
n
Параметры:
  • $langfile (смешанный) – Языковой файл для загрузки или массив с нескольких файлов
  • $idiom (строка) – Название языка (например ‘english’)
  • $return (булево) – Нужно ли возвращать загруженный массив переводов
  • $add_suffix (булево) – Нужно ли добавлять ‘_lang’ суффикс к имени языкового файла
  • $alt_path (строка) – Альтернативный путь для поиска внутри языкового файла
Возвращает:

Массив языковых строк если $return установлен TRUE, иначе пустота

Возвращаемый тип:

смешанный

Loads a language file.

line($line[, $log_errors = TRUE]) 
Параметры:
  • $line (строка) – Строка с ключом имени языка
  • $log_errors (булево) – Нужно ли регистрировать ошибку, если строка не найдена
Возвращает:

Язык строки или FALSE в случае неудачи

Возвращаемый тип:

строка

Выбирает перевод одной строки из уже загруженных языковых файлов, на основе наименования строки.