javascript - 使用 JSON、HTML 和 JavaScript 更改网站语言

标签 javascript html css

我为自己创建了一个简单的作品集,目前是英文的。我还想要德语和其他语言的版本。为此,我有一个包含相应语言的下拉选项框。我想要做的是,一旦选择了一种语言,javascript EventListener 就会注意到这一点并将网站的语言更改为该语言。我有一个 en.json 和 de.json 文件,其中包含文本和文本本身的相应类名。

下拉选项菜单:

<select id="language" class="language">
                        <option>🏴󠁧󠁢󠁥󠁮󠁧󠁿 ENG</option>
                        <option>🇩🇪 DE</option>
                        <!-- <option>🇫🇷 FR</option> -->
                        <!-- <option>🇱🇺 LUX</option> -->

</select>

以下是包含类“RecentGrad”和“Name”的 div 示例以及 json 文件结构示例。我有多个文本需要翻译,但我只在这里展示一个以供理解:

<div class="header-text">
                <p class="RecentGrad"> Recent graduate & aspiring developer</p>
</div>

German json file:
{
"RecentGrad": "Hochschulabsolvent & angehender Entwickler"
}

English json file:
{
"RecentGrad": "Recent graduate & aspiring developer"
}

我已经完成了 javascript 的框架,它监听更改,然后应该根据此更改执行操作。我对 HTML、CSS 和 JavaScript 比较陌生,所以我不知道如何从这里开始。我已经查看了多语言网站的多个教程和其他 stackoverflow 主题,但我似乎无法让其中任何一个发挥作用。

<script>document.querySelector('#language').addEventListener("change", function() {
    if (this.value == "🏴󠁧󠁢󠁥󠁮󠁧󠁿 ENG") {
        // change all text to ENG
    }else if (this.value == "🇩🇪 DE"){
        // change all text to DE
    // }else if (this.value == "🇫🇷 FR"){
       // change all text to FR
    // }else if (this.value == "🇱🇺 LUX"){
       // change all text to LUX
    }
  });</script>

最佳答案

使用 for...in 从语言对象中提取所有键,然后迭代它们并使用 document.querySelector('.' + key).textContent更改翻译。

const jsonDE = {
  "RecentGrad": "Hochschulabsolvent & angehender Entwickler"
}

const jsonEN = {
  "RecentGrad": "Recent graduate & aspiring developer"
}


document.querySelector('#language').addEventListener("change", function() {
  if (this.value == "🏴󠁧󠁢󠁥󠁮󠁧󠁿 ENG") {
    // change all text to ENG
    for (let key in jsonEN) {
      document.querySelector('.' + key).textContent = jsonEN[key]
    }
  } else if (this.value == "🇩🇪 DE") {
    // change all text to DE
    for (let key in jsonDE) {
      document.querySelector('.' + key).textContent = jsonDE[key]
    }
    
  // }else if (this.value == "🇫🇷 FR"){
    // change all text to FR
  // }else if (this.value == "🇱🇺 LUX"){
    // change all text to LUX
  }
});
<select id="language" class="language">
  <option>🏴󠁧󠁢󠁥󠁮󠁧󠁿 ENG</option>
  <option>🇩🇪 DE</option>
  <!-- <option>🇫🇷 FR</option> -->
  <!-- <option>🇱🇺 LUX</option> -->
</select>

<div class="header-text">
  <p class="RecentGrad"> Recent graduate & aspiring developer</p>
</div>

关于javascript - 使用 JSON、HTML 和 JavaScript 更改网站语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73602410/

相关文章:

css - 如何更改我网站的 CSS 定位以在所有浏览器中正确显示?

移动设备的 CSS Hack

javascript - 通过 javascript 将值传递给 php

javascript - 如何防止/覆盖 Safari 中的授权 header ?

html - IE10/11 显示垂直滚动条变成空?

javascript - 如何使用javascript获取浏览器最后一次请求加载的文件列表?

javascript - 将选择的 JQuery 插件添加到我的 HTML 中

javascript - 无法在 Firefox 35 插件中创建内联 Web Worker

html - 奇怪的 CSS 边距问题

html - 标题不会断字