我有这个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技能很差。
提前致谢。
答案 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部分是首选项)。通过这种方式,您可以自动检测用户选择查看网络的语言,并在您拥有该语言时显示。