В предыдущей статье я писал про 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-файлы — их можно использовать в простых сайтах или тех, которые работают без базы данных.
