Я собираюсь реализовать многоязычную поддержку веб-сайта, используя 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>
Этот фрагмент кода:
<?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']; }