====== 8.3. Файл lang.php ======
Файл перевода модуля установки.
Количество языков перевода зависит только от желания автора проекта и определяется количеством
файлов перевода. Для модуля установки нами было запланировано 2а языка, английский и русский.
* Создадим файл **%%lang.php%%** в нашей директории **%%/library/install%%**
* Создадим вложенную директорию **%%lang%%** в директории **%%/library/install%%**
* Создадим файлы **%%lang_en.php%%** и **%%lang_ru.php%%** в директории **%%lang%%**
=====Файлы перевода=====
=====Файл lang_test.php=====
Файл **lang_test.php** сначало проверит наличие файла **config.ini** и выведет соответствующее сообщение. Следом прочтет файл **config.ini**
* **ЕСЛИ** файл **config.ini** прочитан получим для переменной **$defaul_lang_user** значение языка в настройках
* **ЕСЛИ** значение языка в **config.ini** пустое место, то проверим директорию **lang** на наличие файлов перевода и подключим первый файл перевода.
* **ИНАЧЕ** подключим файл перевода, имя которого указанно в файле **config.ini**
";
/* Иначе выводим запись о не существовании*/
} else {
echo "Файл $file_config не существует". "
";
}
//загружаем ini-файл, и возвращаем его настройки в виде ассоциативного массива
$config_defaul_lang = parse_ini_file(FOLDER . "/includes/config.ini",true);
// Проверьте, успешно ли прочитан ini-файл.
// переменная $config_defaul_lang не ровно ЛОЖЬ
if ($config_defaul_lang !== false) {
// Доступ к индивидуальным настройкам
$defaul_lang_user = $config_defaul_lang['defaul_lang']['defaul_lang'];
if ($defaul_lang_user == ""){
echo "Ошибка чтения INI-файла. выбираем из наличия в папке /lang";
//Проверка наличия языковых файлов в директории /lang/
$dir = INSTALL . "/lang/";
//Возвращает массив (array), содержащий имена файлов и каталогов
$source = scandir($dir);
// Создадим массив - фильтр для исключения '..', '.'
$filter = ['..', '.'];
//В массиве с результатом функция scandir также покажет наличие папок с именами ".." и ".".
//Технически первое имя соответствует ссылке на родительскую папку, а второе - на текущую.
// Сравним массивы
$files = array_diff($source, $filter);
//Извлекает первый элемент массива
$lang_one = array_shift($files);
// выведем оставшийся массив
print_r($files);
echo "Первый элемент массива это:" . $lang_one;
// Подключаем полученную страницу с переводом
include_once 'lang/' . $lang_one;
echo $lang['INSTALL_APP_NAME'];
echo $lang['SELECT_TIME_ZONE'];
}
else {
echo "Конфигурация по умолчанию: " . $defaul_lang_user . "
";
// Подключаем полученную страницу с переводом
include_once 'lang/' . $defaul_lang_user . '.php';
// Выведем перу переводов для теста
echo $lang['INSTALL_APP_NAME'];
echo $lang['SELECT_TIME_ZONE'];
}
}
Создадим в **config.ini** тестовую запись выбора файла перевода пользователем **lang_ru** и создадим в
директории **%%lang%%** пустой файл для французкого перевода **%%lang_fr.php%%**
[defaul_lang]
; default configuration
defaul_lang = lang_ru
Откроем файл **lang_test.php** в браузере:
{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_32.png|}}
Получаем сообщение о существовании файла **config.ini**, а так же значение переменной **defaul_lang = lang_ru**
и вывод двух тестовых фраз на русском языке.
{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_33.png|}}
Изменив в настройках файл перевода на **lang_en** получаем тестовые фразы на английском
{{:software:development:demo:cms:ucms:ucms_kernel_demo_book_34.png|}}
Если файл перевода в **config.ini** не указан, то получаем сообщение **Ошибка чтения INI-файла.**,
проверяется директория **/lang** и выбираем первый файл, а это **lang_en.php** из массива, где еще присутствуют
**lang_fr.php** и **lang_ru.php**. Тестовые фразы соответственно на английском.
===== Файл lang.php =====
Сам файл **lang.php** в законченном виде нам ничего выводить не будет, т.к. в нем заключена логика выбора
файла перевода. Логику выбора файла перевода из директории вынисем в отдельную функцию **check_lang_install()** чтобы
не прописывать код дважда (для отсутствия **config.ini** и для **defaul_lang**=пустое значение)
Т.к. **install.php** у нас является отдельным модулем, то и файлы перевода мы создаем только для этого
мадуля в директори **/install**, больше они нам ни где не пригодятся, а так же фенкцию выбора мы не выносим
в **function.php**, т.к. выбираем файл в директории модуля **install.php**
← [[software:development:demo:cms:ucms:index|8.2. Файл index.php]]
[[software:development:demo:cms:ucms:creating_file_lang_and_time_zone|8.4. Файл lang_and_time_zone.php]] →