PHP: способ вручную переключать языки?

У меня есть веб-сайт со следующим алгоритмом переключения языка:

  • Во-первых, он определяет язык браузера по умолчанию (я не знаю почему? Но Chrome всегда выдает что-то вроде en-EN,ru,lvТак что язык Chrome по умолчанию всегда английский, кажется).
  • Затем он записывает значение языка в переменную сеанса lang и запрашивает нужный строковый файл (т.е. /assets/includes/en-US/strings.php);
  • И каждая строка из этого файла включается в код HTML, поэтому в чистом HTML нет простого текста.

Конечно, определение языка по умолчанию не является причиной для остановки - мне нужен ручной переключатель языка, такой как ссылки (LV | EN | RU). Итак, каков возможный (и, возможно, лучший) способ переключения языка и перезаписи переменной сеанса после того, как пользователь щелкнет на нужном языке?

1 ответ

Решение

Лучший способ - это самый простой способ:)

$langs = array('LV', 'EN', 'RU');

<?php foreach ($langs as $lang): ?>
    <a href="index.php?lang=<?=$lang;?>"> <?=$lang;?> </a>
<?php endforeach; ?>

так что вы даете пользователю возможность изменить язык через GET в этом примере.

Перезаписать сеанс на отправленный запрос:

<?php
if(in_array($_GET['lang'], $langs) {
    $_SESSION['lang'] = $_GET['lang']; // to prevent user to change its session to something you don't want to
}
?>

После этого вы просто взаимодействуете с этим сеансом для отображения контента.

Вы можете использовать перенаправление, если каждая страница написана на другом языке: (но я полагаю, логика, как взаимодействовать с языком, который вы уже реализовали, с помощью автоматического определения языка, но все же... позвольте мне предложить несколько способов быстро?)

<?php
if (isset($_SESSION['lang']) && $_SESSION['lang'] !== 'EN') {
    header("Location: mysite.com/".$_SESSION['lang']."/index.php");
    exit;
}
?>

Или вы можете использовать метод перевода.

Все ваши переводы находятся в базе данных под столбцами с теми же именами, что и ваш массив $langs.

Таким образом, вы выводите контент из этого конкретного столбца:

SELECT lang_{$_SESSION['lang']} FROM translations WHERE string = '$string';
Другие вопросы по тегам