我将使用php实现对网站的多语言支持
默认语言为中文
我选择英国英语作为英语。
网页链接设置为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>
答案 0 :(得分:2)
这段代码:
<?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=...
,那么您将在$_SESSION['lang']
设置上一个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>
答案 1 :(得分:0)
最好是选择所需的语言使用$_SESSION
变量。
点击带有?lang=en
的菜单链接应该重新编辑到任何脚本,您可以在其中捕获$ _GET ['lang']变量并将其插入$ _SESSION ['lang']变量。
然后你可以简单地查看$ _SESSION ['lang']变量来获取当前语言,这个变量是全局的,所以你可以从任何地方访问它。
session_start();
if($_GET && $_GET['lang']){
$_SESSION['lang'] = $_GET['lang'];
}