PHP - 实际语言ID的链接

时间:2014-08-18 15:32:58

标签: php html hyperlink href

所以我正在建立一个小型多语言(法语+英语)网站,并且有一个小错误。我想在代码中删除“英语默认”语言,因此如果用户在一个页面上选择法语,那么他之后将选择的任何页面都将使用法语而不是“返回”英语。如果用户首先选择英语,则相同。但由于将有更多的法国用户,我希望它成为主页上的默认语言。

内容位于包含前缀的文件夹中:fr_language.php和en_language.php

The lang.php file here

FR或EN的链接

    <a href="?lang=fr">Français</a>
    <a href="?lang=en">English</a>

导航

<ul>
    <li><a href="index.php"><?php echo $lang['home']; ?></a></li>
    <li><a href="services.php"><?php echo $lang['services']; ?></a></li>
    <li><a href="about.php"><?php echo $lang['aboutus']; ?></a></li>
    <li><a href="contact.php"><?php echo $lang['contact']; ?></a></li>
</ul>

感谢您的帮助!

编辑:

好的,在你的帮助下它正在发挥作用!在我的“nav.php”中包括,I wrote this.也许可以做一个更干净的版本,哈哈!有任何想法吗?再次感谢!

4 个答案:

答案 0 :(得分:0)

你需要保持语言的状态。

您必须通过

传递每个请求
  • url参数:page.php?lang = zh
  • 路径:yourpage.com/en/page.php

或使用cookie来存储它。您将获得随每个服务器请求传递的cookie值

您可以通过$_COOKIE var阅读Cookie。您可以在javascriptphp

中进行设置

答案 1 :(得分:0)

就个人而言,我建议您点击一下语言选择器,它将创建一个新的PHP会话并存储该语言。

这样做的好处是您不必总是将您的语言附加到URL的末尾。这只会在每次创建会话时发生(因此,如果您没有设置超时,则仅在计算机重新启动时)。页面重定向后,将页面重定向到不再需要$_GET的语言,而只是检查活动会话。

您必须将用户重定向到包含PHP脚本的页面,然后根据URL中发送的内容设置语言。但是,您可以在脚本完成返回用户所在的页面后重定向(并加载他们新选择的语言)。

HTML:

<a href="setLanguage.php?lang=fr">Français</a>
<a href="setLanguage.php?lang=en">English</a>

PHP:

// intitially set language by your selector
<?php
    session_start();
    $_SESSION['language'] = $_GET['lang'];
?>

现在,您可以将getter代码放在任何页面上(包括页眉或基页):

// check for the language
<?php
    session_start();

    if (isset($_SESSION['language'])) {
        // now change the language of the page based on what it is
        if ($_SESSION['language'] == "en") {
            // change page language to english
        } else {
            // change page language to french
        }
    }
?>

答案 2 :(得分:0)

看起来您正在使用的是使用名为get_lang_id()的函数从cookie中提取并使用它来加载语言文件。

get_lang_id()函数目前默认为英语:

function get_lang_id() 
{
    return ( isset( $_COOKIE['lang'] ) && 
             strlen( $_COOKIE['lang'] ) == 2 && 
             is_language_supported( $_COOKIE['lang'] ) ) ?
           htmlspecialchars($_COOKIE['lang']) : 'en';
}

如果您将末尾的'en'更改为'fr',它会将默认语言文件更改为法语版本。单击任一链接将设置一个cookie,该cookie将跳过使用默认值。

答案 3 :(得分:0)

考虑使用以下方法/方法:

if(isset($_GET['lang']) && $_GET['lang'] == "fr"){ 

   // do something 

} else { 
   // do something else 
}

您还应该了解(XSS)跨站点脚本。

以下是一些可供阅读的链接:

您可以使用&#34; XSS注入php&#34;进一步研究。作为您最喜欢的搜索引擎中的关键字。