0

PHPを使用してWebサイトの多言語サポートを実装します

デフォルトの言語は中国語です

私はイギリス英語のものとして 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>
4

2 に答える 2

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()まだ持っていない場合は、前述のコード ブロックの前に追加することを忘れないでください。

今後、URL に含まれていない場合?lang=...は、最後の lang が に設定され$_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>
于 2013-08-27T14:27:34.500 に答える