切换按钮的href link,由JS根据网站语言而定

Switch href link of button, depends on website language by JS

我在网站上有一个按钮,我翻译了文本(使用 po 和 mo 文件),但 link 仍然只有一个。我正在尝试根据打开的语言网站进行切换,但我的代码不起作用。有没有人可以帮忙

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/"; 
    }
    }

首先,我假设您正在设置 <html lang="en-EN">

<html>其实就是文档的根元素。需要这样检索它;最简单快捷的方法是 document.documentElement (MDS documentation).

使用这个,我们调用 document.documentElement.getAttribute("lang")<html> 标签中检索 lang="aa-AA" 属性。

函数我也清理了,单独调用了

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>

虽然上面的代码仍然不是很可扩展,或者友好。下面我重写了它,以使其更具可扩展性和可重用性。也消除了对所有争论的需要。只需在 listURI 中添加更多 lang/path 对,它就会自动处理它们。您还可以输入通用 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>