Настройка php-меню для настроек языка

Я собираюсь реализовать многоязычную поддержку веб-сайта, используя php

Язык по умолчанию – китайский.

Я выбрал en как британский английский.

ссылка на веб-страницу установлена ​​как www.abc.com/index.php?lang=en

Когда дело доходит до выбора других пунктов меню,

строка запроса? lang = en ушла и возобновлена ​​на китайский язык

Не могли бы вы рассказать мне, как передать «en» и? Lang = в другое меню, чтобы поддерживать выбор языка, который нужен при просмотре?

Ниже приведен мой код

<html> <body>... <div id="languages"> <?php $string = basename(__FILE__); ?> <?php echo "<a href=".$string.'?lang=en >'; $_SESSION['lang']= 'en'; ?><img src="images/en.png" /></a> <?php echo "<a href=".$string.'?lang=hk >'; $_SESSION['lang']= 'hk'; ?><img src="images/hk.png" /></a> <?php echo "<a href=".$string.'?lang=cn >'; $_SESSION['lang']= 'cn'; ?><img src="images/cn.png" /></a> </div> ... <div class="navigation"> <div id="smoothmenu1" class="ddsmoothmenu"> <ul> <li><a href="index.php"><?php echo $lang['MENU_HOME']; ?></a></li> <!--<li><a href="#">About Club</a></li>--> <li><a href="news.php"><?php echo $lang['MENU_NEWS']; ?> </a></li> <li><a href="gallery.php"><?php echo $lang['MENU_GALLERY']; ?></a></li> <!--<li><a href="reservation.php">Make Reservation</a></li>--> <li><a href="contact.php"><?php echo $lang['MENU_CONTACTS']; ?></a></li> <!--<li class="dropdown"><a href="#">Pages</a> <ul> <li><a href="index.php">Home</a> </li> <li><a href="news.php">News</a></li> <li><a href="blog.php">Blog</a></li> <li><a href="blogpost.php">Blog Post</a></li> <li><a href="gallery.php">Gallery</a></li> <li><a href="reservation.php">Reservation</a></li> <li class="nbbdr"><a href="contact.php">Contact Us </a></li> </ul> </li>--> </ul> </div> </div> 

Solutions Collecting From Web of "Настройка php-меню для настроек языка"

Этот фрагмент кода:

 <?php $string = basename(__FILE__); ?> <?php echo "<a href=".$string.'?lang=en >'; $_SESSION['lang']= 'en'; ?><img src="images/en.png" /></a> <?php echo "<a href=".$string.'?lang=hk >'; $_SESSION['lang']= 'hk'; ?><img src="images/hk.png" /></a> <?php echo "<a href=".$string.'?lang=cn >'; $_SESSION['lang']= 'cn'; ?><img src="images/cn.png" /></a> 

Всегда будет устанавливать значение $_SESSION['lang'] в значение cn , а не только при нажатии определенного якоря. Вместо этого вы должны изменить его на:

 <?php $string = basename(__FILE__); ?> <a href="<?php echo $string; ?>?lang=en"><img src="images/en.png" /></a> <a href="<?php echo $string; ?>?lang=hk"><img src="images/hk.png" /></a> <a href="<?php echo $string; ?>?lang=cn"><img src="images/cn.png" /></a> 

А также в начале файла вы должны добавить:

 <?php if(!isset($_SESSION['lang'])) $_SESSION['lang'] = 'cn'; // Sets default language to 'cn' if(isset($_GET['lang']) && in_array($_GET['lang'], array('en', 'hk', 'cn'))) $_SESSION['lang'] = $_GET['lang']; // Sets language based on URL ?> 

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

С этого момента, если у вас не будет ?lang=... в вашем URL-адресе, у вас будет последний номер в $_SESSION['lang'] .

Чтобы изменить ссылки в другом меню ( <li><a href="index.php"><?php echo $lang['MENU_HOME']; ?></a></li> и т. Д.), Вы должны изменить их href's из:

 <li><a href="filename.php"><?php echo $lang['MENU_HOME']; ?></a></li> 

Для того, чтобы:

 <li><a href="filename.php?lang=<?php echo $_SESSION['lang']; ?>"><?php echo $lang['MENU_HOME']; ?></a></li> 

Лучше всего было сохранить желаемый язык, используя переменную $_SESSION .

Нажав на ссылку меню с ?lang=en нужно переписать на любой скрипт, где вы ловите переменную $ _GET ['lang'] и вставляете ее в переменную $ _SESSION ['lang'].

Затем вы можете просто посмотреть в переменную $ _SESSION ['lang'], чтобы получить текущий язык, и эта переменная является глобальной, поэтому вы можете получить доступ к ней из любого места.

 session_start(); if($_GET && $_GET['lang']){ $_SESSION['lang'] = $_GET['lang']; }