当我点击我的三种语言标志(德语、法语和英语)中的任何一种时,我试图在不重新加载页面的情况下直接更改我的网站语言。
为了与语言相对应,我在点击标志后保存了一个名为lang
的cookie。我有一个函数LangText($de, $fr, $en);
,它根据客户端cookie存储的内容显示正确的文本
这是我的功能:
function LangText($de, $fr, $us){
if(!isset($_COOKIE["lang"]) || $_COOKIE["lang"] == "de") echo $de;
else if($_COOKIE["lang"] == "fr") echo $fr;
else if($_COOKIE["lang"] == "us") echo $us;
else return 0;
}
到目前为止,我在一个存储cookie的php上重定向用户,并将用户重定向到以前的网站。有没有可能在不重新装载的情况下实现这一点?
我也强烈建议使用特定于语言的URI,但这应该有效。需要jQuery。
function changeLanguage(lang){
// Replace "lang" cookie with new language
document.cookie = "lang="+lang;
// Get html of current URI and replace page contents.
$("body").load(window.location.href);
}
// Call this to switch to German, for example
changeLanguage("de");
如果您只使用PHP管理多语言网站,因为PHP是服务器端语言,您需要重新加载(因为您需要转到服务器来计算新页面)。
这没什么错。在应用程序引导程序上,您必须查找语言cookie,检查其值并设置语言环境值。
我建议您使用Cookie管理多语言,因为Cookie很烦人,现在您必须处理有关Cookie使用的法律政策。
您可以管理多语言,只需使用像en/
或pt/
这样的URI路径。几乎所有的PHP框架都是开箱即用为您做这件事的。