更改语言而不重新加载

时间:2014-08-30 22:28:05

标签: javascript php cookies

当我点击我的三种语言标志(德语,法语和英语)时,我试图直接更改网站的语言而不重新加载页面。

要与语言对应,我在点击标志后保存名为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上,并将用户重定向到上一个站点。 是否有可能在没有任何重新加载的情况下实现这一点?

2 个答案:

答案 0 :(得分:0)

如果您只使用PHP管理多语言站点,因为PHP是服务器端语言,您需要重新加载(因为您需要转到服务器来计算新页面)。

这没有错。 在应用程序引导程序中,您必须查找语言cookie,检查其值并设置语言环境值。

我建议您使用Cookie管理多语言,因为Cookie很烦人,现在您必须处理有关Cookie使用的法律政策。

您可以使用en/pt/等URI路径管理多语言。 几乎所有的PHP框架都可以为您提供开箱即用的功能。

答案 1 :(得分:0)

我还强烈推荐特定于语言的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");