diff --git a/1-getting-started-lessons/2-github-basics/README.md b/1-getting-started-lessons/2-github-basics/README.md
index 5eb022cf..8a5e480a 100644
--- a/1-getting-started-lessons/2-github-basics/README.md
+++ b/1-getting-started-lessons/2-github-basics/README.md
@@ -63,7 +63,7 @@ Let's say you have a folder locally with some code project and you want to start
git init
```
-1. **Check status**. To check the status if your repository type:
+1. **Check status**. To check the status of your repository type:
```bash
git status
diff --git a/2-js-basics/1-data-types/translations/README.it.md b/2-js-basics/1-data-types/translations/README.it.md
index 176fab15..ec185a54 100644
--- a/2-js-basics/1-data-types/translations/README.it.md
+++ b/2-js-basics/1-data-types/translations/README.it.md
@@ -4,7 +4,7 @@
> Sketchnote di [Tomomi Imura](https://twitter.com/girlie_mac)
## Quiz pre-lezione
-[Quiz pre-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/7)
+[Quiz pre-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/7?loc=it)
Questa lezione copre le basi di JavaScript, il linguaggio che fornisce l'interattività sul web.
@@ -116,13 +116,13 @@ Le variabili possono memorizzare tutti i tipi di numero, inclusi decimali o nume
Esistono diversi tipi di operatori da utilizzare quando si eseguono funzioni aritmetiche e alcuni sono elencati qui:
-| Simbolo | Descrizione | Esempio |
-| ------ | ------------------------------------------------------------------------ | -------------------------------- |
-| `+` | **Addizione**: calcola la somma di due numeri | `1 + 2 // la risposta attesa è 3` |
-| `-` | **Sottrazione**: calcola la differenza tra due numeri | `1-2 // la risposta attesa è -1` |
-| `*` | **Moltiplicazione**: calcola il prodotto di due numeri | `1 * 2 // la risposta attesa è 2` |
-| `/` | **Divisione**: calcola il quoziente di due numeri | `1/2 // la risposta attesa è 0,5` |
-| `%` | **Resto**: calcola il resto dalla divisione di due numeri | `1 % 2 // la risposta attesa è 1` |
+| Simbolo | Descrizione | Esempio |
+| ------- | --------------------------------------------------------- | --------------------------------- |
+| `+` | **Addizione**: calcola la somma di due numeri | `1 + 2 // la risposta attesa è 3` |
+| `-` | **Sottrazione**: calcola la differenza tra due numeri | `1-2 // la risposta attesa è -1` |
+| `*` | **Moltiplicazione**: calcola il prodotto di due numeri | `1 * 2 // la risposta attesa è 2` |
+| `/` | **Divisione**: calcola il quoziente di due numeri | `1/2 // la risposta attesa è 0,5` |
+| `%` | **Resto**: calcola il resto dalla divisione di due numeri | `1 % 2 // la risposta attesa è 1` |
✅ Proviamolo! Provare un'operazione aritmetica nella console del proprio browser. I risultati sorprendono?
@@ -184,7 +184,7 @@ I booleani possono avere solo due valori: vero (`true`) o falso (`false`). I bo
JavaScript è noto per i suoi modi sorprendenti di gestire talvolta i tipi di dato. Effettuare un po' di ricerca su questi "trabocchetti". Ad esempio: la distinzione tra maiuscole e minuscole può mordere! Provare questo nella propria console: `let age = 1; let Age = 2; age == Age` (risulta `false` - perché?). Quali altri trabocchetti si riescono a trovare?
## quiz post-lezione
-[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/8)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/8?loc=it)
## Revisione e auto apprendimento
diff --git a/2-js-basics/2-functions-methods/translations/README.it.md b/2-js-basics/2-functions-methods/translations/README.it.md
index fd7eb8cb..2718bb8d 100644
--- a/2-js-basics/2-functions-methods/translations/README.it.md
+++ b/2-js-basics/2-functions-methods/translations/README.it.md
@@ -5,7 +5,7 @@
## Quiz pre-lezione
-[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/9)
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/9?loc=it)
Quando si pensa di scrivere codice, ci si vuole sempre assicurare che il proprio codice sia leggibile. Anche se questo sembra controintuitivo, il codice viene letto molte più volte di quanto non venga scritto. Uno strumento base nella cassetta degli attrezzi dello sviluppatore è la **funzione**
@@ -184,7 +184,7 @@ Si riesce ad articolare in una frase la differenza tra funzioni e metodi? Fare u
## Quiz post-lezione
-[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/10)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/10?loc=it)
## Revisione e auto apprendimento
diff --git a/2-js-basics/3-making-decisions/translations/README.it.md b/2-js-basics/3-making-decisions/translations/README.it.md
index e1100713..3170511a 100644
--- a/2-js-basics/3-making-decisions/translations/README.it.md
+++ b/2-js-basics/3-making-decisions/translations/README.it.md
@@ -162,7 +162,7 @@ Creare un programma che viene scritto prima con operatori logici, quindi riscriv
---
## Quiz Post-Lezione
-[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/12?loc=12)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/12?loc=it)
## Revisione e Auto Apprendimento
diff --git a/2-js-basics/3-making-decisions/translations/README.ko.md b/2-js-basics/3-making-decisions/translations/README.ko.md
index 716a7e0d..32774b54 100644
--- a/2-js-basics/3-making-decisions/translations/README.ko.md
+++ b/2-js-basics/3-making-decisions/translations/README.ko.md
@@ -4,7 +4,7 @@
> Sketchnote by [Tomomi Imura](https://twitter.com/girlie_mac)
## 강의 전 퀴즈
-[Pre-lecture quiz](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/11&loc=ko)
+[Pre-lecture quiz](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/11?loc=ko)
결정을 내리고 코드가 실행되는 순서를 제어하면 코드를 재사용하며 강력하게 만들 수 있습니다. 이 강의에서는 JavaScript에서 데이터 흐름을 제어하기 위한 구문과 논리 자료형 데이터 타입을 함께 사용하는 중요성을 다룹니다.
diff --git a/2-js-basics/4-arrays-loops/README.md b/2-js-basics/4-arrays-loops/README.md
index 0c307ffd..9c0b5b7e 100644
--- a/2-js-basics/4-arrays-loops/README.md
+++ b/2-js-basics/4-arrays-loops/README.md
@@ -113,7 +113,7 @@ for (let i = 0; i < iceCreamFlavors.length; i++) {
There are other ways of looping over arrays other than for and while loops. There are [forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach), [for-of](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of), and [map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map). Rewrite your array loop using one of these techniques.
## Post-Lecture Quiz
-[Pre-lecture quiz](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/14)
+[Post-lecture quiz](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/14)
## Review & Self Study
diff --git a/2-js-basics/4-arrays-loops/translations/README.it.md b/2-js-basics/4-arrays-loops/translations/README.it.md
index 21014a8e..1a02a71e 100644
--- a/2-js-basics/4-arrays-loops/translations/README.it.md
+++ b/2-js-basics/4-arrays-loops/translations/README.it.md
@@ -113,7 +113,7 @@ for (let i = 0; i < iceCreamFlavors.length; i++) {
Esistono altri modi per eseguire un ciclo sugli array. diversi dai cicli for e while. Ci sono [forEach](https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach), [for-of](https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Statements/for...of) e [map](https://developer.mozilla.org/it/docs/Web/JavaScript/Reference/Global_Objects/Array/map). Riscrivere il ciclo sull'array usando una di queste tecniche.
## Quiz Post-Lezione
-[Quiz Post-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/14?loc=14)
+[Quiz Post-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/14?loc=it)
## Revisione e Auto Apprendimento
diff --git a/2-js-basics/4-arrays-loops/translations/README.ko.md b/2-js-basics/4-arrays-loops/translations/README.ko.md
index 3024f762..e48f9b7b 100644
--- a/2-js-basics/4-arrays-loops/translations/README.ko.md
+++ b/2-js-basics/4-arrays-loops/translations/README.ko.md
@@ -4,7 +4,7 @@
> Sketchnote by [Tomomi Imura](https://twitter.com/girlie_mac)
## 강의 전 퀴즈
-[Pre-lecture quiz](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/13&loc=ko)
+[Pre-lecture quiz](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/13?loc=ko)
이 강의에서는 웹에서 상호 작용을 제공하는 언어인 JavaScript의 기본 사항을 다룹니다. 데이터를 컨트롤하는 데 사용하는 배열과 반복문에 대해 알아 봅니다.
@@ -112,7 +112,7 @@ for (let i = 0; i < iceCreamFlavors.length; i++) {
for문과 while문 외에 배열을 반복하는 다른 방법이 있습니다. [forEach](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach), [for-of](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) 그리고 [map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map)도 있습니다. 해당 기술 중 하나를 사용하여 배열 반복을 다시 작성하십시오.
## 강의 후 퀴즈
-[Post-lecture quiz](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/14&loc=ko)
+[Post-lecture quiz](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/14?loc=ko)
## 리뷰 & 자기주도 학습
diff --git a/2-js-basics/translations/README.de.md b/2-js-basics/translations/README.de.md
index 780512e0..09f65fa6 100644
--- a/2-js-basics/translations/README.de.md
+++ b/2-js-basics/translations/README.de.md
@@ -4,10 +4,10 @@ JavaScript ist die Sprache des Webs. In diesen vier Lektionen lernen Sie die Gru
### Themen
-1. [Variablen und Datentypen](1-Datentypen/README.md)
-2. [Funktionen und Methoden](2-functions-methods/README.md)
-3. [Entscheidungen mit JavaScript treffen](3-making-decisions/README.md)
-4. [Arrays und Loops](4-arrays-loops/README.md)
+1. [Variablen und Datentypen](../1-data-types/translations/README.de.md)
+2. [Funktionen und Methoden](../2-functions-methods/translations/README.de.md)
+3. [Entscheidungen mit JavaScript treffen](../3-making-decisions/translations/README.de.md)
+4. [Arrays und Loops](../4-arrays-loops/translations/README.de.md)
### Credits
diff --git a/2-js-basics/translations/README.es.md b/2-js-basics/translations/README.es.md
index bd17b271..6153dc04 100644
--- a/2-js-basics/translations/README.es.md
+++ b/2-js-basics/translations/README.es.md
@@ -4,10 +4,10 @@ JavaScript es el lenguaje de la web. En estas cuatro lecciones, aprenderá sus c
### Temas
-1. [Variables y tipos de datos](data-types/README.md)
-2. [Funciones y métodos](variables-datatypes/README.md)
-3. [Toma de decisiones con JavaScript](making-decisions/README.md)
-4. [Arrays and Loops](arrays-loops/README.md)
+1. [Variables y tipos de datos](../1-data-types/translations/README.es.md)
+2. [Funciones y métodos](../2-functions-methods/translations/README.es.md)
+3. [Toma de decisiones con JavaScript](../3-making-decisions/translations/README.es.md)
+4. [Arrays and Loops](../4-arrays-loops/translations/README.es.md)
### Créditos
diff --git a/2-js-basics/translations/README.it.md b/2-js-basics/translations/README.it.md
index bee32eb6..5d86f87d 100644
--- a/2-js-basics/translations/README.it.md
+++ b/2-js-basics/translations/README.it.md
@@ -4,10 +4,10 @@ JavaScript è il linguaggio del web. In queste quattro lezioni, si impareranno l
### Argomenti
-1. [Variabili e Tipi di Dato](1-data-types/translations/README.it.md)
-2. [Funzioni e Metodi](2-functions-methods/translations/README.it.md)
-3. [Prendere Decisioni con JavaScript](3-making-decisions/translations/README.it.md)
-4. [Array e Cicli](4-arrays-loops/translations/README.it.md)
+1. [Variabili e Tipi di Dato](../1-data-types/translations/README.it.md)
+2. [Funzioni e Metodi](../2-functions-methods/translations/README.it.md)
+3. [Prendere Decisioni con JavaScript](../3-making-decisions/translations/README.it.md)
+4. [Array e Cicli](../4-arrays-loops/translations/README.it.md)
### Crediti
diff --git a/2-js-basics/translations/README.ja.md b/2-js-basics/translations/README.ja.md
index 246a1737..f48342cc 100644
--- a/2-js-basics/translations/README.ja.md
+++ b/2-js-basics/translations/README.ja.md
@@ -4,10 +4,10 @@ JavaScript は Web の言語です。この4つのレッスンでは、その基
### トピック
-1. [変数とデータ型](1-data-types/README.md)
-2. [関数とメソッド](2-functions-methods/README.md)
-3. [JavaScript での意思決定](3-making-decisions/README.md)
-4. [配列とループ](4-arrays-loops/README.md)
+1. [変数とデータ型](../1-data-types/translations/README.ja.md)
+2. [関数とメソッド](../2-functions-methods/translations/README.ja.md)
+3. [JavaScript での意思決定](../3-making-decisions/translations/README.ja.md)
+4. [配列とループ](../4-arrays-loops/translations/README.ja.md)
### Credits
diff --git a/2-js-basics/translations/README.ms.md b/2-js-basics/translations/README.ms.md
index f3e042f2..b07d07c6 100644
--- a/2-js-basics/translations/README.ms.md
+++ b/2-js-basics/translations/README.ms.md
@@ -4,10 +4,10 @@ JavaScript adalah bahasa web. Dalam empat pelajaran ini, anda akan mengetahui as
### Topik
-1. [Pemboleh ubah dan Jenis Data](1-data-types/README.md)
-2. [Fungsi dan Kaedah](2-functions-methods/README.md)
-3. [Membuat Keputusan dengan JavaScript](3-making-decisions/README.md)
-4. [Susunan dan Gelung](4-arrays-loops/README.md)
+1. [Pemboleh ubah dan Jenis Data](../1-data-types/translations/README.ms.md)
+2. [Fungsi dan Kaedah](../2-functions-methods/translations/README.ms.md)
+3. [Membuat Keputusan dengan JavaScript](../3-making-decisions/translations/README.ms.md)
+4. [Susunan dan Gelung](../4-arrays-loops/translations/README.ms.md)
### Kredit
diff --git a/4-typing-game/typing-game/translations/README.it.md b/4-typing-game/typing-game/translations/README.it.md
index 4e17044e..7c67117c 100644
--- a/4-typing-game/typing-game/translations/README.it.md
+++ b/4-typing-game/typing-game/translations/README.it.md
@@ -2,7 +2,7 @@
## Quiz Pre-Lezione
-[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/21)
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/21?loc=it)
## Programmazione guidata dagli eventi
@@ -328,7 +328,7 @@ Aggiungere più funzionalità
## Quiz Post-Lezione
-[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/22)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/22?loc=it)
## Revisione e Auto Apprendimento
diff --git a/5-browser-extension/1-about-browsers/translations/README.it.md b/5-browser-extension/1-about-browsers/translations/README.it.md
index d9bb346d..bdff1237 100644
--- a/5-browser-extension/1-about-browsers/translations/README.it.md
+++ b/5-browser-extension/1-about-browsers/translations/README.it.md
@@ -5,7 +5,7 @@
## Quiz Pre-Lezione
-[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/23)
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/23?loc=it)
### Introduzione
@@ -152,7 +152,7 @@ Si dia un'occhiata alle estensioni del browser in uno store e se ne installi una
## Quiz Post-Lezione
-[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/24)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/24?loc=it)
## Revisione e Auto Apprendimento
diff --git a/5-browser-extension/2-forms-browsers-local-storage/translations/README.it.md b/5-browser-extension/2-forms-browsers-local-storage/translations/README.it.md
index d7de59f3..f2922d05 100644
--- a/5-browser-extension/2-forms-browsers-local-storage/translations/README.it.md
+++ b/5-browser-extension/2-forms-browsers-local-storage/translations/README.it.md
@@ -2,7 +2,7 @@
## Quiz Pre-Lezione
-[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/25)
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/25?loc=it)
### Introduzione
@@ -212,8 +212,7 @@ Finora si è discusso sui diversi tipi di API in queste lezioni. Scegliere un'AP
## Quiz Post-Lezione
-[
-Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/26)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/26?loc=it)
## Revisione e Auto Apprendimento
diff --git a/5-browser-extension/3-background-tasks-and-performance/translations/README.it.md b/5-browser-extension/3-background-tasks-and-performance/translations/README.it.md
index 1061a430..78a01c39 100644
--- a/5-browser-extension/3-background-tasks-and-performance/translations/README.it.md
+++ b/5-browser-extension/3-background-tasks-and-performance/translations/README.it.md
@@ -2,7 +2,7 @@
## Quiz Pre-Lezione
-[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/27)
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/27?loc=it)
### Introduzione
@@ -147,7 +147,7 @@ Esaminare alcuni siti web open source che esistono da molto tempo e, in base all
## Quiz Post-Lezione
-[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/28)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/28?loc=it)
## Revisione e Auto Apprendimento
diff --git a/6-space-game/1-introduction/translations/README.hi.md b/6-space-game/1-introduction/translations/README.hi.md
index 15ffb2f8..bffa5eb1 100644
--- a/6-space-game/1-introduction/translations/README.hi.md
+++ b/6-space-game/1-introduction/translations/README.hi.md
@@ -211,7 +211,7 @@ eventEmitter.on(Messages.HERO_MOVE_LEFT, () => {
## लेक्चर बाद की क्विज
-[लेक्चर बाद की क्विज](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/30?loc=30)
+[लेक्चर बाद की क्विज](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/30?loc=hi)
## समीक्षा और स्व अध्ययन
diff --git a/6-space-game/1-introduction/translations/README.it.md b/6-space-game/1-introduction/translations/README.it.md
index 4caeabb0..215b026e 100644
--- a/6-space-game/1-introduction/translations/README.it.md
+++ b/6-space-game/1-introduction/translations/README.it.md
@@ -4,7 +4,7 @@
## Quiz Pre-Lezione
-[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/29)
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/29?loc=it)
### Ereditarietà e Composizione nello sviluppo del gioco
@@ -213,8 +213,7 @@ Pensare a come il modello pub/sub può migliorare un gioco. Quali parti dovrebbe
## Quiz Post-Lezione
-[
-Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/30)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/30?loc=it)
## Revisione e Auto Apprendimento
diff --git a/6-space-game/2-drawing-to-canvas/translations/README.it.md b/6-space-game/2-drawing-to-canvas/translations/README.it.md
index e819db12..f460000d 100644
--- a/6-space-game/2-drawing-to-canvas/translations/README.it.md
+++ b/6-space-game/2-drawing-to-canvas/translations/README.it.md
@@ -2,7 +2,7 @@
## Quiz Pre-Lezione
-[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/31)
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/31?loc=it)
## Canvas
@@ -205,8 +205,7 @@ Si è imparato a disegnare con l'API Canvas incentrata sul 2D; dare un'occhiata
## Quiz Post-Lezione
-[
-Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/32)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/32?loc=it)
## Revisione e Auto Apprendimento
diff --git a/6-space-game/3-moving-elements-around/translations/README.it.md b/6-space-game/3-moving-elements-around/translations/README.it.md
index dda320dc..5abdc80b 100644
--- a/6-space-game/3-moving-elements-around/translations/README.it.md
+++ b/6-space-game/3-moving-elements-around/translations/README.it.md
@@ -2,7 +2,7 @@
## Quiz Pre-Lezione
-[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/33)
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/33?loc=it)
I giochi non sono molto divertenti finché non si hanno alieni che scorazzano per lo schermo! In questo gioco, si utilizzeranno due tipi di movimenti:
@@ -377,8 +377,7 @@ Come si può vedere, il proprio codice può trasformarsi in ["spaghetti code"](h
## Quiz Post-Lezione
-[
-Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/34)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/34?loc=it)
## Revisione e Auto Apprendimento
diff --git a/6-space-game/4-collision-detection/translations/README.it.md b/6-space-game/4-collision-detection/translations/README.it.md
index dd37d9c0..070b0fa3 100644
--- a/6-space-game/4-collision-detection/translations/README.it.md
+++ b/6-space-game/4-collision-detection/translations/README.it.md
@@ -2,7 +2,7 @@
## Quiz Pre-Lezione
-[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/35)
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/35?loc=it)
In questa lezione si imparererà come fare fuoco con i laser con JavaScript! Verranno aggiunte due cose al gioco:
@@ -286,8 +286,7 @@ Aggiungere un'esplosione! Dare un'occhiata alle risorse di gioco [nel repository
## Quiz Post-Lezione
-[
-Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/36)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/36?loc=it)
## Revisione e Auto Apprendimento
diff --git a/6-space-game/5-keeping-score/translations/README.it.md b/6-space-game/5-keeping-score/translations/README.it.md
index f2f82c6b..616246e2 100644
--- a/6-space-game/5-keeping-score/translations/README.it.md
+++ b/6-space-game/5-keeping-score/translations/README.it.md
@@ -2,7 +2,7 @@
## Quiz Pre-Lezione
-[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/37)
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/37?loc=it)
In questa lezione si imparerà come aggiungere punteggi a una partita e calcolare le vite.
@@ -178,8 +178,7 @@ Il codice è quasi completo. Si riescono a immaginare i prossimi passi?
## Quiz Post-Lezione
-[
-Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/38)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/38?loc=it)
## Revisione e Auto Apprendimento
diff --git a/6-space-game/6-end-condition/translations/README.it.md b/6-space-game/6-end-condition/translations/README.it.md
index 814901a9..ea7da529 100644
--- a/6-space-game/6-end-condition/translations/README.it.md
+++ b/6-space-game/6-end-condition/translations/README.it.md
@@ -2,7 +2,7 @@
## Quiz Pre-Lezione
-[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/39)
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/39?loc=it)
Esistono diversi modi per esprimere una *condizione di fine gioco*. Spetta al creatore del gioco dire perché il gioco è finito. Ecco alcuni motivi, si supponga di parlare del gioco spaziale costruito finora:
@@ -211,8 +211,7 @@ Aggiungere un suono! Si può aggiungere un suono per migliorare il gioco, magari
## Quiz Post-Lezione
-[
-Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/40)
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/40?loc=it)
## Revisione e Auto Apprendimento
diff --git a/7-bank-project/1-template-route/translations/README.it.md b/7-bank-project/1-template-route/translations/README.it.md
new file mode 100644
index 00000000..7c45b6ba
--- /dev/null
+++ b/7-bank-project/1-template-route/translations/README.it.md
@@ -0,0 +1,306 @@
+# Creazione di un'App Bancaria Parte 1: Modelli HTML e Rotte in un'app web
+
+## Quiz Pre-Lezione
+
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/41?loc=it)
+
+### Introduzione
+
+Dall'avvento di JavaScript nei browser, i siti web stanno diventando più interattivi e complessi che mai. Le tecnologie web sono ora comunemente utilizzate per creare applicazioni completamente funzionali che vengono eseguite direttamente in un browser che vengono chiamate [applicazioni web](https://it.wikipedia.org/wiki/Applicazione_web). Poiché le app web sono altamente interattive, gli utenti non desiderano attendere il ricaricamento di una pagina intera ogni volta che viene eseguita un'azione. Ecco perché JavaScript viene utilizzato per aggiornare l'HTML direttamente utilizzando il DOM, per fornire un'esperienza utente più fluida.
+
+In questa lezione, getteremo le basi per creare un'app web bancaria, utilizzando modelli HTML per creare più schermate che possono essere visualizzate e aggiornate senza dover ricaricare l'intera pagina HTML.
+
+### Prerequisito
+
+È necessario un server web locale per testare l'app web che verrà creata in questa lezione. Se non ne ha uno, si può installare [Node.js](https://nodejs.org) e utilizzare il comando `npx lite-server` dalla cartella del progetto. Creerà un server web locale e aprirà la propria app in un browser.
+
+### Preparazione
+
+Sul proprio computer, creare una cartella denominata `bank` con un file denominato `index.html` al suo interno. Si inizierà da questo codice [boilerplate](https://en.wikipedia.org/wiki/Boilerplate_code) HTML:
+
+```html
+
+
+
+
+
+ Bank App
+
+
+
+
+
+```
+
+---
+
+## Modelli HTML.
+
+Se si desidera creare più schermate per una pagina Web, una soluzione potrebbe essere la creazione di un file HTML per ogni schermata che si desidera visualizzare. Tuttavia, questa soluzione presenta alcuni inconvenienti:
+
+- È necessario ricaricare l'intero HTML quando si cambia schermata, il che può essere lento.
+- È difficile condividere i dati tra le diverse schermate.
+
+Un altro approccio consiste nell'avere un solo file HTML e definire più [modelli HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/template) utilizzando l'elemento ``. Un modello è un blocco HTML riutilizzabile che non viene visualizzato dal browser e deve essere istanziato in fase di esecuzione utilizzando JavaScript.
+
+### Attività
+
+Verrà creata un'app bancaria con due schermate: la pagina di accesso e il cruscotto. Innanzitutto, si aggiunge nel corpo dell'HTML un elemento segnaposto che si utilizzerà per istanziare le diverse schermate dell'app:
+
+```html
+
Loading...
+```
+
+Viene fornito un `ID` all'elemento per renderlo più facilmente individuabile con JavaScript in seguito.
+
+> Suggerimento: poiché il contenuto di questo elemento verrà sostituito, si può inserire un messaggio di caricamento o un indicatore che verrà mostrato durante il caricamento dell'app.
+
+Successivamente, si aggiunge il modello HTML seguente per la pagina di accesso. Per ora si inserirà solo un titolo e una sezione contenente un collegamento che si utilizzerà per eseguire la navigazione.
+
+```html
+
+
Bank App
+
+ Login
+
+
+```
+
+Quindi si aggiungerà un altro modello HTML per la pagina del cruscotto. Questa pagina conterrà diverse sezioni:
+
+- Un'intestazione con un titolo e un collegamento di disconnessione
+- Saldo corrente del conto bancario
+- Un elenco di transazioni, visualizzato in una tabella
+
+```html
+
+
+
+
+
+```
+
+> Suggerimento: durante la creazione di modelli HTML, se si vuole vedere come apparirà, si possono commentare le righe tra `` `` racchiudendole `tra -->`.
+
+✅ Perché si pensa che vengano utilizzati gli attributi `id` sui modelli? Si potrebbe usare qualcos'altro come le classi?
+
+## Visualizzazione di modelli con JavaScript
+
+Se si prova il proprio file HTML corrente in un browser, si vedrà che si blocca visualizzando `Loading ...` Questo perché si deve aggiungere del codice JavaScript per istanziare e visualizzare i modelli HTML.
+
+L'istanza di un modello viene solitamente eseguita in 3 passaggi:
+
+1. Recuperare l'elemento del modello nel DOM, ad esempio utilizzando [`document.getElementById`](https://developer.mozilla.org/it/docs/Web/API/Document/getElementById).
+2. Clonare l'elemento template, usando [`cloneNode`](https://developer.mozilla.org/en-US/docs/Web/API/Node/cloneNode).
+3. Collegarlo al DOM sotto un elemento visibile, ad esempio utilizzando [`appendChild`](https://developer.mozilla.org/it/docs/Web/API/Node/appendChild).
+
+✅ Perché è necessario clonare il modello prima di collegarlo al DOM? Cosa si pensa che accadrebbe se venisse saltato questo passaggio?
+
+### Attività
+
+Creare un nuovo file denominato `app.js` nella cartella del progetto e importare quel file nella sezione `` del proprio HTML:
+
+```html
+
+```
+
+Ora in `app.js`, verrà creata una nuova funzione `updateRoute`:
+
+```js
+function updateRoute(templateId) {
+ const template = document.getElementById(templateId);
+ const view = template.content.cloneNode(true);
+ const app = document.getElementById('app');
+ app.innerHTML = '';
+ app.appendChild(view);
+}
+```
+
+Quello che si fa qui sono esattamente i 3 passaggi descritti sopra. Si istanza il modello con l'id `templateId` e si inserisce il suo contenuto clonato nel segnaposto dell'app. Notare che si deve usare `cloneNode (true)` per copiare l'intero sottoalbero del modello.
+
+Ora chiamare questa funzione con uno dei template e guardare il risultato.
+
+```js
+updateRoute('login');
+```
+
+✅ Qual è lo scopo di questo codice `app.innerHTML = '';`? Cosa succede senza di essa?
+
+## Creazione di rotte
+
+Quando si parla di un'app web, si definisce *Routing* (instradamento) l'intento di mappare gli **URL** a schermate specifiche che dovrebbero essere visualizzate. Su un sito web con più file HTML, questa operazione viene eseguita automaticamente poiché i percorsi dei file si riflettono sull'URL. Ad esempio, con questi file nella cartella del progetto:
+
+```
+mywebsite/index.html
+mywebsite/login.html
+mywebsite/admin/index.html
+```
+
+Se si crea un server web con `mywebsite` come radice, la mappatura dell'URL sarà:
+
+```
+https://site.com --> mywebsite/index.html
+https://site.com/login.html --> mywebsite/login.html
+https://site.com/admin/ --> mywebsite/admin/index.html
+```
+
+Tuttavia, per l'app web in costruzione si utilizza un singolo file HTML contenente tutte le schermate, quindi questo comportamento predefinito non sarà di aiuto. Si deve creare questa mappa manualmente ed eseguire l'aggiornamento del modello visualizzato utilizzando JavaScript.
+
+### Attività
+
+Si userà un semplice oggetto per implementare una [mappa](https://it.wikipedia.org/wiki/Array_associativo) tra i percorsi degli URL e i propri modelli. Aggiungere questo oggetto all'inizio del file `app.js`.
+
+```js
+const routes = {
+ '/login': { templateId: 'login' },
+ '/dashboard': { templateId: 'dashboard' },
+};
+```
+
+Ora modificare un po' la funzione `updateRoute`. Invece di passare direttamente il `templateId` come argomento, lo si vuole recuperare guardando prima l'URL corrente, quindi utilizzndo la mappa per ottenere il valore dell'ID del modello corrispondente. Si può usare [`window.location.pathname`](https://developer.mozilla.org/en-US/docs/Web/API/Location/pathname) per ottenere solo la sezione del percorso dall'URL.
+
+```js
+function updateRoute() {
+ const path = window.location.pathname;
+ const route = routes[path];
+
+ const template = document.getElementById(route.templateId);
+ const view = template.content.cloneNode(true);
+ const app = document.getElementById('app');
+ app.innerHTML = '';
+ app.appendChild(view);
+}
+```
+
+Qui sono state mappato le rotte che sono state dichiarate al modello corrispondente. Si può provare se funziona correttamente modificando manualmente l'URL nel proprio browser.
+
+✅ Cosa succede se si inserisce un percorso sconosciuto nell'URL? Come potrebbe essere risolto questo problema?
+
+## Aggiungere navigazione
+
+Il prossimo passo per la costruzione dell'app è aggiungere la possibilità di navigare tra le pagine senza dover modificare manualmente l'URL. Questo implica due cose:
+
+1. Aggiornamento dell'URL corrente
+2. Aggiornamento del modello visualizzato in base al nuovo URL
+
+E' già stata trattata la seconda parte con la funzione `updateRoute`, quindi occorre capire come aggiornare l'URL corrente.
+
+Si dovrà utilizzare JavaScript e più precisamente [history.pushState](https://developer.mozilla.org/en-US/docs/Web/API/History/pushState) che permette di aggiornare l'URL e creare una nuova voce nella cronologia di navigazione, senza ricaricare l'HTML.
+
+> Nota: Sebbene l'elemento HTML ancora [``](https://developer.mozilla.org/it/docs/Web/HTML/Element/a) possa essere usato da solo per creare collegamenti ipertestuali a diversi URL, è anche in grado di fare ricaricare al browser l'HTML nella modalità predefinita. È necessario prevenire questo comportamento quando si gestisce il routing con javascript personalizzato, utilizzando la funzione preventDefault() sull'evento click.
+
+### Attività
+
+Si crea una nuova funzione da utilizzare per navigare nell'app:
+
+```js
+function navigate(path) {
+ window.history.pushState({}, path, window.location.origin + path);
+ updateRoute();
+}
+```
+
+Questo metodo aggiorna prima l'URL corrente in base al percorso fornito, quindi aggiorna il modello. La proprietà `window.location.origin` restituisce l'URL radice, permettendo di ricostruire un URL completo da un dato percorso.
+
+Ora che si ha questa funzione, ci si può occupare del problema che si verifica se un percorso non corrisponde a nessuna rotta definita. Si modificherà la funzione `updateRoute` aggiungendo una soluzione di contingenza per indirizzare verso una delle rotte esistenti se non viene trovata una corrispondenza.
+
+```js
+function updateRoute() {
+ const path = window.location.pathname;
+ const route = routes[path];
+
+ if (!route) {
+ return navigate('/login');
+ }
+
+ ...
+```
+
+Se non è possibile trovare una rotta, si esegue un reindirizzamento alla pagina `login`.
+
+Ora si crea una funzione per ottenere l'URL quando si fa clic su un collegamento e per impedire il comportamento predefinito del browser per un collegamento:
+
+```js
+function onLinkClick(event) {
+ event.preventDefault();
+ navigate(event.target.href);
+}
+```
+
+Si completa il sistema di navigazione aggiungendo collegamenti ai link di accesso (*Login*) e di disconnessione (*Logout*) nell'HTML.
+
+```html
+Login
+...
+Logout
+```
+
+Utilizzando l 'attributo [`onclick`](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onclick) associare l'evento `click` al codice JavaScript, in questo caso la chiamata alla funzione `navigate()` .
+
+Provare a fare clic su questi collegamenti, ora si dovrebbe essere in grado di navigare tra le diverse schermate dell'app.
+
+✅ Il metodo `history.pushState` fa parte dello standard HTML5 e implementato in [tutti i browser moderni](https://caniuse.com/?search=pushState). Se si sta creando un'app web per browser meno recenti, c'è un trucco che si può usare al posto di questa API: usando un [hash (`#`)](https://en.wikipedia.org/wiki/URI_fragment) prima del percorso si può implementare un instradatamento che funziona con la normale navigazione dell'elemento ancora e non ricarica la pagina, poiché il suo scopo era creare collegamenti all'interno di una pagina.
+
+## Gestione dei pulsanti Avanti e Indietro del browser
+
+L'utilizzo di `history.pushState` crea nuove voci nella cronologia di navigazione del browser. Si può verificare tenendo premuto il *pulsante Indietro* del proprio browser, dovrebbe visualizzare qualcosa del genere:
+
+![Videata della cronologia di navigazione](../history.png)
+
+Se si prova a fare clic sul pulsante Indietro alcune volte, si vedrà che l'URL corrente cambia e la cronologia viene aggiornata, ma lo stesso modello continua a essere visualizzato.
+
+Questo perché il browser non sa che si deve chiamare `updateRoute()` ogni volta che cambia la cronologia. Se si dà un'occhiata alla documentazione di [`history.pushState`](https://developer.mozilla.org/en-US/docs/Web/API/History/pushState) si può vedere che se lo stato cambia, vale a dire che si è passati a un URL diverso, viene attivato l'[evento](https://developer.mozilla.org/en-US/docs/Web/API/Window/popstate_event) `popstate`. Verrà usato per risolvere quel problema.
+
+### Attività
+
+Per assicurarsi che il modello visualizzato venga aggiornato quando la cronologia del browser cambia, si aggiungerà una nuova funzione che chiama `updateRoute()`. Verrà fatto in fondo al file `app.js`:
+
+```js
+window.onpopstate = () => updateRoute();
+updateRoute();
+```
+
+> Nota: è stata usata una [funzione freccia](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) qui per dichiarare il gestore di eventi `popstate` per concisione, ma una funzione normale andrebbe bene allo stesso modo.
+
+Ecco un video di aggiornamento sulle funzioni freccia:
+
+[![Funzionifreccia](https://img.youtube.com/vi/OP6eEbOj2sc/0.jpg)](https://youtube.com/watch?v=OP6eEbOj2sc "")
+
+> Fare clic sull'immagine sopra per un video sulle funzioni freccia
+
+Ora provare a utilizzare i pulsanti Indietro e Avanti del proprio browser e controllare che il percorso visualizzato sia aggiornato correttamente questa volta.
+
+---
+
+## 🚀 Sfida
+
+Aggiungere un nuovo modello e instradare per una terza pagina che mostra i crediti per questa app.
+
+## Quiz Post-Lezione
+
+[Quiz post-lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/42?loc=it)
+
+## Revisione e Auto Apprendimento
+
+Il routing (instradamento) è una delle parti sorprendentemente complicate dello sviluppo web, soprattutto perché il web passa dai comportamenti di aggiornamento della pagina all'aggiornamento della pagina dell'applicazione a pagina singola. Leggere alcune informazioni su [come il servizio App Web Static di Azure](https://docs.microsoft.com/en-us/azure/static-web-apps/routes?WT.mc_id=academic-4621-cxa) gestisce il routing. Si può spiegare perché alcune delle decisioni descritte in quel documento sono necessarie?
+
+## Compito
+
+[Migliorare l'instradamento](assignment.it.md)
diff --git a/7-bank-project/1-template-route/translations/assignment.it.md b/7-bank-project/1-template-route/translations/assignment.it.md
new file mode 100644
index 00000000..51dd5958
--- /dev/null
+++ b/7-bank-project/1-template-route/translations/assignment.it.md
@@ -0,0 +1,14 @@
+# Migliorare l'instradamento
+
+## Istruzioni
+
+La dichiarazione delle rotte contiene attualmente solo l'ID del modello da utilizzare. Quando si visualizza una nuova pagina, a volte è necessario un po 'di più. L'implementazione del routing viene migliorata con due funzionalità aggiuntive:
+
+- Assegnare titoli a ciascun modello e aggiornare il titolo della finestra con questo nuovo titolo quando il modello cambia.
+- Aggiungere un'opzione per eseguire del codice dopo le modifiche al modello. Si vuole stampare `"Il cruscotto è mostrato" nella` console per sviluppatori ogni volta che viene visualizzata la pagina del dashboard.
+
+## Rubrica
+
+| Criteri | Ottimo | Adeguato | Necessita miglioramento |
+| -------- | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
+| | Le due funzionalità sono implementate e funzionanti. L'aggiunta di titolo e codice funziona anche per una nuova rotta aggiunta nella dichiarazione di `routes` . | Sono funzionanti i due comportamenti aggiuntivi, ma il comportamento è fisso nel codice e non è configurabile tramite la dichiarazione di `routes`. L'aggiunta di una terza rotta con l'aggiunta di titolo e codice non funziona o funziona parzialmente. | Una delle funzionalità manca o non funziona correttamente. |
\ No newline at end of file
diff --git a/7-bank-project/2-forms/translations/README.it.md b/7-bank-project/2-forms/translations/README.it.md
new file mode 100644
index 00000000..d6d85592
--- /dev/null
+++ b/7-bank-project/2-forms/translations/README.it.md
@@ -0,0 +1,293 @@
+# Creazione di un'App Bancaria Parte 2: Creazione di un form di accesso e registrazione
+
+## Quiz Pre-Lezione
+
+[Quiz Pre-Lezione](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/43?loc=it)
+
+### Introduzione
+
+In quasi tutte le moderne app web, si può creare un account per avere il proprio spazio privato. Poiché più utenti possono accedere a un'app web contemporaneamente, è necessario un meccanismo per archiviare i dati personali di ciascun utente separatamente e selezionare le informazioni da visualizzare. Non verrà trattato come gestire [l'identità dell'utente in modo sicuro](https://it.wikipedia.org/wiki/Autenticazione) poiché si tratta di un argomento ampio di per sé, ma ci si assicurerà che ogni utente sia in grado di creare uno (o più) conto bancario nella app.
+
+In questa parte si utilizzeranno form HTML per aggiungere login e registrazione all'app. Si vedrà come inviare i dati a un'API del server a livello di programmazione e, infine, come definire le regole di convalida di base per gli input dell'utente.
+
+### Prerequisito
+
+È necessario aver completato i [modelli HTML e il routing](../../1-template-route/translations/README.it.md) dell'app web per questa lezione. È inoltre necessario installare [Node.js](https://nodejs.org) ed [eseguirel'API del server](../../api/README.md) in locale in modo da poter inviare dati per creare account.
+
+Si può verificare che il server funzioni correttamente eseguendo questo comando in un terminale:
+
+```sh
+curl http://localhost:5000/api
+# -> dovrebbe restituire "Bank API v1.0.0" come risultato
+```
+
+---
+
+## Form e controlli
+
+L'elemento `