I'm a beginner in JS I've already studied up to the loops section, so I stopped by to review everything I saw and do some exercises.
I have made an algorithm that translates into English, Spanish and Portuguese a table with the tide schedules.
The algorithm reads a model function with parameters > just below there is another function that will be called in the onclick
event, this function calls the model function by changing the parameters according to the current language
The problem is that it was very extensive, so I just did 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");
}
}
HTML table (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 executes the function.
Since I have only been able to do this by assigning ID and condition to EVERY table word, and thus the algorithm gets tiring, extensive and unprofessional, let's look at:
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 in <th>
to respect condition of change innerHTML
without needing to assign id to each, but did not work.
Would you like to do this using loops or something else?