【问题标题】:JavaScript to change language between three or more languagesJavaScript 在三种或更多语言之间切换语言
【发布时间】:2021-06-24 00:31:45
【问题描述】:

我正在开发一个多语言的 WordPress 多站点。它有10多种语言。我创建了一个将在 2 种语言之间重定向的 javascript。为此,我使用了location.pathname 来获取当前页面的 URL。然后我将其拆分以获取最后一个目录名称。我已经使用 if 条件来检查页面的当前 URL 是否为第二语言。

例如,如果我在页面 www.xyz.com/fr/news 上,然后如果我将语言更改为英语。它会将我重定向到www.xyz.com/news。现在的问题是如果我添加第三种语言,我无法弄清楚我应该使用什么条件在不同的语言之间切换。例如,如果我在页面 www.xyz.com/fr/news 上并且我想切换到德语。它应该从www.xyz.com/fr/news 重定向到www.xyz.com/de/news

每次重定向都应该以请求的语言加载当前页面。

HTML 代码:

<a class="dropdown-item" onclick="myFunction()">English</a>

下面是一个javacript代码sn-p从默认语言切换。

function myFunction() {
    document.getElementById("fr").onclick = location.replace(
        window.location.origin + "/" + fr" + "/"
    );
    document.getElementById("de").onclick = location.replace(
        window.location.origin + "/" + "de" + "/"
    );
}

下面是一个javascript代码sn-p,用于从第二语言切换到默认语言。

function myFunction() {
    var pathname = window.location.pathname;  
    var lang = pathname.split("/")[1];
    var page = pathname.split("/")[2];

    if ((lang = "fr/")) {
        location.replace(window.location.origin + "/" + page);
    }
}

【问题讨论】:

  • 要拆分路径名,您可以使用单个命令:let page = window.location.pathname.split("/"); 这会将 URL 转换为一个数组,您可以稍后将其与 [0]、[1] 等一起使用。跨度>
  • @MikedeBie 我已经拆分了 URL 并使用这些部分在 2 种语言之间重定向。我坚持在添加第三种语言时如何重定向。当通过单击触发锚标记但未按预期获得结果时,我正在尝试添加函数和 if-else 语句。
  • 如果你想在语言之间切换,你可以使用'Switch'语句。使用从 URL 获得的 2 个字母(“fr”、“en”等)并在 Switch/Case 语句中使用这些字母。 case 'fr': URL = xyz.url/fr 一些解释可以在这里找到:(w3schools.com/js/js_switch.asp)

标签: javascript php jquery wordpress wordpress-theming


【解决方案1】:

我不知道这是否是有效的方法,但已经解决了。

但是使用右键单击在新选项卡中打开链接存在问题。它显示 about:blank#blocked。

我把javascript放在锚标签的href中,如下所示。

<a href="javascript:eng()" class="dropdown-item" >English</a>
<a href="javascript:fre()" class="dropdown-item" >French</a>
<a href="javascript:det()" class="dropdown-item" >German</a>

为每个链接创建单独的函数。例如,如果我在默认页面上,脚本将是:

function fre() {
    var pathname = window.location.pathname;
    var lang = pathname.split("/")[1];
    var page = pathname.split("/")[2];

    if (window.location.origin !== "" && lang == "") {
        window.location.replace(window.location.origin + "/fr/");
    } else {
        window.location.replace(window.location.origin + "/fr/" + lang);
    }
}
function det() {
    var pathname = window.location.pathname;
    var lang = pathname.split("/")[1];
    var page = pathname.split("/")[2];

    if (window.location.origin !== "" && lang == "") {
        window.location.replace(window.location.origin + "/de/");
    } else {
        window.location.replace(window.location.origin + "/de/" + lang);
    }
}

因此条件检查当前窗口 URL 是否包含 1 个或 2 个目录。例如www.xyz.com/ 包含 1 是“/”,www.xyz.com/fr/news 包含 1 是“fr”,2 是“news”,然后重定向到其他语言的相应页面。

希望这对其他人有帮助。

如果有任何有效的方法或改进,欢迎您。

【讨论】:

    猜你喜欢
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    相关资源
    最近更新 更多