php菜单设置语言设置


php menu setting for language settings

我将使用php实现对网站的多语言支持

默认语言为中文

我选了英语作为英国英语。

网页链接设置为www.abc.com/index.php?lang=en-

当涉及到选择其他菜单项时,

查询字符串?lang=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(),请不要忘记在前面提到的代码块之前添加它。

从现在起,如果您的URL中没有?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>

保持所需语言选择的最佳方法是使用$_SESSION变量。

?lang=en点击菜单链接应该会重新更正到任何脚本,在脚本中捕获$_GET['lang']变量并将其插入$_SESSION['lang']变量。

然后,您可以简单地查看$_SESSION['lang']变量来获取当前语言,并且该变量是全局的,因此您可以从任何地方访问它。

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