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