Я использую сеанс для настройки языка
if(!isset($GLOBALS['lang'])){
$GLOBALS['lang'] = 'en';
}
Тогда я пользуюсь ajax
обновить это:
var lang = 'no';
$.ajax({
type: "POST",
url: url,
data: {
lang : lang
},
success: function (data) { (...) }
});
Вызываемый файл выглядит так:
global $lang;
if(strlen($_POST['lang']) == 2 ){
$lang = $_POST['lang'];
$result = array('lang_set' => $lang);
echo json_encode($result);
}
Но моя глобальная сессия не изменилась. Я предполагаю, что это связано с тем, что lang.php
использует другой экземпляр сеанса.
Я использую WordPress, поэтому я смотрю, могу ли я использовать некоторые встроенные функции для этой цели. Но мне интересно, могу ли я использовать сессии PHP для отслеживания выбранного языка? Или я должен использовать другой метод, такой как добавление выбранного языка в мой URL?
ОБНОВИТЬ
Благодаря Ghost, я заставил это работать. Если вы используете WordPress, я делаю следующее в functions.php
:
// Initialize session
if(session_id() == '') {
session_start();
}
// Set lang session with default language
if(!isset($_SESSION['lang'])){
$_SESSION['lang'] = 'no';
}
//globals
$GLOBALS['lang'] = $_SESSION['lang'];
Если вы хотите, чтобы они сохранялись во всем приложении, используйте сессии:
session_start();
if(!isset($_SESSION['lang'])){
$_SESSION['lang'] = 'en';
}
Тогда с другой:
session_start();
if(strlen($_POST['lang']) == 2 ){
$_SESSION['lang'] = $_POST['lang'];
$result = array('lang_set' => $_SESSION['lang']);
echo json_encode($result);
}
Других решений пока нет …