我在网站上有一个按钮,我翻译了文本(使用po和mo文件),但链接仍然只有一个。我试图根据打开哪种语言的网站来切换,但是我的代码不起作用。有人可以帮忙吗
function changeLink(document.getAttribute("lang")){
var theLink = document.querySelector('.donate-now');
if(document.getAttribute("lang") == 'en-EN'){
theLink.href="https://usrussiacc.org/membership/";
} else if(document.getAttribute("lang") == 'ru-RU'){
theLink.href="https://usrussiacc.org/ru/glavnaja/chlenstvo/";
}
}
答案 0 :(得分:0)
首先,我假设您正在设置<html lang="en-EN">
。
<html>
实际上是文档的根元素。需要这样检索它;最简单快捷的方法是document.documentElement
(MDS documentation)。
使用此方法,我们调用document.documentElement.getAttribute("lang")
来从lang="aa-AA"
标记中检索<html>
属性。
我还清理了该函数,并分别调用它。
function changeLink(lang) {
var theLink = document.querySelector('.donate-now');
if (lang == 'en-EN') {
console.log('en-EN')
theLink.href = "https://usrussiacc.org/membership/";
} else if (lang == 'ru-RU') {
console.log('ru-RU')
theLink.href = "https://usrussiacc.org/ru/glavnaja/chlenstvo/";
} else {
console.log('neither')
}
}
changeLink(document.documentElement.getAttribute("lang"))
<html lang="en-EN">
<head></head>
<body>
<a href="" class="donate-now">I'm a link</a>
</body>
</html>
尽管上面的代码仍然不是很可扩展或友好。下面我重写了它,使其更具可伸缩性和可重用性。同时也消除了对参数的需求。只需将更多lang / path对添加到listURI
,它将自动处理它们。如果给定的语言不存在(从不信任用户),您也可以放入通用URI。
function changeLink() {
let listURI = {
'en-EN': 'https://usrussiacc.org/membership/',
'ru-RU': 'https://usrussiacc.org/ru/glavnaja/chlenstvo/'
};// Scale support, by adding new languages and URIs to this list
let linkURI = listURI[document.documentElement.getAttribute("lang")];
if (linkURI != undefined) {
document.querySelector('.donate-now').href = linkURI;
console.log(linkURI)
} else {
console.log("LANGUAGE DOESN'T EXIST")
}
}
changeLink()
<html lang="en-EN">
<head></head>
<body>
<a href="" class="donate-now">I'm a link</a>
</body>
</html>