2014-08-30 83 views
0

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

为了与语言对应,我在点击一个标志后保存一个名为lang的cookie。 我有这取决于客户端的cookie已存储在显示右侧的文本的功能LangText($de, $fr, $en);

这是我的功能:

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; 
} 

到现在为止我被重定向一个PHP用户是将Cookie存储在中,并将用户重定向到以前的站点。 有没有可能实现这个没有任何重新加载?

+0

如果您从未听说过Ajax,那么这将是一个选项。 – 2014-08-30 22:30:25

+0

我已经听说过ajax,但我没有想到实现这一点,并且我没有在万维网上找到任何有用的答案。 – PoTTii 2014-08-30 22:31:38

+1

如果您提供了有关您网站可搜索性的任何信息,那么您不应该将该语言放入Cookie(搜索引擎不会发送Cookie),而是将其作为URL的一部分。因为它将是一个完全不同的资源,那么只需链接到它就会更有意义。这整个“我不想重新加载我的网页,我只想切换内容”的理念是很多情况下BS的负载,这里这是其中之一恕我直言。 – CBroe 2014-08-30 22:34:35

回答

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"); 
0

如果您仅使用PHP管理您的多语言站点,因为PHP是服务器端语言,您需要重新加载(因为您需要前往服务器以计算新页面)。

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

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

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

+0

你是说PHP可以为我开箱吗?是否有像使用这样的文件的简单可能性?:'xxx.com/abc.php/de'? – PoTTii 2014-08-31 11:03:22

+0

我写了“PHP框架”。看看,例如,[Yii Framewrok - 多语言和搜索引擎友好](http://www.yiiframework.com/wiki/579/multilanguage-and-seo-friendly/) – PauloASilva 2014-08-31 22:18:26

相关问题