====== 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]] →