切换按钮的href链接,取决于JS的网站语言

时间:2018-08-21 20:06:47

标签: javascript multilingual

我在网站上有一个按钮,我翻译了文本(使用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/"; 
    }
    }

1 个答案:

答案 0 :(得分:0)

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

<html>实际上是文档的根元素。需要这样检索它;最简单快捷的方法是document.documentElementMDS 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>