diff --git a/1-getting-started-lessons/1-intro-to-programming-languages/README.md b/1-getting-started-lessons/1-intro-to-programming-languages/README.md
index 29534553..724a76b9 100644
--- a/1-getting-started-lessons/1-intro-to-programming-languages/README.md
+++ b/1-getting-started-lessons/1-intro-to-programming-languages/README.md
@@ -33,7 +33,7 @@ Programming languages serve a main purpose: for developers to build instructions
Programming languages come in different formats and may serve different purposes. For example, JavaScript is primarily used for web applications, while Bash is primarily used for operating systems.
-*Low level languages* typically require fewer steps than *high level languages* for a device to interpret instructions. However, what makes high level languages popular is its readability and support. JavaScript is considered a high level language.
+*Low level languages* typically require fewer steps than *high level languages* for a device to interpret instructions. However, what makes high level languages popular is their readability and support. JavaScript is considered a high level language.
The following code illustrates the difference between a high level language with JavaScript and low level language with ARM assembly code.
@@ -107,7 +107,7 @@ Developers rely on editors for a few additional reasons:
- *Debugging* Discovering bugs and errors by stepping through code, line by line. Some editors have debugging capabilities, or can be customized and added for specific programming languages.
- *Syntax highlighting* Adds colors and text formatting to code, makes it easier to read. Most editors allow customized syntax highlighting.
- *Extensions and Integrations* Additions that are specialized for developers, by developers, for access to additional tools that aren't built into the base editor. For example, many developers also need a way to document their code and explain how it works and will install a spell check extension to check for typos. Most of these additions are intended for use within a specific editor, and most editors come with a way to search for available extensions.
-- *Customization* Most editors are extremely customizable, and each developer will have their own unique development environment that suits their needs. Many also allow developers to create their own extension.
+- *Customization* Most editors are extremely customizable, and each developer will have their own unique development environment that suits their needs. Many also allow developers to create their own extensions.
#### Popular Editors and Web Development Extensions
@@ -163,7 +163,7 @@ Options for the command line will differ based on the operating system you use.
#### Popular Command Line Tools
-- [Git](https://git-scm.com/) (💻 on most operating sytems)
+- [Git](https://git-scm.com/) (💻 on most operating systems)
- [NPM](https://www.npmjs.com/)
- [Yarn](https://classic.yarnpkg.com/en/docs/cli/)
diff --git a/2-js-basics/1-data-types/README.md b/2-js-basics/1-data-types/README.md
index 56fd2cc7..6ea43dc3 100644
--- a/2-js-basics/1-data-types/README.md
+++ b/2-js-basics/1-data-types/README.md
@@ -23,7 +23,7 @@ Creating and **declaring** a variable has the following syntax **[keyword] [name
- **Keyword**. Keywords can be `let` or `var`.
- > Note, They keyword `let` was introduced in ES6 and gives your variable a so called _block scope_. It's recommended that you use `let` over `var`. We will cover block scopes more in depth in future parts.
+✅ The keyword `let` was introduced in ES6 and gives your variable a so called _block scope_. It's recommended that you use `let` over `var`. We will cover block scopes more in depth in future parts.
- **The variable name**, this is a name you choose yourself.
### Task - working with variables
diff --git a/2-js-basics/2-functions-methods/translations/README.fr.md b/2-js-basics/2-functions-methods/translations/README.fr.md
new file mode 100644
index 00000000..3a4f1c1e
--- /dev/null
+++ b/2-js-basics/2-functions-methods/translations/README.fr.md
@@ -0,0 +1,196 @@
+# Les bases du JavaScript : Méthodes et fonctions
+
+
+> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)
+
+## Quiz préalable
+[Quizz préalable](https://happy-mud-02d95f10f.azurestaticapps.net/quiz/9?loc=fr)
+
+Lorsque nous pensons à écrire du code, nous voulons toujours nous assurer que notre code est lisible. Bien que cela puisse paraître contre-intuitif, le code est lu bien plus souvent qu'il n'est écrit. Un outil essentiel dans la boîte à outils d'un développeur pour garantir un code maintenable est la **fonction**.
+
+[](https://youtube.com/watch?v=XgKsD6Zwvlc "Methods and Functions")
+
+> 🎥 Cliquez sur l'image ci-dessus pour voir une vidéo sur les méthodes et les fonctions.
+
+> Vous pouvez suivre cette leçon sur [Microsoft Learn](https://docs.microsoft.com/fr-fr/learn/modules/web-development-101-functions/?WT.mc_id=academic-13441-cxa)!
+
+## Fonctions
+
+À la base, une fonction est un bloc de code que nous pouvons exécuter à la demande. C'est parfait pour les scénarios où nous devons effectuer la même tâche plusieurs fois; plutôt que de dupliquer la logique à plusieurs endroits (ce qui rendrait difficile la mise à jour le moment venu), nous pouvons la centraliser à un seul endroit et l'appeler chaque fois que nous avons besoin d'effectuer l'opération - vous pouvez même appeler des fonctions à partir d'autres fonctions !
+
+La possibilité de nommer une fonction est tout aussi importante. Bien que cela puisse sembler trivial, le nom fournit un moyen rapide de documenter une section de code. On pourrait penser à l'étiquette d'un bouton. Si je clique sur un bouton qui indique "Annuler le chronomètre", je sais qu'il va arrêter le chronomètre.
+
+## Créer et appeler une fonction
+
+La syntaxe d'une fonction ressemble à ce qui suit :
+
+```javascript
+function nameOfFunction() { // Définition de la fonction
+ // Code de la fonction
+}
+```
+
+Si je voulais créer une fonction pour afficher une salutation, elle pourrait ressembler à ceci :
+
+```javascript
+function displayGreeting() {
+ console.log('Hello, world!');
+}
+```
+
+Chaque fois que nous voulons appeler (ou invoquer) notre fonction, nous utilisons le nom de la fonction suivi de `()`. Il est important de noter que notre fonction peut être définie avant ou après que nous ayons décidé de l'appeler; le compilateur JavaScript la trouvera pour vous.
+
+```javascript
+// Appel de notre fonction
+displayGreeting();
+```
+
+> **NOTE:** Il existe un type spécial de fonction appelé **méthode**, que vous avez déjà utilisé ! En fait, nous l'avons vu dans notre démonstration ci-dessus lorsque nous avons utilisé `console.log`. Ce qui différencie une méthode d'une fonction, c'est qu'une méthode est attachée à un objet (`console` dans notre exemple), alors qu'une fonction est flottante. Vous entendrez de nombreux développeurs utiliser ces termes de manière interchangeable.
+
+### Bonnes pratiques des fonctions
+
+Il existe une poignée de bonnes pratiques à garder à l'esprit lors de la création de fonctions
+
+- Comme toujours, utilisez des noms descriptifs afin de savoir ce que fera la fonction.
+- Utilisez le **camelCase** pour combiner les mots.
+- Faites en sorte que vos fonctions se concentrent sur une tâche spécifique
+
+## Transmettre des informations à une fonction
+
+Pour rendre une fonction plus réutilisable, vous voudrez souvent lui passer des informations. Si nous considérons notre exemple `displayGreeting` ci-dessus, il affichera seulement **Hello, world!**. Ce n'est pas la fonction la plus utile que l'on puisse créer. Si on veut la rendre un peu plus flexible, comme permettre à quelqu'un de spécifier le nom de la personne à saluer, on peut ajouter un **paramètre**. Un paramètre (aussi parfois appelé **argument**), est une information supplémentaire envoyée à une fonction.
+
+Les paramètres sont énumérés dans la partie définition entre parenthèses et sont séparés par des virgules comme suit :
+
+```javascript
+function name(param, param2, param3) {
+
+}
+```
+
+Nous pouvons mettre à jour notre `displayGreeting` pour accepter un nom et l'afficher.
+
+```javascript
+function displayGreeting(name) {
+ const message = `Hello, ${name}!`;
+ console.log(message);
+}
+```
+
+Lorsque nous voulons appeler notre fonction et passer le paramètre, nous le spécifions dans la parenthèse.
+
+```javascript
+displayGreeting('Christopher');
+// Affiche "Hello, Christopher!"
+```
+
+## Valeurs par défaut
+
+Nous pouvons rendre notre fonction encore plus flexible en ajoutant d'autres paramètres. Mais que faire si nous ne voulons pas exiger que chaque valeur soit spécifiée ? Pour reprendre l'exemple de notre message d'accueil, nous pourrions laisser le nom comme paramètre obligatoire (nous devons savoir qui nous accueillons), mais nous voulons permettre à l'accueil lui-même d'être personnalisé à volonté. Si quelqu'un ne veut pas le personnaliser, nous fournissons une valeur par défaut à la place. Pour fournir une valeur par défaut à un paramètre, nous le définissons de la même manière que nous définissons une valeur pour une variable - `parameterName = 'defaultValue'`. Pour voir un exemple complet :
+
+```javascript
+function displayGreeting(name, salutation='Hello') {
+ console.log(`${salutation}, ${name}`);
+}
+```
+
+Lorsque nous appelons la fonction, nous pouvons alors décider si nous voulons définir une valeur pour `salutation`.
+
+```javascript
+displayGreeting('Christopher');
+// Affiche "Hello, Christopher"
+
+displayGreeting('Christopher', 'Hi');
+// Affiche "Hi, Christopher"
+```
+
+## Valeurs de retour
+
+Jusqu'à présent, la fonction que nous avons créée s'affiche toujours dans la [console] (https://developer.mozilla.org/docs/Web/API/console). Parfois, c'est exactement ce que nous recherchons, notamment lorsque nous créons des fonctions qui appelleront d'autres services. Mais que faire si je veux créer une fonction d'aide pour effectuer un calcul et renvoyer la valeur afin de pouvoir l'utiliser ailleurs ?
+
+Nous pouvons le faire en utilisant une **valeur de retour**. Une valeur de retour est renvoyée par la fonction et peut être stockée dans une variable de la même manière qu'une valeur littérale telle qu'une chaîne ou un nombre.
+
+Si une fonction renvoie quelque chose, le mot-clé `return` est utilisé. Le mot-clé `return` attend une valeur ou une référence de ce qui est retourné comme ceci :
+
+```javascript
+return myVariable;
+```
+
+Nous pouvons créer une fonction pour créer un message d'accueil et renvoyer la valeur à l'appelant.
+
+```javascript
+function createGreetingMessage(name) {
+ const message = `Hello, ${name}`;
+ return message;
+}
+```
+
+Lorsque nous appelons cette fonction, nous stockons la valeur dans une variable. C'est à peu près la même chose que de définir une variable à une valeur statique (comme `const name = 'Christopher'`).
+
+```javascript
+const greetingMessage = createGreetingMessage('Christopher');
+```
+
+## Fonctions comme paramètres de fonctions
+
+Au fur et à mesure que vous progressez dans votre carrière de programmeur, vous rencontrerez des fonctions qui acceptent des fonctions comme paramètres. Cette astuce est couramment utilisée lorsque nous ne savons pas quand quelque chose va se produire ou se terminer, mais que nous savons que nous devons effectuer une opération en réponse.
+
+Prenons l'exemple de [setTimeout](https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout), qui lance une minuterie et exécute un code lorsqu'elle est terminée. Nous devons lui indiquer quel code nous voulons exécuter. C'est le travail idéal pour une fonction !
+
+Si vous exécutez le code ci-dessous, après 3 secondes, vous verrez le message **3 secondes se sont écoulées**.
+
+```javascript
+function displayDone() {
+ console.log('3 secondes se sont écoulées');
+}
+// Valeur du délai en millisecondes
+setTimeout(displayDone, 3000);
+```
+
+### Fonctions anonymes
+
+Regardons à nouveau ce que nous avons construit. Nous créons une fonction avec un nom qui ne sera utilisé qu'une seule fois. Au fur et à mesure que notre application devient plus complexe, nous pouvons nous voir créer un grand nombre de fonctions qui ne seront appelées qu'une seule fois. Ce n'est pas l'idéal. Il s'avère que nous n'avons pas toujours besoin de fournir un nom !
+
+Lorsque nous passons une fonction en paramètre, nous pouvons éviter d'en créer une à l'avance et en construire une en tant que partie du paramètre. Nous utilisons le même mot-clé `function`, mais nous le construisons comme un paramètre.
+
+Réécrivons le code ci-dessus pour utiliser une fonction anonyme :
+
+```javascript
+setTimeout(function() {
+ console.log('3 secondes se sont écoulées');
+}, 3000);
+```
+
+Si vous exécutez notre nouveau code, vous remarquerez que nous obtenons les mêmes résultats. Nous avons créé une fonction, mais nous n'avons pas eu besoin de lui donner un nom !
+
+### Fonctions fléchées
+
+Un raccourci commun à de nombreux langages de programmation (y compris JavaScript) est la possibilité d'utiliser ce que l'on appelle une fonction **fléchée**. Elle utilise un indicateur spécial, `=>`, qui ressemble à une flèche - d'où son nom ! En utilisant `=>`, nous sommes en mesure de sauter le mot-clé `function`.
+
+Réécrivons notre code une fois de plus pour utiliser une fonction fléchée :
+
+```javascript
+setTimeout(() => {
+ console.log('3 secondes se sont écoulées');
+}, 3000);
+```
+
+### Quand utiliser chaque stratégie
+
+Vous avez maintenant vu que nous avons trois façons de passer une fonction en paramètre et vous vous demandez peut-être quand utiliser chacune d'entre elles. Si vous savez que vous utiliserez la fonction plus d'une fois, créez-la normalement. Si vous ne l'utilisez qu'à un seul endroit, il est généralement préférable d'utiliser une fonction anonyme. C'est à vous de décider si vous utilisez une fonction fléchée ou la syntaxe plus traditionnelle `function`, mais vous remarquerez que la plupart des développeurs modernes préfèrent `=>`.
+
+---
+
+## 🚀 Défi
+
+Pouvez-vous expliquer en une phrase la différence entre les fonctions et les méthodes ? Essayez de le faire !
+
+## Quiz de validation des connaissances
+[Quiz de validation des connaissances](https://happy-mud-02d95f10f.azurestaticapps.net/quiz/10?loc=fr)
+
+## Révision et étude personnelle
+
+Cela vaut la peine de [lire un peu plus sur les fonctions fléchées] (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Functions/Arrow_functions), car elles sont de plus en plus utilisées dans les bases de code. Entraînez-vous à écrire une fonction, puis à la réécrire avec cette syntaxe.
+
+## Affectation
+
+[S'amuser avec les fonctions](assignment.md)
diff --git a/3-terrarium/1-intro-to-html/translations/README.fr.md b/3-terrarium/1-intro-to-html/translations/README.fr.md
new file mode 100644
index 00000000..c854c2d0
--- /dev/null
+++ b/3-terrarium/1-intro-to-html/translations/README.fr.md
@@ -0,0 +1,233 @@
+# Projet Terrarium Partie 1 : Introduction au HTML
+
+
+> Sketchnote par [Tomomi Imura](https://twitter.com/girlie_mac)
+
+## Quiz préalable
+
+[Quiz préalable](https://happy-mud-02d95f10f.azurestaticapps.net/quiz/15?loc=fr)
+
+### Introduction
+
+Le langage HTML (HyperText Markup Language) est le "squelette" du Web. Si le CSS "habille" votre HTML et JavaScript lui donne vie, HTML est le corps de votre application Web. La syntaxe du HTML reflète même cette idée, puisqu'elle comprend des balises "head", "body" et "footer".
+
+Dans cette leçon, nous allons utiliser le HTML pour mettre en page le "squelette" de l'interface de notre terrarium virtuel. Elle comportera un titre et trois colonnes : une colonne de droite et une colonne de gauche où se trouvent les plantes que l'on peut faire glisser, et une zone centrale qui sera le véritable terrarium en verre. À la fin de cette leçon, vous serez en mesure de voir les plantes dans les colonnes, mais l'interface aura un aspect un peu étrange ; ne vous inquiétez pas, dans la section suivante, vous ajouterez des styles CSS à l'interface pour l'améliorer.
+
+### Tâche
+
+Sur votre ordinateur, créez un dossier appelé "terrarium" et, à l'intérieur, un fichier appelé "index.html". Vous pouvez le faire dans Visual Studio Code après avoir créé votre dossier terrarium en ouvrant une nouvelle fenêtre VS Code, en cliquant sur "Ouvrir le dossier" et en naviguant vers votre nouveau dossier. Cliquez sur le petit bouton "file" dans le panneau de l'explorateur et créez le nouveau fichier :
+
+
+
+Ou alors :
+
+Utilisez ces commandes sur votre terminal git :
+* `mkdir terrarium`
+* `cd terrarium`
+* `touch index.html`
+* `code index.html` ou `nano index.html`
+
+> Les fichiers index.html indiquent au navigateur qu'il s'agit du fichier par défaut d'un dossier ; des URL telles que `https://anysite.com/test` peuvent être construites à l'aide d'une structure de dossiers comprenant un dossier appelé `test` avec `index.html` à l'intérieur ; `index.html` ne doit pas nécessairement apparaître dans une URL.
+
+---
+
+## Les balises DocType et html
+
+La première ligne d'un fichier HTML est son doctype. Il est un peu surprenant que cette ligne doive figurer tout en haut du fichier, mais elle indique aux navigateurs plus anciens que le navigateur doit rendre la page en mode standard, conformément à la spécification html actuelle.
+
+> Conseil : dans VS Code, vous pouvez passer la souris sur une balise et obtenir des informations sur son utilisation dans les guides de référence MDN.
+
+La deuxième ligne doit être la balise d'ouverture de la balise ``, suivie tout de suite par sa balise de fermeture ``. Ces balises sont les éléments racine de votre interface.
+
+### Tâche
+
+Ajoutez ces lignes en haut de votre fichier `index.html` :
+
+```HTML
+
+
+```
+
+✅ Il existe quelques modes différents qui peuvent être déterminés en définissant le DocType avec une chaîne d'interrogation: [Quirks Mode and Standards Mode](https://developer.mozilla.org/docs/Web/HTML/Quirks_Mode_and_Standards_Mode). Ces modes permettaient de prendre en charge des navigateurs très anciens qui ne sont plus utilisés de nos jours (Netscape Navigator 4 et Internet Explorer 5). Vous pouvez vous en tenir à la déclaration doctype standard.
+
+---
+
+## La "tête" du document
+
+La zone "head" du document HTML contient des informations essentielles sur votre page Web, également appelées [métadonnées] (https://developer.mozilla.org/docs/Web/HTML/Element/meta). Dans notre cas, nous indiquons au serveur web auquel cette page sera envoyée pour être rendue, ces quatre choses :
+
+- le titre de la page
+- les métadonnées de la page dont :
+ - le "jeu de caractères", qui indique le codage des caractères utilisé dans la page.
+ - des informations sur le navigateur, notamment `x-ua-compatible` qui indique que le navigateur IE=edge est pris en charge
+ - des informations sur la façon dont la fenêtre d'affichage doit se comporter lorsqu'elle est chargée. Le fait de donner à la fenêtre d'affichage une échelle initiale de 1 permet de contrôler le niveau de zoom lors du premier chargement de la page.
+
+### Tâche
+
+Ajoutez un bloc "head" à votre document, entre les balises d'ouverture et de fermeture ``.
+
+```html
+
+ Welcome to my Virtual Terrarium
+
+
+
+
+```
+
+✅ Que se passerait-il si vous définissiez une métabalise viewport comme ceci : ``? En savoir plus sur le [viewport](https://developer.mozilla.org/docs/Mozilla/Mobile/Viewport_meta_tag).
+
+---
+
+## Le "corps" du document
+
+### Balises HTML
+
+En HTML, vous ajoutez des balises à votre fichier .html pour créer les éléments d'une page Web. Chaque balise a généralement une balise d'ouverture et de fermeture, comme ceci : `
hello
` pour indiquer un paragraphe. Créez le corps de votre interface en ajoutant un ensemble de balises `` à l'intérieur de la paire de balises `` ; votre balisage ressemble maintenant à ceci :
+
+### Tâche
+
+```html
+
+
+
+ Welcome to my Virtual Terrarium
+
+
+
+
+
+
+```
+
+Maintenant, vous pouvez commencer à construire votre page. Normalement, vous utilisez les balises `
` pour créer les différents éléments d'une page. Nous allons créer une série d'éléments `
` qui contiendront des images.
+
+### Images
+
+Une balise html qui n'a pas besoin de balise de fermeture est la balise ``, car elle possède un élément `src` qui contient toutes les informations dont la page a besoin pour rendre l'élément.
+
+Créez un dossier dans votre application appelé `images` et ajoutez-y toutes les images du [dossier de code source](../solution/images) ; (il y a 14 images de plantes).
+
+### Tâche
+
+Ajoutez ces images de plantes dans deux colonnes entre les balises `` :
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+> Note: Spans et Divs. Les divs sont considérés comme des éléments de type "bloc", tandis que les spans sont "en ligne". Que se passerait-il si vous transformiez ces divs en spans ?
+
+Avec ce balisage, les plantes apparaissent maintenant à l'écran. L'apparence est assez mauvaise, car elles n'ont pas encore été stylisées à l'aide de CSS, ce que nous ferons dans la prochaine leçon.
+
+Chaque image possède un texte alternatif qui s'affiche même si vous ne pouvez pas voir ou rendre l'image. Il s'agit d'un attribut important à inclure pour l'accessibilité. Vous en saurez plus sur l'accessibilité dans les prochaines leçons ; pour l'instant, souvenez-vous que l'attribut alt fournit des informations alternatives pour une image si, pour une raison ou une autre, un utilisateur ne peut pas la voir (en raison d'une connexion lente, d'une erreur dans l'attribut src ou si l'utilisateur utilise un lecteur d'écran).
+
+✅ Avez-vous remarqué que chaque image a la même balise alt ? Est-ce une bonne pratique ? Pourquoi ou pourquoi pas ? Pouvez-vous améliorer ce code ?
+
+---
+
+## Le balisage sémantique
+
+En général, il est préférable d'utiliser une "sémantique" significative lors de l'écriture du HTML. Qu'est-ce que cela signifie ? Cela signifie que vous utilisez les balises HTML pour représenter le type de données ou d'interaction pour lequel elles ont été conçues. Par exemple, le texte du titre principal d'une page doit utiliser une balise `
`.
+
+### Tâche
+
+Ajoutez la ligne suivante juste en dessous de votre balise d'ouverture `` :
+
+```html
+
My Terrarium
+```
+
+L'utilisation de balises sémantiques, telles que des en-têtes `
` et des listes non ordonnées rendues sous la forme de `
`, aide les lecteurs d'écran à naviguer dans une page. En général, les boutons doivent être écrits sous la forme `
` :
+
+```html
+
+
+
+
+
+
+
+
+
+```
+
+✅ Bien que vous ayez ajouté cette balise à l'écran, vous ne voyez absolument rien rendre. Pourquoi ?
+
+---
+
+## 🚀Défi
+
+Il existe quelques "vieilles" balises sauvages en HTML avec lesquelles il est encore amusant de jouer, même si vous ne devriez pas utiliser des balises obsolètes telles que [ces balises](https://developer.mozilla.org/docs/Web/HTML/Element#Obsolete_and_deprecated_elements) dans votre balisage. Pouvez-vous utiliser l'ancienne balise `