3
I’m a beginner in JS I’ve studied up to the part of loops, then I stopped to review everything I saw and do some exercises.
I made an algorithm that translates to English, Spanish and Portuguese a table with tidal times.
The algorithm reads a model function with parameters > below there is another function that will be called in the event onclick, this function calls the model function by changing the parameters according to the current language
The problem is that it became very extensive, so I only did up to the part that translates the Title, Button and Prompt to choose the language... come on:
JAVASCRIPT
//funcao modelo
function traducao(langarray1,langarray2,lang1,lang2,tabletitle1,tabletitle2,buttonvalue1,buttonvalue2,chooselang,errormsg){
        document.getElementById("tabelatitle"); //pega a tag <h1> do titulo da tabela
        translan = new Array(langarray1,langarray2); // variaveis do idioma que aparece no texto do prompt como string  
        transtext = prompt(chooselang + translan[0] + ", " + translan[1]); // Prompt para escolher o idioma
        if(transtext == lang1){ // escolha do idioma == idioma 1
            tabelatitle.innerHTML = tabletitle1; // traduzir o <h1> para idioma escolhido
            document.getElementById("botao").innerHTML = buttonvalue1; // traduzir o botao para o idioma escolhido
        }
        else if(transtext == lang2){ // se escolha do idioma == idioma 2
            tabelatitle.innerHTML = tabletitle2; // traduzir <h1> para idioma escolhido
            document.getElementById("botao").innerHTML = buttonvalue2; // traduzir o botao para o idioma escolhido
        }
        else{ // se deixar vazio ou escolha invalida, apresentar msg de erro
            alert(errormsg);
        }
    }
//executar traducao() com condicoes
function traduzir(){    
        document.getElementById("tabelatitle");
        //pt - se idioma current = pt > apresentar opções de traduzir para ingles ou espanhol no prompt. e se escolher uma das duas > traduz titulo, botão e texto do prompt.
        if(tabelatitle.innerHTML == "Tabela de horários da Maré"){ //
            return traducao("Ingles","Espanhol","Ingles","Espanhol","Sea hours table","Tabla de horarios de las mareas","Translate","Traducir","Escolha um idioma: ","Você precisa escolher um idioma");
        }
        //en - se o idioma current for ingles - apresentar opções de traduzir para Portugues e Espanhol > e se escolher uma das duas > traduz titulo, botão e texto do prompt.
        else if(tabelatitle.innerHTML == "The tide times table"){
            return traducao("Spanish","Portuguese","Spanish","Portuguese","Tabla de horarios de las mareas","Tabela de horários da Maré","Traducir","Traduzir", "Choose a language: ","You need to choose a language");
        //es - se o idioma current for espanhol - apresentar opções de traduzir para Portugues e Ingles > e se escolher uma das duas > traduz titulo, botão e texto do prompt.
        }
        else{
            return traducao("Inglés","Portugués","Inglés","Portugués","The tide times table","Tabela de horários da Maré","Translate","Traduzir", "Eligir un idioma","Usted tiene que elegir un idioma");
        }
    }
Table HTML (if you want to test)
 <h1 id="tabelatitle">Tabela de horários da Maré</h1>
           <table class="tg">
              <tr>
                <th class="tg-xdyu">Dia</th>
                <th class="tg-031e">Manhã</th>
                <th class="tg-031e">Tarde</th>
                <th class="tg-031e">Noite</th>
              </tr>
              <tr>
                <td class="tg-031e" id="segunda">Segunda-Feira</td>
                <td class="tg-031e">Calmo</td>
                <td class="tg-031e">Agitado</td>
                <td class="tg-031e">Agitado</td>
              </tr>
              <tr>
                <td class="tg-031e">Terça-Feira</td>
                <td class="tg-031e">Normal</td>
                <td class="tg-031e">Calmo</td>
                <td class="tg-031e">Normal</td>
              </tr>
              <tr>
                <td class="tg-031e">Quarta-Feira</td>
                <td class="tg-031e">Agitado</td>
                <td class="tg-031e">Agitado</td>
                <td class="tg-031e">Agitado</td>
              </tr>
              <tr>
                <td class="tg-031e">Quinta-Feira</td>
                <td class="tg-031e">Calmo</td>
                <td class="tg-031e">Normal</td>
                <td class="tg-031e">Agitado</td>
              </tr>
              <tr>
                <td class="tg-031e">Sexta-Feira</td>
                <td class="tg-031e">Normal</td>
                <td class="tg-031e">Normal</td>
                <td class="tg-031e">Normal</td>
              </tr>
              <tr>
                <td class="tg-031e">Sábado</td>
                <td class="tg-031e">Calmo</td>
                <td class="tg-031e">Normal</td>
                <td class="tg-031e">Agitado</td>
              </tr>
              <tr>
                <td class="tg-031e">Domingo</td>
                <td class="tg-031e">Calmo</td>
                <td class="tg-031e">Calmo</td>
                <td class="tg-031e">Calmo</td>
              </tr>
            </table>
            <button onclick="traduzir()" id="botao">Traduzir</button>
The table needs to be translated in full after the user performs the function.
Since I was only able to do this by assigning ID and condition to EACH word of the table and thus the algorithm becomes tiresome, extensive and unprofessional, let’s see:
   if(transtext == lang1){ // escolha do idioma == idioma 1
            tabelatitle.innerHTML = tabletitle1; // traduzir o <h1> para idioma   escolhido
            document.getElementById("botao").innerHTML = buttonvalue1; // traduzir o botao para o idioma escolhido
            if(document.getElementById("segunda").innerHTML = parametroadequadoaoidiomaemquestao;
            if(document.getElementById("terca").innerHTML = parametroadequadoaoidiomaemquestao;
            etc..... (todas as palavras, incluindo, dias da semana, tempo do mar, tarde   noite etc
   else if(transtext == lang1){ // escolha do idioma == idioma 1
            tabelatitle.innerHTML = tabletitle1; // traduzir o <h1> para idioma   escolhido
            document.getElementById("botao").innerHTML = buttonvalue1; // traduzir o botao para o idioma escolhido
            if(document.getElementById("segunda").innerHTML = parametroadequadoaoidiomaemquestao;
            if(document.getElementById("terca").innerHTML = parametroadequadoaoidiomaemquestao;
            etc..... (todas as palavras, incluindo, dias da semana, tempo do mar, tarde   noite etc
I tried to use GetElementByTagsName to condition all words in the table <th> to respect the condition of moving innerHTML without having to assign id to each, but it didn’t work.
You could do it using loops or something else?
Whoever you are, I can’t thank you enough, old man. You explained a lot and reworked it in ways that I haven’t even studied yet, I still don’t understand more than 40% but it looks fantastic. I will continue to reread your answer until I understand everything. Thank you very much!
– ropbla9