diff --git a/1-getting-started-lessons/1-intro-to-programming-languages/translations/.github/post-lecture-quiz.id.md b/1-getting-started-lessons/1-intro-to-programming-languages/translations/.github/post-lecture-quiz.id.md
deleted file mode 100644
index 40a002b9..00000000
--- a/1-getting-started-lessons/1-intro-to-programming-languages/translations/.github/post-lecture-quiz.id.md
+++ /dev/null
@@ -1,18 +0,0 @@
-*Selesaikan kuis ini bersama dengan kiriman Anda dengan memeriksa satu jawaban per pertanyaan.*
-
-1. Bahasa apa yang kemungkinan besar akan Anda gunakan untuk membuat situs web?
-
-- [ ] Machine Code (Kode Mesin)
-- [ ] JavaScript
-- [ ] Bash
-
-2. Lingkungan pengembangan unik untuk setiap pengembang
-
-- [ ] Benar
-- [ ] Salah
-
-3. Apa yang akan dilakukan pengembang untuk memperbaiki kode buggy (mudah rusak)?
-
-- [ ] Syntax highlighting (Penyorotan sintaks)
-- [ ] Debugging
-- [ ] Code formatting (Pemformatan kode)
diff --git a/1-getting-started-lessons/1-intro-to-programming-languages/translations/.github/pre-lecture-quiz.id.md b/1-getting-started-lessons/1-intro-to-programming-languages/translations/.github/pre-lecture-quiz.id.md
deleted file mode 100644
index 6846d246..00000000
--- a/1-getting-started-lessons/1-intro-to-programming-languages/translations/.github/pre-lecture-quiz.id.md
+++ /dev/null
@@ -1,18 +0,0 @@
-*Selesaikan kuis ini di kelas*
-
-1. Sebuah program dapat dibuat tanpa pembuatnya menulis kode apapun
-
-- [ ] Benar
-- [ ] Salah
-
-2. Bahasa tingkat rendah adalah pilihan populer untuk:
-
-- [ ] Website
-- [ ] Hardware
-- [ ] Perangkat lunak permainan video
-
-3. Manakah dari alat berikut yang kemungkinan besar ada di lingkungan pengembang web?
-
-- [ ] Hardware, like a Raspberry Pi
-- [ ] Browser DevTools
-- [ ] Operating system documentation
diff --git a/1-getting-started-lessons/1-intro-to-programming-languages/translations/README.id.md b/1-getting-started-lessons/1-intro-to-programming-languages/translations/README.id.md
index 36800646..6a3682f6 100644
--- a/1-getting-started-lessons/1-intro-to-programming-languages/translations/README.id.md
+++ b/1-getting-started-lessons/1-intro-to-programming-languages/translations/README.id.md
@@ -6,7 +6,8 @@ Pelajaran ini mencakup dasar-dasar bahasa pemrograman. Topik yang dibahas di sin
> Catatan sketsa oleh [Tomomi Imura](https://twitter.com/girlie_mac)
## Kuis Pra-Kuliah
-[Kuis pra-kuliah](.github/pre-lecture-quiz.id.md)
+
+[Kuis pra-kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/1?loc=id)
## Pengantar
@@ -179,6 +180,10 @@ Ketika pengembang ingin mempelajari sesuatu yang baru, mereka kemungkinan besar
Bandingkan beberapa bahasa pemrograman. Apa saja ciri-ciri unik JavaScript vs. Java? Bagaimana dengan COBOL vs. Go?
+## Kuis Pasca-Kuliah
+
+[Kuis pasca-kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/2?loc=id)
+
## Ulasan & Belajar Mandiri
Pelajari sedikit tentang berbagai bahasa yang tersedia untuk programmer. Cobalah untuk menulis baris dalam satu bahasa, dan kemudian mengulanginya pada dua bahasa lainnya. Apa yang Anda pelajari?
diff --git a/1-getting-started-lessons/2-github-basics/translations/.github/post-lecture-quiz.id.md b/1-getting-started-lessons/2-github-basics/translations/.github/post-lecture-quiz.id.md
deleted file mode 100644
index d76b1db5..00000000
--- a/1-getting-started-lessons/2-github-basics/translations/.github/post-lecture-quiz.id.md
+++ /dev/null
@@ -1,19 +0,0 @@
-*Selesaikan kuis ini dengan mencentang satu jawaban per pertanyaan.*
-
-1. Tempat untuk membandingkan dan mendiskusikan perbedaan yang diperkenalkan pada cabang dengan review, komentar, tes terintegrasi, dan banyak lagi adalah:
-
-- [ ] GitHub
-- [ ] Pull Request (Tarik Permintaan)
-- [ ] Feature branch (Cabang fitur)
-
-2. Bagaimana Anda mendapatkan semua komit dari cabang remote (jarak jauh)?
-
-- [ ] `git fetch`
-- [ ] `git pull`
-- [ ] `git commits -r`
-
-3. Bagaimana Anda beralih ke sebuah cabang (branch)?
-
-- [ ] `git switch [branch-name]`
-- [ ] `git checkout [branch-name]`
-- [ ] `git load [branch-name]`
diff --git a/1-getting-started-lessons/2-github-basics/translations/.github/pre-lecture-quiz.id.md b/1-getting-started-lessons/2-github-basics/translations/.github/pre-lecture-quiz.id.md
deleted file mode 100644
index 920d8332..00000000
--- a/1-getting-started-lessons/2-github-basics/translations/.github/pre-lecture-quiz.id.md
+++ /dev/null
@@ -1,13 +0,0 @@
-*Selesaikan kuis ini di kelas*
-
-1. Bagaimana Anda membuat repo Git?
-
-- [ ] git create
-- [ ] git start
-- [ ] git init
-
-2. Apa fungsi `git add`?
-
-- [ ] Commit (menyerahkan) kode Anda
-- [ ] Menambahkan file Anda ke area pementasan (staging area) untuk dilacak
-- [ ] Menambahkan file Anda ke GitHub
diff --git a/1-getting-started-lessons/2-github-basics/translations/README.id.md b/1-getting-started-lessons/2-github-basics/translations/README.id.md
index bb7d570b..15e4b819 100644
--- a/1-getting-started-lessons/2-github-basics/translations/README.id.md
+++ b/1-getting-started-lessons/2-github-basics/translations/README.id.md
@@ -6,7 +6,8 @@ Pelajaran ini mencakup dasar-dasar GitHub, platform untuk menghosting dan mengel
> Catatan sketsa oleh [Tomomi Imura](https://twitter.com/girlie_mac)
## Kuis Pra-Kuliah
-[Kuis pra-kuliah](.github/pre-lecture-quiz.id.md)
+
+[Kuis pra-kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/3?loc=id)
## Pengantar
@@ -272,7 +273,8 @@ Proyek mungkin juga memiliki diskusi di forum, milis, atau saluran obrolan seper
Sandingkan dengan seorang teman untuk mengerjakan kode satu sama lain. Buat proyek secara kolaboratif, buat kode, buat cabang, dan gabungkan perubahan.
## Kuis Pasca Kuliah
-[Kuis pasca kuliah](.github/post-lecture-quiz.id.md)
+
+[Kuis pasca kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/4?loc=id)
## Review & Belajar Mandiri
@@ -288,4 +290,4 @@ Anda juga akan menemukan lab yang lebih canggih.
## Tugas
-Selesaikan [Minggu Pertama di lab pelatihan GitHub](https://lab.github.com/githubtraining/first-week-on-github)
\ No newline at end of file
+Selesaikan [Minggu Pertama di lab pelatihan GitHub](https://lab.github.com/githubtraining/first-week-on-github)
diff --git a/1-getting-started-lessons/3-accessibility/translations/.github/post-lecture-quiz.id.md b/1-getting-started-lessons/3-accessibility/translations/.github/post-lecture-quiz.id.md
deleted file mode 100644
index 07bd77ec..00000000
--- a/1-getting-started-lessons/3-accessibility/translations/.github/post-lecture-quiz.id.md
+++ /dev/null
@@ -1,17 +0,0 @@
-*Selesaikan kuis ini dengan mencentang satu jawaban per pertanyaan.*
-
-1. Lighthouse hanya memeriksa masalah aksesibilitas
-
-- [ ] benar
-- [ ] salah
-
-2. Palet warna aman membantu orang dengan
-
-- [ ] buta warna
-- [ ] gangguan penglihatan
-- [ ] keduanya di atas
-
-3. Tautan deskriptif sangat penting untuk situs web yang dapat diakses
-
-- [ ] benar
-- [ ] salah
diff --git a/1-getting-started-lessons/3-accessibility/translations/.github/pre-lecture-quiz.id.md b/1-getting-started-lessons/3-accessibility/translations/.github/pre-lecture-quiz.id.md
deleted file mode 100644
index 4043378c..00000000
--- a/1-getting-started-lessons/3-accessibility/translations/.github/pre-lecture-quiz.id.md
+++ /dev/null
@@ -1,17 +0,0 @@
-*Selesaikan kuis ini di kelas*
-
-1. Situs web yang dapat diakses dapat diperiksa di alat browser mana
-
-- [ ] Lighthouse
-- [ ] Deckhouse
-- [ ] Cleanhouse
-
-2. Anda memerlukan pembaca layar fisik untuk menguji aksesibilitas bagi pengguna dengan gangguan penglihatan
-
-- [ ] benar
-- [ ] salah
-
-3. Aksesibilitas hanya penting di situs web pemerintah
-
-- [ ] benar
-- [ ] salah
diff --git a/1-getting-started-lessons/3-accessibility/translations/README.id.md b/1-getting-started-lessons/3-accessibility/translations/README.id.md
index d9475ec7..2cd48518 100644
--- a/1-getting-started-lessons/3-accessibility/translations/README.id.md
+++ b/1-getting-started-lessons/3-accessibility/translations/README.id.md
@@ -4,7 +4,8 @@
> Catatan sketsa oleh [Tomomi Imura](https://twitter.com/girlie_mac)
## Kuis Pra-Kuliah
-[Kuis pra-kuliah](.github/pre-lecture-quiz.id.md)
+
+[Kuis pra-kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/5?loc=id)
> Kekuatan Web ada dalam universalitasnya. Akses oleh semua orang tanpa memandang disabilitas merupakan aspek penting.
>
@@ -112,7 +113,7 @@ Sebagai bonus tambahan untuk memastikan situs Anda dapat diakses oleh semua, And
Bayangkan halaman berikut:
| Produk | Deskripsi | Pesan |
-|--------------|------------------|--------------|
+| ------------ | ---------------- | ------------ |
| Widget | [Deskripsi]('#') | [Pesan]('#') |
| Widget super | [Deskripsi]('#') | [Pesan]('#') |
@@ -208,7 +209,8 @@ Ambil HTML ini dan tulis ulang agar dapat diakses semaksimal mungkin, dengan str
```
## Kuis Pasca Kuliah
-[Kuis pasca kuliah](.github/post-lecture-quiz.id.md)
+
+[Kuis pasca kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/6?loc=id)
## Review & Belajar Mandiri
diff --git a/2-js-basics/1-data-types/translations/.github/post-lecture-quiz.id.md b/2-js-basics/1-data-types/translations/.github/post-lecture-quiz.id.md
deleted file mode 100644
index 0857af21..00000000
--- a/2-js-basics/1-data-types/translations/.github/post-lecture-quiz.id.md
+++ /dev/null
@@ -1,18 +0,0 @@
-*Complete this quiz after the lesson by checking one answer per question.*
-
-1. Konstanta sama dengan `let` dan `var` untuk mendeklarasikan variabel kecuali
-
-- [ ] Konstanta harus diinisialisasi
-- [ ] Konstanta dapat diubah
-- [ ] Konstanta dapat ditetapkan kembali
-
-2. Numbers dan ____ adalah primitif JavaScript yang menangani data numerik
-
-- [ ] bigint
-- [ ] boolean
-- [ ] star
-
-3. String dapat berada di antara tanda kutip tunggal dan ganda
-
-- [ ] benar
-- [ ] salah
diff --git a/2-js-basics/1-data-types/translations/.github/pre-lecture-quiz.id.md b/2-js-basics/1-data-types/translations/.github/pre-lecture-quiz.id.md
deleted file mode 100644
index f29ae535..00000000
--- a/2-js-basics/1-data-types/translations/.github/pre-lecture-quiz.id.md
+++ /dev/null
@@ -1,17 +0,0 @@
-*Selesaikan kuis ini di kelas*
-
-1. Boolean adalah tipe data yang dapat Anda gunakan untuk menguji panjang string
-
-- [ ] benar
-- [ ] salah
-
-2. Berikut ini adalah operasi yang dapat Anda lakukan pada string
-
-- [ ] concatenation
-- [ ] appending
-- [ ] splicing
-
-3. `==` dan `===` dapat dipertukarkan
-
-- [ ] benar
-- [ ] salah
diff --git a/2-js-basics/1-data-types/translations/README.id.md b/2-js-basics/1-data-types/translations/README.id.md
index 9e483a5d..b78c8a22 100644
--- a/2-js-basics/1-data-types/translations/README.id.md
+++ b/2-js-basics/1-data-types/translations/README.id.md
@@ -6,7 +6,7 @@
## Kuis Pra-Kuliah
-[Kuis pra-Kuliah](.github/pre-lecture-quiz.id.md)
+[Kuis pra-Kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/7?loc=id)
Pelajaran ini mencakup dasar-dasar JavaScript, bahasa yang menyediakan interaktivitas di web.
@@ -188,7 +188,7 @@ JavaScript terkenal karena cara yang mengejutkan dalam menangani tipe data pada
## Kuis Pasca-Kuliah
-[Kuis pasca-kuliah](.github/post-lecture-quiz.id.md)
+[Kuis pasca-kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/8?loc=id)
## Review & Belajar Mandiri
diff --git a/2-js-basics/2-functions-methods/translations/.github/post-lecture-quiz.id.md b/2-js-basics/2-functions-methods/translations/.github/post-lecture-quiz.id.md
deleted file mode 100644
index 74126c1f..00000000
--- a/2-js-basics/2-functions-methods/translations/.github/post-lecture-quiz.id.md
+++ /dev/null
@@ -1,12 +0,0 @@
-*Selesaikan kuis ini dengan mencentang satu jawaban per pertanyaan.*
-
-1. Argumen harus disediakan untuk semua parameter dalam suatu fungsi
-
-- [ ] benar
-- [ ] salah
-
-2. Apa fungsi nilai default?
-
-- [ ] Menetapkan nilai yang benar
-- [ ] Memberikan nilai awal untuk parameter sehingga kode Anda tetap berfungsi jika Anda menghilangkan argumen untuk itu
-- [ ] Tidak memiliki utilitas
diff --git a/2-js-basics/2-functions-methods/translations/.github/pre-lecture-quiz.id.md b/2-js-basics/2-functions-methods/translations/.github/pre-lecture-quiz.id.md
deleted file mode 100644
index c6ea25df..00000000
--- a/2-js-basics/2-functions-methods/translations/.github/pre-lecture-quiz.id.md
+++ /dev/null
@@ -1,12 +0,0 @@
-*Selesaikan kuis ini di kelas*
-
-1. Apa itu argumen?
-
-- [ ] Itu adalah sesuatu yang Anda deklarasikan dalam definisi fungsi
-- [ ] Itu adalah sesuatu yang Anda berikan ke suatu fungsi pada waktu pemanggilan
-- [ ] Itu adalah sesuatu yang Anda miliki dengan orang yang Anda kenal
-
-2. Benar atau salah: suatu fungsi harus mengembalikan sesuatu
-
-- [ ] benar
-- [ ] salah
diff --git a/2-js-basics/2-functions-methods/translations/README.id.md b/2-js-basics/2-functions-methods/translations/README.id.md
index c978e52c..ebb02be6 100644
--- a/2-js-basics/2-functions-methods/translations/README.id.md
+++ b/2-js-basics/2-functions-methods/translations/README.id.md
@@ -6,7 +6,7 @@
## Kuis Pra-Kuliah
-[Kuis pra-Kuliah](./.github/pre-lecture-quiz.id.md)
+[Kuis pra-Kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/9?loc=id)
Ketika kita berpikir tentang menulis kode, kita selalu ingin memastikan kode kita dapat dibaca. Meskipun ini terdengar berlawanan dengan intuisi, kode dibaca lebih banyak kali daripada yang tertulis. Salah satu alat inti dalam kotak alat pengembang untuk memastikan kode yang dapat dipelihara adalah **function (fungsi)**.
@@ -183,7 +183,7 @@ Bisakah Anda mengartikulasikan dalam satu kalimat perbedaan antara fungsi dan me
## Kuis Pasca-Kuliah
-[Kuis pasca-kuliah](./.github/post-lecture-quiz.id.md)
+[Kuis pasca-kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/10?loc=id)
## Review & Belajar Mandiri
diff --git a/2-js-basics/3-making-decisions/translations/.github/post-lecture-quiz.id.md b/2-js-basics/3-making-decisions/translations/.github/post-lecture-quiz.id.md
deleted file mode 100644
index ad2a7449..00000000
--- a/2-js-basics/3-making-decisions/translations/.github/post-lecture-quiz.id.md
+++ /dev/null
@@ -1,12 +0,0 @@
-*Selesaikan kuis ini dengan mencentang satu jawaban per pertanyaan.*
-
-1. Apa yang akan dikembalikan kode berikut: `'1' == 1`
-
-- [ ] true
-- [ ] false
-
-2. Pilih operator yang benar untuk mengekspresikan logika _or_
-
-- [] `a | b`
-- [] `a || b`
-- [] `a atau b`
diff --git a/2-js-basics/3-making-decisions/translations/.github/pre-lecture-quiz.id.md b/2-js-basics/3-making-decisions/translations/.github/pre-lecture-quiz.id.md
deleted file mode 100644
index 42873bf4..00000000
--- a/2-js-basics/3-making-decisions/translations/.github/pre-lecture-quiz.id.md
+++ /dev/null
@@ -1,13 +0,0 @@
-*Selesaikan kuis ini di kelas*
-
-1. Operator berikut `==` dipanggil
-
-- [ ] Kesetaraan
-- [ ] Kesetaraan yang ketat
-- [ ] Penugasan
-
-2. Perbandingan dalam JavaScript mengembalikan tipe apa?
-
-- [ ] boolean
-- [ ] null
-- [ ] string
diff --git a/2-js-basics/3-making-decisions/translations/README.id.md b/2-js-basics/3-making-decisions/translations/README.id.md
index c6f98e46..07dba472 100644
--- a/2-js-basics/3-making-decisions/translations/README.id.md
+++ b/2-js-basics/3-making-decisions/translations/README.id.md
@@ -6,7 +6,7 @@
## Kuis Pra-Kuliah
-[Kuis pra-Kuliah](./.github/pre-lecture-quiz.id.md)
+[Kuis pra-Kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/11?loc=id)
Membuat keputusan dan mengontrol urutan kode Anda berjalan membuat kode Anda dapat digunakan kembali dan kuat. Bagian ini membahas sintaks untuk mengontrol aliran data di JavaScript dan signifikansinya saat digunakan dengan tipe data Boolean.
@@ -162,7 +162,7 @@ Buat program yang ditulis pertama kali dengan operator logika, lalu tulis ulang
## Kuis Pasca-Kuliah
-[Kuis pasca-kuliah](.github/post-lecture-quiz.md)
+[Kuis pasca-kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/12?loc=id)
## Review & Belajar Mandiri
diff --git a/2-js-basics/4-arrays-loops/translations/.github/post-lecture-quiz.id.md b/2-js-basics/4-arrays-loops/translations/.github/post-lecture-quiz.id.md
deleted file mode 100644
index 0834f76e..00000000
--- a/2-js-basics/4-arrays-loops/translations/.github/post-lecture-quiz.id.md
+++ /dev/null
@@ -1,18 +0,0 @@
-*Selesaikan kuis ini dengan mencentang satu jawaban per pertanyaan.*
-
-1. Bagian for-loop manakah yang perlu Anda modifikasi untuk menambah iterasinya sebesar 5
-
-- [ ] kondisi
-- [ ] counter
-- [ ] ekspresi-iterasi
-
-2. Apa perbedaan antara `while` dan `for-loop`
-
-- [ ] Sebuah `for-loop` memiliki penghitung dan ekspresi-iterasi, di mana `while` hanya memiliki kondisi
-- [ ] A `while` memiliki penghitung dan ekspresi-iterasi di mana `for-loop` hanya memiliki kondisi
-- [ ] Mereka sama, hanya alias untuk satu sama lain
-
-3. Diberikan kode `for (let i = 1; i <5; i ++)`, berapa banyak iterasi yang akan dilakukan?
-
-- [ ] 5
-- [ ] 4
diff --git a/2-js-basics/4-arrays-loops/translations/.github/pre-lecture-quiz.id.md b/2-js-basics/4-arrays-loops/translations/.github/pre-lecture-quiz.id.md
deleted file mode 100644
index b04f6fc2..00000000
--- a/2-js-basics/4-arrays-loops/translations/.github/pre-lecture-quiz.id.md
+++ /dev/null
@@ -1,13 +0,0 @@
-*Selesaikan kuis ini di kelas*
-
-1. Untuk merujuk ke item tertentu dalam sebuah array, Anda akan menggunakan a
-
-- [ ] kurung siku `[]`
-- [ ] indeks
-- [ ] kurung kurawal `{}`
-
-2. Bagaimana Anda mendapatkan jumlah item dalam sebuah array
-
-- [ ] Metode `len(array)`
-- [ ] Properti `size` pada array
-- [ ] Properti `length` pada array
diff --git a/2-js-basics/4-arrays-loops/translations/README.id.md b/2-js-basics/4-arrays-loops/translations/README.id.md
index 0080b7c0..f2e02c32 100644
--- a/2-js-basics/4-arrays-loops/translations/README.id.md
+++ b/2-js-basics/4-arrays-loops/translations/README.id.md
@@ -6,7 +6,7 @@
## Kuis Pra-Kuliah
-[Kuis pra-Kuliah](./.github/pre-lecture-quiz.id.md)
+[Kuis pra-Kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/13?loc=id)
Pelajaran ini mencakup dasar-dasar JavaScript, bahasa yang menyediakan interaktivitas di web. Dalam pelajaran ini, Anda akan belajar tentang array dan loop, yang digunakan untuk memanipulasi data.
@@ -130,7 +130,7 @@ Ada cara lain untuk melakukan perulangan pada array selain perulangan for dan wh
## Kuis Pasca-Kuliah
-[Kuis pasca-kuliah](./.github/post-lecture-quiz.id.md)
+[Kuis pasca-kuliah](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/14?loc=id)
## Review & Belajar Mandiri
diff --git a/4-typing-game/translations/README.ja.md b/4-typing-game/translations/README.ja.md
new file mode 100644
index 00000000..89f4410a
--- /dev/null
+++ b/4-typing-game/translations/README.ja.md
@@ -0,0 +1,30 @@
+# イベント駆動型プログラミング - タイピングゲームの構築
+
+## イントロダクション
+
+タイピングは、開発者が最も過小評価されているスキルの一つです。頭の中からエディタに思考を素早く転送する能力は、創造性が自由に流れることを可能にします。最高の学習方法の一つは、ゲームをプレイすることです!
+
+> ということで、タイピングゲームを作ってみましょう!
+
+これまで培ってきた JavaScript、HTML、CSS のスキルを使ってタイピングゲームを作っていただきます。このゲームでは、プレイヤーにランダムな引用文 ([シャーロック・ホームズ](https://en.wikipedia.org/wiki/Sherlock_Holmes)の名言を使用しています) を提示し、それを正確に入力するのにどれくらいの時間がかかるかを競います。これまでに培った JavaScript、HTML、CSS のスキルを使ってタイピングゲームを作ってみましょう。
+
+![demo](../images/demo.gif)
+
+## 前提条件
+
+このレッスンでは、次のような概念に精通していることを前提としています:
+
+- テキスト入力とボタンコントロールの作成
+- CSS とクラスを使ったスタイルの設定
+- JavaScript の基礎
+ - 配列の作成
+ - 乱数の生成
+ - 現在の時刻の取得
+
+## レッスン
+
+[イベント駆動型プログラミングを用いたタイピングゲームの作成](./typing-game/translations/README.ja.md)
+
+## クレジット
+
+Written with ♥️ by [Christopher Harrison](http://www.twitter.com/geektrainer)
diff --git a/4-typing-game/typing-game/translations/README.ja.md b/4-typing-game/typing-game/translations/README.ja.md
new file mode 100644
index 00000000..7047d875
--- /dev/null
+++ b/4-typing-game/typing-game/translations/README.ja.md
@@ -0,0 +1,337 @@
+# イベントを使ったゲームの作成
+
+## レクチャー前クイズ
+
+[レクチャー前クイズ](https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/21)
+
+## イベント駆動型プログラミング
+
+ブラウザベースのアプリケーションを作成するとき、私たちは、構築したものと対話するときに使用するグラフィカル・ユーザー・インターフェース (GUI) を提供します。ブラウザと対話する最も一般的な方法は、様々な要素をクリックしたり入力したりすることです。開発者として直面する課題は、ユーザーがこれらの操作をいつ実行するかわからないことです。
+
+[イベント駆動型プログラミング](https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E9%A7%86%E5%8B%95%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)は、GUIを作成するために必要なプログラミングの種類の名前です。このフレーズを少し分解すると、ここでの核となる単語は **イベント** です。[イベント](https://www.merriam-webster.com/dictionary/event)は、Merriam-Webster によると、「何かが起こる」と定義されています。これは私たちの状況を完璧に説明しています。何かが起こりそうで、それに対応してコードを実行したいのですが、それがいつ行われるかはわかりません。
+
+実行したいコードの節をマークする方法は、関数を作成することです。[手続き型プログラミング](https://ja.wikipedia.org/wiki/%E6%89%8B%E7%B6%9A%E3%81%8D%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)を考えると、関数は決まった順番で呼び出されます。これはイベント駆動型プログラミングでも同じことが言えそうです。違いは、関数が**どのように**呼ばれるかということです。
+
+イベント (ボタンクリックやタイピングなど) を処理するために、**イベントリスナー** を登録します。イベントリスナーとは、イベントが発生するのを待ち受けて、それに応じて実行する関数のことです。イベントリスナーは、UI を更新したり、サーバーへの呼び出しを行ったり、ユーザーのアクションに反応して実行することができます。[addEventListener](https://developer.mozilla.org/ja/docs/Web/API/EventTarget/addEventListener) を使用してイベントリスナーを追加し、実行する関数を提供します。
+
+> **注:** イベントリスナーを作成する方法は数多くあります。匿名の関数を使うこともできますし、名前付きの関数を作ることもできます。`click` プロパティを設定したり、`addEventListener` を使用したりと、様々なショートカットを使用することができます。今回の演習では `addEventLister` と匿名関数に焦点を当てます。また、`addEventListener` はすべてのイベントに対して動作し、イベント名をパラメータとして指定できるので、最も柔軟性があります。
+
+### 共通イベント
+
+アプリケーションを作成するときに聞くことができる[多数のイベント](https://developer.mozilla.org/ja/docs/Web/Events)があります。基本的に、ユーザーがページ上で何かをするとイベントが発生しますが、これはプレイヤーがあなたの意図した経験を得られるようにするうえで大きな力となります。幸いなことに、通常はほんの一握りのイベントしか必要ありません。ここでは、(ゲームを作成する際に使用する 2 つのイベントを含む) いくつかの一般的なイベントを紹介します:
+
+- [click](https://developer.mozilla.org/ja/docs/Web/API/Element/click_event): ユーザーが何かをクリックした場合、通常はボタンやハイパーリンクをクリックします
+- [contextmenu](https://developer.mozilla.org/en-US/docs/Web/API/Element/contextmenu_event): ユーザーがマウスの右ボタンをクリックした場合
+- [select](https://developer.mozilla.org/ja/docs/Web/API/Element/select_event): ユーザーがテキストをハイライトした場合
+- [input](https://developer.mozilla.org/ja/docs/Web/API/HTMLElement/input_event): ユーザーが何かテキストを入力した場合
+
+## ゲームの作成
+
+私たちは、JavaScript でイベントがどのように機能するかを探求するゲームを作成する予定です。私たちのゲームはプレイヤーのタイピングスキルをテストしますが、これはすべての開発者が持つべき最も過小評価されているスキルの一つです。私たちは皆、タイピングの練習をするべきです! ゲームの一般的な流れは以下のようになります。
+
+- プレイヤーがスタートボタンをクリックすると、入力する名言が表示されます
+- プレイヤーは、テキストボックスにできるだけ早く名言を入力します
+ - 各単語が完成すると、次の単語が強調表示されます
+ - プレイヤーにタイプミスがあった場合、テキストボックスが赤に更新されます
+ - 名言が完了すると、経過時間とともに成功メッセージが表示されます
+
+ゲームを作ってイベントを覚えましょう!
+
+### ファイル構造
+
+**index.html**、**script.js**、**style.css** の 3 つのファイルが必要です。まずはこれらを設定して、生活を少し楽にしていきましょう。
+
+- コンソールまたはターミナルウィンドウを開き、以下のコマンドを実行して、作業用の新しいフォルダを作成します
+
+```bash
+# Linux または macOS
+mkdir typing-game && cd typing-game
+
+# Windows
+md typing-game && cd typing game
+```
+
+- Visual Studio Code を開きます
+
+```bash
+code .
+```
+
+- Visual Studio Code のフォルダに以下の名前で3つのファイルを追加します
+ - index.html
+ - script.js
+ - style.css
+
+## ユーザーインターフェースの作成
+
+要件を探ってみると、HTML ページには一握りの要素が必要になることがわかります。これはレシピのようなもので、いくつかの材料が必要です。
+
+- ユーザーが入力するための名言を表示する場所
+- 成功メッセージのようなメッセージを表示する場所
+- 入力用のテキストボックス
+- スタートボタン
+
+これらのファイルにはそれぞれ ID が必要なので、JavaScript でそれらを扱うことができます。また、これから作成する CSS と JavaScript ファイルへの参照を追加します。
+
+**index.html** という名前の新しいファイルを作成します。以下の HTML を追加します。
+
+```html
+
+
+