Этот вопрос закрыт для ответов, так как повторяет вопрос Надо помочь доделать несколько языков?
@Seream220

Может кто помочь со сменой языка?

Привет всем. Пытаюсь сделать несколько языков на сайте но чё то не получается у меня
Вот что в данный момент сделать. Есть 2 папки ru и en в каждой папке есть файл lang.lng один русский другой английский. К примеру содержимое файла lang.lng
<?php
$lang = array(

'glav1'					        => 'Главная',
'game2'					        => 'Игра',
'forum3'					        => 'Форум',
'overver4'						=> 'О Сервере',
);
?>

В index файле написано так
$tpl->set('{lang}', $_SESSION['lang']);
Далее в подключенном файле идёт так
$checkLang = (isset($_GET['lang']) and in_array($_GET['lang'], array ('ru', 'en'))) ? $_GET['lang'] : 'ru';

if(!$checkLang){
  $checkLang = $_SESSION['lang'];
}

include SYSTEM_DIR.'/system_lang/'.$checkLang.'/lang.lng';

Формы по смену языка
<a href="?lang=ru" id="lang_rus" class="lang ru"></a>
<a href="?lang=en" id="lang_eng" class="lang en"></a>

Пробовал выводить $checkLang выводит ru/en. При переходе на другую страницу "ru/en" сразу становится ru.
Как сделать чтобы выводились языки с файла lang.lng и при переходе на другую страницу не менялся язык.
  • Вопрос задан
  • 139 просмотров
Ответы на вопрос 1
@Yan-s
При переходе на другую страницу "ru/en" сразу становится ru.

Ну так ведь тут так и написано:
$checkLang = (isset($_GET['lang']) and in_array($_GET['lang'], array ('ru', 'en'))) ? $_GET['lang'] : 'ru';

А следующее условие никогда не будет true:
if(!$checkLang){
  $checkLang = $_SESSION['lang'];
}

Потому что $checkLang всегда есть и содержит строку.

Попробуйте что то типа такого:
$changeLang = isset($_GET['lang'] and in_array($_GET['lang'], ['ru', 'en']);
$lang = $changeLang ? $_GET['lang'] : $_SESSION['lang'];

в $lang должно быть искомое значение

И да, если сохранения в сессию у вас нигде нет, то это естественно тоже должно быть добавлено.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы