在不重新加载的情况下更改语言


Changing the language without reloading

当我点击我的三种语言标志(德语、法语和英语)中的任何一种时,我试图在不重新加载页面的情况下直接更改我的网站语言。

为了与语言相对应,我在点击标志后保存了一个名为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框架都是开箱即用为您做这件事的。