Не работают скрипты перевода, что делать?

Всем привет, у меня имеется код HTML в котором есть ссылки в футере для смены языков, так же JSON и JS файлы которые это контролируют, но выдаёт ошибку помогите

65d2217c5cb61185572779.png

65d225259d563100549392.png

index.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Project</title>

    <link rel="stylesheet" href="src/css/global.css">
</head>
<body id="page-top" onload="translate('en','lng-tag')">
    <div id="layout">
        <header>
            <h1 id="heading" lng-tag="heading">
                The project uses:
            </br>
                HTML, CSS and JS
            </h1>
        </header>
        <main>
            <div id="primaryBlock">
                <div id="secondaryBlock">
                    <div id="descriptionBlock">
                        <h2 id="descriptionTitle">
                            Description:
                        </h2>
                        <p id="descriptionText" lng-tag="description"></p>
                    </div>
                    <div id="progressBlock">
                        <h2 id="progressTitle">
                            Progress:
                        </h2>
                        <p id="progressText"></p>
                        <ul id="progressList">
                            <li id="git"></li>
                        </ul>
                    </div>
                </div>
                <div id="information">
                    <div id="aboutMe">
                        <h2 id="aboutMeTitle">
                            Project:
                        </h2>
                        <p id="userName"></p>
                        <p id="repo"></p>
                    </div>
                    <div id="social">
                        <h2 id="socialTitle">
                            Social:
                        </h2>
                        <ul id="socialList">
                            <li id="email"></li>
                            <li id="gitHub"></li>
                        </ul>
                    </div>
                </div>
            </div>
        </main>
        <footer>
            <p>Thanks for visiting my project page</p>
            <li class="nav-item" style="list-style-type: none; margin-left: 20px;">
                <a class="nav-link js-scroll-trigger lng" id="enTranslator" href="javascript:void(0);">En</a>
                <a class="nav-link js-scroll-trigger lng" id="ruTranslator" href="javascript:void(0);" style="margin-left: 10px;">Ru</a>
            </li>
        </footer>
    </div>
    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
    <script src="src/scripts/translate.js"></script>
    <script type="module" src="src/scripts/index.js"></script>
</body>
</html>


index.js:
import config from "../../config.json" assert {type: "json"};
import lang_en from "../../lng/en.json" assert {type: "json"};
import lang_ru from "../../lng/ru.json" assert {type: "json"};

// Description:
document.getElementById("descriptionText").innerHTML = lang_en.description;

// Progress:
document.getElementById("progressText").textContent = lang_en.progress;
document.getElementById("git").textContent = "Git — .git"

// Project:
document.getElementById("userName").textContent = `Creator: ${config.userName}`;
document.getElementById("repo").innerHTML = `Repository: <a href="${config.repoLink}">here</a>`;

// Social:
document.getElementById("email").textContent = `Email — ${config.social.email}`;
document.getElementById("gitHub").innerHTML = `My GitHub profile: <a href="${config.social.gitHub}">here</a>`

function translate(lng, tagAttr){
    var translate = new Translate();
    translate.init(tagAttr, lng);
    translate.process();
    if(lng == 'en'){
      $("#enTranslator");
      $("#ruTranslator");
    } 
    if(lng == 'ru'){
      $("#ruTranslator");
      $("#enTranslator");
    }
}

$(document).ready(function(){
    
    $("#enTranslator").click(function(){
        translate('en', 'lng-tag');
    });
  
    $("#ruTranslator").click(function(){
        translate('ru', 'lng-tag');
    });
});


translate.js:
function Translate() { 

this.init =  function(attribute, lng){
    this.attribute = attribute;
    this.lng = lng;	
}

this.process = function() {
    _self = this;
    var xrhFile = new XMLHttpRequest();

    xrhFile.open("GET", "../lng"+this.lng+".json", false);
    xrhFile.onreadystatechange = function ()
    {
        if(xrhFile.readyState === 4)
        {
            if(xrhFile.status === 200 || xrhFile.status == 0)
            {
                var LngObject = JSON.parse(xrhFile.responseText);
                var allDom = document.getElementsByTagName("*");
                for(var i =0; i < allDom.length; i++){
                    var elem = allDom[i];
                    var key = elem.getAttribute(_self.attribute);
                    if(key != null) {
                        elem.innerHTML = LngObject[key]  ;
                    }
                }
            
            }
        }
    }
    xrhFile.send();
}
}


en.json:
{
    "description": "Hello everyone, I already wrote in the description that this is a mini project in which I am learning <span>JS</span>, <span>TS</span> and various frameworks for <span>JS</span>, improving my skills in <span>HTML</span>, <span>SASS</span>, <span>CSS</span>, etc.",
    "progress": "At this point I will write what new things I have learned so far."
}


ru.json:
{
    "description": "Всем привет, я уже писал в описании, что это мини проект, в котором я изучаю <span>JS</span>, <span>TS</span> и различные фреймворки для <span>JS</span>, совершенствую свои навыки работы с <span>HTML</span>, <span>SASS</span>, <span>CSS</span> и т.д.",
    "progress": "На этом этапе я напишу, что нового я узучил"
}
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
Иди учи вначале html(кривые пользовательские атрибуты), а затем js(вызов функций до их объявления)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы