Skip to content

Commit 9ef92f6

Browse files
committed
Translations moved to JSON file
1 parent 4c9c8c8 commit 9ef92f6

File tree

4 files changed

+119
-112
lines changed

4 files changed

+119
-112
lines changed

index.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@
5656
<source src="assets/losetrumpet.wav"
5757
type="audio/wav">
5858
</audio>
59-
<script src="translations.js"></script>
6059
<script src="script.js"></script>
6160
</body>
6261
</html>

script.js

Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
function updateOptionLanguage(id, textCont, value) {
44
document.getElementById(id).textContent = textCont;
55
document.getElementById("select").querySelector(`option[value="${value}"]`).textContent = textCont;
6-
};
6+
}
77

8-
function updateLanguage(language) {
8+
function updateLanguage(language, translations) {
99
const t = translations[language];
1010
document.title = translations[language].title;
1111
document.getElementById("inputField").placeholder = t.placeholder;
@@ -30,25 +30,25 @@ function updateLanguage(language) {
3030
function openSidebar() {
3131
document.getElementById("sidebar").classList.toggle("open");
3232
document.getElementById("overlay").classList.toggle("open");
33-
};
33+
}
3434

3535
function closeSidebar() {
3636
document.getElementById("sidebar").classList.remove("open");
3737
document.getElementById("overlay").classList.remove("open");
38-
};
38+
}
3939

4040
function generateExample() {
4141
a = Math.floor((Math.random() * 90 + 10) / variable);
4242
b = Math.floor((Math.random() * 90 + 10) / variable);
43-
43+
4444
if (sign === "-") {
4545
if (a < b) {
4646
[a, b] = [b, a];
47-
};
47+
}
4848
} else if (sign === "/") {
4949
a = a * b;
50-
};
51-
};
50+
}
51+
}
5252

5353
function resetCounters() {
5454
skipped = 0;
@@ -59,7 +59,7 @@ function resetCounters() {
5959
document.getElementById("skippedExamples").textContent = `${skippedText} ${skipped}`;
6060
document.getElementById("solvedExamples").textContent = `${solvedText} ${solved}`;
6161
document.getElementById("mistakes").textContent = `${mistakesText} ${mistakes}`;
62-
};
62+
}
6363

6464
function nextExample() {
6565
generateExample();
@@ -78,7 +78,7 @@ function checkExample() {
7878
correctAnswer = a * b;
7979
} else if (sign === "/") {
8080
correctAnswer = a / b;
81-
};
81+
}
8282

8383
if (Number(document.getElementById("inputField").value) === correctAnswer) {
8484
document.getElementById("correctlySound").play();
@@ -102,21 +102,21 @@ function checkExample() {
102102
mistakes++;
103103
document.getElementById("mistakes").textContent = `${mistakesText} ${mistakes}`;
104104
nextExample();
105-
};
106-
};
105+
}
106+
}
107107

108108
function skipExample() {
109109
skipped++;
110110
document.getElementById("skippedExamples").textContent = `${skippedText} ${skipped}`;
111111
nextExample();
112-
};
112+
}
113113

114114
function changeMode(newSign, newVariable, value, optionName) {
115115
sign = newSign;
116116
variable = newVariable;
117117

118118
document.getElementById("select").value = value;
119-
119+
120120
generateExample();
121121
resetCounters();
122122
closeSidebar();
@@ -133,24 +133,34 @@ function changeMode(newSign, newVariable, value, optionName) {
133133
document.addEventListener("keydown", function(event) {
134134
if (event.key === "Enter") {
135135
checkExample();
136-
};
137-
});
136+
}
137+
})
138138

139139
// App logic
140140

141-
if (translations[browserLanguage]) {
142-
updateLanguage(browserLanguage);
143-
};
144-
145141
let skipped = 0;
146142
let solved = 0;
147143
let mistakes = 0;
148144

149-
const skippedText = document.getElementById("skippedExamples").textContent;
150-
const solvedText = document.getElementById("solvedExamples").textContent;
151-
const mistakesText = document.getElementById("mistakes").textContent;
152-
const correctAnswerPText = document.getElementById("correctAnswerP").textContent;
153-
154145
let a, b, sign, variable;
155-
156-
changeMode("+", 1, "1", "add100");
146+
let skippedText, solvedText, mistakesText, correctAnswerPText;
147+
148+
const browserLanguage = navigator.language.slice(0, 2);
149+
150+
fetch("translations.json")
151+
.then(response => response.json())
152+
.then(translations => {
153+
if (translations[browserLanguage]) {
154+
updateLanguage(browserLanguage, translations);
155+
}
156+
157+
skippedText = document.getElementById("skippedExamples").textContent;
158+
solvedText = document.getElementById("solvedExamples").textContent;
159+
mistakesText = document.getElementById("mistakes").textContent;
160+
correctAnswerPText = document.getElementById("correctAnswerP").textContent;
161+
162+
changeMode("+", 1, "1", "add100");
163+
})
164+
.catch(error => {
165+
console.error(error);
166+
})

translations.js

Lines changed: 0 additions & 84 deletions
This file was deleted.

translations.json

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
{
2+
"fr": {
3+
"title": "Formateur en mathématiques",
4+
"placeholder": "Entrez la réponse...",
5+
"checkButton": "CHÈQUE",
6+
"skipButton": "Passer cet exemple",
7+
"skippedExamples": "Exemples sautés:",
8+
"solvedExamples": "Exemples résolus:",
9+
"mistakes": "Erreurs:",
10+
"add10": "Addition dans les 10",
11+
"add100": "Addition dans les 100",
12+
"add1000": "Addition dans les 1000",
13+
"subtraction10": "Soustraction jusqu'à 10",
14+
"subtraction100": "Soustraction jusqu'à 100",
15+
"subtraction1000": "Soustraction jusqu'à 1000",
16+
"multiplication10": "Multiplication dans les 10",
17+
"division10": "Division dans les 10",
18+
"correctly": "Correctement",
19+
"wrongly": "À tort",
20+
"correctAnswerP": "Réponse correcte:"
21+
},
22+
"de": {
23+
"title": "Mathematiktrainer",
24+
"placeholder": "Geben Sie hier ein, wie viel...",
25+
"checkButton": "ÜBERPRÜFEN",
26+
"skipButton": "Überspringen Sie dieses Beispiel",
27+
"skippedExamples": "Übersprungene Beispiele:",
28+
"solvedExamples": "Gelöste Beispiele:",
29+
"mistakes": "Fehler:",
30+
"add10": "Addition innerhalb von 10",
31+
"add100": "Addition innerhalb von 100",
32+
"add1000": "Addition innerhalb von 1000",
33+
"subtraction10": "Subtraktion innerhalb von 10",
34+
"subtraction100": "Subtraktion innerhalb von 100",
35+
"subtraction1000": "Subtraktion innerhalb von 1000",
36+
"multiplication10": "Multiplikation innerhalb von 10",
37+
"division10": "Division innerhalb von 10",
38+
"correctly": "Korrekt",
39+
"wrongly": "Falsch",
40+
"correctAnswerP": "Richtige Antwort:"
41+
},
42+
"ru": {
43+
"title": "Математический тренажёр",
44+
"placeholder": "Введите тут, сколько будет...",
45+
"checkButton": "ПРОВЕРИТЬ",
46+
"skipButton": "Пропустить этот пример",
47+
"skippedExamples": "Пропущено примеров:",
48+
"solvedExamples": "Решено примеров:",
49+
"mistakes": "Ошибок:",
50+
"add10": "Сложение в пределах 10",
51+
"add100": "Сложение в пределах 100",
52+
"add1000": "Сложение в пределах 1000",
53+
"subtraction10": "Вычитание в пределах 10",
54+
"subtraction100": "Вычитание в пределах 100",
55+
"subtraction1000": "Вычитание в пределах 1000",
56+
"multiplication10": "Умножение в пределах 10",
57+
"division10": "Деление в пределах 10",
58+
"correctly": "Правильно",
59+
"wrongly": "Неправильно",
60+
"correctAnswerP": "Правильный ответ:"
61+
},
62+
"uk": {
63+
"title": "Математичний тренажер",
64+
"placeholder": "Введіть тут, скільки буде...",
65+
"checkButton": "ПЕРЕВІРИТИ",
66+
"skipButton": "Пропустити цей приклад",
67+
"skippedExamples": "Пропущено прикладів:",
68+
"solvedExamples": "Розв'язано прикладів:",
69+
"mistakes": "Помилок:",
70+
"add10": "Додавання в межах 10",
71+
"add100": "Додавання в межах 100",
72+
"add1000": "Додавання в межах 1000",
73+
"subtraction10": "Віднімання в межах 10",
74+
"subtraction100": "Віднімання в межах 100",
75+
"subtraction1000": "Віднімання в межах 1000",
76+
"multiplication10": "Множення в межах 10",
77+
"division10": "Ділення в межах 10",
78+
"correctly": "Правильно",
79+
"wrongly": "Неправильно",
80+
"correctAnswerP": "Правильна відповідь:"
81+
}
82+
}

0 commit comments

Comments
 (0)