创建菜单以在站点上切换语言

时间:2011-02-04 15:17:21

标签: php javascript menu drop-down-menu

我的网站上有一个下拉菜单,我想用它来切换不同的语言:

 <select onChange="if(this.selectedIndex!=0) self.location=this.options[this.selectedIndex].value" name="userLanguage" id="userLanguage">
    <option value="http://demo.com/?lang=en">
                English (International)</option>    
        <option value="http://demo.com/?lang=es">
                Español (European)</option>
                     </select>

如何让上面的菜单显示当前显示的语言。有没有表现出活跃的状态。网站正在使用php。

提前致谢。

4 个答案:

答案 0 :(得分:2)

使用PHP,这是一个很好的选择。 (我改变了选择。)

<select onChange="if(this.selectedIndex!=0) self.location='http://demo.com/?lang='+this.options[this.selectedIndex].value" name="userLanguage" id="userLanguage">
    <option <?php if ($_GET['lang'] == "en") { ?>selected="selected"<?php } ?> value="en">English (International)</option>    
    <option <?php if ($_GET['lang'] == "es") { ?>selected="selected"<?php } ?> value="es">Español (European)</option>
</select>

希望这有帮助!

答案 1 :(得分:1)

将selected =“selected”添加到您的选项中。看看:http://jsfiddle.net/tW2jm/

<option selected="selected" value="http://demo.com/?lang=en">

答案 2 :(得分:0)

您可以使用谷歌翻译工具......从长远来看,这将为您节省大量的工作。

http://translate.google.com/translate_tools

答案 3 :(得分:0)

如果您使用的是PHP,我建议您像这样重新编写代码,因为这样您可以轻松添加新语言,而无需编写HTML代码或其他JavaScript。您可以使用 $ langs 数组来保存当前的语言集。

我还制作了包含当前页面网址的 $ server_location 变量。这样,当您将页面移动到不同的服务器和域或重命名页面时,您就不会遇到问题。

    <?  
        $langs = array('en' => 'English (International)',
                       'es' => 'Español (European)'
                      );

        function is_current_language($code)
        { 
                 return ($code == $_GET['lang'])? 'selected="selected"': "";
        }

        $server_location= $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];

    ?>

    <select onchange="if(this.selectedIndex!=0) self.location='<?=$server_location;?>?lang='+this.options[this.selectedIndex].value" name="userLanguage" id="userLanguage">

       <? foreach($langs as $code => $lang): ?>
          <option <?= is_current_language($code); ?> value="<?= $code; ?>">
             <?= $lang; ?>
          </option>
       <? endforeach; ?>

    </select>