В предыдущей статье я писал про ini-файлы и вскользь упомянул о том, что с их помощью можно сделать мультиязычный сайт. И в этой статье я хочу показать, как можно это реализовать. Все очень просто, создадим два ini-файла и назовем их ru.ini и en.ini. После этого заполним их следующим образом:
en.ini
[data] title = Site name h1 = Title 1 button1 = setup ru button2 = setup en
и ru.ini
[data] title = Название сайта h1 = Заголовок 1 button1 = задать ru button2 = задать en
Как вы уже наверно догадались эти файлы хранят в себе текст, который будет выводится на сайте. Но прежде, чем выводить нужно определиться из какого файла брать данные — из русского или английского. Для решения этой проблемой воспользуемся куками — будем записывать в них установленный на сайте язык.
Далее все просто — получаем из куки язык, получаем соответствующие данные из ini-файла и подставляем их в нужные места на странице.
Ниже приведен код тестовой страницы с подробными комментариями:
<?php // проверяем наличие куки, если есть то читаем ее if(isset($_COOKIE['lang_site'])){ $lang = $_COOKIE['lang_site']; // получем язык сайта из куки }else{ $lang = 'ru'; // default значение для языка сайта } // проверяем, если был передан язык в урле, то записываем его в куку if(isset($_GET['lang'])){ // задаем язык сайту $lang = $_GET['lang']; setcookie ("lang_site", $lang, time() + 3600*24, "/"); // устанавливаем куку с языком сайта } $listDataIni = parse_ini_file($lang.".ini"); // получаем данные из ini-файла ?> <!DOCTYPE HTML> <html> <head> <title><?= $listDataIni[title]; ?></title> <meta charset="utf-8" /> </head> <body> <h1><?= $listDataIni[h1]; ?></h1> <a href="/index.php?lang=ru"><?= $listDataIni[button1]; ?></a> <br/> <a href="/index.php?lang=en"><?= $listDataIni[button2]; ?></a> </body> </html>
И под конец хочу заметить, что использовать ini-файлы для мультиязычных сайтов большого размера не очень удобно. Если планируется создать большой проект, то лучше хранить данные в базе данных. Все должно использоваться по назначению, так и ini-файлы — их можно использовать в простых сайтах или тех, которые работают без базы данных.