多语言的PHP脚本问题

时间:2009-05-19 17:38:24

标签: php cookies multilingual

我有这个PHP脚本。这是唯一真正对我有用的人:

<?php
/*Check_if_user_has_changed_language: */
if(isset($lang)){/*If_so:*/
    setcookie("ling",$lang,time()-60*60*24*365,"/",".sayip.info",0);/*Wipe_previous_cookie*/
    setcookie("ling",$lang,time()+60*60*24*365,"/",".sayip.info",0);/*Whatever_the_means_lang_has_been_stored,_store_latest_lang_in_new_cookie:*/
    //echo "<script language=\"JavaScript\">alert('Selected language=$lang')</script>";/*UnComment_to_check*/
}else{/*If_user_has_NOT_changed_language:*/
    if(isset($_COOKIE['ling'])){/*Check_if_user-language_cookie_is_set._If_so:*/
        $lang=$_COOKIE['ling'];
        setcookie("ling",$lang,time()-60*60*24*365,"/",".sayip.info",0);/*Wipe_previous_cookie*/
        setcookie("ling",$lang,time()+60*60*24*365,"/",".sayip.info",0);
        //echo "<script language=\"JavaScript\">alert('Cookie language=$lang')</script>";/*UnComment_to_check*/
    }else{/*If_user-language_neither_selected_nor_in_cookie,_choose_browser_language:*/
        $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
        setcookie("ling",$lang,time()+60*60*24*365,"/",".sayip.info",0);
        //echo "<script language=\"JavaScript\">alert('Your browser language=$lang')</script>";/*UnComment_to_check*/
    }
}
?>

首先,代码检测用户浏览器的语言。没关系。

然后将信息存储在cookie中。没关系。

在这段代码中,一切正常。我真正需要的是为访问者创建一个更改语言的选项。我在想像链接的标志图像,所以当有人点击标志时它会改变语言。

有人可以通过一个例子甚至一个干净,完整的解决方案向我解释一下吗?我的PHP技能很差。

提前致谢。

4 个答案:

答案 0 :(得分:0)

我会将所选语言放入网址,例如http://example.com/ en /foo/bar。这使选定的语言透明且易于更改。

答案 1 :(得分:0)

如果我知道如何lol我会说...因为我测试了或多或少10个不同的脚本后我的脚本工作,我不喜欢退回,只需要一个如何放置标志的例子,当有人点击在标志上它改变了cookie的值...

答案 2 :(得分:0)

我不确定我的问题是否正确

如果您要在页面中为每种语言添加链接,请将链接设置为 http://www.example.com/?lang=jp

然后在您发布的脚本之前的PHP代码中添加

if (isset($_GET['lang'])) $lang = $_GET['lang'];

这就是你的意思吗?

答案 3 :(得分:0)

更优雅的解决方案可能是检查用户的标题。 大多数浏览器将允许用户在首选项中设置首选语言。这反过来发送带有请求的HTTP头。标题看起来像这样。

接受语言:en-us,en; q = 0.8,ar-ly; q = 0.5,id; q = 0.3

该值是逗号分隔的接受语言列表,按优先顺序排序(q = x部分是首选项)。通过这种方式,您可以自动检测用户选择查看网络的语言,并在您拥有该语言时显示。