JavaScript 在三种或更多语言之间切换语言

JavaScript to change language between three or more languages

我正在开发多语言 WordPress 多站点。它有10多种语言。我创建了一个 javascript 将在 2 种语言之间重定向。为此,我使用 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 代码片段。

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

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

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

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

但是使用右键单击在新选项卡中打开 link 时出现问题。它显示 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>

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

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

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

希望这对其他人有所帮助。

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