2013-08-27 4 views
0

Я собираюсь реализовать поддержку многоязычной для веба-сайта с помощью PHP языка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> 

ответ

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=... в вашем 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> 

To:

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

как я должен изменить, если я нажимаю на меню? –

+0

Я предполагаю, что в другом меню вы подразумеваете такие ссылки, как '

  • '. В этом случае вы должны изменить свои 'href's' из' href = "filename.php" 'на' href = "filename.php? Lang = " 'Соответственно. Кстати, я также отредактировал свой ответ, чтобы содержать эту информацию. –

    +0

    Большое вам спасибо, вы действительно эксперт в разработке веб-страницы: D –

    0

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

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

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

    session_start(); 
    if($_GET && $_GET['lang']){ 
        $_SESSION['lang'] = $_GET['lang']; 
    } 
    
    Смежные вопросы