software:development:demo:cms:ucms:creating_file_lang
Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
software:development:demo:cms:ucms:creating_file_lang [2025/05/09 13:23] – создано vladpolskiy | software:development:demo:cms:ucms:creating_file_lang [2025/05/18 13:08] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== 8.3. Файл lang.php ====== | ====== 8.3. Файл lang.php ====== | ||
- | Файл перевода модуля установки | + | Файл перевода модуля установки. |
+ | Количество языков перевода зависит только от желания автора проекта и определяется количеством | ||
+ | файлов перевода. Для модуля установки нами было запланировано 2а языка, английский и русский. | ||
+ | |||
+ | * Создадим файл **%%lang.php%%** в нашей директории | ||
+ | * Создадим вложенную директорию **%%lang%%** в директории | ||
+ | * Создадим файлы **%%lang_en.php%%** и **%%lang_ru.php%%** в директории | ||
+ | |||
+ | =====Файлы перевода===== | ||
+ | |||
+ | <code php lang_en.php> | ||
+ | <?php | ||
+ | /* | ||
+ | ------------------ | ||
+ | Language: English | ||
+ | ------------------ | ||
+ | */ | ||
+ | |||
+ | // | ||
+ | $lang = array(); | ||
+ | // задаем значения ключ/ | ||
+ | |||
+ | $lang[' | ||
+ | //Language and time zone settings | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | //Database Options | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | // | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | // | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | <code php lang_ru.php> | ||
+ | <?php | ||
+ | /* | ||
+ | ------------------ | ||
+ | Language: Russian | ||
+ | ------------------ | ||
+ | */ | ||
+ | // | ||
+ | $lang = array(); | ||
+ | // задаем значения ключ/ | ||
+ | |||
+ | $lang[' | ||
+ | // | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | // | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | //База данных | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | // | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | $lang[' | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | =====Файл lang_test.php===== | ||
+ | |||
+ | Файл **lang_test.php** сначало проверит наличие файла **config.ini** и выведет соответствующее сообщение. Следом прочтет файл **config.ini** | ||
+ | * **ЕСЛИ** файл **config.ini** прочитан получим для переменной **$defaul_lang_user** значение языка в настройках | ||
+ | * **ЕСЛИ** значение языка в **config.ini** пустое место, то проверим директорию **lang** на наличие файлов перевода и подключим первый файл перевода. | ||
+ | * **ИНАЧЕ** подключим файл перевода, | ||
+ | |||
+ | <code php lang_test.php> | ||
+ | <!-- test/ | ||
+ | |||
+ | <?php | ||
+ | /* подключим файл с константами, | ||
+ | require_once __DIR__ . " | ||
+ | |||
+ | /* Присваиваем переменной $file_config значение константы FOLDER | ||
+ | (а это директория ucms, записанная в файле cons.php)и добовляем | ||
+ | '/ | ||
+ | $file_config = FOLDER . '/ | ||
+ | /* Если config.ini существует */ | ||
+ | if (file_exists($file_config)) { | ||
+ | /* выводим запись о существовании */ | ||
+ | echo " | ||
+ | /* Иначе выводим запись о не существовании*/ | ||
+ | } else { | ||
+ | echo " | ||
+ | } | ||
+ | // | ||
+ | $config_defaul_lang = parse_ini_file(FOLDER . "/ | ||
+ | // Проверьте, | ||
+ | // переменная $config_defaul_lang не ровно ЛОЖЬ | ||
+ | if ($config_defaul_lang !== false) { | ||
+ | // Доступ к индивидуальным настройкам | ||
+ | $defaul_lang_user = $config_defaul_lang[' | ||
+ | if ($defaul_lang_user == "" | ||
+ | echo " | ||
+ | // | ||
+ | $dir = INSTALL . "/ | ||
+ | // | ||
+ | $source = scandir($dir); | ||
+ | // Создадим массив - фильтр для исключения ' | ||
+ | $filter = [' | ||
+ | //В массиве с результатом функция scandir также покажет наличие папок с именами " | ||
+ | // | ||
+ | // Сравним массивы | ||
+ | $files = array_diff($source, | ||
+ | // | ||
+ | $lang_one = array_shift($files); | ||
+ | // выведем оставшийся массив | ||
+ | print_r($files); | ||
+ | echo " | ||
+ | // Подключаем полученную страницу с переводом | ||
+ | include_once ' | ||
+ | echo $lang[' | ||
+ | echo $lang[' | ||
+ | } | ||
+ | else { | ||
+ | echo " | ||
+ | // Подключаем полученную страницу с переводом | ||
+ | include_once ' | ||
+ | // Выведем перу переводов для теста | ||
+ | echo $lang[' | ||
+ | echo $lang[' | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Создадим в **config.ini** тестовую запись выбора файла перевода пользователем | ||
+ | директории | ||
+ | |||
+ | <code php config.ini> | ||
+ | [defaul_lang] | ||
+ | ; default configuration | ||
+ | defaul_lang = lang_ru | ||
+ | </ | ||
+ | |||
+ | Откроем файл **lang_test.php** в браузере: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Получаем сообщение о существовании файла **config.ini**, | ||
+ | и вывод двух тестовых фраз на русском языке. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Изменив в настройках файл перевода на **lang_en** получаем тестовые фразы на английском | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Если файл перевода в **config.ini** не указан, | ||
+ | проверяется директория **/lang** и выбираем первый файл, а это **lang_en.php** из массива, | ||
+ | **lang_fr.php** и **lang_ru.php**. Тестовые фразы соответственно на английском. | ||
+ | |||
+ | ===== Файл lang.php ===== | ||
+ | |||
+ | Сам файл **lang.php** в законченном виде нам ничего выводить не будет, т.к. в нем заключена логика выбора | ||
+ | файла перевода. Логику выбора файла перевода из директории вынисем в отдельную функцию **check_lang_install()** чтобы | ||
+ | не прописывать код дважда (для отсутствия **config.ini** и для **defaul_lang**=пустое значение) | ||
+ | |||
+ | <code php lang.php> | ||
+ | <?php | ||
+ | //echo " | ||
+ | |||
+ | /* подключим файл с константами, | ||
+ | | ||
+ | require_once __DIR__ . " | ||
+ | |||
+ | ////////////////////////////////////////////////////////// | ||
+ | // Создадим функцию для выбора первого файла и директории | ||
+ | function check_lang_install() { | ||
+ | $dir = INSTALL . "/ | ||
+ | // | ||
+ | $source = scandir($dir); | ||
+ | // Создадим массив - фильтр для исключения ' | ||
+ | $filter = [' | ||
+ | //В массиве с результатом функция scandir также покажет наличие папок с именами " | ||
+ | // | ||
+ | // Сравним массивы | ||
+ | $files = array_diff($source, | ||
+ | // | ||
+ | $lang_one = array_shift($files); | ||
+ | // Подключаем полученную страницу с переводом | ||
+ | include_once ' | ||
+ | } | ||
+ | ////////////////////////////////////////////////////////// | ||
+ | |||
+ | /* Присваиваем переменной $file_config значение константы FOLDER | ||
+ | (а это директория ucms, записанная в файле cons.php)и добовляем | ||
+ | '/ | ||
+ | $file_config = FOLDER . '/ | ||
+ | /* Если config.ini существует */ | ||
+ | if (file_exists($file_config)) { | ||
+ | // | ||
+ | $config_defaul_lang = parse_ini_file(FOLDER . "/ | ||
+ | // Проверьте, | ||
+ | // переменная $config_defaul_lang не ровно ЛОЖЬ | ||
+ | if ($config_defaul_lang !== false) { | ||
+ | // Доступ к индивидуальным настройкам | ||
+ | $defaul_lang_user = $config_defaul_lang[' | ||
+ | if ($defaul_lang_user == "" | ||
+ | // | ||
+ | check_lang_install(); | ||
+ | } | ||
+ | else { | ||
+ | // Подключаем полученную страницу с переводом | ||
+ | include_once ' | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | else { | ||
+ | // | ||
+ | check_lang_install(); | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | Т.к. **install.php** у нас является отдельным модулем, | ||
+ | мадуля в директори **/ | ||
+ | в **function.php**, | ||
<note blue> | <note blue> | ||
<wrap left>← [[software: | <wrap left>← [[software: | ||
<wrap right> | <wrap right> | ||
</ | </ |
software/development/demo/cms/ucms/creating_file_lang.1746786234.txt.gz · Последнее изменение: — vladpolskiy