Локализация. Создание языковых файлов, подключение языковых файлов.

Prologue-Framework доддерживает мультиязычность благодаря своей локализации. Сейчас будет рассмотрена схема использования языковых файлов.

Перейдем в /Project/lang/ эта директория содержит языковые файлы группированые по коду языка. По умолчанию в папке lang уже есть папка ru - в ней есть файл basic.php это базовый языковый файл. Нам нужно создать языковый файл для приложения к примеру по публикации книг. Создаем /Project/lang/books.php c содержимым


 'Книги | лучшие книги',
'h1' => 'Каталог книг'];

Подключаем языковый файл в контроллер

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

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

$this -> lang('books');

Считываем языковые строки в контроллере

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

message('языковый файл . строка', 'массив с переменными (необязательный параметр)');

echo $this -> message('books.title'); // выведет: Книги | лучшие книги

Передаем в языковый файл подготовленные переменные для передачи системных данных

Зачастую языковую строку необходимо дополнить и вставить в неё некоторые данные из контроллера. К примеру, есть строка textDateToDay в которой сообщение формируется на основании двух переменных #DATE# и #WEATHER#


 'Книги | лучшие книги',
'h1' => 'Каталог книг',
'textIsSun' => 'солнечно',
'textIsNoSun' => 'пасмурно',
'textDateToDay' => 'Сегодня #DATE# на улице #WEATHER#', ];

Подготовим заранее информацию в контроллере


        if ($sun) {
            $weather = $this -> message('books.textIsSun');
        } else {
            $weather = $this -> message('books.textIsNoSun');
        }

        echo $this -> message('books.textDateToDay', [
        '#DATE#' => date('Y-m-d'),
        '#WEATHER#' => $weather]);

Если $sun вернет true, то контроллер выведет: Сегодня 2016-09-10 на улице солнечно

Если $sun вернет false, то контроллер выведет: Сегодня 2016-09-10 на улице пасмурно

© 2015 - 2018