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”然后重定向到其他语言的相应页面。
希望这对其他人有所帮助。
如果有任何有效的方法或改进,欢迎您。
我正在开发多语言 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”然后重定向到其他语言的相应页面。
希望这对其他人有所帮助。
如果有任何有效的方法或改进,欢迎您。