【问题标题】:Changing the language without reloading无需重新加载即可更改语言
【发布时间】:2014-08-30 22:28:05
【问题描述】:

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

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

【问题讨论】:

  • 如果您从未听说过 Ajax,那将是一个选择。
  • 我已经听说过 ajax,但我没有意识到这一点,而且我在万维网上也没有找到任何有用的答案。
  • 如果您提供有关网站可搜索性的任何信息,则不应将语言放入 cookie(搜索引擎不发送 cookie),而应将其作为 URL 的一部分。既然这将是一个完全不同的资源,那么简单地链接到它会更有意义。这整个“我不想重新加载我的页面,我只想切换内容”的理念在很多情况下都是相当荒谬的,这就是其中之一恕我直言。
  • 感谢您的诚实意见,但我的网站不会在搜索引擎上列出,因为我们公司正在使用其他方法进行自我营销。我只是想动态优化我们的网站。
  • “更改语言而不重新加载”意味着您需要在一页中加载所有可用的语言,然后显示用户选择的语言。否则,您必须以某种方式获取新内容。

标签: javascript php cookies


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 你的意思是 PHP 可以为我开箱即用地做到这一点?有没有像使用这样的文件这样简单的可能性?:xxx.com/abc.php/de
    • 我写了“PHP 框架”。看看,例如,Yii Framewrok - Multilanguage and SEO friendly
    猜你喜欢
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2013-07-18
    • 2012-08-16
    • 1970-01-01
    • 2013-03-20
    • 2014-12-24
    • 1970-01-01
    相关资源
    最近更新 更多