Как реализовать языковые пакеты в PHP
Я создал 3 языковых пакета для своего сайта: английский, испанский и французский. У меня просто проблемы с их реализацией на основе выбора пользователя. У меня есть следующее выпадающее меню:
<select onchange='document.location.href=this.options[this.selectedIndex].value;'> <option>Select</option> <option value="?lang=eng">US English</option> <option value="?lang=esp">Español</option> <option value="?lang=fra">Français</option> </select>
Как я могу включить языковые файлы в зависимости от того, что выбирает пользователь, я просто не знаю, что указать в качестве условия в операторе if.
Благодарю.
3 ответа
Сначала сохраните значение, выбранное пользователем в сеансе пользователя. например:
switch($_POST['lang']) {
case 'en': $_SESSION['lang'] = 'English'; break;
case 'sp': $_SESSION['lang'] = 'Spanish'; break;
default: $_SESSION['lang'] = 'English'; break;
}
При каждом запросе страницы извлекайте языковые файлы из соответствующей языковой папки в соответствии со значением, которое вы сохранили.
Например, вот так будет выглядеть структура файлов:
- английский
- global.php
- register.php
- испанский
- global.php
- register.php
Затем, когда вам нужно загрузить текстовый файл, используйте:
function load_text_file($filename) {
include 'languages/' . $_SESSION['lang'] . '/' . $filename.'php';
return $txt; // $txt should be an array
}
//...
$text = array();
$text += load_text_file('Global');
$text += load_text_file('Register');
Когда вы вводите опцию через строку запроса, вы можете получить к ней доступ с помощью
$lang = $_GET['lang']
Для моего шаблона этот кусок кода
$_SESSION['language'] = 'english';