Я занимаюсь разработкой многоязычного сайта (es и en), и мне нужно изменить язык всего сайта, когда пользователь нажимает на любую из языковых кнопок. Я сохраняю переменную сеанса в config.php
и загружаю страницу на выбранном языке с помощью оператора require
:
<?php
session_start();
if (!isset($_POST['lang']) && (!isset($_SESSION['lang']))) {
$_POST['lang'] = 'en';
$_SESSION['lang'] = $_POST['lang'];
} else if (isset($_POST['lang']) && $_SESSION['lang'] != $_POST['lang'] && !empty($_POST['lang'])) {
if($_POST['lang'] == 'en')
$_SESSION['lang'] = 'en';
else if ($_POST['lang'] == 'es')
$_SESSION['lang'] = 'es';
}
require "lang/" . $_SESSION['lang'] . ".php";
echo $_SESSION['lang'];
?>
en.php
<?php
$lang = array(
'mainTitle' => 'What is our business?',
'mainDescription' => 'Our description'
);
?>
Затем я выполняю AJAX-вызов в main.js
, чтобы изменить переменную сеанса при нажатии любой из языковых кнопок
function loadDoc(str) {
$.ajax({
type: 'POST',
// this is to prevent cached results
url: 'php/config.php?t=' + Math.random(),
data: {
lang: str
},
success: function(result) {
console.log('Session language: ' + result)
},
})
}
$('.langContainer .es').click(() => {
loadDoc('es')
})
$('.langContainer .en').click(() => {
loadDoc('en')
})
Хотя функция успеха AJAX возвращает измененную переменную сеанса, вызов не меняет язык сайта, пока я не перезагрузлю его, что немного расстраивает.
Это может прекрасно работать с перезагрузкой, посылая запрос GET с любой из кнопок с тегами привязки, но я хочу знать, возможно ли обновить переменную сеанса с помощью AJAX, чтобы содержимое изменялось на соответствующем языке без обновления страница.