diff --git a/curriculum/challenges/espanol/01-responsive-web-design/basic-html-and-html5/introduction-to-html5-elements.md b/curriculum/challenges/espanol/01-responsive-web-design/basic-html-and-html5/introduction-to-html5-elements.md
index 314a9ef835..c758d24d15 100644
--- a/curriculum/challenges/espanol/01-responsive-web-design/basic-html-and-html5/introduction-to-html5-elements.md
+++ b/curriculum/challenges/espanol/01-responsive-web-design/basic-html-and-html5/introduction-to-html5-elements.md
@@ -47,7 +47,7 @@ assert(
);
```
-Tu elemento `p` debe contener las primeras palabras del `texto ipsum gatuno` adicional proporcionado.
+Tu elemento `p` debe contener las primeras palabras del texto adicional `kitty ipsum` proporcionado.
```js
assert.isTrue(/Purr\s+jump\s+eat/gi.test($('p').text()));
diff --git a/curriculum/challenges/espanol/01-responsive-web-design/basic-html-and-html5/link-to-internal-sections-of-a-page-with-anchor-elements.md b/curriculum/challenges/espanol/01-responsive-web-design/basic-html-and-html5/link-to-internal-sections-of-a-page-with-anchor-elements.md
index 8a1d5781f6..b6f1726f86 100644
--- a/curriculum/challenges/espanol/01-responsive-web-design/basic-html-and-html5/link-to-internal-sections-of-a-page-with-anchor-elements.md
+++ b/curriculum/challenges/espanol/01-responsive-web-design/basic-html-and-html5/link-to-internal-sections-of-a-page-with-anchor-elements.md
@@ -51,7 +51,7 @@ La etiqueta `a` debe tener un atributo `href` establecido como "#footer".
assert($('a').eq(0).attr('href') == '#footer');
```
-La etiqueta `a` no debe tener un atributo `target`
+La etiqueta `a` no debe tener un atributo `target`.
```js
assert(
diff --git a/curriculum/challenges/espanol/03-front-end-libraries/jquery/target-html-elements-with-selectors-using-jquery.md b/curriculum/challenges/espanol/03-front-end-libraries/jquery/target-html-elements-with-selectors-using-jquery.md
index f93ff23996..0402e3ab22 100644
--- a/curriculum/challenges/espanol/03-front-end-libraries/jquery/target-html-elements-with-selectors-using-jquery.md
+++ b/curriculum/challenges/espanol/03-front-end-libraries/jquery/target-html-elements-with-selectors-using-jquery.md
@@ -11,7 +11,7 @@ dashedName: target-html-elements-with-selectors-using-jquery
# --description--
-Ahora tenemos una `document ready function`.
+Ahora tenemos una función `document ready`.
Ahora vamos a escribir nuestra primera declaración de jQuery. Todas las funciones de jQuery comienzan con un `$`, usualmente conocido como un operador de signo de dólares.
diff --git a/curriculum/challenges/espanol/04-data-visualization/data-visualization-projects/visualize-data-with-a-bar-chart.md b/curriculum/challenges/espanol/04-data-visualization/data-visualization-projects/visualize-data-with-a-bar-chart.md
index 77b00a5282..72c9445d2c 100644
--- a/curriculum/challenges/espanol/04-data-visualization/data-visualization-projects/visualize-data-with-a-bar-chart.md
+++ b/curriculum/challenges/espanol/04-data-visualization/data-visualization-projects/visualize-data-with-a-bar-chart.md
@@ -14,31 +14,31 @@ Completa las siguientes [historias de usuario](https://en.wikipedia.org/wiki/Use
Puedes utilizar HTML, JavaScript, CSS y la librería de visualización basada en svg D3. Las pruebas requieren que los ejes se generen utilizando la propiedad de eje D3, que genera automáticamente marcas a lo largo del eje. Estas marcas son necesarias para pasar las pruebas D3, ya que sus posiciones se utilizan para determinar la alineación de los elementos gráficos. Encontrarás información sobre cómo generar ejes en . Los elementos DOM obligatorios (no virtuales) son consultados en el momento de cada prueba. Si usas un framework frontend (como por ejemplo Vue), los resultados de la prueba pueden ser inexactos para el contenido dinámico. Esperamos poder adaptarlos eventualmente, pero por ahora estos frameworks no son soportados por los proyectos con D3.
-**Historia de usuario #1:** Mi gráfico debe tener un título con su correspondiente `id="title"`.
+**Historia de Usuario #1:** Mi gráfico debe tener un título con su correspondiente `id="title"`.
-**Historia de usuario #2:** Mi gráfico debe tener un elemento `g` en el eje-x con su correspondiente `id="x-axis"`.
+**Historia de Usuario #2:** Mi gráfico debe tener un elemento `g` en el eje-x con su correspondiente `id="x-axis"`.
-**Historia de usuario #3:** Mi gráfico debe tener un elemento `g` en el eje-y con su correspondiente `id="y-axis"`.
+**Historia de Usuario #3:** Mi gráfico debe tener un elemento `g` en el eje-y con su correspondiente `id="y-axis"`.
-**Historia de usuario #4:** Ambos ejes debe contener múltiples etiquetas de marca, cada uno con su correspondiente `class="tick"`.
+**Historia de Usuario #4:** Ambos ejes debe contener múltiples etiquetas de marca, cada uno con su correspondiente `class="tick"`.
-**Historia de usuario #5:** Mi gráfico debe tener un elemento `rect` por cada punto de datos con su correspondiente `class="bar"` mostrando los datos.
+**Historia de Usuario #5:** Mi gráfico debe tener un elemento `rect` por cada punto de datos con su correspondiente `class="bar"` mostrando los datos.
-**Historia de usuario #6:** Cada barra debe tener la propiedad `data-date` y `data-gdp` conteniendo los valores `date` y `GDP`.
+**Historia de Usuario #6:** Cada barra debe tener la propiedad `data-date` y `data-gdp` conteniendo los valores `date` y `GDP`.
-**Historia de usuario #7:** Las propiedades `data-date` de los elementos de la barra deben coincidir con el orden de los datos proporcionados.
+**Historia de Usuario #7:** Las propiedades `data-date` de los elementos de la barra deben coincidir con el orden de los datos proporcionados.
-**Historia de usuario #8:** Las propiedades `data-gdp` de los elementos de la barra deben coincidir con el orden de los datos proporcionados.
+**Historia de Usuario #8:** Las propiedades `data-gdp` de los elementos de la barra deben coincidir con el orden de los datos proporcionados.
-**Historia de usuario #9:** La altura de cada elemento de barra debe representar con exactitud el `GDP` correspondiente a los datos.
+**Historia de Usuario #9:** La altura de cada elemento de barra debe representar con exactitud el `GDP` correspondiente a los datos.
-**Historia de usuario #10:** El atributo `data-date` y su correspondiente elemento de barra deben alinearse con el valor correspondiente en el eje-x.
+**Historia de Usuario #10:** El atributo `data-date` y su correspondiente elemento de barra deben alinearse con el valor correspondiente en el eje-x.
-**Historia de usuario #11:** El atributo `data-gdp` y su correspondiente elemento de barra deben alinearse con el valor correspondiente en el eje-y.
+**Historia de Usuario #11:** El atributo `data-gdp` y su correspondiente elemento de barra deben alinearse con el valor correspondiente en el eje-y.
-**Historia de usuario #12:** Puedo pasar el ratón por encima de un área y ver una descripción con su correspondiente `id="tooltip"` que muestra más información acerca del área.
+**Historia de Usuario #12:** Puedo pasar el ratón por encima de un área y ver una descripción con su correspondiente `id="tooltip"` que muestra más información acerca del área.
-**Historia de usuario #13:** Mi descripción debe tener una propiedad `data-date` que corresponda con el `data-date` del área activa.
+**Historia de Usuario #13:** Mi descripción debe tener una propiedad `data-date` que corresponda con el `data-date` del área activa.
Aquí está el conjunto de datos que necesitarás para completar este proyecto: `https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/GDP-data.json`
diff --git a/curriculum/challenges/espanol/04-data-visualization/data-visualization-projects/visualize-data-with-a-choropleth-map.md b/curriculum/challenges/espanol/04-data-visualization/data-visualization-projects/visualize-data-with-a-choropleth-map.md
index f8b728122a..7c8490995d 100644
--- a/curriculum/challenges/espanol/04-data-visualization/data-visualization-projects/visualize-data-with-a-choropleth-map.md
+++ b/curriculum/challenges/espanol/04-data-visualization/data-visualization-projects/visualize-data-with-a-choropleth-map.md
@@ -14,27 +14,27 @@ Completa las siguientes [historias de usuario](https://en.wikipedia.org/wiki/Use
Puedes utilizar HTML, JavaScript, CSS y la librería de visualización basada en svg D3. Los elementos DOM obligatorios (no virtuales) son consultados en el momento de cada prueba. Si usas un framework frontend (como por ejemplo Vue), los resultados de la prueba pueden ser inexactos para el contenido dinámico. Esperamos poder adaptarlos eventualmente, pero por ahora estos frameworks no son soportados por los proyectos con D3.
-**Historia de usuario #1:** Mi coroplético debe tener un título con su correspondiente `id="title"`.
+**Historia de Usuario #1:** Mi coroplético debe tener un título con su correspondiente `id="title"`.
-**Historia de usuario #2:** Mi coroplético debe tener una descripción con su correspondiente `id="description"`.
+**Historia de Usuario #2:** Mi coroplético debe tener una descripción con su correspondiente `id="description"`.
-**Historia de usuario #3:** Mi coroplético debe tener condados con su correspondiente `class="county"` que represente el dato.
+**Historia de Usuario #3:** Mi coroplético debe tener condados con su correspondiente `class="county"` que represente el dato.
-**Historia de usuario #4:** Debe haber al menos 4 colores de relleno diferentes para los condados.
+**Historia de Usuario #4:** Debe haber al menos 4 colores de relleno diferentes para los condados.
-**Historia de usuario #5:** Cada uno de mis condados debe tener las propiedades `data-fips` y `data-education` que contengan sus correspondientes valores de `fips` y `education`.
+**Historia de Usuario #5:** Cada uno de mis condados debe tener las propiedades `data-fips` y `data-education` que contengan sus correspondientes valores de `fips` y `education`.
-**Historia de usuario #6:** Mi coroplético debe tener un condado por cada uno de los puntos proporcionados.
+**Historia de Usuario #6:** Mi coroplético debe tener un condado por cada uno de los puntos proporcionados.
-**Historia de usuario #7:** Los condados deben tener los valores de `data-fips` y `data-education` que coincidan con los datos de ejemplo.
+**Historia de Usuario #7:** Los condados deben tener los valores de `data-fips` y `data-education` que coincidan con los datos de ejemplo.
-**Historia de usuario #8:** Mi coroplético debe tener una leyenda con su correspondiente `id="legend"`.
+**Historia de Usuario #8:** Mi coroplético debe tener una leyenda con su correspondiente `id="legend"`.
-**Historia de usuario #9:** Debe haber al menos 4 colores de relleno usados para la leyenda.
+**Historia de Usuario #9:** Debe haber al menos 4 colores de relleno usados para la leyenda.
-**Historia de usuario #10:** Puedo pasar el ratón por encima de un área y ver una descripción con su correspondiente `id="tooltip"` que muestre más información sobre el área.
+**Historia de Usuario #10:** Puedo pasar el ratón por encima de un área y ver una descripción con su correspondiente `id="tooltip"` que muestre más información sobre el área.
-**Historia de usuario #11:** Mi descripción debe tener una propiedad de `data-education` que corresponda con el `data-education` del área activa.
+**Historia de Usuario #11:** Mi descripción debe tener una propiedad de `data-education` que corresponda con el `data-education` del área activa.
Aquí están los conjuntos de datos que necesitarás para completar este proyecto:
diff --git a/curriculum/challenges/espanol/04-data-visualization/data-visualization-projects/visualize-data-with-a-heat-map.md b/curriculum/challenges/espanol/04-data-visualization/data-visualization-projects/visualize-data-with-a-heat-map.md
index 6922b3b397..e81c5c42b9 100644
--- a/curriculum/challenges/espanol/04-data-visualization/data-visualization-projects/visualize-data-with-a-heat-map.md
+++ b/curriculum/challenges/espanol/04-data-visualization/data-visualization-projects/visualize-data-with-a-heat-map.md
@@ -14,39 +14,39 @@ Completa las siguientes [historias de usuario](https://en.wikipedia.org/wiki/Use
Puedes utilizar HTML, JavaScript, CSS y la librería de visualización basada en svg D3. Los elementos DOM obligatorios (no virtuales) son consultados en el momento de cada prueba. Si usas un framework frontend (como por ejemplo Vue), los resultados de la prueba pueden ser inexactos para el contenido dinámico. Esperamos poder adaptarlos eventualmente, pero por ahora estos frameworks no son soportados por los proyectos con D3.
-**Historia de usuario #1:** Mi mapa de calor debe tener un título con su correspondiente `id="title"`.
+**Historia de Usuario #1:** Mi mapa de calor debe tener un título con su correspondiente `id="title"`.
-**Historia de usuario #2:** Mi mapa de calor debe tener una descripción con su correspondiente `id="description"`.
+**Historia de Usuario #2:** Mi mapa de calor debe tener una descripción con su correspondiente `id="description"`.
-**Historia de usuario #3:** Mi mapa de calor debe tener un eje-x con su correspondiente `id="x-axis"`.
+**Historia de Usuario #3:** Mi mapa de calor debe tener un eje-x con su correspondiente `id="x-axis"`.
-**Historia de usuario #4:** Mi mapa de calor debe tener un eje-y con su correspondiente `id="y-axis"`.
+**Historia de Usuario #4:** Mi mapa de calor debe tener un eje-y con su correspondiente `id="y-axis"`.
-**Historia de usuario #5:** Mi mapa de calor debe tener elementos `rect` con una `class="cell"` que representen los datos.
+**Historia de Usuario #5:** Mi mapa de calor debe tener elementos `rect` con una `class="cell"` que representen los datos.
-**Historia de usuario #6:** Debe haber al menos 4 colores de relleno usados para las celdas.
+**Historia de Usuario #6:** Debe haber al menos 4 colores de relleno usados para las celdas.
-**Historia de usuario #7:** Cada celda tendrá las propiedades de `data-month`, `data-year` y `data-temp` que contengan sus correspondientes valores de `month`, `year`, y `temperature`.
+**Historia de Usuario #7:** Cada celda tendrá las propiedades de `data-month`, `data-year` y `data-temp` que contengan sus correspondientes valores de `month`, `year`, y `temperature`.
-**Historia de usuario #8:** Los `data-month`, `data-year` de cada celda deben estar dentro del rango de los datos.
+**Historia de Usuario #8:** Los `data-month`, `data-year` de cada celda deben estar dentro del rango de los datos.
-**Historia de usuario #9:** Mi mapa de calor debe tener celdas que se alineen con el mes correspondiente sobre el eje-y.
+**Historia de Usuario #9:** Mi mapa de calor debe tener celdas que se alineen con el mes correspondiente sobre el eje-y.
-**Historia de usuario #10:** Mi mapa de calor debe tener celdas que se alineen con el año correspondiente sobre el eje-x.
+**Historia de Usuario #10:** Mi mapa de calor debe tener celdas que se alineen con el año correspondiente sobre el eje-x.
-**Historia de usuario #11:** Mi mapa de calor debe tener varias etiquetas de marca sobre el eje-y con los nombres completos de los meses.
+**Historia de Usuario #11:** Mi mapa de calor debe tener varias etiquetas de marca sobre el eje-y con los nombres completos de los meses.
-**Historia de usuario #12:** Mi mapa de calor debe tener varias etiquetas de marca sobre el eje-x con los años entre 1754 y 2015.
+**Historia de Usuario #12:** Mi mapa de calor debe tener varias etiquetas de marca sobre el eje-x con los años entre 1754 y 2015.
-**Historia de usuario #13:** Mi mapa de calor debe tener una leyenda con su correspondiente `id="legend"`.
+**Historia de Usuario #13:** Mi mapa de calor debe tener una leyenda con su correspondiente `id="legend"`.
-**Historia de usuario #14:** Mi leyenda debe contener el elemento `rect`.
+**Historia de Usuario #14:** Mi leyenda debe contener el elemento `rect`.
-**Historia de usuario #15:** El elemento `rect` de la leyenda debe usar al menos 4 diferentes colores de relleno.
+**Historia de Usuario #15:** El elemento `rect` de la leyenda debe usar al menos 4 diferentes colores de relleno.
-**Historia de usuario #16:** Puedo pasar el ratón por encima de un área y ver una descripción con su correspondiente `id="tooltip"` que muestra más información acerca del área.
+**Historia de Usuario #16:** Puedo pasar el ratón por encima de un área y ver una descripción con su correspondiente `id="tooltip"` que muestra más información acerca del área.
-**Historia de usuario #17:** Mi descripción debe tener una propiedad `data-year` que corresponda con el `data-year` del área activa.
+**Historia de Usuario #17:** Mi descripción debe tener una propiedad `data-year` que corresponda con el `data-year` del área activa.
Aquí está el conjunto de datos que necesitarás para completar este proyecto: `https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/global-temperature.json`
diff --git a/curriculum/challenges/italian/10-coding-interview-prep/data-structures/create-a-linked-list-class.md b/curriculum/challenges/italian/10-coding-interview-prep/data-structures/create-a-linked-list-class.md
index 0c768cf0a2..8e13c92fc2 100644
--- a/curriculum/challenges/italian/10-coding-interview-prep/data-structures/create-a-linked-list-class.md
+++ b/curriculum/challenges/italian/10-coding-interview-prep/data-structures/create-a-linked-list-class.md
@@ -1,6 +1,6 @@
---
id: 587d8251367417b2b2512c62
-title: Create a Linked List Class
+title: Creare una classe Lista Collegata
challengeType: 1
forumTopicId: 301628
dashedName: create-a-linked-list-class
@@ -8,25 +8,25 @@ dashedName: create-a-linked-list-class
# --description--
-Let's create a `linked list` class. Every linked list should start out with a few basic properties: a `head` (the first item in your list) and a `length` (number of items in your list). Sometimes you'll see implementations of linked lists that incorporate a `tail` for the last element of the list, but for now we'll just stick with these two. Whenever we add an element to the linked list, our `length` property should be incremented by one.
+Creiamo una classe `linked list`. Ogni lista collegata dovrebbe iniziare con alcune proprietà di base: una testa `head` (il primo elemento nella tua lista) e una lunghezza `length` (numero di elementi nella tua lista). A volte vedrai implementazioni di liste collegate che incorporano una coda `tail` per l'ultimo elemento dell'elenco, ma per ora rimarremo solo con queste due. Ogni volta che aggiungiamo un elemento alla lista collegata, la nostra proprietà `length` dovrebbe essere incrementata di uno.
-We'll want to have a way to add items to our linked list, so the first method we'll want to create is the `add` method.
+Vogliamo avere un modo per aggiungere elementi alla nostra lista collegata, quindi il primo metodo che vorremo creare è il metodo `add`.
-If our list is empty, adding an element to our linked list is straightforward enough: we just wrap that element in a `Node` class, and we assign that node to the `head` of our linked list.
+Se la nostra lista è vuota, aggiungere un elemento alla nostra lista collegata è abbastanza semplice: basta che avvolgiamo quell'elemento in una classe `Node`, e assegnamo quel nodo alla testa (`head`) della nostra lista collegata.
-But what if our list already has one or more members? How do we add an element to the list? Recall that each node in a linked list has a `next` property. To add a node to the list, find the last node in the list, and point that last node's `next` property at our new node. (Hint: you know you've reached the end of a linked list when a node's `next` property is `null`.)
+Ma cosa succede se la nostra lista ha già uno o più membri? Come aggiungiamo un elemento alla lista? Ricorda che ogni nodo in una lista collegata ha una proprietà `next`. Per aggiungere un nodo all'elenco, trova l'ultimo nodo nell'elenco, e punta la proprietà `next` dell'ultimo nodo al nuovo nodo. (Suggerimento: saprai che hai raggiunto la fine di una lista collegata quando la proprietà `next` di un nodo sarà `null`.)
# --instructions--
-Write an add method that assigns the first node you push to the linked list to the `head`; after that, whenever adding a node, every node should be referenced by the previous node's `next` property.
+Scrivi un metodo di aggiunta add che assegna il primo nodo che inserisci nella lista collegata alla testa `head`; dopo, ogni volta che aggiungerai un nodo, esso dovrebbe essere referenziato dalla proprietà `next` del nodo precedente.
-Note
+Nota
-Your list's `length` should increase by one every time an element is added to the linked list.
+La lunghezza `length` della tua lista dovrebbe aumentare di uno ogni volta che un elemento viene aggiunto alla lista collegata.
# --hints--
-Your `LinkedList` class should have a `add` method.
+La tua classe `LinkedList` dovrebbe avere un metodo `add`.
```js
assert(
@@ -37,7 +37,7 @@ assert(
);
```
-Your `LinkedList` class should assign `head` to the first node added.
+La tua classe `LinkedList` dovrebbe assegnare `head` al primo nodo aggiunto.
```js
assert(
@@ -49,7 +49,7 @@ assert(
);
```
-The previous `node` in your `LinkedList` class should have reference to the newest node created.
+Il `node` precedente nella tua classe `LinkedList` dovrebbe avere riferimento al nodo più recente creato.
```js
assert(
@@ -62,7 +62,7 @@ assert(
);
```
-The `size` of your `LinkedList` class should equal the amount of nodes in the linked list.
+La dimensione (`size`) della tua classe `LinkedList` dovrebbe essere uguale alla quantità di nodi nella lista collegata.
```js
assert(
diff --git a/curriculum/challenges/italian/10-coding-interview-prep/project-euler/problem-3-largest-prime-factor.md b/curriculum/challenges/italian/10-coding-interview-prep/project-euler/problem-3-largest-prime-factor.md
index 0fbe58b9f1..aeb292f83c 100644
--- a/curriculum/challenges/italian/10-coding-interview-prep/project-euler/problem-3-largest-prime-factor.md
+++ b/curriculum/challenges/italian/10-coding-interview-prep/project-euler/problem-3-largest-prime-factor.md
@@ -1,6 +1,6 @@
---
id: 5900f36f1000cf542c50fe82
-title: 'Problem 3: Largest prime factor'
+title: 'Problema 3: il più grande fattore primo'
challengeType: 5
forumTopicId: 301952
dashedName: problem-3-largest-prime-factor
@@ -8,55 +8,55 @@ dashedName: problem-3-largest-prime-factor
# --description--
-The prime factors of 13195 are 5, 7, 13 and 29.
+I fattori primi di 13195 sono 5, 7, 13 e 29.
-What is the largest prime factor of the given `number`?
+Qual è il fattore primo più grande del `number` dato?
# --hints--
-`largestPrimeFactor(2)` should return a number.
+`largestPrimeFactor(2)` dovrebbe restituire un numero.
```js
assert(typeof largestPrimeFactor(2) === 'number');
```
-`largestPrimeFactor(2)` should return 2.
+`largestPrimeFactor(2)` dovrebbe restituire 2.
```js
assert.strictEqual(largestPrimeFactor(2), 2);
```
-`largestPrimeFactor(3)` should return 3.
+`largestPrimeFactor(3)` dovrebbe restituire 3.
```js
assert.strictEqual(largestPrimeFactor(3), 3);
```
-`largestPrimeFactor(5)` should return 5.
+`largestPrimeFactor(5)` dovrebbe restituire 5.
```js
assert.strictEqual(largestPrimeFactor(5), 5);
```
-`largestPrimeFactor(7)` should return 7.
+`largestPrimeFactor(7)` dovrebbe restituire 7.
```js
assert.strictEqual(largestPrimeFactor(7), 7);
```
-`largestPrimeFactor(8)` should return 2.
+`largestPrimeFactor(8)` dovrebbe restituire 2.
```js
assert.strictEqual(largestPrimeFactor(8), 2);
```
-`largestPrimeFactor(13195)` should return 29.
+`largestPrimeFactor(13195)` dovrebbe restituire 29.
```js
assert.strictEqual(largestPrimeFactor(13195), 29);
```
-`largestPrimeFactor(600851475143)` should return 6857.
+`largestPrimeFactor(600851475143)` dovrebbe restituire 6857.
```js
assert.strictEqual(largestPrimeFactor(600851475143), 6857);
diff --git a/curriculum/challenges/italian/10-coding-interview-prep/project-euler/problem-4-largest-palindrome-product.md b/curriculum/challenges/italian/10-coding-interview-prep/project-euler/problem-4-largest-palindrome-product.md
index 34dbf96399..0e34be7121 100644
--- a/curriculum/challenges/italian/10-coding-interview-prep/project-euler/problem-4-largest-palindrome-product.md
+++ b/curriculum/challenges/italian/10-coding-interview-prep/project-euler/problem-4-largest-palindrome-product.md
@@ -1,6 +1,6 @@
---
id: 5900f3701000cf542c50fe83
-title: 'Problem 4: Largest palindrome product'
+title: 'Problema 4: Prodotto palindromo più grande'
challengeType: 5
forumTopicId: 302065
dashedName: problem-4-largest-palindrome-product
@@ -8,25 +8,25 @@ dashedName: problem-4-largest-palindrome-product
# --description--
-A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
+Un numero palindromico rimane lo stesso se viene letto in entrambi i sensi. Il palindromo più grande ottenuto dal prodotto con due numeri a due cifre è 9009 = 91 × 99.
-Find the largest palindrome made from the product of two `n`-digit numbers.
+Trova il più grande palindromo formato dal prodotto di due numeri con `n` cifre.
# --hints--
-`largestPalindromeProduct(2)` should return a number.
+`largestPalindromeProduct(2)` dovrebbe restituire un numero.
```js
assert(typeof largestPalindromeProduct(2) === 'number');
```
-`largestPalindromeProduct(2)` should return 9009.
+`largestPalindromeProduct(2)` dovrebbe restituire 9009.
```js
assert.strictEqual(largestPalindromeProduct(2), 9009);
```
-`largestPalindromeProduct(3)` should return 906609.
+`largestPalindromeProduct(3)` dovrebbe restituire 906609.
```js
assert.strictEqual(largestPalindromeProduct(3), 906609);
diff --git a/curriculum/challenges/italian/10-coding-interview-prep/rosetta-code/cumulative-standard-deviation.md b/curriculum/challenges/italian/10-coding-interview-prep/rosetta-code/cumulative-standard-deviation.md
index 28aa14710d..a9c4fbc08e 100644
--- a/curriculum/challenges/italian/10-coding-interview-prep/rosetta-code/cumulative-standard-deviation.md
+++ b/curriculum/challenges/italian/10-coding-interview-prep/rosetta-code/cumulative-standard-deviation.md
@@ -1,6 +1,6 @@
---
id: 5a23c84252665b21eecc7e03
-title: Cumulative standard deviation
+title: Deviazione cumulativa standard
challengeType: 5
forumTopicId: 302240
dashedName: cumulative-standard-deviation
@@ -8,41 +8,41 @@ dashedName: cumulative-standard-deviation
# --description--
-Write a function that takes an array of numbers as parameter and returns the [standard deviation](https://en.wikipedia.org/wiki/Standard Deviation) of the series.
+Scrivi una funzione che prende un array di numeri come parametro e restituisce la [deviazione standard](https://en.wikipedia.org/wiki/Standard Deviation) della serie.
# --hints--
-`standardDeviation` should be a function.
+`standardDeviation` dovrebbe essere una funzione.
```js
assert(typeof standardDeviation == 'function');
```
-`standardDeviation([2, 4, 4, 4, 5, 5, 7, 9])` should return a number.
+`standardDeviation([2, 4, 4, 4, 5, 5, 7, 9])` dovrebbe restituire un numero.
```js
assert(typeof standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]) == 'number');
```
-`standardDeviation([2, 4, 4, 4, 5, 5, 7, 9])` should return `2`.
+`standardDeviation([2, 4, 4, 4, 5, 5, 7, 9])` dovrebbe restituire `2`.
```js
assert.equal(standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]), 2);
```
-`standardDeviation([600, 470, 170, 430, 300])` should return `147.323`.
+`standardDeviation([600, 470, 170, 430, 300])` dovrebbe restituire `147.323`.
```js
assert.equal(standardDeviation([600, 470, 170, 430, 300]), 147.323);
```
-`standardDeviation([75, 83, 96, 100, 121, 125])` should return `18.239`.
+`standardDeviation([75, 83, 96, 100, 121, 125])` dovrebbe restituire `18.239`.
```js
assert.equal(standardDeviation([75, 83, 96, 100, 121, 125]), 18.239);
```
-`standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82])` should return `16.87`.
+`standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82])` dovrebbe restituire `16.87`.
```js
assert.equal(
@@ -51,7 +51,7 @@ assert.equal(
);
```
-`standardDeviation([271, 354, 296, 301, 333, 326, 285, 298, 327, 316, 287, 314])` should return `22.631`.
+`standardDeviation([271, 354, 296, 301, 333, 326, 285, 298, 327, 316, 287, 314])` dovrebbe restituire `22.631`.
```js
assert.equal(
diff --git a/curriculum/challenges/italian/10-coding-interview-prep/rosetta-code/i-before-e-except-after-c.md b/curriculum/challenges/italian/10-coding-interview-prep/rosetta-code/i-before-e-except-after-c.md
index afac6dc512..26fa4569fb 100644
--- a/curriculum/challenges/italian/10-coding-interview-prep/rosetta-code/i-before-e-except-after-c.md
+++ b/curriculum/challenges/italian/10-coding-interview-prep/rosetta-code/i-before-e-except-after-c.md
@@ -1,6 +1,6 @@
---
id: 5a23c84252665b21eecc7eb0
-title: I before E except after C
+title: I prima di E eccetto dopo C
challengeType: 5
forumTopicId: 302288
dashedName: i-before-e-except-after-c
@@ -8,9 +8,9 @@ dashedName: i-before-e-except-after-c
# --description--
-The phrase ["I before E, except after C"](https://en.wikipedia.org/wiki/I before E except after C) is a widely known mnemonic which is supposed to help when spelling English words.
+["I before E, except after C"](https://en.wikipedia.org/wiki/I before E except after C) è una frase mnemonica che dovrebbe aiutare con la scrittura delle parole inglesi.
-Using the words provided, check if the two sub-clauses of the phrase are plausible individually:
+Utilizzando le parole fornite, verificare se le due sotto-clausole della frase sono plausibili singolarmente:
-
@@ -21,57 +21,57 @@ Using the words provided, check if the two sub-clauses of the phrase are plausib
-If both sub-phrases are plausible then the original phrase can be said to be plausible.
+Se entrambe le sotto-frasi sono plausibili allora la frase originale è plausibile.
# --instructions--
-Write a function that accepts a word and check if the word follows this rule. The function should return true if the word follows the rule and false if it does not.
+Scrivi una funzione che accetta una parola e controlla se essa segue questa regola. La funzione dovrebbe rispondere true se la parole segue la regola altrimenti dovrebbe rispondere false.
# --hints--
-`IBeforeExceptC` should be a function.
+`IBeforeExceptC` dovrebbe essere una funzione.
```js
assert(typeof IBeforeExceptC == 'function');
```
-`IBeforeExceptC("receive")` should return a boolean.
+`IBeforeExceptC("receive")` dovrebbe restituire un booleano.
```js
assert(typeof IBeforeExceptC('receive') == 'boolean');
```
-`IBeforeExceptC("receive")` should return `true`.
+`IBeforeExceptC("receive")` dovrebbe restituire `true`.
```js
assert.equal(IBeforeExceptC('receive'), true);
```
-`IBeforeExceptC("science")` should return `false`.
+`IBeforeExceptC("receive")` dovrebbe restituire `false`.
```js
assert.equal(IBeforeExceptC('science'), false);
```
-`IBeforeExceptC("imperceivable")` should return `true`.
+`IBeforeExceptC("imperceivable")` dovrebbe restituire `true`.
```js
assert.equal(IBeforeExceptC('imperceivable'), true);
```
-`IBeforeExceptC("inconceivable")` should return `true`.
+`IBeforeExceptC("inconceivable")` dovrebbe restituire `true`.
```js
assert.equal(IBeforeExceptC('inconceivable'), true);
```
-`IBeforeExceptC("insufficient")` should return `false`.
+`IBeforeExceptC("insufficient")` dovrebbe restituire `false`.
```js
assert.equal(IBeforeExceptC('insufficient'), false);
```
-`IBeforeExceptC("omniscient")` should return `false`.
+`IBeforeExceptC("omniscient")` dovrebbe restituire `false`.
```js
assert.equal(IBeforeExceptC('omniscient'), false);
diff --git a/curriculum/challenges/italian/10-coding-interview-prep/take-home-projects/build-a-recipe-box.md b/curriculum/challenges/italian/10-coding-interview-prep/take-home-projects/build-a-recipe-box.md
index 7817e26951..9eac72b319 100644
--- a/curriculum/challenges/italian/10-coding-interview-prep/take-home-projects/build-a-recipe-box.md
+++ b/curriculum/challenges/italian/10-coding-interview-prep/take-home-projects/build-a-recipe-box.md
@@ -1,6 +1,6 @@
---
id: bd7155d8c242eddfaeb5bd13
-title: Build a Recipe Box
+title: Costruire una scatola delle ricette
challengeType: 3
forumTopicId: 302354
dashedName: build-a-recipe-box
@@ -8,27 +8,27 @@ dashedName: build-a-recipe-box
# --description--
-**Objective:** Build a [CodePen.io](https://codepen.io) app that is functionally similar to this: .
+**Obiettivo:** Costruisci un'app [CodePen.io](https://codepen.io) funzionalmente simile a questa: [https://codepen.io/freeCodeCamp/full/dNVazZ](https://codepen.io/freeCodeCamp/full/dNVazZ/).
-Fulfill the below [user stories](https://en.wikipedia.org/wiki/User_story). Use whichever libraries or APIs you need. Give it your own personal style.
+Soddisfa le seguenti [user story](https://en.wikipedia.org/wiki/User_story). Utilizza le librerie o le API di cui hai bisogno. Usa il tuo stile personale.
-**User Story:** I can create recipes that have names and ingredients.
+**User Story:** Posso creare ricette che hanno nomi e ingredienti.
-**User Story:** I can see an index view where the names of all the recipes are visible.
+**User Story:** Posso vedere un indice in cui i nomi delle ricette sono visibili.
-**User Story:** I can click into any of those recipes to view it.
+**User Story:** Posso cliccare su una qualunque di queste ricette per vederla.
-**User Story:** I can edit these recipes.
+**User Story:** Posso modificare queste ricette.
-**User Story:** I can delete these recipes.
+**User Story:** Posso eliminare queste ricette.
-**User Story:** All new recipes I add are saved in my browser's local storage. If I refresh the page, these recipes will still be there.
+**User Story:** Tutte le nuove ricette che aggiungo sono salvate nel local storage del browser. Se ricarico la pagina, queste ricette saranno ancora là.
-**Hint:** You should prefix your local storage keys on CodePen, i.e. `_username_recipes`
+**Suggerimento:** Dovresti dare un prefisso alle chiavi del local storage su CodePen, per esempio `_username_recipes`
-When you are finished, include a link to your project on CodePen and click the "I've completed this challenge" button.
+Quando hai finito, includi un link al tuo progetto su CodePen e clicca sul pulsante "Ho completato questa sfida".
-You can get feedback on your project by sharing it on the [freeCodeCamp forum](https://forum.freecodecamp.org/c/project-feedback/409).
+Puoi ottenere un feedback sul tuo progetto condividendolo sul forum [freeCodeCamp](https://forum.freecodecamp.org/c/project-feedback/409).
# --solutions--
diff --git a/curriculum/challenges/italian/10-coding-interview-prep/take-home-projects/chart-the-stock-market.md b/curriculum/challenges/italian/10-coding-interview-prep/take-home-projects/chart-the-stock-market.md
index fbae3e461a..b9bc3ec429 100644
--- a/curriculum/challenges/italian/10-coding-interview-prep/take-home-projects/chart-the-stock-market.md
+++ b/curriculum/challenges/italian/10-coding-interview-prep/take-home-projects/chart-the-stock-market.md
@@ -1,6 +1,6 @@
---
id: bd7158d8c443eddfaeb5bd0e
-title: Chart the Stock Market
+title: Grafico della Borsa
challengeType: 4
forumTopicId: 302363
dashedName: chart-the-stock-market
@@ -8,19 +8,19 @@ dashedName: chart-the-stock-market
# --description--
-Build a full stack JavaScript app that is functionally similar to this: . Use a site builder of your choice to complete the project.
+Costruisci un'app JavaScript full-stack che sia funzionalmente simile a questa: . Usa un costruttore di siti di tua scelta per completare il progetto.
-Here are the specific user stories you should implement for this project:
+Ecco le specifiche user story da implementare per questo progetto:
-**User Story:** You can view a graph displaying the recent trend lines for each added stock.
+**User Story:** Puoi vedere un grafico che mostra le recenti linee di tendenza per ogni titolo aggiunto.
-**User Story:** You can add new stocks by their symbol name.
+**User Story:** Puoi aggiungere nuovi titoli dal loro nome breve.
-**User Story:** You can remove stocks.
+**User Story:** Puoi rimuovere titoli.
-**User Story:** You can see changes in real-time when any other user adds or removes a stock. For this you will need to use Web Sockets.
+**User Story:** Puoi vedere cambiamenti in tempo reale quando altri utenti aggiungono o rimuovono titoli. Per questo dovrai usare Web Socket.
-When you are done, make sure a working demo of your project is hosted somewhere public. Then submit the URL to it in the `Solution Link` field. Optionally, also submit a link to your project's source code in the `GitHub Link` field.
+Quando hai finito, assicurati che una demo funzionante del tuo progetto sia ospitata in qualche percorso pubblico. Quindi invia l'URL nel campo `Solution Link`. Facoltativamente, invia anche un link al codice sorgente del tuo progetto nel campo `GitHub Link`.
# --solutions--
diff --git a/curriculum/challenges/italian/10-coding-interview-prep/take-home-projects/use-the-twitch-json-api.md b/curriculum/challenges/italian/10-coding-interview-prep/take-home-projects/use-the-twitch-json-api.md
index 55d17b1745..147969f018 100644
--- a/curriculum/challenges/italian/10-coding-interview-prep/take-home-projects/use-the-twitch-json-api.md
+++ b/curriculum/challenges/italian/10-coding-interview-prep/take-home-projects/use-the-twitch-json-api.md
@@ -1,6 +1,6 @@
---
id: bd7158d8c442eddfaeb5bd1f
-title: Use the Twitch JSON API
+title: Usa l'API JSON di Twitch
challengeType: 3
forumTopicId: 19541
dashedName: use-the-twitch-json-api
@@ -8,25 +8,25 @@ dashedName: use-the-twitch-json-api
# --description--
-**Objective:** Build a [CodePen.io](https://codepen.io) app that is functionally similar to this: .
+**Obiettivo:** Costruisci un'app [CodePen.io](https://codepen.io) funzionalmente simile a questa: [https://codepen.io/freeCodeCamp/full/Myvqmo](https://codepen.io/freeCodeCamp/full/Myvqmo/).
-Fulfill the below [user stories](https://en.wikipedia.org/wiki/User_story). Use whichever libraries or APIs you need. Give it your own personal style.
+Soddisfa le seguenti [user story](https://en.wikipedia.org/wiki/User_story). Utilizza le librerie o le API di cui hai bisogno. Usa il tuo stile personale.
-**User Story:** I can see whether freeCodeCamp is currently streaming on Twitch.tv.
+**User Story:** Posso vedere se freeCodeCamp è attualmente in diretta su Twitch.tv.
-**User Story:** I can click the status output and be sent directly to the freeCodeCamp's Twitch.tv channel.
+**User Story:** Posso cliccare sull'output di stato ed essere inviato direttamente al canale Twitch.tv di freeCodeCamp.
-**User Story:** if a Twitch user is currently streaming, I can see additional details about what they are streaming.
+**User Story:** se un utente Twitch è attualmente in streaming, posso vedere ulteriori dettagli su ciò che viene trasmesso.
-**Hint:** The relevant documentation about Twitch.tv's JSON API is here: .
+**Hint:** La documentazione relativa all'API KSON di Twitch.tv è qui: .
-**Hint:** Here's an array of the Twitch.tv usernames of people who regularly stream: `["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"]`
+**Hint:** Ecco un array di nomi utente Twitch.tv di persone che fanno streaming regolarmente: `["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas"]`
-**UPDATE:** Due to a change in conditions on API usage, Twitch.tv requires an API key, but we've built a workaround. Use instead of Twitch's API base URL (i.e. `https://api.twitch.tv/helix` ) and you'll still be able to get account information, without needing to sign up for an API key.
+**AGGIORNAMENTO:** A causa di un cambiamento nelle condizioni di utilizzo della API, Twitch.tv richiede una chiave API, ma abbiamo costruito un'alternativa. Usa invece dell'url base della API di Twitch (i.e. `https://api.twitch.tv/helix` ) e sarai in grado di avere le informazioni degli account senza doverti iscrivere per una API key.
-When you are finished, include a link to your project on CodePen and click the "I've completed this challenge" button.
+Quando hai finito, includi un link al tuo progetto su CodePen e clicca sul pulsante "Ho completato questa sfida".
-You can get feedback on your project by sharing it on the [freeCodeCamp forum](https://forum.freecodecamp.org/c/project-feedback/409).
+Puoi ottenere un feedback sul tuo progetto condividendolo sul forum [freeCodeCamp](https://forum.freecodecamp.org/c/project-feedback/409).
# --solutions--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/local-scope-and-functions.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/local-scope-and-functions.md
index d1016442cc..503ff92833 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/local-scope-and-functions.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/local-scope-and-functions.md
@@ -9,7 +9,7 @@ dashedName: local-scope-and-functions
# --description--
-Variáveis que são declaradas dentro de uma função, assim como parâmetros de funções, possuem escopo local. Isso significa que eles são visíveis apenas dentro da função.
+Variáveis que são declaradas dentro de uma função, assim como parâmetros das funções, possuem escopo local. Isso significa que elas são visíveis apenas dentro da função.
Aqui está uma função `myTest` com uma variável local chamada `loc`.
@@ -26,7 +26,7 @@ A chamada da função `myTest()` vai exibir a string `foo` no console. A linha `
# --instructions--
-O editor possui dois `console.log` para te ajudar a ver o que está acontecendo. Verifique o console enquanto codifica para ver como muda. Declare uma variável local `myVar` dentro de `myLocalScope` e rode os testes.
+O editor possui dois `console.log` para ajudar você a ver o que está acontecendo. Verifique o console enquanto codifica para ver como muda. Declare uma variável local `myVar` dentro de `myLocalScope` e rode os testes.
**Observação:** o console ainda exibirá `ReferenceError: myVar is not defined`, mas isso não causará falha nos testes.
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/logical-order-in-if-else-statements.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/logical-order-in-if-else-statements.md
index 09c9cffd4f..6698a58f45 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/logical-order-in-if-else-statements.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/logical-order-in-if-else-statements.md
@@ -9,11 +9,11 @@ dashedName: logical-order-in-if-else-statements
# --description--
-Ordem é importante em instruções `if` e `else if`.
+A ordem é importante em instruções `if` e `else if`.
-A função é executada de cima para baixo, então você deve ser cuidados com qual instrução vem primeiro.
+A função é executada de cima para baixo, então você deve ser cuidadoso com qual instrução vem primeiro.
-Tomem essas duas funções como exemplo.
+Tomemos como exemplo estas duas funções.
Aqui está a primeira:
@@ -29,7 +29,7 @@ function foo(x) {
}
```
-E a segunda apenas altera a ordem das instruções if e else if:
+A segunda apenas altera a ordem das instruções if e else if:
```js
function bar(x) {
@@ -43,14 +43,14 @@ function bar(x) {
}
```
-Embora as duas funções se pareçam praticamente idênticas, se nós passarmos um número para ambos nós teremos saídas diferentes.
+Embora as duas funções pareçam praticamente idênticas, se passarmos um número para ambas, teremos saídas diferentes.
```js
foo(0)
bar(0)
```
-`foo(0)` retornará a string `Less than one`, e `bar(0)` retornará a string `Less than two`.
+`foo(0)` retornará a string `Less than one` e `bar(0)` retornará a string `Less than two`.
# --instructions--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop.md
index 34fa0d129a..4ca334e450 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop.md
@@ -11,7 +11,7 @@ dashedName: manipulate-arrays-with-pop
Outra forma de alterar os dados em um array é com a função `.pop()`.
-`.pop()` é usado para remover um valor do final do array. Nós podemos armazenar esse valor removido ao atribuir a saída da chamada do método a uma variável. Em outras palavras, `.pop()` remove o último elemento de um array e retorna aquele elemento.
+`.pop()` é usado para remover um valor do final do array. Nós podemos armazenar esse valor removido atribuindo-o a uma variável. Em outras palavras, `.pop()` remove o último elemento de um array e retorna aquele elemento.
Qualquer tipo de entrada pode ser removida de um array - numbers, strings e até mesmo arrays aninhados.
@@ -22,7 +22,7 @@ console.log(oneDown);
console.log(threeArr);
```
-O primeiro `console.log` exibirá o valor `6`, e o segundo exibirá o valor `[1, 4]`.
+O primeiro `console.log` exibirá o valor `6` e o segundo exibirá o valor `[1, 4]`.
# --instructions--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-push.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-push.md
index 060fbbe772..3f21578117 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-push.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-push.md
@@ -27,7 +27,7 @@ arr2.push(["happy", "joy"]);
# --instructions--
-Empurre `["dog", 3]` no final da variável `myArray`.
+Empurre `["dog", 3]` para o final da variável `myArray`.
# --hints--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift.md
index 046bd25972..620ff2b323 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift.md
@@ -9,9 +9,9 @@ dashedName: manipulate-arrays-with-unshift
# --description--
-Não só você pode `remover` elementos do início de um array, como você também pode `adicionar (unshift)` elementos ao início de um array i.e. adiciona elementos na frente do array.
+Você pode não apenas usar `shift` para remover elementos do início de um array, como também pode usar `unshift` para adicionar elementos ao início de um array, ou seja, adicionar elementos na posição inicial do array.
-`.unshift()` funciona exatamente como `.push()`, mas ao invés de adicionar o elemento ao final do array, `unshift` adiciona o elemento no início do array.
+`.unshift()` funciona exatamente como `.push()`, mas, ao invés de adicionar o elemento ao final do array, `unshift()` adiciona o elemento no início do array.
Exemplo:
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulating-complex-objects.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulating-complex-objects.md
index 74a50a21a2..592972f211 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulating-complex-objects.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/manipulating-complex-objects.md
@@ -9,7 +9,7 @@ dashedName: manipulating-complex-objects
# --description--
-Às vezes você pode querer armazenar dados em uma Estrutura de Dados flexível. Um objeto JavaScript é uma forma de lidar com dados flexíveis. Eles permitem combinações arbitrárias de strings, numbers, booleans, arrays, functions e objects.
+Às vezes, você pode querer armazenar dados em uma Estrutura de Dados flexível. Um objeto JavaScript é uma forma de lidar com dados flexíveis. Eles permitem combinações arbitrárias de strings, numbers, booleans, arrays, functions e objects.
Aqui está um exemplo de estrutura de dados complexas:
@@ -29,7 +29,7 @@ var ourMusic = [
];
```
-Isto é um array o qual contém um objeto dentro dele. O objeto possui vários pedaços de metadados sobre um album. Também possui um array aninhado `formats`. Se você quiser adicionar mais discos de album, você pode fazer isso ao adicionar os discos no array de alto nível. Objetos armazenam dados em uma propriedade, a qual possui um formato de chave-valor. No exemplo acima, `"artist": "Daft Punk"` é uma propriedade que tem uma chave `artist` e um valor de `Daft Punk`. [Notação de Objeto JavaScript](http://www.json.org/) ou `JSON` é um formato, de interalteração de dados relacionados, usado para armazenar dados.
+Este é um array que contém um objeto dentro dele. O objeto possui vários pedaços de metadados sobre um álbum. Também possui um array aninhado `formats`. Se você quiser adicionar mais álbuns, você pode fazer isso adicionando os discos ao array de alto nível. Objetos armazenam dados em uma propriedade, a qual possui um formato de chave-valor. No exemplo acima, `"artist": "Daft Punk"` é uma propriedade que tem uma chave `artist` e um valor de `Daft Punk`. [JavaScript Object Notation](http://www.json.org/) ou `JSON` é um formato de intercâmbio de dados relacionados usado para armazenar dados.
```json
{
@@ -45,11 +45,11 @@ Isto é um array o qual contém um objeto dentro dele. O objeto possui vários p
}
```
-**Observação:** você precisará colocar uma vírgula após cada objeto no array, a não ser que for o último objeto no array.
+**Observação:** você precisará colocar uma vírgula após cada objeto no array, a não ser que ele seja o último objeto no array.
# --instructions--
-Adicione um novo álbum para o array `myMusic`. Adicione strings: `artist` e `title`, número: `release_year`, e um array de strings: `formats`.
+Adicione um novo álbum para o array `myMusic`. Adicione as strings `artist` e `title`, o número `release_year` e um array de strings `formats`.
# --hints--
@@ -71,13 +71,13 @@ Os elementos no array `myMusic` devem ser objetos
myMusic.forEach(object => {assert.typeOf(object, 'object')})
```
-Seu objeto em `myMusic` deve ter pelo menos 4 propriedades
+O objeto em `myMusic` deve ter pelo menos 4 propriedades
```js
myMusic.forEach(object => {assert(Object.keys(object).length > 3); });
```
-Seu objeto em `myMusic` deve conter a propriedade `artist` a qual é uma string
+O objeto em `myMusic` deve conter a propriedade `artist`, do tipo string
```js
myMusic.forEach(object => {
@@ -86,7 +86,7 @@ myMusic.forEach(object => {
})
```
-Seu objeto em `myMusic` deve conter a propriedade `title` a qual é uma string
+O objeto em `myMusic` deve conter a propriedade `title`, do tipo string
```js
myMusic.forEach(object => {
@@ -95,7 +95,7 @@ myMusic.forEach(object => {
})
```
-Seu objeto em `myMusic` deve conter a propriedade `release_year` a qual é um número
+O objeto em `myMusic` deve conter a propriedade `release_year`, do tipo number
```js
myMusic.forEach(object => {
@@ -104,7 +104,7 @@ myMusic.forEach(object => {
})
```
-Seu objeto em `myMusic` deve conter a propriedade `formats` a qual é um array
+O objeto em `myMusic` deve conter a propriedade `formats`, que será um array
```js
myMusic.forEach(object => {
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/modify-array-data-with-indexes.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/modify-array-data-with-indexes.md
index 15b49c3d72..b7f9ff56c5 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/modify-array-data-with-indexes.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/modify-array-data-with-indexes.md
@@ -20,7 +20,7 @@ ourArray[0] = 15;
`ourArray` agora tem o valor `[15, 40, 30]`.
-**Observação:** não deve ter espaços entre o nome do array e os colchetes, como `array [0]`. Embora JavaScript é capaz de processar isso corretamente, isso pode causar confusão em outros programadores lendo o seu código.
+**Observação:** não deve haver espaços entre o nome do array e os colchetes, como `array [0]`. Embora JavaScript seja capaz de processar isso corretamente, isso pode confundir outros programadores lendo seu código.
# --instructions--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md
index 459e3b57a6..4392546562 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/multiple-identical-options-in-switch-statements.md
@@ -9,7 +9,7 @@ dashedName: multiple-identical-options-in-switch-statements
# --description--
-Se a instrução `break` for omitida de uma instrução `case` de um `switch`, as instruções seguintes `case` são executadas até que seja encontrado um `break`. Se você tem várias entradas com a mesma saída, você pode representá-los em uma instrução `switch` da seguinte forma:
+Se a instrução `break` for omitida de uma instrução `case` de um `switch`, as instruções `case` seguintes serão executadas até que seja encontrado um `break`. Se você tem várias entradas com a mesma saída, você pode representá-las em uma instrução `switch` da seguinte forma:
```js
var result = "";
@@ -91,7 +91,7 @@ assert(sequentialSizes(8) === 'High');
assert(sequentialSizes(9) === 'High');
```
-Você não deve usar nenhuma das instruções `if` ou `else`
+Você não deve usar nenhuma instrução do tipo `if` ou `else`
```js
assert(!/else/g.test(code) || !/if/g.test(code));
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/multiply-two-decimals-with-javascript.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/multiply-two-decimals-with-javascript.md
index 86a5348182..6c77e1e2a0 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/multiply-two-decimals-with-javascript.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/multiply-two-decimals-with-javascript.md
@@ -11,7 +11,7 @@ dashedName: multiply-two-decimals-with-javascript
Em JavaScript, você também pode realizar cálculos com números decimais, assim como com números inteiros.
-Vamos multiplicar dois decimais juntos para obter o produto deles.
+Vamos multiplicar dois decimais para obter o produto deles.
# --instructions--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/nest-one-array-within-another-array.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/nest-one-array-within-another-array.md
index 7593e7ce68..1d70732ef8 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/nest-one-array-within-another-array.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/nest-one-array-within-another-array.md
@@ -1,6 +1,6 @@
---
id: cf1111c1c11feddfaeb7bdef
-title: Aninhar um array com outro array
+title: Aninhar um array em outro array
challengeType: 1
videoUrl: 'https://scrimba.com/c/crZQZf8'
forumTopicId: 18247
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/nesting-for-loops.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/nesting-for-loops.md
index 6386b826d7..6a6eaff192 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/nesting-for-loops.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/nesting-for-loops.md
@@ -9,7 +9,7 @@ dashedName: nesting-for-loops
# --description--
-Se você possui um array multidimensional, você pode usar a mesma lógica no ponto de passagem anterior para iterar através ambos os arrays e qualquer sub-arrays. Exemplo:
+Se você possui um array multidimensional, você pode usar a mesma lógica no ponto de passagem anterior para iterar através de arrays e de qualquer sub-array. Exemplo:
```js
var arr = [
@@ -22,11 +22,11 @@ for (var i=0; i < arr.length; i++) {
}
```
-Isso exibe no console cada sub elemento dentro de `arr`, um de cada vez. Note que para o laço interno, nós estamos verificando a propriedade `.length` de `arr[i]`, desde que `arr[i]` também é um array.
+Isso exibe no console cada subelemento dentro de `arr`, um de cada vez. Note que para o laço interno, nós estamos verificando a propriedade `.length` de `arr[i]`, desde que `arr[i]` também seja um array.
# --instructions--
-Modifique a função `multiplyAll` para que retorne o produto de todos os números nos sub arrays de `arr`.
+Modifique a função `multiplyAll` para que retorne o produto de todos os números nos sub-arrays de `arr`.
# --hints--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/practice-comparing-different-values.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/practice-comparing-different-values.md
index 98bb0a4689..098ab0c8a8 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/practice-comparing-different-values.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/practice-comparing-different-values.md
@@ -17,7 +17,7 @@ Se os valores sendo comparados não são do mesmo tipo, o operador de igualdade
`3 == '3'` retorna `true` porque JavaScript faz a conversão de tipo de string para número. `3 === '3'` retorna falso porque os tipos são diferentes e não é feita a conversão de tipo.
-**Observação:** em JavaScript, você pode determinar o tipo de uma variável ou de um valor, com o operador `typeof`, como se segue:
+**Observação:** em JavaScript, você pode determinar o tipo de uma variável ou de um valor, com o operador `typeof`, como vemos a seguir:
```js
typeof 3
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/profile-lookup.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/profile-lookup.md
index 4890b68b4b..61b354601b 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/profile-lookup.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/profile-lookup.md
@@ -9,7 +9,7 @@ dashedName: profile-lookup
# --description--
-Nós temos um array de objetos representando pessoas diferentes nas nossas listas de contatos.
+Temos um array de objetos representando pessoas diferentes nas nossas listas de contatos.
Uma função `lookUpProfile`, que recebe `name` e uma propriedade (`prop`) como argumentos, foi pré-escrita para você.
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/quoting-strings-with-single-quotes.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/quoting-strings-with-single-quotes.md
index 61bf2b354a..872ea6e039 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/quoting-strings-with-single-quotes.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/quoting-strings-with-single-quotes.md
@@ -9,20 +9,20 @@ dashedName: quoting-strings-with-single-quotes
# --description--
-Valores de String em JavaScript podem ser escritas com aspas simples ou duplas, desde que você comece e termine com o mesmo tipo de aspas. Diferente de outras linguagens de programação, aspas simples e duplas funcionam da mesma forma em JavaScript.
+Valores de string em JavaScript podem ser escritas com aspas simples ou duplas, desde que você comece e termine com o mesmo tipo de aspas. Diferente de outras linguagens de programação, aspas simples e duplas funcionam da mesma forma em JavaScript.
```js
doubleQuoteStr = "This is a string";
singleQuoteStr = 'This is also a string';
```
-O motivo pelo qual você pode querer usar um tipo de aspas no lugar da outra, é se você vir a querer usar ambas em uma string. Isso pode acontecer se você quiser salvar uma conversa em uma string e ter a conversa entre aspas. Outro uso para isso seria salvar uma tag `` com vários atributos em aspas, tudo dentro de uma string.
+O motivo pelo qual você pode querer usar um tipo de aspas no lugar da outra é se você vir a querer usar ambas em uma string. Isso pode acontecer se você quiser salvar uma conversa em uma string e ter a conversa entre aspas. Outro uso para isso seria salvar uma tag `` com vários atributos em aspas, tudo dentro de uma string.
```js
conversation = 'Finn exclaims to Jake, "Algebraic!"';
```
-Porém, isso se torna um problema se você precisar usar as aspas mais extremas dentro dela. Lembre-se, uma string tem o mesmo tipo de aspas no início e no final. Mas se você tem aquela mesma aspa em algum lugar no meio, a string irá terminar mais cedo e lançará um erro.
+Porém, isso se torna um problema se você precisar usar as aspas mais extremas dentro dela. Lembre-se, uma string tem o mesmo tipo de aspas no início e no final. Mas se você tem aquela mesma aspa em algum lugar no meio, a string vai terminar mais cedo e lançará um erro.
```js
goodStr = 'Jake asks Finn, "Hey, let\'s go on an adventure?"';
@@ -39,7 +39,7 @@ Na string goodStr acima, você pode usar ambas as aspas com seguranç
Altere a string fornecida para uma string com aspas simples no início e no final e sem caracteres de escapamento.
-Nesse momento, a tag `` na string usa aspas duplas em todo canto. Você precisará alterar as aspas mais externas em aspas simples, para que você possa remover os caracteres de escapamento.
+Nesse momento, a tag `` na string usa aspas duplas em todo canto. Você precisará alterar as aspas mais externas para aspas simples, para que você possa remover os caracteres de escapamento.
# --hints--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/record-collection.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/record-collection.md
index f7c87ccc91..256e6325f7 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/record-collection.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/record-collection.md
@@ -10,10 +10,10 @@ dashedName: record-collection
Você recebeu um objeto literal representando uma parte da sua coleção de álbuns musicais. Cada álbum possui um número de id único como sua chave e diversas outras propriedades. Nem todos os álbuns possuem informações completas.
-Você começa com uma função `updateRecords` que recebe um objeto literal, `records`, contendo a coleção de álbuns musicais, um `id`, uma prop(like `artist` ou `tracks`) e um `vlaue`. Complete a função usando as regras abaixo para modificar o objeto passado para a função.
+Você começa com uma função `updateRecords` que recebe um objeto literal, `records`, contendo a coleção de álbuns musicais, um `id`, uma `prop`(like `artist` ou `tracks`) e um `value`. Complete a função usando as regras abaixo para modificar o objeto passado para a função.
-- Sua função precisa sempre retornar o objeto de coleção de discos completo.
-- Se `prop` não for `tracks` e `value` não for uma string vazia, atualize ou defina aquela `prop` do album como `value`.
+- A função precisa sempre retornar o objeto de coleção de discos completo.
+- Se `prop` não for `tracks` e `value` não for uma string vazia, atualize ou defina aquela `prop` do álbum como `value`.
- Se `prop` for `tracks` mas o álbum não tiver uma propriedade `tracks`, crie um array vazio e adicione o `value` nesse array.
- Se `prop` for `tracks` e `value` não for uma string vazia, adicione `value` ao final do array existente de `tracks` do álbum.
- Se `value` for uma string vazia, remova a propriedade `prop` recebida do álbum.
@@ -22,7 +22,7 @@ Você começa com uma função `updateRecords` que recebe um objeto literal, `re
# --hints--
-Após `updateRecords(recordCollection, 5439, "artist", "ABBA")`, `artist` deve ser aa string `ABBA`
+Após `updateRecords(recordCollection, 5439, "artist", "ABBA")`, `artist` deve ser a string `ABBA`
```js
assert(
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion.md
index a369560694..4dfb3c5a33 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion.md
@@ -10,7 +10,7 @@ dashedName: replace-loops-using-recursion
# --description--
-Recursividade é o conceito de que uma função pode ser chamada por ela mesmo. Para ajudar a entender isso, comece a pensar sobre a seguinte tarefa: multiplique os primeiros `n` elementos de um array para criar o produto desses elementos. Usando um laço `for`, você poderia fazer isso:
+Recursão é o conceito de que uma função pode ser chamada por ela mesma. Para ajudar a entender isso, comece a pensar sobre a seguinte tarefa: multiplique os primeiros `n` elementos de um array para criar o produto desses elementos. Usando um laço `for`, você poderia fazer isso:
```js
function multiply(arr, n) {
@@ -22,7 +22,7 @@ Recursividade é o conceito de que uma função pode ser chamada por ela mesmo.
}
```
-No entanto, note que `multiply(arr, n) == multiply(arr, n - 1) * arr[n - 1]`. Isso significa que você pode rescreve `multiply` dentro da própria função e nunca precisar de usar um laço.
+No entanto, note que `multiply(arr, n) == multiply(arr, n - 1) * arr[n - 1]`. Isso significa que você pode reescrever `multiply` dentro da própria função e nunca precisar usar um laço.
```js
function multiply(arr, n) {
@@ -34,9 +34,9 @@ No entanto, note que `multiply(arr, n) == multiply(arr, n - 1) * arr[n - 1]`. Is
}
```
-A versão recursiva de `multiply` fica dessa forma. No caso de base, onde `n <= 0`, ele retorna 1. Para valores maiores de `n`, a função chama a si mesmo, mas com `n - 1`. Essa chamada da função é avaliada da mesma forma, chamando `multiply` novamente até que `n <= 0`. Nesse ponto, todas as funções podem retornar e a função `multiply` original retorna a resposta.
+A versão recursiva de `multiply` fica dessa forma. No caso de base, onde `n <= 0`, ele retorna 1. Para valores maiores de `n`, a função chama a si mesma, mas com `n - 1`. Essa chamada da função é avaliada da mesma forma, chamando `multiply` novamente até que `n <= 0`. Nesse ponto, todas as funções podem retornar e a função `multiply` original retorna a resposta.
-**Observação:** funções recursivas precisam ter um caso base quando elas retornam sem chamar a função novamente (nesse exemplo, quando `n <= 0`), caso contrário, elas nunca vão parar de executar.
+**Observação:** funções recursivas precisam ter um caso de base quando elas retornam sem chamar a função novamente (nesse exemplo, quando `n <= 0`), caso contrário, elas nunca vão parar de executar.
# --instructions--
@@ -62,7 +62,7 @@ assert.equal(sum([2, 3, 4], 1), 2);
assert.equal(sum([2, 3, 4, 5], 3), 9);
```
-Seu código não deve depender de nenhum laço (`for` ou `while` ou funções de ordem superior como as funções `forEach`, `map`, `filter` ou `reduce`.).
+O código não deve depender de nenhum laço (`for` ou `while` ou funções de ordem superior como as funções `forEach`, `map`, `filter` ou `reduce`.).
```js
assert(
@@ -70,7 +70,7 @@ assert(
);
```
-Você deve usar recursividade para resolver o problema.
+Você deve usar recursão para resolver o problema.
```js
assert(
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md
index 8c2d7dd24e..3d3f58f14e 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch.md
@@ -38,7 +38,7 @@ switch(val) {
# --instructions--
-Altere a cadeia de instruções `if`/`else if` em um comando `switch`.
+Altere a cadeia de instruções `if`/`else if` por um comando `switch`.
# --hints--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/return-early-pattern-for-functions.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/return-early-pattern-for-functions.md
index 0412a268f4..f61546e164 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/return-early-pattern-for-functions.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/return-early-pattern-for-functions.md
@@ -22,14 +22,14 @@ function myFun() {
myFun();
```
-O código acima exibirá no console a string `Hello`, e retorna a string `World`. A string `byebye` nunca irá ser exibida no console, porque a função termina na instrução `return`.
+O código acima exibirá no console a string `Hello`, e retorna a string `World`. A string `byebye` nunca vai ser exibida no console, porque a função termina na instrução `return`.
# --instructions--
Modifique a função `abTest` para que se `a` ou `b` forem menores que `0` a função irá imediatamente terminar retornando o valor de `undefined`.
**Dica**
-Lembre-se que [`undefined` é uma palavra-chave](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/understanding-uninitialized-variables) e não uma string.
+Lembre-se de que [`undefined` é uma palavra-chave](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/understanding-uninitialized-variables) e não uma string.
# --hints--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/returning-boolean-values-from-functions.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/returning-boolean-values-from-functions.md
index 889317541c..69583213ca 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/returning-boolean-values-from-functions.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/returning-boolean-values-from-functions.md
@@ -9,9 +9,9 @@ dashedName: returning-boolean-values-from-functions
# --description--
-Você pode se lembrar de [Comparação com o Operador de Igualdade](/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-equality-operator) que todas os operadores de comparação retornam um valor booleano `true` ou `false`.
+Você pode se lembrar de [Comparação com o operador de igualdade](/learn/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-equality-operator), em que todos os operadores de comparação retornam um valor booleano `true` ou `false`.
-As vezes as pessoas usam uma instrução `if/else` para fazer uma comparação, dessa forma:
+Às vezes, as pessoas usam uma instrução `if/else` para fazer uma comparação, dessa forma:
```js
function isEqual(a,b) {
@@ -49,7 +49,7 @@ assert(isLess(10, 15) === true);
assert(isLess(15, 10) === false);
```
-Você não deve usar nenhuma das instruções `if` ou `else`
+Você não deve usar nenhuma instrução do tipo `if` ou `else`
```js
assert(!/if|else/g.test(code));
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md
index 383a0f1495..13e07afff8 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/selecting-from-many-options-with-switch-statements.md
@@ -9,7 +9,7 @@ dashedName: selecting-from-many-options-with-switch-statements
# --description--
-Se você possui muitas opções pra escolher, use uma instrução switch. Uma instrução `switch` testa um valor e pode ter muitas instruções case as quais definem os diversos valores possíveis. Instruções são executadas desde o primeiro `case` correspondente até que encontre um `break`.
+Se você possui muitas opções pra escolher, use uma instrução switch. Uma instrução `switch` testa um valor e pode ter muitas instruções case as quais definem os diversos valores possíveis. As instruções são executadas desde o primeiro `case` correspondente até que seja encontrado um `break`.
Aqui está um exemplo de uma instrução `switch`:
@@ -24,7 +24,7 @@ switch(lowercaseLetter) {
}
```
-Valores `case` são testados com o operador de igualdade estrita (`===`). O `break` diz ao JavaScript parar a execução das instruções. Se o `break` for omitido, a próxima instrução case será executada.
+Valores `case` são testados com o operador de igualdade estrita (`===`). O `break` diz ao JavaScript parar interromper a execução das instruções. Se o `break` for omitido, a próxima instrução case será executada.
# --instructions--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/shopping-list.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/shopping-list.md
index 6901d9b53d..9c108ac14d 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/shopping-list.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/shopping-list.md
@@ -9,15 +9,15 @@ dashedName: shopping-list
# --description--
-Crie uma lista de compras na variável `myList`. A lista deve ser um array multidimensional contendo diversos sub arrays.
+Crie uma lista de compras na variável `myList`. A lista deve ser um array multidimensional contendo diversos sub-arrays.
-O primeiro elemento em cada sub array deve conter uma string com o nome do item. O segundo elemento deve ser um número representando a quantidade i.e.
+O primeiro elemento em cada sub-array deve conter uma string com o nome do item. O segundo elemento deve ser um número representando a quantidade, ou seja,
```js
["Chocolate Bar", 15]
```
-Deve ter pelo menos 5 sub arrays na lista.
+Deve haver pelo menos 5 sub-arrays na lista.
# --hints--
@@ -27,13 +27,13 @@ Deve ter pelo menos 5 sub arrays na lista.
assert(isArray);
```
-Os primeiros elementos em cada um dos seus sub arrays devem ser todos strings.
+Os primeiros elementos em cada um dos seus sub-arrays devem ser todos strings.
```js
assert(hasString);
```
-Os segundos elementos em cada um de seus sub arrays devem ser todos números.
+Os segundos elementos em cada um de seus sub-arrays devem ser todos números.
```js
assert(hasNumber);
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/stand-in-line.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/stand-in-line.md
index 7de284d0fb..ff6f79a9c7 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/stand-in-line.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/stand-in-line.md
@@ -9,9 +9,9 @@ dashedName: stand-in-line
# --description--
-Na Ciência da Computação uma fila é uma estrutura de dados abstrata onde itens são mantidos em ordem. Novos itens podem ser adicionados no final da fila e itens mais antigos são removidos do início da fila.
+Na Ciência da Computação, uma fila é uma estrutura de dados abstrata onde itens são mantidos em ordem. Novos itens podem ser adicionados no final da fila e itens mais antigos são removidos do início da fila.
-Escreva a função `nextInLine` a qual recebe um array (`arr`) e um número (`item`) como argumentos.
+Escreva a função `nextInLine`, que recebe um array (`arr`) e um número (`item`) como argumentos.
Adicione o número no final do array e então remova o primeiro elemento do array.
@@ -25,7 +25,7 @@ A função `nextInLine` deve, em seguida, retornar o elemento que foi removido.
assert.isNumber(nextInLine([], 5));
```
-`nextInLine([], 1)` deve retonar `1`
+`nextInLine([], 1)` deve retornar `1`
```js
assert(nextInLine([], 1) === 1);
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/store-multiple-values-in-one-variable-using-javascript-arrays.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/store-multiple-values-in-one-variable-using-javascript-arrays.md
index 32bdd7c510..079b028a3e 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/store-multiple-values-in-one-variable-using-javascript-arrays.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/store-multiple-values-in-one-variable-using-javascript-arrays.md
@@ -9,9 +9,9 @@ dashedName: store-multiple-values-in-one-variable-using-javascript-arrays
# --description--
-Com as variáveis de `array` em JavaScript, podemos armazenar diversos pedaços de dados em um único lugar.
+Com as variáveis de `array` em JavaScript, podemos armazenar diversos dados em um único lugar.
-Você começa uma declaração de um array com a abertura de um colchetes, terminando com o fechamento do colchetes e colocando vírgula entre cada entrada, dessa forma:
+Você começa uma declaração de um array com a abertura de um colchetes, terminando com o fechamento do colchetes e colocando vírgulas entre cada entrada, dessa forma:
```js
var sandwich = ["peanut butter", "jelly", "bread"]
@@ -19,7 +19,7 @@ var sandwich = ["peanut butter", "jelly", "bread"]
# --instructions--
-Modifique o novo array `myArray` para que contenha ambos uma string e um número (nessa ordem).
+Modifique o novo array `myArray` para que contenha uma string e um número (nessa ordem).
# --hints--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/storing-values-with-the-assignment-operator.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/storing-values-with-the-assignment-operator.md
index aab47b1720..126bb71d2e 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/storing-values-with-the-assignment-operator.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/storing-values-with-the-assignment-operator.md
@@ -15,16 +15,16 @@ Em JavaScript, você pode armazenar um valor em uma variável com o operador de
myVariable = 5;
```
-Isso atribui o valor de `Number` `5` para `myVariable`.
+Isso atribui um valor do tipo `Number` de `5` para `myVariable`.
-Se há qualquer cálculo a direita do operador `=`, esses cálculos são executados antes do valor ser atribuído à variável na esquerda do operador.
+Se há qualquer cálculo à direita do operador `=`, esses cálculos são executados antes do valor ser atribuído à variável na esquerda do operador.
```js
var myVar;
myVar = 5;
```
-Primeiro, esse código cria uma variável chamada `myVar`. Em seguida, o código atribui `5` para `myVar`. Agora, se `myVar` aparece novamente no código, o programa vai tratar como se fosse `5`.
+Primeiro, esse código cria uma variável chamada `myVar`. Em seguida, o código atribui `5` para `myVar`. Agora, se `myVar` aparece novamente no código, o programa vai tratá-la como se fosse `5`.
# --instructions--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/testing-objects-for-properties.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/testing-objects-for-properties.md
index 202635ad76..6201d8db9b 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/testing-objects-for-properties.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/testing-objects-for-properties.md
@@ -9,7 +9,7 @@ dashedName: testing-objects-for-properties
# --description--
-Às vezes é útil verificar se a propriedade de um determinado objeto existe ou não. Podemos usar o método de objetos `.hasOwnProperty(propname)` para determinar se aquele objeto possui o nome de propriedade fornecido. `.hasOwnProperty()` retorna `true` ou `false` se a propriedade for encontrada ou não.
+Às vezes, é útil verificar se a propriedade de um determinado objeto existe ou não. Podemos usar o método de objetos `.hasOwnProperty(propname)` para determinar se aquele objeto possui o nome de propriedade fornecido. `.hasOwnProperty()` retorna `true` ou `false` se a propriedade for encontrada ou não.
**Exemplo**
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understand-string-immutability.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understand-string-immutability.md
index ce0e1a72d4..58b01d3748 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understand-string-immutability.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understand-string-immutability.md
@@ -18,7 +18,7 @@ var myStr = "Bob";
myStr[0] = "J";
```
-não é possível alterar o valor de `myStr` para `Job`, porque o conteúdo de `myStr` não pode ser alterado. Note que isso *não* significa que `myStr` não pode ser alterado, apenas que os caracteres individuais de uma string literal não pode ser alterado. A única forma de alterar `myStr` seria atribuindo-a com uma nova string, dessa forma:
+não permite alterar o valor de `myStr` para `Job`, porque o conteúdo de `myStr` não pode ser alterado. Note que isso *não* significa que `myStr` não pode ser alterado, apenas que os caracteres individuais de uma string literal não podem ser alterados. A única forma de alterar `myStr` seria atribuindo a ela uma nova string, dessa forma:
```js
var myStr = "Bob";
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-boolean-values.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-boolean-values.md
index 0f48b74ab5..d1240f035f 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-boolean-values.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-boolean-values.md
@@ -9,17 +9,17 @@ dashedName: understanding-boolean-values
# --description--
-Outro tipo de dado é o Boolean. Booleanos podem ser apenas dois valores: `true` ou `false`. Eles basicamente são interruptores pequenos, onde `true` é ligado e `false` é desligado. Esses dois estados são mutuamente exclusivos.
+Outro tipo de dado é o booleano. Booleanos podem ser apenas dois valores: `true` ou `false`. Eles basicamente são interruptores pequenos, onde `true` é ligado e `false` é desligado. Esses dois estados são mutuamente exclusivos.
-**Observação:** valores booleanos nunca são escritos com aspas. As strings `"true"` e `"false"` não são Booleanos e não tem nenhum significado especial em JavaScript.
+**Observação:** valores booleanos nunca são escritos com aspas. As strings `"true"` e `"false"` não são booleanos e não tem nenhum significado especial em JavaScript.
# --instructions--
-Modifique a função `welcomeToBooleans` para que retorne `true` ao invés de `false` quando o botão de correr for clicado.
+Modifique a função `welcomeToBooleans` para que retorne `true` ao invés de `false` quando o botão de executar for clicado.
# --hints--
-A função `welcomeToBooleans()` deve retornar um valor Booleano (`true` ou `false`).
+A função `welcomeToBooleans()` deve retornar um valor booleano (`true` ou `false`).
```js
assert(typeof welcomeToBooleans() === 'boolean');
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-case-sensitivity-in-variables.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-case-sensitivity-in-variables.md
index 15cefd337f..2f8b53d787 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-case-sensitivity-in-variables.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-case-sensitivity-in-variables.md
@@ -13,7 +13,7 @@ Em JavaScript todas os nomes de variáveis e funções são sensíveis a caracte
`MYVAR` não é o mesmo que `MyVar` nem `myvar`. É possível ter diversas variáveis distintas com o mesmo nome mas com capitalização diferente. É extremamente recomendado pelo bem da clareza, que você *não* use esse recurso da linguagem.
-**Melhores Práticas**
+**Melhores práticas**
Escreva nomes de variáveis em JavaScript em camelCase. Em camelCase, nomes de variáveis com mais de uma palavra possuem a primeira palavra toda em minúscula e a primeira letra de cada palavra subsequente capitalizada.
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-undefined-value-returned-from-a-function.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-undefined-value-returned-from-a-function.md
index 98108545ec..5c0ee20a1b 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-undefined-value-returned-from-a-function.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/understanding-undefined-value-returned-from-a-function.md
@@ -9,7 +9,7 @@ dashedName: understanding-undefined-value-returned-from-a-function
# --description--
-Uma função pode incluir a instrução `return` mas ela não precisa fazer isso. No caso de a função não ter uma instrução `return`, quando você chamá-la, a função processa o código interno, mas o valor retornado é `undefined`.
+Uma função pode incluir a instrução `return` mas ela não precisa fazer isso. No caso de a função não ter uma instrução `return`, quando você a chamar, a função processa o código interno, mas o valor retornado é `undefined`.
**Exemplo**
@@ -21,7 +21,7 @@ function addSum(num) {
addSum(3);
```
-`addSum` é uma função sem uma instrução `return`. A função irá alterar a variável global `sum`, mas o valor retornado da função é `undefined`.
+`addSum` é uma função sem uma instrução `return`. A função vai alterar a variável global `sum`, mas o valor retornado da função é `undefined`.
# --instructions--
@@ -41,7 +41,7 @@ Uma vez que ambas as funções são executadas, a `sum` deve ser igual a `8`.
assert(sum === 8);
```
-Valor retornado de `addFive` deve ser `undefined`.
+O valor retornado de `addFive` deve ser `undefined`.
```js
assert(addFive() === undefined);
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/updating-object-properties.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/updating-object-properties.md
index c4c2832c3a..fcf5f4f160 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/updating-object-properties.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/updating-object-properties.md
@@ -26,7 +26,7 @@ Como ele é um cachorro particularmente feliz, vamos mudar seu nome para o texto
# --instructions--
-Atualize a propriedade name do objeto `myDog`. Vamos alterar o valor da propriedade name dela de `Coder` para `Happy Coder`. Você pode usar notação de ponto ou de colchetes.
+Atualize a propriedade name do objeto `myDog`. Vamos alterar o valor da propriedade name dele de `Coder` para `Happy Coder`. Você pode usar notação de ponto ou de colchetes.
# --hints--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-first-character-in-a-string.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-first-character-in-a-string.md
index 075bd17781..2f9e944a1e 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-first-character-in-a-string.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-first-character-in-a-string.md
@@ -9,11 +9,11 @@ dashedName: use-bracket-notation-to-find-the-first-character-in-a-string
# --description--
-Notação de Colchetes é uma forma de pegar um caractere no índice especificado dentro de uma string.
+Notação de colchetes é uma forma de pegar um caractere no índice especificado dentro de uma string.
-A maioria das linguagens de programações modernas, como JavaScript, não começa contando do 1 como humanos fazem. Eles começam no 0. Isso é referido como indexação baseada em zero.
+A maioria das linguagens de programação modernas, como JavaScript, não começa contando do 1 como humanos fazem. Elas começam no 0. Isso é referido como indexação baseada em zero.
-Por exemplo, o caractere no índice 0 da palavra `Charles` é `C`. Então se `var firstName = "Charles"`, você pode pegar o valor da primeira letra da string usando `firstName[0]`.
+Por exemplo, o caractere no índice 0 da palavra `Charles` é `C`. Então, se `var firstName = "Charles"`, você pode pegar o valor da primeira letra da string usando `firstName[0]`.
Exemplo:
@@ -28,7 +28,7 @@ var firstLetter = firstName[0];
Use notação de colchetes para encontrar o primeiro caractere na variável `lastName` e atribua a letra para a variável `firstLetterOfLastName`.
-**Dica:** Tente olhar o exemplo acima se você ficar travado.
+**Dica:** tente olhar o exemplo acima se você ficar travado.
# --hints--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-last-character-in-a-string.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-last-character-in-a-string.md
index ed63c9404b..34d0f6513d 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-last-character-in-a-string.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-last-character-in-a-string.md
@@ -9,7 +9,7 @@ dashedName: use-bracket-notation-to-find-the-last-character-in-a-string
# --description--
-Em ordem para pegar a última letra de uma string, você pode subtrair um do tamanho da string.
+Para pegar a última letra de uma string, você pode subtrair um do tamanho da string.
Por exemplo, se `var firstName = "Ada"`, você pode pegar o valor da última letra da string ao usar `firstName[firstName.length - 1]`.
@@ -24,9 +24,9 @@ var lastLetter = firstName[firstName.length - 1];
# --instructions--
-Use notação de colchetes para descobrir o último caracter na variável `lastName`.
+Use notação de colchetes para descobrir o último caractere na variável `lastName`.
-**Dica:** Tente olhar o exemplo acima se você ficar travado.
+**Dica:** tente olhar o exemplo acima se você ficar travado.
# --hints--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-character-in-a-string.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-character-in-a-string.md
index c84cfd4993..49ac129577 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-character-in-a-string.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-character-in-a-string.md
@@ -11,7 +11,7 @@ dashedName: use-bracket-notation-to-find-the-nth-character-in-a-string
Você também pode usar notação de colchetes para pegar caracteres em outras posições em uma string.
-Lembre-se que computadores começam contando do `0`, então o primeiro caractere é na verdade o caractere na posição 0.
+Lembre-se de que computadores começam contando do `0`. Então, o primeiro caractere é na verdade o caractere na posição 0.
Exemplo:
@@ -26,7 +26,7 @@ var secondLetterOfFirstName = firstName[1];
Vamos tentar definir `thirdLetterOfLastName` para ser igual a terceira letra da variável `lastName` usando notação de colchetes.
-**Dica:** Tente olhar o exemplo acima se você ficar travado.
+**Dica:** tente olhar o exemplo acima se você ficar travado.
# --hints--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-to-last-character-in-a-string.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-to-last-character-in-a-string.md
index 090b6381d4..595e7865b7 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-to-last-character-in-a-string.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-bracket-notation-to-find-the-nth-to-last-character-in-a-string.md
@@ -9,9 +9,9 @@ dashedName: use-bracket-notation-to-find-the-nth-to-last-character-in-a-string
# --description--
-Você pode usar o mesmo princípio que nós acabamos de usar para recuperar o último caractere em uma string, para recuperar o Nº antes do último caractere.
+Você pode usar o mesmo princípio que nós acabamos de usar para recuperar o último caractere em uma string, para recuperar o enésimo caractere antes do último caractere.
-Por exemplo, você pode pegar o valor da antepenúltima letra da string `var fistName = "Augusta` usando `firstName[firstName.length -3]`
+Por exemplo, você pode pegar o valor da antepenúltima letra da string `var firstName = "Augusta"` usando `firstName[firstName.length - 3]`
Exemplo:
@@ -26,7 +26,7 @@ var thirdToLastLetter = firstName[firstName.length - 3];
Use notação de colchetes para descobrir o penúltimo caractere na string `lastName`.
-**Dica:** Tente olhar o exemplo acima se você ficar travado.
+**Dica:** tente olhar o exemplo acima se você ficar travado.
# --hints--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-conditional-logic-with-if-statements.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-conditional-logic-with-if-statements.md
index 017a59bf3e..7f5b3ab8e7 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-conditional-logic-with-if-statements.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-conditional-logic-with-if-statements.md
@@ -11,7 +11,7 @@ dashedName: use-conditional-logic-with-if-statements
Instruções `If` são usadas para tomar decisões no código. A palavra-chave `if` diz ao JavaScript para executar o código nas chaves sob certas condições, definidas nos parênteses. Essas condições são conhecidas como condições `Boolean` e elas só podem ser `true` ou `false`.
-Quando a condição for `true`, o programa executara as instruções dentro das chaves. Quando a condição booleana for `false`, as instruções dentro das chaves não serão executadas.
+Quando a condição for `true`, o programa executará as instruções dentro das chaves. Quando a condição booleana for `false`, as instruções dentro das chaves não serão executadas.
**Pseudocódigo**
@@ -32,7 +32,7 @@ test(false);
`test(true)` retorna a string `It was true` e `test(false)` retorna a string `It was false`.
-Quando `test` é chamado com o valor `true`, a instrução `if` avalia `myCondition` para verificar se é `true` ou não. Já que é `true`, a função retorna `It was true`. Quando chamamos `test` com um valor de `false`, `myCondition` *não é* `true` e a instrução nas chaves não é executada e a função retorna `It was false`.
+Quando `test` é chamado com o valor `true`, a instrução `if` avalia `myCondition` para verificar se é `true` ou não. Já que é `true`, a função retorna `It was true`. Quando chamamos `test` com um valor de `false`, `myCondition` *não é* `true`, a instrução nas chaves não é executada e a função retorna `It was false`.
# --instructions--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-multiple-conditional-ternary-operators.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-multiple-conditional-ternary-operators.md
index cd632f156c..5742fccda0 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-multiple-conditional-ternary-operators.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-multiple-conditional-ternary-operators.md
@@ -37,7 +37,7 @@ function findGreaterOrEqual(a, b) {
}
```
-É considerado a melhor prática para formatar operadores de múltiplas condições, tal que cada condição está em uma linha separada, como mostrada acima. Usando operadores de múltiplas condições sem a indentação adequada pode dificultar a leitura do seu código. Por exemplo:
+É considerada a melhor prática para formatar operadores de múltiplas condições, já que cada condição está em uma linha separada, como mostrado acima. Usar operadores de múltiplas condições sem a indentação adequada pode dificultar a leitura do seu código. Por exemplo:
```js
function findGreaterOrEqual(a, b) {
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-recursion-to-create-a-countdown.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-recursion-to-create-a-countdown.md
index 9c4e6a2fe5..be165e0aff 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-recursion-to-create-a-countdown.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-recursion-to-create-a-countdown.md
@@ -8,11 +8,11 @@ dashedName: use-recursion-to-create-a-countdown
# --description--
-Em um [desafio anterior](/learn/javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion), você aprendeu como usar recursividade para substituir laços `for`. Agora, vamos analisar uma função mais complexa, a qual retorna um array de inteiros consecutivos começando com `1` até o número passado para a função.
+Em um [desafio anterior](/learn/javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion), você aprendeu como usar recursão para substituir laços `for`. Agora, vamos analisar uma função mais complexa, a qual retorna um array de inteiros consecutivos começando com `1` até o número passado para a função.
-Como mencionado no desafio anterior, haverá um caso base. O caso base diz a função recursiva quando ela não precisa mais chamar a si. É um simples caso onde o valor de retorno já é conhecido. Também haverá uma chamada recursiva a qual executa a função original com argumentos diferentes. Se a função for escrita corretamente, eventualmente o caso base será alcançado.
+Como mencionado no desafio anterior, haverá um caso de base. O caso de base diz a função recursiva quando ela não precisa mais chamar a si. É um simples caso onde o valor de retorno já é conhecido. Também haverá uma chamada recursiva, a qual executa a função original com argumentos diferentes. Se a função for escrita corretamente, eventualmente o caso de base será alcançado.
-Por exemplo, vamos dizer que você quer escrever uma função recursiva que retorna um array contendo os números de `1` até `n`. Essa função precisará aceitar um argumento, `n`, representando o número final. Então ela precisará chamar a si mesmo como valores progressivamente menores de `n` até que alcance `1`. Você poderia escrever a função da seguinte forma:
+Por exemplo, vamos dizer que você quer escrever uma função recursiva que retorna um array contendo os números de `1` até `n`. Essa função precisará aceitar um argumento, `n`, representando o número final. Então, ela precisará chamar a si mesma com valores progressivamente menores, começando em `n` até chegar a `1`. Você poderia escrever a função da seguinte forma:
```javascript
function countup(n) {
@@ -29,11 +29,11 @@ console.log(countup(5));
O valor `[1, 2, 3, 4, 5]` será exibido no console.
-Inicialmente, isso se parece contra-intuitivo já que o valor de `n` *diminui*, mas os valores no array final estão *em ordem crescente*. Isso acontece porque a adição no array (push) acontece por último, após a chamada recursiva ter retornado. No ponto onde `n` é adicionado ao array, `countup(n - 1)` já foi avaliado e retornou `[1, 2, ..., n -1]`.
+Inicialmente, isso parece contraintuitivo já que o valor de `n` *diminui*, mas os valores no array final estão *em ordem crescente*. Isso acontece porque a adição no array (push) acontece por último, após a chamada recursiva ter retornado. No ponto onde `n` é adicionado ao array, `countup(n - 1)` já foi avaliado e retornou `[1, 2, ..., n -1]`.
# --instructions--
-Definimos uma função chamada `countdown` com um parâmetro (`n`). A função deve usar recursividade para retornar um array contendo inteiros `n` até `1` baseado no parâmetro `n`. Se a função é chamada com um número menor que 1, a função deve retornar um array vazio. Por exemplo, chamando essa função com `n = 5` deve retornar o array `[5, 4, 3, 2, 1]`. Sua função precisa usar recursividade ao chamar ela mesma e não deve usar laços de qualquer tipo.
+Definimos uma função chamada `countdown` com um parâmetro (`n`). A função deve usar recursão para retornar um array contendo inteiros `n` até `1` com base no parâmetro `n`. Se a função é chamada com um número menor que 1, a função deve retornar um array vazio. Por exemplo, chamar essa função com `n = 5` deve retornar o array `[5, 4, 3, 2, 1]`. Sua função precisa usar recursão para chamar a si mesma e não depender de nenhum tipo de laço.
# --hints--
@@ -55,7 +55,7 @@ assert.deepStrictEqual(countdown(10), [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]);
assert.deepStrictEqual(countdown(5), [5, 4, 3, 2, 1]);
```
-Seu código não deve depender de nenhum tipo de laço (`for`, `while` ou outras funções superiores como `forEach`, `map`, `filter` e `reduce`).
+O código não deve depender de nenhum laço (`for` ou `while` ou funções de ordem superior como as funções `forEach`, `map`, `filter` ou `reduce`).
```js
assert(
@@ -63,7 +63,7 @@ assert(
);
```
-Você deve usar recursividade para resolver esse problema.
+Você deve usar recursão para resolver o problema.
```js
assert(
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-recursion-to-create-a-range-of-numbers.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-recursion-to-create-a-range-of-numbers.md
index 5c41684d6a..8d4f0948e2 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-recursion-to-create-a-range-of-numbers.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/use-recursion-to-create-a-range-of-numbers.md
@@ -8,21 +8,21 @@ dashedName: use-recursion-to-create-a-range-of-numbers
# --description--
-Continuando do desafio anterior, nós o fornecemos outra oportunidade para criar uma função recursiva para resolver um problema.
+Continuando do desafio anterior, fornecemos a você outra oportunidade para criar uma função recursiva para resolver um problema.
# --instructions--
-Definimos uma função chamada `rangeOfNumbers` com dois parâmetros. A função deve retornar um array de inteiros a qual começa com um número representado pelo parâmetro `startNum` e terminar com um número representado pelo parâmetro `endNum`. O número inicial sempre será menor ou igual ao número final. Sua função precisa usar recursividade ao chamar ela mesma e não depender de nenhum tipo de laço. Também deve funcionar para casos onde ambos `startNum` e `endNum` forem o mesmo.
+Definimos uma função chamada `rangeOfNumbers` com dois parâmetros. A função deve retornar um array de inteiros a qual começa com um número representado pelo parâmetro `startNum` e terminar com um número representado pelo parâmetro `endNum`. O número inicial sempre será menor ou igual ao número final. Sua função precisa usar recursão para chamar a si mesma e não deve depender de nenhum tipo de laço. Também deve funcionar para casos onde `startNum` e `endNum` tiverem o mesmo valor.
# --hints--
-Sua função deve retornar um array.
+A função deve retornar um array.
```js
assert(Array.isArray(rangeOfNumbers(5, 10)));
```
-Seu código não deve depender de nenhum laço (`for` ou `while` ou funções de ordem superior como as funções `forEach`, `map`, `filter` ou `reduce`).
+O código não deve depender de nenhum laço (`for` ou `while` ou funções de ordem superior como as funções `forEach`, `map`, `filter` ou `reduce`).
```js
assert(
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/using-objects-for-lookups.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/using-objects-for-lookups.md
index f4f9553655..6137d6f528 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/using-objects-for-lookups.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/using-objects-for-lookups.md
@@ -35,7 +35,7 @@ alpha[value];
# --instructions--
-Converta a instrução switch em um objeto chamado `lookup`. Use ele para pesquisar por `val` e atribua a string associada para a variável `result`.
+Converta a instrução switch em um objeto chamado `lookup`. Use-o para pesquisar por `val` e atribua a string associada para a variável `result`.
# --hints--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/word-blanks.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/word-blanks.md
index 46294a96de..784270bdd0 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/word-blanks.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/word-blanks.md
@@ -9,11 +9,11 @@ dashedName: word-blanks
# --description--
-Nós vamos agora usar nosso conhecimento de strings para criar um "[Mad Libs](https://en.wikipedia.org/wiki/Mad_Libs)" estilo de jogo de palavras que chamamos de "Palavras em Branco". Você criará uma frase no estilo "Preencha os Espaços em Branco" (opcionalmente humorosa).
+Vamos agora usar nosso conhecimento de strings para criar um "[Mad Libs](https://en.wikipedia.org/wiki/Mad_Libs)" estilo de jogo de palavras que chamamos de "Palavras em Branco". Você criará uma frase no estilo "Preencha os espaços em branco" (opcional: de modo engraçado).
-Em um jogo "Mad Libs", você recebe frases com algumas palavras faltando, como substantivos, verbos, adjetivos e advérbios. Você então preencherá os pedaços faltantes com palavras de sua escolha em uma forma que a frase completa faça sentido.
+Em um jogo de "Mad Libs", você recebe frases com algumas palavras faltando, como substantivos, verbos, adjetivos e advérbios. Você então preencherá os pedaços faltantes com palavras de sua escolha de modo que a frase completa faça sentido.
-Considere a frase - Era realmente **\_\_\_\_** e nós **\_\_\_\_** nós mesmos **\_\_\_\_**. Essa sentença possui três pedaços faltando - um adjetivo, um verbo e um advérbio, e nós podemos adicionar palavras de nossa escolha para completar. Em seguida, podemos atribuir a frase completa para uma variável como se segue:
+Considere a frase - Era realmente **\_\_\_\_** e nós **\_\_\_\_** nós mesmos **\_\_\_\_**. Essa frase possui três pedaços faltando - um adjetivo, um verbo e um advérbio, e nós podemos adicionar palavras de nossa escolha para completar. Em seguida, podemos atribuir a frase completa para uma variável como se segue:
```js
var sentence = "It was really " + "hot" + ", and we " + "laughed" + " ourselves " + "silly" + ".";
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/write-reusable-javascript-with-functions.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/write-reusable-javascript-with-functions.md
index 3754fe833b..05ed903dd4 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/write-reusable-javascript-with-functions.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/basic-javascript/write-reusable-javascript-with-functions.md
@@ -9,7 +9,7 @@ dashedName: write-reusable-javascript-with-functions
# --description--
-Em JavaScript, nós podemos dividir nosso código em partes reutilizáveis chamadas de functions.
+Em JavaScript, nós podemos dividir nosso código em partes reutilizáveis chamadas de funções.
Aqui está um exemplo de uma função:
@@ -19,7 +19,7 @@ function functionName() {
}
```
-Você pode chamar ou invocar essa função ao usar seu nome seguido de parênteses, da seguinte forma: `functionName();` Cada vez que a função é chamada imprimirá no console a mensagem `Hello World`. Todo o código entre as chaves será executado toda vez que uma função for chamada.
+Você pode chamar ou invocar essa função ao usar seu nome seguido de parênteses, da seguinte forma: `functionName();` Cada vez que a função é chamada, imprimirá no console a mensagem `Hello World`. Todo o código entre as chaves será executado toda vez que uma função for chamada.
# --instructions--
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-arguments-passed-in-the-wrong-order-when-calling-a-function.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-arguments-passed-in-the-wrong-order-when-calling-a-function.md
index 146dd870ce..84165f16f9 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-arguments-passed-in-the-wrong-order-when-calling-a-function.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-arguments-passed-in-the-wrong-order-when-calling-a-function.md
@@ -12,17 +12,17 @@ Continuando a discussão sobre chamada de funções, o próximo bug para prestar
# --instructions--
-A função `raiseToPower` eleva uma base para um expoente. Infelizmente, não é chamada corretamente - corrija o código para que o valor de `power` seja o esperado 8.
+A função `raiseToPower` eleva uma base para um expoente. Infelizmente, não é chamada corretamente - corrija o código para que o valor de `power` seja o 8 esperado.
# --hints--
-Seu código deve corrigir a variável `power` para que seja igual a 2 elevado a 3ª potência, e não 3 elevado a 2ª potência.
+O código deve corrigir a variável `power` para que seja igual a 2 elevado a 3ª potência, e não 3 elevado a 2ª potência.
```js
assert(power == 8);
```
-Seu código deve usar a ordem correta dos argumentos para a chamada da função `raiseToPower`.
+O código deve usar a ordem correta dos argumentos para a chamada da função `raiseToPower`.
```js
assert(code.match(/raiseToPower\(\s*?base\s*?,\s*?exp\s*?\);/g));
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-missing-open-and-closing-parenthesis-after-a-function-call.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-missing-open-and-closing-parenthesis-after-a-function-call.md
index e010f24b30..832d177653 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-missing-open-and-closing-parenthesis-after-a-function-call.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-missing-open-and-closing-parenthesis-after-a-function-call.md
@@ -28,13 +28,13 @@ Corrija o código para que a variável `result` seja definida para o valor retor
# --hints--
-Seu código deve corrigir a variável `result` para que seja definida para o número que a função `getNine` retorna.
+O código deve corrigir a variável `result` para que seja definida para o número que a função `getNine` retorna.
```js
assert(result == 9);
```
-Seu código deve chamar a função `getNine`.
+O código deve chamar a função `getNine`.
```js
assert(code.match(/getNine\(\)/g).length == 2);
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-misspelled-variable-and-function-names.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-misspelled-variable-and-function-names.md
index fee12f0810..a09dadfa9e 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-misspelled-variable-and-function-names.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-misspelled-variable-and-function-names.md
@@ -8,9 +8,9 @@ dashedName: catch-misspelled-variable-and-function-names
# --description--
-Os métodos `console.log()` e `typeof` são duas formas primárias para verificar valores intermediários e tipos de saída do programa. Agora é hora entrar nas formas comuns que um bug assume. Um problema de nível de sintaxe que digitadores rápidos podem ter passado é o humilde erro de digitação incorreta.
+Os métodos `console.log()` e `typeof` são duas formas primárias para verificar valores intermediários e tipos de saída do programa. Agora é hora de conhecer as formas comuns que um bug assume. Um problema de nível de sintaxe que digitadores rápidos podem deixar passar é um simples erro de digitação incorreta.
-Caracteres deslocados, faltando ou capitalizado erroneamente em um nome de variável ou função fará com que o navegador procure por um objeto que não existe - e reclamará na forma de um erro de referência. Variáveis e funções JavaScript são sensíveis a caracteres maiúsculos e minúsculos.
+Caracteres deslocados, faltando ou capitalizados erroneamente em um nome de variável ou função farão com que o navegador procure por um objeto que não existe - e reclame na forma de um erro de referência. Variáveis e funções JavaScript são sensíveis a caracteres maiúsculos e minúsculos.
# --instructions--
@@ -24,7 +24,7 @@ Verifique a ortografia das duas variáveis usadas no cálculo de netWorkingCapit
assert(netWorkingCapital === 2);
```
-Não deve haver instâncias de variáveis com ortografia incorretas no código.
+Não deve haver instâncias de variáveis com ortografia incorreta no código.
```js
assert(!code.match(/recievables/g));
@@ -36,7 +36,7 @@ A variável `receivables` deve ser declarada e usada corretamente no código.
assert(code.match(/receivables/g).length == 2);
```
-Não deve haver instâncias de variáveis com ortografia incorretas no código.
+Não deve haver instâncias de variáveis com ortografia incorreta no código.
```js
assert(!code.match(/payable;/g));
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-mixed-usage-of-single-and-double-quotes.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-mixed-usage-of-single-and-double-quotes.md
index 2b6cb253d9..e8ad186546 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-mixed-usage-of-single-and-double-quotes.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-mixed-usage-of-single-and-double-quotes.md
@@ -8,20 +8,21 @@ dashedName: catch-mixed-usage-of-single-and-double-quotes
# --description--
-JavaScript nos permite o uso de ambas as aspas simples (`') e duplas (") para declarar uma string. Decidir qual delas usar geralmente é uma questão de preferência pessoal, com algumas exceções.
+JavaScript nos permite o uso de aspas simples (`'`) e duplas (`"`) para declarar uma string. Decidir qual delas usar geralmente é uma questão de preferência pessoal, com algumas exceções.
-Ter duas opções é ótimo quando uma string possui contrações ou outros pedaços de texto que estão entre aspas. Apenas tome cuidado para que você não feche uma string muito cedo, o que causa erro de sintaxe.
+Ter duas opções é ótimo quando uma string possui contrações ou outros pedaços de texto que estão entre aspas. Apenas tome cuidado para que você não feche uma string muito cedo, o que causa erro de sintaxe.
-Aqui estão alguns exemplos de mistura de aspas:
+Aqui estão alguns exemplos de mistura de aspas:
-const grouchoContraction = "I've had a perfectly wonderful evening, but this wasn't it.";
+```js
+const grouchoContraction = "I've had a perfectly wonderful evening, but this wasn't it.";
const quoteInString = "Groucho Marx once said 'Quote me as saying I was mis-quoted.'";
const uhOhGroucho = 'I've had a perfectly wonderful evening, but this wasn't it.';
-`
+```
As duas primeiras estão corretas, mas a terceira não.
-Claro, não há problema usar apenas um estilo de aspas. Você pode escapar as aspas dentro de uma string ao usar o caractere barra invertida (\):
+Claro, não há problema em usar apenas um estilo de aspas. Você pode escapar as aspas dentro de uma string ao usar o caractere barra invertida (`\`):
```js
const allSameQuotes = 'I\'ve had a perfectly wonderful evening, but this wasn\'t it.';
@@ -29,17 +30,17 @@ const allSameQuotes = 'I\'ve had a perfectly wonderful evening, but this wasn\'t
# --instructions--
-Corrija a string para que ou use aspas diferentes para o valor de `href` ou escape as aspas existentes. Mantenha as aspas duplas ao redor de toda a string.
+Corrija a string para que use aspas diferentes para o valor de `href` ou escape as aspas existentes. Mantenha as aspas duplas ao redor de toda a string.
# --hints--
-Seu código deve corrigir as aspas em torno do valor de `href`: `#Home` ao mudar ou escapar elas.
+O código deve corrigir as aspas em torno do valor de `href`: `#Home` mudando-as ou escapando-as.
```js
assert(code.match(//g));
```
-Seu código deve manter as aspas duplas ao redor de toda a string.
+O código deve manter as aspas duplas ao redor de toda a string.
```js
assert(code.match(/".*?<\/p>";/g));
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-off-by-one-errors-when-using-indexing.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-off-by-one-errors-when-using-indexing.md
index 071ffd12d1..422554d83c 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-off-by-one-errors-when-using-indexing.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-off-by-one-errors-when-using-indexing.md
@@ -8,9 +8,9 @@ dashedName: catch-off-by-one-errors-when-using-indexing
# --description--
-Off by one errors (erros de fora por um) (as vezes chamado OBOE) surge quando você está tentando acessar um índice específico de uma string ou array (para fatiar ou acessar um segmento), ou quando você está iterando sobre seus índices. A indexação de JavaScript começa em zero e não um, o que significa que o último índice sempre será o tamanho do item menos 1 (array.length - 1). Se você estiver tentando acessar um índice igual ao tamanho, o programa pode lançar uma referência do erro "index out of range" ou imprimir `undefined`.
+Off by one errors (erros de fora por um) (as vezes chamados de OBOE) surgem quando você está tentando acessar um índice específico de uma string ou array (para fatiar ou acessar um segmento), ou quando você está iterando sobre seus índices. A indexação de JavaScript começa em zero e não um, o que significa que o último índice sempre será o tamanho do item menos 1 (array.length - 1). Se você estiver tentando acessar um índice igual ao tamanho, o programa pode lançar uma referência do erro "index out of range" ou imprimir `undefined`.
-Quando você usa métodos de string ou array que recebem intervalos de índices como argumentos, auxilia na leitura da documentação e compreender se eles são inclusivos (o item no índice especificado é parte do que é retornado) ou não. Aqui estão alguns exemplos de erros de fora por um:
+Quando você usa métodos de string ou array que recebem intervalos de índices como argumentos, auxilia ler a documentação e compreender se eles são inclusivos (o item no índice especificado é parte do que é retornado) ou não. Aqui estão alguns exemplos de erros de fora por um:
```js
let alphabet = "abcdefghijklmnopqrstuvwxyz";
@@ -34,25 +34,25 @@ Corrija os dois erros de índices nas funções seguintes para que todos os núm
# --hints--
-Seu código deve definir a condição inicial do laço para começar do primeiro índice.
+O código deve definir a condição inicial do laço para começar do primeiro índice.
```js
assert(code.match(/i\s*?=\s*?0\s*?;/g).length == 1);
```
-Seu código deve corrigir a condição inicial do laço para que o índice comece em 0.
+O código deve corrigir a condição inicial do laço para que o índice comece em 0.
```js
assert(!code.match(/i\s?=\s*?1\s*?;/g));
```
-Seu código deve definir a condição de parada do laço, a fim de parar no último índice.
+O código deve definir a condição de parada do laço, a fim de parar no último índice.
```js
assert(code.match(/i\s*?<\s*?len\s*?;/g).length == 1);
```
-Seu código deve corrigir a condição de parada do laço, a fim de parar no tamanho menos 1.
+O código deve corrigir a condição de parada do laço, a fim de parar no tamanho menos 1.
```js
assert(!code.match(/i\s*?<=\s*?len;/g));
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-unclosed-parentheses-brackets-braces-and-quotes.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-unclosed-parentheses-brackets-braces-and-quotes.md
index 18969768ab..b80bbe3192 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-unclosed-parentheses-brackets-braces-and-quotes.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-unclosed-parentheses-brackets-braces-and-quotes.md
@@ -8,9 +8,9 @@ dashedName: catch-unclosed-parentheses-brackets-braces-and-quotes
# --description--
-Outro erro de sintaxe para estar ciente é que todas as aberturas de parênteses, colchetes, chaves e aspas têm um par de fechamento. Esquecer um pedaço tende a acontecer quando você está editando um código existente e inserindo itens com um dos tipos de pares. Também, tenha cuidado ao aninhar blocos de código em outros, como adicionar uma função de callback como um argumento a um método.
+Outro erro de sintaxe para estar ciente é que todas as aberturas de parênteses, colchetes, chaves e aspas têm um par de fechamento. Esquecer um pedaço tende a acontecer quando você está editando um código existente e inserindo itens com um dos tipos de pares. Além disso, tenha cuidado ao aninhar blocos de código em outros, como ao adicionar uma função de callback como um argumento a um método.
-Uma maneira de evitar esse erro é assim que o caractere de abertura é digitado, imediatamente inclua o caractere de fechamento, mova o cursor entre eles e continue programando. Felizmente, a maioria dos editores de código modernos geram a segunda parte do par automaticamente.
+Uma maneira de evitar esse erro é, assim que o caractere de abertura é digitado, incluir imediatamente o caractere de fechamento, mover o cursor entre eles e continuar programando. Felizmente, a maioria dos editores de código modernos geram a segunda parte do par automaticamente.
# --instructions--
@@ -18,13 +18,13 @@ Corrija os dois erros de pares no código.
# --hints--
-Seu código deve corrigir o pedaço que falta do array.
+O código deve corrigir o pedaço que falta do array.
```js
assert(code.match(/myArray\s*?=\s*?\[\s*?1\s*?,\s*?2\s*?,\s*?3\s*?\];/g));
```
-Seu código deve corrigir o pedaço que falta do método `.reduce()`. A saída no console deve mostrar que `Sum of array value is: 6`.
+O código deve corrigir o pedaço que falta do método `.reduce()`. A saída no console deve mostrar que `Sum of array value is: 6`.
```js
assert(arraySum === 6);
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-use-of-assignment-operator-instead-of-equality-operator.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-use-of-assignment-operator-instead-of-equality-operator.md
index 4f844e0350..ebd67f8237 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-use-of-assignment-operator-instead-of-equality-operator.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/catch-use-of-assignment-operator-instead-of-equality-operator.md
@@ -10,11 +10,11 @@ dashedName: catch-use-of-assignment-operator-instead-of-equality-operator
Programas de ramificação, ou seja, programas que fazem coisas diferentes se certas condições forem atendidas, dependem de instruções `i`, `else if` e `else` em JavaScript. Às vezes a condição verifica se um resultado é igual a um valor.
-Essa lógica é fala da seguinte forma: "se x for igual a y, então ..." o que pode literalmente ser traduzido para código usando o `=`, ou operador de atribuição. Isso leva a um controle de fluxo inesperado no seu programa.
+Essa lógica é dita da seguinte forma: "se x for igual a y, então ..." o que pode literalmente ser traduzido para código usando o `=`, ou operador de atribuição. Isso leva a um controle de fluxo inesperado no seu programa.
Como abordado nos desafios anteriores, o operador de atribuição (`=`) em JavaScript, atribui um valor para o nome de uma variável. E os operadores `==` e `===` verificam pela igualdade (o triplo `===` testa por igualdade estrita, significando que ambos os valores e o tipo de dado são os mesmos).
-O código abaixo atribui `x` para ser 2, o que tem como resultado `true`. Quase todo valor por si só em JavaScript são avaliados como `true`, exceto com o que são conhecidos como valores falsos: `false`, `0`, `""` (uma string vazia), `NaN`, `undefined` e `null`.
+O código abaixo atribui o valor 2 para `x`, o que tem como resultado `true`. Quase todo valor por si só em JavaScript é avaliado como `true`, exceto os que são conhecidos como valores "falsy": `false`, `0`, `""` (uma string vazia), `NaN`, `undefined` e `null`.
```js
let x = 1;
@@ -26,7 +26,7 @@ if (x = y) {
}
```
-Nesse exemplo, o bloco de código dentro da instrução `if` vai rodar para qualquer valor de `y`, a não ser que `y` seja falso. O bloco de `else`, que nós esperamos ser executado aqui, não vai realmente rodar.
+Nesse exemplo, o bloco de código dentro da instrução `if` vai rodar para qualquer valor de `y`, a não ser que `y` seja falso. O bloco de `else`, que nós esperamos que seja executado aqui, não vai rodar de fato.
# --instructions--
@@ -34,7 +34,7 @@ Corrija a condição para que o programa rode na ramificação correta e o valor
# --hints--
-Seu código deve corrigir a condição para que verifique pela igualdade, ao invés de usar atribuição.
+O código deve corrigir a condição para que verifique pela igualdade, ao invés de usar atribuição.
```js
assert(result == 'Not equal!');
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md
index eb8b729de3..651f9a1734 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md
@@ -20,21 +20,21 @@ function loopy() {
}
```
-É trabalho do programador garantir que a condição de parada, a qual avisa ao programa quando sair de um laço, é eventualmente alcançada. Um erro é incrementar ou decrementar uma variável contadora na direção errada da condição de parada. Outro erro é acidentalmente reiniciar uma variável contadora ou de índice dentro do laço, ao invés de incrementar ou decrementar.
+É trabalho do programador garantir que a condição de parada, a qual avisa ao programa quando sair de um laço, seja eventualmente alcançada. Um erro é incrementar ou decrementar uma variável contadora na direção errada da condição de parada. Outro erro é acidentalmente reiniciar uma variável contadora ou de índice dentro do laço, ao invés de incrementar ou decrementar.
# --instructions--
-A função `myFunc()` contém um laço infinito porque a condição de parada `i != 4` nunca será `false` (e então quebrar o laço) - `i` vai incrementar em 2 a cada iteração, e passa direto por 4 já que `i` é ímpar no início. Corrija o operador de comparação para que o laço só rode enquanto `i` for menor ou igual a 4.
+A função `myFunc()` contém um laço infinito porque a condição de parada `i != 4` nunca será `false` (para, então, quebrar o laço) - `i` vai incrementar em 2 a cada iteração, e passa direto por 4 já que `i` é ímpar no início. Corrija o operador de comparação para que o laço só rode enquanto `i` for menor ou igual a 4.
# --hints--
-Seu código deve alterar o operador de comparação na condição de parada (parte do meio) do laço `for`.
+O código deve alterar o operador de comparação na condição de parada (parte do meio) do laço `for`.
```js
assert(code.match(/i\s*?<=\s*?4;/g).length == 1);
```
-Seu código deve corrigir o operador de comparação na condição de parada do laço.
+O código deve corrigir o operador de comparação na condição de parada do laço.
```js
assert(!code.match(/i\s*?!=\s*?4;/g));
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console.md
index c21adad2b6..1f10fa047a 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/understanding-the-differences-between-the-freecodecamp-and-browser-console.md
@@ -1,6 +1,6 @@
---
id: 587d7b83367417b2b2512b37
-title: Entender a diferença entre o console da freeCodeCamp e do navegador
+title: Entender a diferença entre o console do freeCodeCamp e do navegador
challengeType: 1
forumTopicId: 301193
dashedName: understanding-the-differences-between-the-freecodecamp-and-browser-console
@@ -8,17 +8,17 @@ dashedName: understanding-the-differences-between-the-freecodecamp-and-browser-c
# --description--
-Você pode ter percebido que alguns dos desafios de JavaScript da freeCodeCamp incluem seu próprio console. Esse console se comporta um pouco difrente do console do navegador que você utilizou no último desafio.
+Você pode ter percebido que alguns dos desafios de JavaScript da freeCodeCamp incluem seu próprio console. Esse console se comporta um pouco diferente do console do navegador que você utilizou no último desafio.
-O desafio a seguir tem a finalidade de destacar a principal diferença entre o console da freeCodeCamp e do navegador.
+O desafio a seguir tem a finalidade de destacar a principal diferença entre o console do freeCodeCamp e do navegador.
Quando você executa JavaScript comum, o console do navegado exibirá suas instruções `console.log()` a exata quantidade de vezes que é chamada.
-O console da freeCodeCamp irá imprimir suas instruções `console.log()` um curto período depois do editor detectar mudança no script, e também durante o teste.
+O console do freeCodeCamp irá imprimir suas instruções `console.log()` um curto período depois do editor detectar mudança no script, e também durante o teste.
-O console da freeCodeCamp é apagado antes de cada execução de testes e, para evitar spam, só imprime os logs durante o primeiro teste (veja a nota abaixo para exceções).
+O console do freeCodeCamp é apagado antes de cada execução de testes e, para evitar spam, só imprime os logs durante o primeiro teste (veja a nota abaixo para exceções).
-Se você gostaria de ver todos os logs em todos os testes, execute os testes e abra o console do navegador. Se preferir usar o console do navegador e quiser que ele imite o console da freeCodeCamp, coloque `console.clear()` antes de qualquer outra chamada ao `console`, para apagar o console do navegador.
+Se você gostaria de ver todos os logs em todos os testes, execute os testes e abra o console do navegador. Se preferir usar o console do navegador e quiser que ele imite o console do freeCodeCamp, coloque `console.clear()` antes de qualquer outra chamada ao `console`, para apagar o console do navegador.
**Observação:** `console.log` dentro de funções é impresso no console do freeCodeCamp toda vez que essas funções forem chamadas. Isso pode ajudar a depurar (ou debugar) funções que são chamadas durante os testes.
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/use-caution-when-reinitializing-variables-inside-a-loop.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/use-caution-when-reinitializing-variables-inside-a-loop.md
index 06613b181e..a29d91f4c2 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/use-caution-when-reinitializing-variables-inside-a-loop.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/use-caution-when-reinitializing-variables-inside-a-loop.md
@@ -8,9 +8,9 @@ dashedName: use-caution-when-reinitializing-variables-inside-a-loop
# --description--
-Às vezes é necessário salvar informações, incrementar contadores ou redefinir variáveis dentro de um laço. Um potencial problema é quando variáveis deveriam ser reinicializadas e, não são, ou vice versa. Isso é particularmente perigoso se você acidentalmente redefinir a variável sendo usada para a a condição de parada, causando um laço infinito.
+Às vezes é necessário salvar informações, incrementar contadores ou redefinir variáveis dentro de um laço. Um problema em potencial é quando variáveis deveriam ser reinicializadas e, não são, ou vice versa. Isso é particularmente perigoso se você acidentalmente redefinir a variável sendo usada para a a condição de parada, causando um laço infinito.
-Imprimir os valores das variáveis em cada ciclo do seu laço usando `console.log()` pode descobrir comportamentos com bugs relacionados a reiniciar ou falhar ao reiniciar uma variável.
+Imprimir os valores das variáveis em cada ciclo do seu laço usando `console.log()` pode ajudar a descobrir comportamentos com bugs relacionados a reiniciar ou falhar ao reiniciar uma variável.
# --instructions--
@@ -18,7 +18,7 @@ A seguinte função deveria criar um array de duas dimensões com `m` linhas e `
# --hints--
-Seu código deve definir a variável `matrix` para um array contendo 3 linhas de 2 colunas de zeros.
+O código deve definir a variável `matrix` para um array contendo 3 linhas de 2 colunas de zeros.
```js
assert(JSON.stringify(matrix) == '[[0,0],[0,0],[0,0]]');
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/use-the-javascript-console-to-check-the-value-of-a-variable.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/use-the-javascript-console-to-check-the-value-of-a-variable.md
index 7090a30652..24861fbe28 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/use-the-javascript-console-to-check-the-value-of-a-variable.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/use-the-javascript-console-to-check-the-value-of-a-variable.md
@@ -8,11 +8,11 @@ dashedName: use-the-javascript-console-to-check-the-value-of-a-variable
# --description--
-Ambos o Chrome e o Firefox possui excelentes consoles JavaScript, também conhecidos como DevTools, para depurar seu JavaScript.
+O Chrome e o Firefox possui excelentes consoles JavaScript, também conhecidos como DevTools, para depurar seu JavaScript.
-Você pode encontrar Developer tools no menu do seu Chrome ou Web Console no menu do Firefox. Se você estiver usando um navegador diferente, ou um telefone móvel, recomendamos fortemente mudar para o Firefox ou Chrome Desktop.
+Você pode encontrar as Developer tools no menu do seu Chrome ou Web Console no menu do Firefox. Se você estiver usando um navegador diferente, ou um telefone móvel, recomendamos fortemente mudar para o Firefox ou Chrome Desktop.
-O método `console.log()`, o qual "imprime" a saída do que está nos seus parênteses no console, provavelmente será a ferramenta de debug mais útil. Colocá-lo em pontos estratégicos no seu código pode te mostrar os valores intermediários de variáveis. É uma boa prática ter uma ideia do que deveria ser a saída antes de olhar o que é. Ter pontos de verificação para ver o status de seus cálculos ao longo do seu código ajudará a encontrar onde o problema está.
+O método `console.log()`, o qual "imprime" a saída do que está nos seus parênteses no console, provavelmente será a ferramenta de debug mais útil. Colocá-lo em pontos estratégicos no seu código pode mostrar a você os valores intermediários de variáveis. É uma boa prática ter uma ideia do que deveria ser a saída antes de olhar o que é. Ter pontos de verificação para ver o status de seus cálculos ao longo do seu código ajudará a encontrar onde o problema está.
Aqui está um exemplo para imprimir a string `Hello world!` no console:
@@ -26,7 +26,7 @@ Use o método `console.log()` para imprimir o valor da variável `a` aonde anoto
# --hints--
-Seu código deve usar `console.log()` para verificar o valor da variável `a`.
+O código deve usar `console.log()` para verificar o valor da variável `a`.
```js
assert(code.match(/console\.log\(a\)/g));
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/use-typeof-to-check-the-type-of-a-variable.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/use-typeof-to-check-the-type-of-a-variable.md
index a138e0ffc6..8bb8dd17c2 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/use-typeof-to-check-the-type-of-a-variable.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/debugging/use-typeof-to-check-the-type-of-a-variable.md
@@ -29,19 +29,19 @@ Adicione duas instruções `console.log()` para verificar o `typeof` de cada uma
# --hints--
-Seu código deve usar `typeof` em duas instruções `console.log()` para verificar o tipo das variáveis.
+O código deve usar `typeof` em duas instruções `console.log()` para verificar o tipo das variáveis.
```js
assert(code.match(/console\.log\(typeof[\( ].*\)?\)/g).length == 2);
```
-Seu código deve usar `typeof` para verificar o tipo da variável `seven`.
+O código deve usar `typeof` para verificar o tipo da variável `seven`.
```js
assert(code.match(/typeof[\( ]seven\)?/g));
```
-Seu código deve usar `typeof` para verificar o tipo da variável `three`.
+O código deve usar `typeof` para verificar o tipo da variável `three`.
```js
assert(code.match(/typeof[\( ]three\)?/g));
diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/render-react-on-the-server-with-rendertostring.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/render-react-on-the-server-with-rendertostring.md
index 7c132ae80f..d6d38be430 100644
--- a/curriculum/challenges/portuguese/03-front-end-libraries/react/render-react-on-the-server-with-rendertostring.md
+++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/render-react-on-the-server-with-rendertostring.md
@@ -8,9 +8,9 @@ dashedName: render-react-on-the-server-with-rendertostring
# --description--
-Até agora, você tem renderizado componentes React no cliente. Normalmente, é isso o que você sempre fará. No entanto, há alguns casos de uso em que faz sentido renderizar um componente React no servidor. Uma vez que React é uma biblioteca de visualização do JavaScript e você pode executar JavaScript no servidor com Node, isso é possível. De fato, React fornece um método `renderToString()` que você pode usar para este propósito.
+Até agora, você tem renderizado componentes React no client. Normalmente, é isso o que você sempre fará. No entanto, há alguns casos de uso em que faz sentido renderizar um componente React no servidor. Uma vez que React é uma biblioteca de visualização do JavaScript e você pode executar JavaScript no servidor com Node, isso é possível. De fato, React fornece um método `renderToString()` que você pode usar para este propósito.
-Existem duas principais razões pelas quais a renderização no servidor pode ser usada em um aplicativo do mundo real. Primeiro, sem fazer isso, seus aplicativos React consistiriam de um arquivo HTML relativamente vazio e um grande pacote de JavaScript quando inicialmente é carregado ao navegador. Isso pode não ser ideal para motores de busca que estão tentando indexar o conteúdo das suas páginas para que as pessoas possam te encontrar. Se você renderizar a marcação HTML inicial no servidor e enviar para o cliente, a carga inicial da página contém todas as marcações da página que podem ser rastreadas por motores de busca. Em segundo lugar, isso cria uma experiência de carregamento de página inicial mais rápida, porque o HTML renderizado é menor do que o código JavaScript de todo o aplicativo. React ainda será capaz de reconhecer seu aplicativo e gerenciá-lo após a carga inicial.
+Existem duas principais razões pelas quais a renderização no servidor pode ser usada em um aplicativo do mundo real. Primeiro, sem fazer isso, seus aplicativos React consistiriam de um arquivo HTML relativamente vazio e um grande pacote de JavaScript quando inicialmente é carregado ao navegador. Isso pode não ser ideal para motores de busca que estão tentando indexar o conteúdo das suas páginas para que as pessoas possam te encontrar. Se você renderizar a marcação HTML inicial no servidor e enviar para o client, a carga inicial da página contém todas as marcações da página que podem ser rastreadas por motores de busca. Em segundo lugar, isso cria uma experiência de carregamento de página inicial mais rápida, porque o HTML renderizado é menor do que o código JavaScript de todo o aplicativo. React ainda será capaz de reconhecer seu aplicativo e gerenciá-lo após a carga inicial.
# --instructions--
diff --git a/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/get-query-parameter-input-from-the-client.md b/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/get-query-parameter-input-from-the-client.md
index 4262ca5640..2e4dd41c0f 100644
--- a/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/get-query-parameter-input-from-the-client.md
+++ b/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/get-query-parameter-input-from-the-client.md
@@ -1,6 +1,6 @@
---
id: 587d7fb2367417b2b2512bf6
-title: Obter a entrada do parâmetro da consulta do cliente
+title: Obter a entrada do parâmetro da consulta do client
challengeType: 2
forumTopicId: 301512
dashedName: get-query-parameter-input-from-the-client
@@ -8,7 +8,7 @@ dashedName: get-query-parameter-input-from-the-client
# --description--
-Outro jeito usual de obter a entrada do cliente é ao codificar os dados após o caminho da rota, usando uma string de consulta. A string de consulta é delimitada por um símbolo de interrogação (?) e inclui pares campo=valor. Cada par é separado por um e comercial(&). O Express pode analisar os dados da string de consulta e preencher o objeto `req.query`. Alguns caracteres, como o de porcentagem (%), não podem estar nos URLs e tem de ser codificados em um formato diferente antes que você os envie. Se você usa a API do JavaScript, você pode usar métodos específicos para codificar/decodificar esses caracteres.
+Outro jeito usual de obter a entrada do client é ao codificar os dados após o caminho da rota, usando uma string de consulta. A string de consulta é delimitada por um símbolo de interrogação (?) e inclui pares campo=valor. Cada par é separado por um e comercial(&). O Express pode analisar os dados da string de consulta e preencher o objeto `req.query`. Alguns caracteres, como o de porcentagem (%), não podem estar nos URLs e tem de ser codificados em um formato diferente antes que você os envie. Se você usa a API do JavaScript, você pode usar métodos específicos para codificar/decodificar esses caracteres.
route_path: '/library'
actual_request_URL: '/library?userId=546&bookId=6754'
req.query: {userId: '546', bookId: '6754'}
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/announce-new-users.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/announce-new-users.md
index fca0105f3d..788a9b902b 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/announce-new-users.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/announce-new-users.md
@@ -1,6 +1,6 @@
---
id: 589fc832f9fc0f352b528e78
-title: Announce New Users
+title: Anunciar novos usuários
challengeType: 2
forumTopicId: 301546
dashedName: announce-new-users
@@ -8,9 +8,9 @@ dashedName: announce-new-users
# --description--
-Many chat rooms are able to announce when a user connects or disconnects and then display that to all of the connected users in the chat. Seeing as though you already are emitting an event on connect and disconnect, you will just have to modify this event to support such a feature. The most logical way of doing so is sending 3 pieces of data with the event: the name of the user who connected/disconnected, the current user count, and if that name connected or disconnected.
+Muitas salas de bate-papo são capazes de anunciar quando um usuário conecta ou desconecta e, em seguida, exibem isso para todos os usuários conectados no bate-papo. Considerando que você já está emitindo um evento ao se conectar e desconectar, você só terá que modificar esse evento para dar suporte a esse recurso. A maneira mais lógica de fazer isso é enviando 3 dados com o evento: o nome do usuário que se conectou/desconectou, a contagem de usuário atual e se esse nome conectou ou desconectou.
-Change the event name to `'user'`, and pass an object along containing the fields 'name', 'currentUsers', and 'connected' (to be `true` in case of connection, or `false` for disconnection of the user sent). Be sure to change both 'user count' events and set the disconnect one to send `false` for the field 'connected' instead of `true` like the event emitted on connect.
+Altere o nome do evento para `'user'` e passe um objeto junto com o evento contendo os campos 'name', 'currentUsers', e 'connected' (para ser `true` quando for enviada uma conexão, ou `false` em caso de desconexão do usuário). Certifique-se de alterar os dois eventos 'user count' e defina o evento de desconexão para que envie `false` para o campo 'connected' em vez de `true` como ocorre quando o evento é emitido ao conectar.
```js
io.emit('user', {
@@ -20,9 +20,9 @@ io.emit('user', {
});
```
-Now your client will have all the necessary information to correctly display the current user count and announce when a user connects or disconnects! To handle this event on the client side we should listen for `'user'`, then update the current user count by using jQuery to change the text of `#num-users` to `'{NUMBER} users online'`, as well as append a `` to the unordered list with id `messages` with `'{NAME} has {joined/left} the chat.'`.
+Agora, o client terá todas as informações necessárias para exibir corretamente a contagem de usuário atual e anunciar quando um usuário se conectar ou desconectar! Para tratar este evento do lado do client, devemos escutar `'user'`. Em seguida, atualizamos a contagem de usuário atual, usando jQuery para alterar o texto de `#num-users` para `'{NUMBER} users online'`. Também acrescentamos um `` à lista não ordenada com o id `messages` dizendo `'{NAME} has {joined/left} the chat.'`.
-An implementation of this could look like the following:
+Uma implementação disso seria semelhante a:
```js
socket.on('user', data => {
@@ -34,11 +34,11 @@ socket.on('user', data => {
});
```
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/bf95a0f74b756cf0771cd62c087b8286).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/bf95a0f74b756cf0771cd62c087b8286).
# --hints--
-Event `'user'` should be emitted with name, currentUsers, and connected.
+O evento `'user'` deve ser emitido com name, currentUsers e connected.
```js
(getUserInput) =>
@@ -56,7 +56,7 @@ Event `'user'` should be emitted with name, currentUsers, and connected.
);
```
-Client should properly handle and display the new data from event `'user'`.
+O client deve manipular e exibir adequadamente os novos dados do evento `'user'`.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/authentication-with-socket.io.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/authentication-with-socket.io.md
index 3020f56e31..062c45a383 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/authentication-with-socket.io.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/authentication-with-socket.io.md
@@ -1,6 +1,6 @@
---
id: 589fc831f9fc0f352b528e77
-title: Authentication with Socket.IO
+title: Autenticação com Socket.IO
challengeType: 2
forumTopicId: 301548
dashedName: authentication-with-socket-io
@@ -8,9 +8,9 @@ dashedName: authentication-with-socket-io
# --description--
-Currently, you cannot determine who is connected to your web socket. While `req.user` contains the user object, that's only when your user interacts with the web server, and with web sockets you have no `req` (request) and therefore no user data. One way to solve the problem of knowing who is connected to your web socket is by parsing and decoding the cookie that contains the passport session then deserializing it to obtain the user object. Luckily, there is a package on NPM just for this that turns a once complex task into something simple!
+Atualmente, você não pode determinar quem está conectado ao socket da web. Embora `req.user` contenha o objeto do usuário,isso só ocorre quando o usuário interage com o servidor web. Com sockets da web, você não tem `req` (solicitação) e, portanto, não tem dados do usuário. Uma maneira de resolver o problema de saber quem está conectando ao socket da web é analisar e decodificar o cookie que contém a sessão do Passport e desserializá-lo para obter o objeto do usuário. Por sorte, existe um pacote no NPM só para este efeito, que transforma uma tarefa que antes era complexa em algo simples!
-Add `passport.socketio@~3.7.0`, `connect-mongo@~3.2.0`, and `cookie-parser@~1.4.5` as dependencies and require them as `passportSocketIo`, `MongoStore`, and `cookieParser` respectively. Also, we need to initialize a new memory store, from `express-session` which we previously required. It should look like this:
+Adicione `passport.socketio@~3.7.0`, `connect-mongo@~3.2.0` e `cookie-parser@~1.4.5` como dependências e solicite-as como `passportSocketIo`, `MongoStore` e `cookieParser`, respectivamente. Além disso, precisamos inicializar uma nova store de memória, a partir do `express-session` que solicitamos anteriormente. Deve ficar assim:
```js
const MongoStore = require('connect-mongo')(session);
@@ -18,7 +18,7 @@ const URI = process.env.MONGO_URI;
const store = new MongoStore({ url: URI });
```
-Now we just have to tell Socket.IO to use it and set the options. Be sure this is added before the existing socket code and not in the existing connection listener. For your server, it should look like this:
+Agora, só precisamos dizer ao Socket.IO para usá-la e definir as opções. Certifique-se de que ela foi adicionada antes do código do socket existente e não no listener das conexões existentes. Para o servidor, ele deve ficar assim:
```js
io.use(
@@ -33,11 +33,11 @@ io.use(
);
```
-Be sure to add the `key` and `store` to the `session` middleware mounted on the app. This is necessary to tell *SocketIO* which session to relate to.
+Certifique-se de adicionar a `key` e a `store` no middleware `session` montado na aplicação. Isto é necessário para informar ao *SocketIO* a qual sessão ele deve se relacionar.
-Now, define the `success`, and `fail` callback functions:
+Agora, defina as funções de `success` e `fail` na função de callback:
```js
function onAuthorizeSuccess(data, accept) {
@@ -53,19 +53,19 @@ function onAuthorizeFail(data, message, error, accept) {
}
```
-The user object is now accessible on your socket object as `socket.request.user`. For example, now you can add the following:
+Agora, o objeto de usuário está acessível no seu objeto de socket como `socket.request.user`. Por exemplo, agora, você pode adicionar o seguinte:
```js
console.log('user ' + socket.request.user.name + ' connected');
```
-It will log to the server console who has connected!
+Ele vai logar no console do servidor que está conectado!
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project up to this point [here](https://gist.github.com/camperbot/1414cc9433044e306dd7fd0caa1c6254).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto até este momento [aqui](https://gist.github.com/camperbot/1414cc9433044e306dd7fd0caa1c6254).
# --hints--
-`passport.socketio` should be a dependency.
+`passport.socketio` deve ser uma dependência.
```js
(getUserInput) =>
@@ -84,7 +84,7 @@ Submit your page when you think you've got it right. If you're running into erro
);
```
-`cookie-parser` should be a dependency.
+`cookie-parser` deve ser uma dependência.
```js
(getUserInput) =>
@@ -103,7 +103,7 @@ Submit your page when you think you've got it right. If you're running into erro
);
```
-passportSocketIo should be properly required.
+O passportSocketIo deve ser solicitado adequadamente.
```js
(getUserInput) =>
@@ -121,7 +121,7 @@ passportSocketIo should be properly required.
);
```
-passportSocketIo should be properly setup.
+O passportSocketIo deve ser configurado adequadamente.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/clean-up-your-project-with-modules.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/clean-up-your-project-with-modules.md
index f6cf40e834..22099490e1 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/clean-up-your-project-with-modules.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/clean-up-your-project-with-modules.md
@@ -1,6 +1,6 @@
---
id: 589690e6f9fc0f352b528e6e
-title: Clean Up Your Project with Modules
+title: Limpar seu projeto com módulos
challengeType: 2
forumTopicId: 301549
dashedName: clean-up-your-project-with-modules
@@ -8,9 +8,9 @@ dashedName: clean-up-your-project-with-modules
# --description--
-Right now, everything you have is in your `server.js` file. This can lead to hard to manage code that isn't very expandable. Create 2 new files: `routes.js` and `auth.js`
+Nesse momento, tudo que você tem é o seu arquivo `server.js`. Isso pode levar a dificuldades para gerenciar um código que não é muito expansível. Crie 2 arquivos novos: `routes.js` e `auth.js`
-Both should start with the following code:
+Ambos devem começar com o seguinte código:
```js
module.exports = function (app, myDataBase) {
@@ -18,19 +18,19 @@ module.exports = function (app, myDataBase) {
}
```
-Now, in the top of your server file, require these files like so: `const routes = require('./routes.js');` Right after you establish a successful connection with the database, instantiate each of them like so: `routes(app, myDataBase)`
+Agora, no topo do arquivo do seu servidor, solicite estes arquivos assim: `const routes = require('./routes.js');` Depois disso, estabeleça uma conexão com o banco de dados, instanciando cada um dos arquivos da seguinte forma: `routes(app, myDataBase)`
-Finally, take all of the routes in your server and paste them into your new files, and remove them from your server file. Also take the `ensureAuthenticated` function, since it was specifically created for routing. Now, you will have to correctly add the dependencies in which are used, such as `const passport = require('passport');`, at the very top, above the export line in your `routes.js` file.
+Por fim, pegue todas as rotas do servidor, cole-as em seus novos arquivos e remova-as do arquivo do arquivo do servidor. Leve também a função `ensureAuthenticated`, já que ela foi especificamente criada para o roteamento. Agora, você precisará adicionar corretamente as dependências em que são usadas, tais como `const passport = require('passport');`, no topo do arquivo, acima da linha de exportação do arquivo `routes.js`.
-Keep adding them until no more errors exist, and your server file no longer has any routing (**except for the route in the catch block**)!
+Continue adicionando-os até que não existam mais erros e que o arquivo do servidor não tenha mais nenhuma rota (**exceto a rota no bloco catch**)!
-Now do the same thing in your auth.js file with all of the things related to authentication such as the serialization and the setting up of the local strategy and erase them from your server file. Be sure to add the dependencies in and call `auth(app, myDataBase)` in the server in the same spot.
+Agora, faça a mesma coisa no arquivo auth.js. com tudo o que estiver relacionado à autenticação, como a serialização e a configuração da estratégia local, e apague-os do arquivo do servidor. Certifique-se de adicionar as dependências e de chamar `auth(app, myDataBase)` no servidor no mesmo local.
-Submit your page when you think you've got it right. If you're running into errors, you can check out an example of the completed project [here](https://gist.github.com/camperbot/2d06ac5c7d850d8cf073d2c2c794cc92).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir um exemplo do projeto concluído [aqui](https://gist.github.com/camperbot/2d06ac5c7d850d8cf073d2c2c794cc92).
# --hints--
-Modules should be present.
+Os módulos devem estar presentes.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/communicate-by-emitting.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/communicate-by-emitting.md
index 1b9e03a3b5..2e468585e0 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/communicate-by-emitting.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/communicate-by-emitting.md
@@ -1,6 +1,6 @@
---
id: 589fc831f9fc0f352b528e75
-title: Communicate by Emitting
+title: Comunicar por envio
challengeType: 2
forumTopicId: 301550
dashedName: communicate-by-emitting
@@ -8,27 +8,27 @@ dashedName: communicate-by-emitting
# --description--
-Emit is the most common way of communicating you will use. When you emit something from the server to 'io', you send an event's name and data to all the connected sockets. A good example of this concept would be emitting the current count of connected users each time a new user connects!
+Enviar é a forma mais comum de comunicação que você usará. Quando você envia algo do servidor para 'io', está enviando o nome e os dados de um evento para todos os sockets conectados. Um bom exemplo deste conceito seria enviar a contagem atual de usuários conectados a cada vez que um novo usuário se conecta!
-Start by adding a variable to keep track of the users, just before where you are currently listening for connections.
+Comece adicionando uma variável para manter o controle dos usuários, logo antes do local onde você está escutando as conexões no momento.
```js
let currentUsers = 0;
```
-Now, when someone connects, you should increment the count before emitting the count. So, you will want to add the incrementer within the connection listener.
+Agora, quando alguém se conecta, você deve incrementar a contagem antes de enviá-la. Então, você vai querer adicionar o incrementador dentro do listener de conexões.
```js
++currentUsers;
```
-Finally, after incrementing the count, you should emit the event (still within the connection listener). The event should be named 'user count', and the data should just be the `currentUsers`.
+Por fim, depois de incrementar a contagem, você deve enviar o evento (ainda dentro do listener de conexão). O evento deve ser nomeado 'user count' e o dado devem ser simplesmente `currentUsers`.
```js
io.emit('user count', currentUsers);
```
-Now, you can implement a way for your client to listen for this event! Similar to listening for a connection on the server, you will use the `on` keyword.
+Agora, você pode implementar uma maneira de o client escutar este evento! De modo semelhante a escutar uma conexão no servidor, você usará a palavra-chave `on`.
```js
socket.on('user count', function(data) {
@@ -36,13 +36,13 @@ socket.on('user count', function(data) {
});
```
-Now, try loading up your app, authenticate, and you should see in your client console '1' representing the current user count! Try loading more clients up, and authenticating to see the number go up.
+Agora, tente carregar o seu aplicativo, autentique-se e você deve ver no console do client '1', representando a contagem de usuários no momento! Tente carregar mais clients, e autenticar para ver o número subir.
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/28ef7f1078f56eb48c7b1aeea35ba1f5).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/28ef7f1078f56eb48c7b1aeea35ba1f5).
# --hints--
-currentUsers should be defined.
+currentUsers deve estar definido.
```js
(getUserInput) =>
@@ -60,7 +60,7 @@ currentUsers should be defined.
);
```
-Server should emit the current user count at each new connection.
+O servidor deve enviar o contador atual a cada nova conexão.
```js
(getUserInput) =>
@@ -78,7 +78,7 @@ Server should emit the current user count at each new connection.
);
```
-Your client should be listening for 'user count' event.
+O client deve estar escutando o evento 'user count'.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/create-new-middleware.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/create-new-middleware.md
index e34d3a458a..99842f4b8c 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/create-new-middleware.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/create-new-middleware.md
@@ -1,6 +1,6 @@
---
id: 5895f70df9fc0f352b528e6a
-title: Create New Middleware
+title: Criar um novo middleware
challengeType: 2
forumTopicId: 301551
dashedName: create-new-middleware
@@ -8,9 +8,9 @@ dashedName: create-new-middleware
# --description--
-As is, any user can just go to `/profile` whether they have authenticated or not, by typing in the url. We want to prevent this, by checking if the user is authenticated first before rendering the profile page. This is the perfect example of when to create a middleware.
+Da forma como está no momento, qualquer usuário pode ir até `/profile`, já tendo sido autenticado ou não, digitando o url. Queremos evitar isso verificando se o usuário está autenticado primeiro antes de renderizar a página de perfil. Este é o exemplo perfeito de quando criar um middleware.
-The challenge here is creating the middleware function `ensureAuthenticated(req, res, next)`, which will check if a user is authenticated by calling passport's `isAuthenticated` method on the `request` which, in turn, checks if `req.user` is defined. If it is, then `next()` should be called, otherwise, we can just respond to the request with a redirect to our homepage to login. An implementation of this middleware is:
+O desafio aqui é cria a função do middleware `ensureAuthenticated(req, res, next)`, que vai verificar se um usuário está autenticado chamando o método `isAuthenticated` do Passport na `request` (solicitação), que, por sua vez, verificará se `req.user` está definido. Se estiver, `next()` deverá ser chamado. Caso contrário, basta responder ao pedido com um redirecionamento à nossa página inicial para fazer o login. Uma implementação deste middleware é:
```js
function ensureAuthenticated(req, res, next) {
@@ -21,7 +21,7 @@ function ensureAuthenticated(req, res, next) {
};
```
-Now add *ensureAuthenticated* as a middleware to the request for the profile page before the argument to the get request containing the function that renders the page.
+Agora, adicione *ensureAuthenticated* como um middleware para a página de perfil antes do argumento para a solicitação de GET que contém a função que renderiza a página.
```js
app
@@ -31,11 +31,11 @@ app
});
```
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/ae49b8778cab87e93284a91343da0959).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/ae49b8778cab87e93284a91343da0959).
# --hints--
-Middleware ensureAuthenticated should be implemented and on our /profile route.
+O middleware ensureAuthenticated deve estar implementado e em nossa rota /profile.
```js
(getUserInput) =>
@@ -58,7 +58,7 @@ Middleware ensureAuthenticated should be implemented and on our /profile route.
);
```
-A Get request to /profile should correctly redirect to / since we are not authenticated.
+Uma solicitação de GET para /profile deve redirecionar corretamente para /, já que não estamos autenticados.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/handle-a-disconnect.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/handle-a-disconnect.md
index 2873c18ff2..9c35d795ad 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/handle-a-disconnect.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/handle-a-disconnect.md
@@ -1,6 +1,6 @@
---
id: 589fc831f9fc0f352b528e76
-title: Handle a Disconnect
+title: Tratar de uma desconexão
challengeType: 2
forumTopicId: 301552
dashedName: handle-a-disconnect
@@ -8,9 +8,9 @@ dashedName: handle-a-disconnect
# --description--
-You may notice that up to now you have only been increasing the user count. Handling a user disconnecting is just as easy as handling the initial connect, except you have to listen for it on each socket instead of on the whole server.
+Você pode notar que até agora você só tem aumentado a contagem de usuários. Tratar da desconexão de um usuário é tão fácil quanto manipular a conexão inicial, exceto pelo fato de que você tem que escutar isso em cada socket em vez de em todo o servidor.
-To do this, add another listener inside the existing `'connect'` listener that listens for `'disconnect'` on the socket with no data passed through. You can test this functionality by just logging that a user has disconnected to the console.
+Para fazer isso, adicione outro listener dentro do `'connect'` que já existe e que escute por `'disconnect'` no socket sem passar dados. Você pode testar essa funcionalidade apenas registrando no console que um usuário se desconectou.
```js
socket.on('disconnect', () => {
@@ -18,15 +18,15 @@ socket.on('disconnect', () => {
});
```
-To make sure clients continuously have the updated count of current users, you should decrease the currentUsers by 1 when the disconnect happens then emit the 'user count' event with the updated count!
+Para garantir que os clients tenham a contagem atualizada dos usuários atuais continuamente, você deve diminuir os currentUsers em 1 quando a desconexão acontece, emitindo o evento 'user count' com a contagem atualizada!
-**Note:** Just like `'disconnect'`, all other events that a socket can emit to the server should be handled within the connecting listener where we have 'socket' defined.
+**Observação:** assim como ocorre com `'disconnect'`, todos os outros eventos que um socket pode emitir para o servidor devem ser tratados dentro do listener que estiver conectando, onde 'socket' está definido.
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/ab1007b76069884fb45b215d3c4496fa).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/ab1007b76069884fb45b215d3c4496fa).
# --hints--
-Server should handle the event disconnect from a socket.
+O servidor deve tratar do evento de desconexão a partir de um socket.
```js
(getUserInput) =>
@@ -40,7 +40,7 @@ Server should handle the event disconnect from a socket.
);
```
-Your client should be listening for 'user count' event.
+Seu client deve estar escutando o evento 'user count'.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/hashing-your-passwords.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/hashing-your-passwords.md
index 43459f9438..bbe3431646 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/hashing-your-passwords.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/hashing-your-passwords.md
@@ -1,6 +1,6 @@
---
id: 58a25c98f9fc0f352b528e7f
-title: Hashing Your Passwords
+title: Fazer o hashing de senhas
challengeType: 2
forumTopicId: 301553
dashedName: hashing-your-passwords
@@ -8,13 +8,13 @@ dashedName: hashing-your-passwords
# --description--
-Going back to the information security section, you may remember that storing plaintext passwords is *never* okay. Now it is time to implement BCrypt to solve this issue.
+Voltando à seção de segurança da informação, você poderá ver que armazenar senhas em texto simples (plain text) *nunca* é uma boa ideia. Agora é a hora de implementar o BCrypt para resolver este problema.
-Add `bcrypt@~5.0.0` as a dependency, and require it in your server. You will need to handle hashing in 2 key areas: where you handle registering/saving a new account, and when you check to see that a password is correct on login.
+Adicione o `bcrypt@~5.0.0` como dependência e solicite-o no servidor. Você precisará lidar com hashing em 2 áreas principais: onde você trata do registro/salvamento de uma nova conta e onde você verifica se uma senha está correta no login.
-Currently on our registration route, you insert a user's password into the database like so: `password: req.body.password`. An easy way to implement saving a hash instead is to add the following before your database logic `const hash = bcrypt.hashSync(req.body.password, 12);`, and replacing the `req.body.password` in the database saving with just `password: hash`.
+No momento, na rota de registro, você insere a senha de um usuário no banco de dados, da seguinte forma: `password: req.body.password`. Uma maneira fácil de implementar o salvamento de um hash, em vez disso, é adicionar a instrução `const hash = bcrypt.hashSync(req.body.password, 12);` antes da lógica do seu banco de dados e substituir o `req.body.password` no banco de dados, salvando apenas `password: hash`.
-Finally, on our authentication strategy, we check for the following in our code before completing the process: `if (password !== user.password) { return done(null, false); }`. After making the previous changes, now `user.password` is a hash. Before making a change to the existing code, notice how the statement is checking if the password is **not** equal then return non-authenticated. With this in mind, your code could look as follows to properly check the password entered against the hash:
+Por fim, na estratégia de autenticação, verificamos o seguinte no código antes de concluir o processo: `if (password !== user.password) { return done(null, false); }`. Depois de fazer as alterações acima, `user.password` passa a ser um hash. Antes de fazer uma alteração no código existente, observe como a instrução está verificando se a senha **não** é igual. Se não for, deve retornar não autenticada. Com isso em mente, o código pode se parecer assim para verificar corretamente a senha inserida com relação ao hash:
```js
if (!bcrypt.compareSync(password, user.password)) {
@@ -22,13 +22,13 @@ if (!bcrypt.compareSync(password, user.password)) {
}
```
-That is all it takes to implement one of the most important security features when you have to store passwords!
+Isso é tudo o que precisamos para implementar um dos mais importantes recursos de segurança quando você tem que armazenar senhas!
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/dc16cca09daea4d4151a9c36a1fab564).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/dc16cca09daea4d4151a9c36a1fab564).
# --hints--
-BCrypt should be a dependency.
+O BCrypt deve ser uma dependência.
```js
(getUserInput) =>
@@ -47,7 +47,7 @@ BCrypt should be a dependency.
);
```
-BCrypt should be correctly required and implemented.
+O BCrypt deverá ser corretamente solicitado e implementado.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/how-to-put-a-profile-together.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/how-to-put-a-profile-together.md
index bd17bbb9a6..12899e7ff3 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/how-to-put-a-profile-together.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/how-to-put-a-profile-together.md
@@ -1,6 +1,6 @@
---
id: 5895f70ef9fc0f352b528e6b
-title: How to Put a Profile Together
+title: Compor um perfil
challengeType: 2
forumTopicId: 301554
dashedName: how-to-put-a-profile-together
@@ -8,27 +8,27 @@ dashedName: how-to-put-a-profile-together
# --description--
-Now that we can ensure the user accessing the `/profile` is authenticated, we can use the information contained in `req.user` on our page!
+Agora que podemos garantir que o usuário que acessou o `/profile` está autenticado, podemos usar as informações contidas no `req.user` da página!
-Pass an object containing the property `username` and value of `req.user.username` as the second argument for the render method of the profile view. Then, go to your `profile.pug` view, and add the following line below the existing `h1` element, and at the same level of indentation:
+Passe um objeto contendo a propriedade `username` e o valor `req.user.username` como o segundo argumento para o método de renderização da visualização do perfil. Em seguida, vá à visualização `profile.pug` e adicione a linha seguinte abaixo do elemento `h1` existente, no mesmo nível de indentação:
```pug
h2.center#welcome Welcome, #{username}!
```
-This creates an `h2` element with the class '`center`' and id '`welcome`' containing the text '`Welcome,`' followed by the username.
+Isso criará um elemento `h2` com a classe '`center`' e com o id '`welcome`', contendo o texto '`Welcome,`' seguido do nome de usuário.
-Also, in `profile.pug`, add a link referring to the `/logout` route, which will host the logic to unauthenticate a user.
+Além disso, em `profile.pug`, adicione um link referindo-se à rota `/logout`, que hospedará a lógica para cancelar a autenticação de um usuário.
```pug
a(href='/logout') Logout
```
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/136b3ad611cc80b41cab6f74bb460f6a).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/136b3ad611cc80b41cab6f74bb460f6a).
# --hints--
-You should correctly add a Pug render variable to /profile.
+Você deve adicionar corretamente uma variável de renderização do Pug em /profile.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/implement-the-serialization-of-a-passport-user.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/implement-the-serialization-of-a-passport-user.md
index 03d737f4aa..d2bd098bc7 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/implement-the-serialization-of-a-passport-user.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/implement-the-serialization-of-a-passport-user.md
@@ -1,6 +1,6 @@
---
id: 5895f70cf9fc0f352b528e67
-title: Implement the Serialization of a Passport User
+title: Implementar a serialização de um usuário do Passport
challengeType: 2
forumTopicId: 301556
dashedName: implement-the-serialization-of-a-passport-user
@@ -8,11 +8,11 @@ dashedName: implement-the-serialization-of-a-passport-user
# --description--
-Right now, we're not loading an actual user object since we haven't set up our database. This can be done many different ways, but for our project we will connect to the database once when we start the server and keep a persistent connection for the full life-cycle of the app. To do this, add your database's connection string (for example: `mongodb+srv://:@cluster0-jvwxi.mongodb.net/?retryWrites=true&w=majority`) to the environment variable `MONGO_URI`. This is used in the `connection.js` file.
+No momento, não estamos carregando um objeto de usuário real, já que não configuramos nosso banco de dados. Isto pode ser feito de muitas maneiras diferentes. Para o nosso projeto, no entanto, conectaremos ao banco de dados quando iniciarmos o servidor e manteremos uma conexão persistente para todo o ciclo de vida da aplicação. Para fazer isso, adicione a string de conexão do banco de dados (por exemplo: `mongodb+srv://:@cluster0-jvwxi.mongodb.net/?retryWrites=true&w=majority`) à variável de ambiente `MONGO_URI`. Este é usado no arquivo `connection.js`.
-*You can set up a free database on [MongoDB Atlas](https://www.mongodb.com/cloud/atlas).*
+*Você pode configurar um banco de dados gratuito no [MongoDB Atlas](https://www.mongodb.com/cloud/atlas).*
-Now we want to connect to our database then start listening for requests. The purpose of this is to not allow requests before our database is connected or if there is a database error. To accomplish this, you will want to encompass your serialization and your app routes in the following code:
+Agora, queremos conectar ao nosso banco de dados. Em seguida, vamos começar a escutar pedidos. O objetivo é não permitir solicitações antes de nosso banco de dados estar conectado ou se houver um erro no banco de dados. Para fazer isso, você vai querer englobar a serialização e as rotas da aplicação no código a seguir:
```js
myDB(async client => {
@@ -38,13 +38,13 @@ myDB(async client => {
// app.listen out here...
```
-Be sure to uncomment the `myDataBase` code in `deserializeUser`, and edit your `done(null, null)` to include the `doc`.
+Certifique-se de descomentar o código `myDataBase` em `deserializeUser` e de editar o seu `done(null, null)` para incluir o `doc`.
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/175f2f585a2d8034044c7e8857d5add7).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/175f2f585a2d8034044c7e8857d5add7).
# --hints--
-Database connection should be present.
+A conexão do banco de dados deve estar presente.
```js
(getUserInput) =>
@@ -62,7 +62,7 @@ Database connection should be present.
);
```
-Deserialization should now be correctly using the DB and `done(null, null)` should be called with the `doc`.
+A desserialização agora deve estar usando corretamente o banco de dados e `done(null, null)` deve ser chamado com o `doc`.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/implementation-of-social-authentication-ii.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/implementation-of-social-authentication-ii.md
index 3cc137ac92..5a36ec0770 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/implementation-of-social-authentication-ii.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/implementation-of-social-authentication-ii.md
@@ -1,6 +1,6 @@
---
id: 589a69f5f9fc0f352b528e71
-title: Implementation of Social Authentication II
+title: Implementar a autenticação social II
challengeType: 2
forumTopicId: 301557
dashedName: implementation-of-social-authentication-ii
@@ -8,11 +8,11 @@ dashedName: implementation-of-social-authentication-ii
# --description--
-The last part of setting up your GitHub authentication is to create the strategy itself. For this, you will need to add the dependency of `passport-github@~1.1.0` to your project and require it in your `auth.js` as `GithubStrategy` like this: `const GitHubStrategy = require('passport-github').Strategy;`. Do not forget to require and configure `dotenv` to use your environment variables.
+A última parte da configuração da autenticação no GitHub é criar a própria estratégia. Para isso, você precisará adicionar a dependência do `passport-github@~1.1.0` ao projeto e solicitá-la no `auth.js` como `GithubStrategy` assim: `const GitHubStrategy = require('passport-github').Strategy;`. Não se esqueça de solicitar e configurar o `dotenv` para usar as variáveis de ambiente.
-To set up the GitHub strategy, you have to tell Passport to use an instantiated `GitHubStrategy`, which accepts 2 arguments: an object (containing `clientID`, `clientSecret`, and `callbackURL`) and a function to be called when a user is successfully authenticated, which will determine if the user is new and what fields to save initially in the user's database object. This is common across many strategies, but some may require more information as outlined in that specific strategy's GitHub README. For example, Google requires a *scope* as well which determines what kind of information your request is asking to be returned and asks the user to approve such access. The current strategy we are implementing has its usage outlined [here](https://github.com/jaredhanson/passport-github/), but we're going through it all right here on freeCodeCamp!
+Para configurar a estratégia do GitHub, você precisa dizer ao Passport para usar uma `GitHubStrategy` instanciada, que aceite 2 argumentos: um objeto (contendo `clientID`, `clientSecret` e `callbackURL`) e uma função a ser chamada quando um usuário é autenticado com sucesso, que determinará se o usuário é novo e quais campos salvar inicialmente no objeto do banco de dados do usuário. Isto é comum em muitas estratégias, mas algumas podem exigir mais informações, conforme descrito no README do GitHub da estratégia específica. Por exemplo, O Google também requer um *scope*, o qual determina que tipo de informação a solicitação está pedindo que seja devolvida e pede ao usuário que aprove esse acesso. A estratégia atual que estamos implementando tem seu uso delineado [aqui](https://github.com/jaredhanson/passport-github/), mas nós a examinaremos bem aqui, no freeCodeCamp!
-Here's how your new strategy should look at this point:
+Saiba como a nova estratégia deve se parecer nesse momento:
```js
passport.use(new GitHubStrategy({
@@ -27,13 +27,13 @@ passport.use(new GitHubStrategy({
));
```
-Your authentication won't be successful yet, and it will actually throw an error without the database logic and callback, but it should log your GitHub profile to your console if you try it!
+A autenticação ainda não será bem-sucedida e realmente lançará um erro sem a lógica e a função de callback do banco de dados, mas ela deverá fazer o login com o seu perfil do GitHub no console se você tentar!
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/ff3a1166684c1b184709ac0bee30dee6).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/ff3a1166684c1b184709ac0bee30dee6).
# --hints--
-passport-github dependency should be added.
+A dependência do passport-github deve ser adicionada.
```js
(getUserInput) =>
@@ -52,7 +52,7 @@ passport-github dependency should be added.
);
```
-passport-github should be required.
+O passport-github deve ser solicitado.
```js
(getUserInput) =>
@@ -70,7 +70,7 @@ passport-github should be required.
);
```
-GitHub strategy should be setup correctly thus far.
+A estratégia do GitHub deve estar configurada corretamente até aqui.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/implementation-of-social-authentication.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/implementation-of-social-authentication.md
index 2912bbed16..5e896507e2 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/implementation-of-social-authentication.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/implementation-of-social-authentication.md
@@ -1,6 +1,6 @@
---
id: 589a69f5f9fc0f352b528e70
-title: Implementation of Social Authentication
+title: Implementar a autenticação social
challengeType: 2
forumTopicId: 301559
dashedName: implementation-of-social-authentication
@@ -8,21 +8,21 @@ dashedName: implementation-of-social-authentication
# --description--
-The basic path this kind of authentication will follow in your app is:
+O caminho básico que este tipo de autenticação vai seguir em sua aplicação é:
-1. User clicks a button or link sending them to our route to authenticate using a specific strategy (e.g. GitHub).
-2. Your route calls `passport.authenticate('github')` which redirects them to GitHub.
-3. The page the user lands on, on GitHub, allows them to login if they aren't already. It then asks them to approve access to their profile from our app.
-4. The user is then returned to our app at a specific callback url with their profile if they are approved.
-5. They are now authenticated, and your app should check if it is a returning profile, or save it in your database if it is not.
+1. O usuário clica em um botão ou link que o envia para nossa rota de autenticação que usa uma estratégia específica (por exemplo, o GitHub).
+2. A rota chama `passport.authenticate('github')`, que os redireciona para o GitHub.
+3. A página que o usuário entra no GitHub permite que ele faça o login, se ainda não o fez. Em seguida, ela pede que eles aprovem o acesso ao seu perfil a partir de nossa aplicação.
+4. O usuário é então retornado para a nossa aplicação em um url específico de callback com seu perfil, se ele for aprovado.
+5. Agora que o usuário está autenticado. O aplicativo deve verificar se é um perfil que está retornando ou salvá-lo no banco de dados, se não for o caso.
-Strategies with OAuth require you to have at least a *Client ID* and a *Client Secret* which is a way for the service to verify who the authentication request is coming from and if it is valid. These are obtained from the site you are trying to implement authentication with, such as GitHub, and are unique to your app--**THEY ARE NOT TO BE SHARED** and should never be uploaded to a public repository or written directly in your code. A common practice is to put them in your `.env` file and reference them like so: `process.env.GITHUB_CLIENT_ID`. For this challenge we're going to use the GitHub strategy.
+As estratégias com OAuth exigem que você tenha, pelo menos, um *ID de client* e um *segredo de client*, que é uma maneira de o serviço verificar de quem está vindo o pedido de autenticação e se ele é válido. Estes são obtidos do site com o qual você está tentando implementar a autenticação, como o GitHub, e são exclusivos do seu aplicativo. **ELES NÃO DEVEM SER COMPARTILHADOS** e nunca devem ser enviados para um repositório público ou escritos diretamente no código. Uma prática comum é colocá-los no seu arquivo `.env` e referenciá-los assim: `process.env.GITHUB_CLIENT_ID`. Para este desafio, vamos usar a estratégia do GitHub.
-Obtaining your *Client ID and Secret* from GitHub is done in your account profile settings under 'developer settings', then '[OAuth applications](https://github.com/settings/developers)'. Click 'Register a new application', name your app, paste in the url to your Replit homepage (**Not the project code's url**), and lastly, for the callback url, paste in the same url as the homepage but with `/auth/github/callback` added on. This is where users will be redirected for us to handle after authenticating on GitHub. Save the returned information as `'GITHUB_CLIENT_ID'` and `'GITHUB_CLIENT_SECRET'` in your `.env` file.
+Obter seu *ID e segredo de client* do GitHub é feito nas configurações do perfil da conta, em 'Configurações do desenvolvedor'. Em seguida, '[Aplicações OAuth](https://github.com/settings/developers)'. Clique em 'Registrar uma nova aplicação', nomeie sua aplicação, cole o url da sua página inicial do Replit (**não o url do código do projeto**) e, finalmente, para o url de callback, cole o mesmo url da página inicial, mas com `/auth/github/callback` adicionado. É para cá que os usuários serão redirecionados para que possamos fazer o tratamento das informações após a autenticação no GitHub. Salve as informações retornadas como `'GITHUB_CLIENT_ID'` e `'GITHUB_CLIENT_SECRET'` no arquivo `.env`.
-In your `routes.js` file, add `showSocialAuth: true` to the homepage route, after `showRegistration: true`. Now, create 2 routes accepting GET requests: `/auth/github` and `/auth/github/callback`. The first should only call passport to authenticate `'github'`. The second should call passport to authenticate `'github'` with a failure redirect to `/`, and then if that is successful redirect to `/profile` (similar to our last project).
+No seu arquivo `routes.js`, adicione `showSocialAuth: true` à rota da página inicial, após `showRegistration: true`. Agora, crie 2 rotas aceitando solicitações de GET: `/auth/github` e `/auth/github/callback`. O primeiro deve apenas chamar o Passport para autenticar o `'github'`. O segundo deve chamar o Passport para autenticar o `'github'` com um redirecionamento de falha para `/`. Então, se tiver sucesso, redirecionar para o `/profile` (semelhante ao nosso último projeto).
-An example of how `/auth/github/callback` should look is similar to how we handled a normal login:
+Um exemplo de como `/auth/github/callback` deve parecer é semelhante a como nós manipulamos um login normal:
```js
app.route('/login')
@@ -31,11 +31,11 @@ app.route('/login')
});
```
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project up to this point [here](https://gist.github.com/camperbot/1f7f6f76adb178680246989612bea21e).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto até este momento [aqui](https://gist.github.com/camperbot/1f7f6f76adb178680246989612bea21e).
# --hints--
-Route /auth/github should be correct.
+A rota /auth/github deve estar correta.
```js
(getUserInput) =>
@@ -53,7 +53,7 @@ Route /auth/github should be correct.
);
```
-Route /auth/github/callback should be correct.
+A rota /auth/github/callback deve estar correta.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/logging-a-user-out.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/logging-a-user-out.md
index ba023ef1b8..539b204e11 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/logging-a-user-out.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/logging-a-user-out.md
@@ -1,6 +1,6 @@
---
id: 58965611f9fc0f352b528e6c
-title: Logging a User Out
+title: Fazer o logout do usuário
challengeType: 2
forumTopicId: 301560
dashedName: logging-a-user-out
@@ -8,9 +8,9 @@ dashedName: logging-a-user-out
# --description--
-Creating the logout logic is easy. The route should just unauthenticate the user and redirect to the home page instead of rendering any view.
+Criar a lógica de logout é fácil. A rota deve apenas cancelar a autenticação do usuário e redirecionar para a página inicial em vez de renderizar qualquer visualização.
-In passport, unauthenticating a user is as easy as just calling `req.logout();` before redirecting.
+No Passport, cancelar a autenticação de um usuário é fácil. Basta chamar `req.logout();` antes de redirecionar.
```js
app.route('/logout')
@@ -20,7 +20,7 @@ app.route('/logout')
});
```
-You may have noticed that we're not handling missing pages (404). The common way to handle this in Node is with the following middleware. Go ahead and add this in after all your other routes:
+Você deve ter percebido que não estamos lidando com páginas ausentes (404). A maneira comum de lidar com isso no Node é com o middleware que veremos a seguir. Adicione-o isso depois de todas as suas outras rotas:
```js
app.use((req, res, next) => {
@@ -30,11 +30,11 @@ app.use((req, res, next) => {
});
```
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/c3eeb8a3ebf855e021fd0c044095a23b).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/c3eeb8a3ebf855e021fd0c044095a23b).
# --hints--
-`req.Logout` should be called in your `/logout` route.
+`req.Logout` deve ser chamado na rota `/logout`.
```js
(getUserInput) =>
@@ -52,7 +52,7 @@ Submit your page when you think you've got it right. If you're running into erro
);
```
-Logout should redirect to the home page.
+O logout deve redirecionar para a página inicial.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/send-and-display-chat-messages.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/send-and-display-chat-messages.md
index e74551d1f9..19a543de00 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/send-and-display-chat-messages.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/send-and-display-chat-messages.md
@@ -1,6 +1,6 @@
---
id: 589fc832f9fc0f352b528e79
-title: Send and Display Chat Messages
+title: Enviar e exibir mensagens de bate-papo
challengeType: 2
forumTopicId: 301562
dashedName: send-and-display-chat-messages
@@ -8,7 +8,7 @@ dashedName: send-and-display-chat-messages
# --description--
-It's time you start allowing clients to send a chat message to the server to emit to all the clients! In your `client.js` file, you should see there is already a block of code handling when the message form is submitted.
+É hora de começar a permitir que os clients enviem uma mensagem de bate-papo ao servidor para que seja enviada a todos os outros clients! No arquivo `client.js`, você deve ver que já há um bloco de tratamento de código quando o formulário de mensagens é enviado.
```js
$('form').submit(function() {
@@ -16,23 +16,23 @@ $('form').submit(function() {
});
```
-Within the form submit code, you should emit an event after you define `messageToSend` but before you clear the text box `#m`. The event should be named `'chat message'` and the data should just be `messageToSend`.
+Dentro do código de envio do formulário, você deve enviar um evento depois de definir `messageToSend`, mas antes de limpar a caixa de texto `#m`. O evento deve ser nomeado `'chat message'` e o dado devem ser simplesmente `messageToSend`.
```js
socket.emit('chat message', messageToSend);
```
-Now, on your server, you should be listening to the socket for the event `'chat message'` with the data being named `message`. Once the event is received, it should emit the event `'chat message'` to all sockets `io.emit` with the data being an object containing `name` and `message`.
+Agora, no servidor, você deve estar escutando o socket para o evento `'chat message'` com os dados nomeados como `message`. Quando o evento for recebido, ele deve emitir o evento `'chat message'` para todos os sockets `io.emit` com os dados sendo um objeto contendo `name` e `message`.
-In `client.js`, you should now listen for event `'chat message'` and, when received, append a list item to `#messages` with the name, a colon, and the message!
+No `client.js`, agora, você deve escutar o evento `'chat message'` e, quando ele for recebido, associe um item de lista a `#messages` com o nome, um sinal de dois-pontos e a mensagem!
-At this point, the chat should be fully functional and sending messages across all clients!
+Neste ponto, o chat deve estar totalmente funcional e enviando mensagens para todos os clients!
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/d7af9864375207e254f73262976d2016).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/d7af9864375207e254f73262976d2016).
# --hints--
-Server should listen for `'chat message'` and then emit it properly.
+O servidor deve escutar por `'chat message'` e, em seguida, emiti-la corretamente.
```js
(getUserInput) =>
@@ -50,7 +50,7 @@ Server should listen for `'chat message'` and then emit it properly.
);
```
-Client should properly handle and display the new data from event `'chat message'`.
+O client deve manipular e exibir adequadamente os novos dados do evento `'chat message'`.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/set-up-a-template-engine.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/set-up-a-template-engine.md
index 0a89bd5293..c7ebcd1cce 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/set-up-a-template-engine.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/set-up-a-template-engine.md
@@ -1,6 +1,6 @@
---
id: 5895f700f9fc0f352b528e63
-title: Set up a Template Engine
+title: Configurar um mecanismo de modelo
challengeType: 2
forumTopicId: 301564
dashedName: set-up-a-template-engine
@@ -8,31 +8,31 @@ dashedName: set-up-a-template-engine
# --description--
-Working on these challenges will involve you writing your code using one of the following methods:
+Trabalhar nesses desafios vai fazer com que você escreva seu código usando um dos seguintes métodos:
-- Clone [this GitHub repo](https://github.com/freeCodeCamp/boilerplate-advancednode/) and complete these challenges locally.
-- Use [our Replit starter project](https://replit.com/github/freeCodeCamp/boilerplate-advancednode) to complete these challenges.
-- Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo.
+- Clone [este repositório do GitHub](https://github.com/freeCodeCamp/boilerplate-advancednode/) e complete esses desafios localmente.
+- Use [nosso projeto inicial do Replit](https://replit.com/github/freeCodeCamp/boilerplate-advancednode) para completar esses desafios.
+- Use um construtor de site de sua escolha para completar o projeto. Certifique-se de incorporar todos os arquivos do nosso repositório no GitHub.
-When you are done, make sure a working demo of your project is hosted somewhere public. Then submit the URL to it in the `Solution Link` field.
+Quando terminar, certifique-se de que uma demonstração funcional do seu projeto está hospedada em algum lugar público. Em seguida, envie o URL para ela no campo `Solution Link`.
-A template engine enables you to use static template files (such as those written in *Pug*) in your app. At runtime, the template engine replaces variables in a template file with actual values which can be supplied by your server. Then it transforms the template into a static HTML file that is sent to the client. This approach makes it easier to design an HTML page and allows for displaying variables on the page without needing to make an API call from the client.
+Um mecanismo de templates (template engine) permite o uso de arquivos de modelo estáticos (como aqueles escritos no *Pug*) na aplicação. Em tempo de execução, o mecanismo de modelos substitui variáveis em um arquivo de modelo por valores reais que podem ser fornecidos pelo servidor. Em seguida, ele transforma o modelo em um arquivo HTML estático, que é enviado ao client. Esta abordagem torna mais fácil projetar uma página HTML e permite exibir variáveis na página sem precisar fazer uma chamada de API do client.
-Add `pug@~3.0.0` as a dependency in your `package.json` file.
+Adicione `pug@~3.0.0` como uma dependência no arquivo `package.json`.
-Express needs to know which template engine you are using. We will use the `set` method to assign `pug` as the `view engine` property's value: `app.set('view engine', 'pug')`
+O Express precisa saber qual mecanismo de modelos você está usando. Usaremos o método `set` para atribuir `pug` como o valor da propriedade `view engine`: `app.set('view engine', 'pug')`
-Your page will not load until you correctly render the index file in the `views/pug` directory.
+A página não será carregada até que você renderize corretamente o arquivo de índice no diretório `views/pug`.
-Change the argument of the `res.render()` declaration in the `/` route to be the file path to the `views/pug` directory. The path can be a relative path (relative to views), or an absolute path, and does not require a file extension.
+Altere o argumento da declaração `res.render()` na rota `/` para que seja o caminho de arquivo para o diretório `views/pug`. O caminho pode ser um caminho relativo (relativo às visualizações) ou um caminho absoluto e não necessita de uma extensão de arquivo.
-If all went as planned, your app home page will stop showing the message "`Pug template is not defined.`" and will now display a message indicating you've successfully rendered the Pug template!
+Se tudo correu como planejado, sua página inicial vai parar de mostrar a mensagem "`Pug template is not defined.`" e agora exibirá uma mensagem indicando que você renderizou com sucesso o modelo do Pug!
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/3515cd676ea4dfceab4e322f59a37791).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/3515cd676ea4dfceab4e322f59a37791).
# --hints--
-Pug should be a dependency.
+O Pug deve ser uma dependência.
```js
(getUserInput) =>
@@ -51,7 +51,7 @@ Pug should be a dependency.
);
```
-View engine should be Pug.
+O mecanismo de visualização (view engine) deve ser o Pug.
```js
(getUserInput) =>
@@ -69,7 +69,7 @@ View engine should be Pug.
);
```
-Use the correct ExpressJS method to render the index page from the response.
+Use o método correto do ExpressJS para processar a página do índice a partir da resposta.
```js
(getUserInput) =>
@@ -87,7 +87,7 @@ Use the correct ExpressJS method to render the index page from the response.
);
```
-Pug should be working.
+O Pug deve funcionar.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/set-up-passport.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/set-up-passport.md
index 98c406d1d2..2e3901a066 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/set-up-passport.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/set-up-passport.md
@@ -1,6 +1,6 @@
---
id: 5895f70cf9fc0f352b528e65
-title: Set up Passport
+title: Configurar o Passport
challengeType: 2
forumTopicId: 301565
dashedName: set-up-passport
@@ -8,15 +8,15 @@ dashedName: set-up-passport
# --description--
-It's time to set up *Passport* so we can finally start allowing a user to register or login to an account! In addition to Passport, we will use Express-session to handle sessions. Using this middleware saves the session id as a cookie in the client and allows us to access the session data using that id on the server. This way we keep personal account information out of the cookie used by the client to verify to our server they are authenticated and just keep the *key* to access the data stored on the server.
+É hora de configurar o *Passport* para que possamos finalmente começar a permitir que um usuário se registre ou faça o login em uma conta! Além do Passport, usaremos Express-session para tratar das sessões. Usar este middleware salva o id da sessão como um cookie no client e nos permite acessar os dados da sessão usando esse id no servidor. Desta forma, mantemos as informações da conta pessoal fora do cookie usado pelo client para verificar para o servidor que o usuário está autenticado e, simplesmente, manter a *chave* para acessar os dados armazenados no servidor.
-To set up Passport for use in your project, you will need to add it as a dependency first in your package.json. `passport@~0.4.1`
+Para configurar o Passport para uso no projeto, você precisará adicioná-lo primeiro como uma dependência em seu package.json. `passport@~0.4.1`
-In addition, add Express-session as a dependency now as well. Express-session has a ton of advanced features you can use but for now we're just going to use the basics! `express-session@~1.17.1`
+Além disso, adicione também Express-session como uma dependência. Express-session tem dezenas de recursos avançados que você pode usar, mas, no momento, vamos usá-lo apenas para o básico! `express-session@~1.17.1`
-You will need to set up the session settings now and initialize Passport. Be sure to first create the variables 'session' and 'passport' to require 'express-session' and 'passport' respectively.
+Você precisará configurar as definições de sessão agora e inicializar o Passport. Certifique-se de primeiro criar as variáveis "session" e "passport" para exigir "express-session" e "passport", respectivamente.
-To set up your express app to use the session we'll define just a few basic options. Be sure to add 'SESSION_SECRET' to your .env file and give it a random value. This is used to compute the hash used to encrypt your cookie!
+Para configurar a aplicação com Express para que use o session, definiremos apenas algumas opções básicas. Certifique-se de adicionar 'SESSION_SECRET' ao seu arquivo .env e de dar a ele um valor aleatório. Isto é usado para calcular o hash usado para criptografar seu cookie!
```js
app.use(session({
@@ -27,13 +27,13 @@ app.use(session({
}));
```
-As well you can go ahead and tell your express app to **use** 'passport.initialize()' and 'passport.session()'. (For example, `app.use(passport.initialize());`)
+Você também pode dizer à aplicação do Express para **usar** 'passport.initialize()' e 'passport.session()'. (Por exemplo, `app.use(passport.initialize());`)
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/4068a7662a2f9f5d5011074397d6788c).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/4068a7662a2f9f5d5011074397d6788c).
# --hints--
-Passport and Express-session should be dependencies.
+O Passport e o Express-session devem ser dependências.
```js
(getUserInput) =>
@@ -57,7 +57,7 @@ Passport and Express-session should be dependencies.
);
```
-Dependencies should be correctly required.
+As dependências devem ser solicitados corretamente.
```js
(getUserInput) =>
@@ -80,7 +80,7 @@ Dependencies should be correctly required.
);
```
-Express app should use new dependencies.
+A aplicação do Express deve usar novas dependências.
```js
(getUserInput) =>
@@ -103,7 +103,7 @@ Express app should use new dependencies.
);
```
-Session and session secret should be correctly set up.
+Session e session secret devem estar definidos corretamente.
```js
(getUserInput) =>
@@ -111,7 +111,7 @@ Session and session secret should be correctly set up.
(data) => {
assert.match(
data,
- /secret:( |)process.env.SESSION_SECRET/gi,
+ /secret:( |)process\.env(\.SESSION_SECRET|\[(?"|')SESSION_SECRET\k\])/g,
'Your express app should have express-session set up with your secret as process.env.SESSION_SECRET'
);
},
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/set-up-the-environment.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/set-up-the-environment.md
index 9da23f8cac..c746565ea0 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/set-up-the-environment.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/set-up-the-environment.md
@@ -1,6 +1,6 @@
---
id: 589fc830f9fc0f352b528e74
-title: Set up the Environment
+title: Configure o ambiente
challengeType: 2
forumTopicId: 301566
dashedName: set-up-the-environment
@@ -8,20 +8,20 @@ dashedName: set-up-the-environment
# --description--
-The following challenges will make use of the `chat.pug` file. So, in your `routes.js` file, add a GET route pointing to `/chat` which makes use of `ensureAuthenticated`, and renders `chat.pug`, with `{ user: req.user }` passed as an argument to the response. Now, alter your existing `/auth/github/callback` route to set the `req.session.user_id = req.user.id`, and redirect to `/chat`.
+Os desafios a seguir farão uso do arquivo `chat.pug`. Assim, em seu arquivo `routes.js`, adicione uma rota de GET apontando para `/chat`, que faz uso de `ensureAuthenticated` e renderiza `chat.pug`, com `{ user: req.user }` passado como argumento para a resposta. Agora, altere a rota `/auth/github/callback` existente para definir `req.session.user_id = req.user.id`e redirecione para `/chat`.
-Add `socket.io@~2.3.0` as a dependency and require/instantiate it in your server defined as follows, with `http` (comes built-in with Nodejs):
+Adicione `socket.io@~2.3.0` como uma dependência e solicite/instancie-o no servidor definido como `http` (que vem integrado ao Node.js), conforme segue:
```javascript
const http = require('http').createServer(app);
const io = require('socket.io')(http);
```
-Now that the *http* server is mounted on the *express app*, you need to listen from the *http* server. Change the line with `app.listen` to `http.listen`.
+Agora que o servidor *http* está montado na aplicação do *Express*, você precisa escutar o servidor *http*. Altere a linha com `app.listen` para `http.listen`.
-The first thing needing to be handled is listening for a new connection from the client. The on keyword does just that- listen for a specific event. It requires 2 arguments: a string containing the title of the event that's emitted, and a function with which the data is passed though. In the case of our connection listener, we use *socket* to define the data in the second argument. A socket is an individual client who is connected.
+A primeira coisa que precisa ser tratada é escutar uma nova conexão do client. A palavra-chave on faz isso - escuta um evento específico. Ela requer 2 argumentos: uma string contendo o título do evento que é emitido e uma função com a qual os dados são passados. No caso do nosso listener de conexão, usamos o *socket* para definir os dados no segundo argumento. Um socket é um client individual que está conectado.
-To listen for connections to your server, add the following within your database connection:
+Para escutar as conexões do servidor, adicione o seguinte na sua conexão do banco de dados:
```javascript
io.on('connection', socket => {
@@ -29,24 +29,24 @@ io.on('connection', socket => {
});
```
-Now for the client to connect, you just need to add the following to your `client.js` which is loaded by the page after you've authenticated:
+Agora, para o client se conectar, basta adicionar o seguinte ao `client.js` que é carregado pela página após a autenticação:
```js
/*global io*/
let socket = io();
```
-The comment suppresses the error you would normally see since 'io' is not defined in the file. We've already added a reliable CDN to the Socket.IO library on the page in chat.pug.
+O comentário suprime o erro que você normalmente veria, já que 'io' não está definido no arquivo. Já adicionamos um CDN confiável à biblioteca socket.io na página em chat.pug.
-Now try loading up your app and authenticate and you should see in your server console 'A user has connected'!
+Agora, tente carregar o aplicativo e autentique-se. Você deve ver no console do servidor a frase 'A user has connected'!
-**Note:**`io()` works only when connecting to a socket hosted on the same url/server. For connecting to an external socket hosted elsewhere, you would use `io.connect('URL');`.
+**Observação:** `io()` só funciona ao se conectar a um socket hospedado no mesmo url/servidor. Para se conectar a um socket externo hospedado em outro lugar, você usaria `io.connect('URL');`.
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/aae41cf59debc1a4755c9a00ee3859d1).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/aae41cf59debc1a4755c9a00ee3859d1).
# --hints--
-`socket.io` should be a dependency.
+`socket.io` deve ser uma dependência.
```js
(getUserInput) =>
@@ -65,7 +65,7 @@ Submit your page when you think you've got it right. If you're running into erro
);
```
-You should correctly require and instantiate `http` as `http`.
+Você deve solicitar e instanciar corretamente `http` como `http`.
```js
(getUserInput) =>
@@ -83,7 +83,7 @@ You should correctly require and instantiate `http` as `http`.
);
```
-You should correctly require and instantiate `socket.io` as `io`.
+Você deve solicitar e instanciar corretamente `socket.io` como `io`.
```js
(getUserInput) =>
@@ -101,7 +101,7 @@ You should correctly require and instantiate `socket.io` as `io`.
);
```
-Socket.IO should be listening for connections.
+Socket.IO deve estar escutando as conexões.
```js
(getUserInput) =>
@@ -119,7 +119,7 @@ Socket.IO should be listening for connections.
);
```
-Your client should connect to your server.
+O client deve se conectar ao servidor.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/use-a-template-engines-powers.md b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/use-a-template-engines-powers.md
index 3f605fa3ab..89e7210001 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/use-a-template-engines-powers.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/advanced-node-and-express/use-a-template-engines-powers.md
@@ -1,6 +1,6 @@
---
id: 5895f70bf9fc0f352b528e64
-title: Use a Template Engine's Powers
+title: Usar as capacidades de um mecanismo de modelos
challengeType: 2
forumTopicId: 301567
dashedName: use-a-template-engines-powers
@@ -8,23 +8,23 @@ dashedName: use-a-template-engines-powers
# --description--
-One of the greatest features of using a template engine is being able to pass variables from the server to the template file before rendering it to HTML.
+Uma das maiores características do uso de um mecanismo de modelos (template engine) é poder passar variáveis do servidor para o arquivo de modelo antes de renderizá-lo em HTML.
-In your Pug file, you're able to use a variable by referencing the variable name as `#{variable_name}` inline with other text on an element or by using an equal sign on the element without a space such as `p=variable_name` which assigns the variable's value to the p element's text.
+No seu arquivo Pug, você pode usar uma variável fazendo referência ao nome da variável como `#{variable_name}` em linha com outro texto em um elemento ou usando um sinal de igual no elemento sem um espaço, como em `p=variable_name`, que atribui o valor da variável ao texto do elemento p.
-We strongly recommend looking at the syntax and structure of Pug [here](https://github.com/pugjs/pug) on GitHub's README. Pug is all about using whitespace and tabs to show nested elements and cutting down on the amount of code needed to make a beautiful site.
+É altamente recomendável examinar a sintaxe e a estrutura do Pug [aqui](https://github.com/pugjs/pug) no LEIAME do GitHub. O Pug tem a ver com usar o espaço em branco e as tabulações para mostrar elementos aninhados e diminuir a quantidade de código necessária para fazer um belo site.
-Looking at our pug file 'index.pug' included in your project, we used the variables *title* and *message*.
+Olhando para nosso arquivo pug 'index.pug', incluído em seu projeto, podemos ver as variáveis *title* e *message*.
-To pass those along from our server, you will need to add an object as a second argument to your *res.render* with the variables and their values. For example, pass this object along setting the variables for your index view: `{title: 'Hello', message: 'Please login'}`
+Para passar esses dados de nosso servidor, você precisará adicionar um objeto como um segundo argumento para *res.render* com as variáveis e seus valores. Para exemplificar, passe este objeto e configure as variáveis para sua visualização do índice: `{title: 'Hello', message: 'Please login'}`
-It should look like: `res.render(process.cwd() + '/views/pug/index', {title: 'Hello', message: 'Please login'});` Now refresh your page and you should see those values rendered in your view in the correct spot as laid out in your index.pug file!
+Deve se parecer como o seguinte: `res.render(process.cwd() + '/views/pug/index', {title: 'Hello', message: 'Please login'});` Em seguida, atualize a página e você deve ver esses valores renderizados em sua visualização no ponto correto conforme descrito no arquivo index.pug!
-Submit your page when you think you've got it right. If you're running into errors, you can check out the project completed up to this point [here](https://gist.github.com/camperbot/4af125119ed36e6e6a8bb920db0c0871).
+Envie sua página quando você achar que ela está certa. Se você encontrar erros, pode conferir o projeto concluído até este momento [aqui](https://gist.github.com/camperbot/4af125119ed36e6e6a8bb920db0c0871).
# --hints--
-Pug should correctly render variables.
+O Pug deve renderizar as variáveis corretamente.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.md b/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.md
index 9f855975a0..d004123623 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.md
@@ -1,6 +1,6 @@
---
id: 587d824a367417b2b2512c46
-title: Learn How JavaScript Assertions Work
+title: Aprender como funcionam as afirmações JavaScript
challengeType: 2
forumTopicId: 301589
dashedName: learn-how-javascript-assertions-work
@@ -8,21 +8,21 @@ dashedName: learn-how-javascript-assertions-work
# --description--
-Working on these challenges will involve you writing your code using one of the following methods:
+Trabalhar nesses desafios vai fazer com que você escreva seu código usando um dos seguintes métodos:
-- Clone [this GitHub repo](https://github.com/freeCodeCamp/boilerplate-mochachai/) and complete these challenges locally.
-- Use [our Replit starter project](https://replit.com/github/freeCodeCamp/boilerplate-mochachai) to complete these challenges.
-- Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo.
+- Clone [este repositório do GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/) e complete esses desafios localmente.
+- Use [nosso projeto inicial do Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai) para completar esses desafios.
+- Use um construtor de site de sua escolha para completar o projeto. Certifique-se de incorporar todos os arquivos do nosso repositório no GitHub.
-When you are done, make sure a working demo of your project is hosted somewhere public. Then submit the URL to it in the `Solution Link` field.
+Quando terminar, certifique-se de que uma demonstração funcional do seu projeto está hospedada em algum lugar público. Em seguida, envie o URL para ela no campo `Solution Link`.
# --instructions--
-Within `tests/1_unit-tests.js` under the test labelled `#1` in the `Basic Assertions` suite, change each `assert` to either `assert.isNull` or `assert.isNotNull` to make the test pass (should evaluate to `true`). Do not alter the arguments passed to the asserts.
+Em `tests/1_unit-tests.js`, no teste classificado como `#1` e na suíte `Basic Assertions`, modifique cada `assert` para `assert.isNull` ou para `assert.isNotNull`, de maneira que cada teste passe (seja avaliado como `true`). Não altere os argumentos passados às afirmações.
# --hints--
-All tests should pass.
+Todos os testes devem passar.
```js
(getUserInput) =>
@@ -36,7 +36,7 @@ All tests should pass.
);
```
-You should choose the correct method for the first assertion - `isNull` vs. `isNotNull`.
+Você deve escolher o método correto para a primeira assertiva - `isNull` ou `isNotNull`.
```js
(getUserInput) =>
@@ -50,7 +50,7 @@ You should choose the correct method for the first assertion - `isNull` vs. `isN
);
```
-You should choose the correct method for the second assertion - `isNull` vs. `isNotNull`.
+Você deve escolher o método correto para a segunda assertiva - `isNull` ou `isNotNull`.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iii---put-method.md b/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iii---put-method.md
index f9ca69d575..06d8fd3779 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iii---put-method.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iii---put-method.md
@@ -1,6 +1,6 @@
---
id: 587d824f367417b2b2512c5a
-title: Run Functional Tests on an API Response using Chai-HTTP III - PUT method
+title: Executar testes funcionais em uma resposta de API usando Chai-HTTP III - método PUT
challengeType: 2
forumTopicId: 301590
dashedName: run-functional-tests-on-an-api-response-using-chai-http-iii---put-method
@@ -8,9 +8,9 @@ dashedName: run-functional-tests-on-an-api-response-using-chai-http-iii---put-me
# --description--
-As a reminder, this project is being built upon the following starter project on [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/).
+Lembrando que este projeto está sento construído a partir do [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), ou pose ser clonado no [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/).
-In the next example we'll see how to send data in a request payload (body). We are going to test a PUT request. The `'/travellers'` endpoint accepts a JSON object taking the structure:
+No próximo exemplo, veremos como enviar dados em uma payload de solicitação (corpo). Vamos testar uma solicitação de PUT. O endpoint `'/travellers'` aceita um objeto JSON que tem essa estrutura:
```json
{
@@ -18,7 +18,7 @@ In the next example we'll see how to send data in a request payload (body). We a
}
```
-The route responds with :
+A rota responde com:
```json
{
@@ -26,13 +26,13 @@ The route responds with :
}
```
-See the server code for more details.
+Veja o código do servidor para mais detalhes.
# --instructions--
-Within `tests/2_functional-tests.js`, alter the `'send {surname: "Colombo"}'` test (`// #3`):
+Dentro de `tests/2_functional-tests.js`, altere o teste `'send {surname: "Colombo"}'` test (`// #3`):
-Send the following JSON response as a payload:
+Enviar a seguinte resposta JSON como payload:
```json
{
@@ -40,18 +40,18 @@ Send the following JSON response as a payload:
}
```
-Check for the following, within the `request.end` callback:
+Verifique o seguinte, dentro da função de callback de `request.end`:
1. `status`
2. `type`
3. `body.name`
4. `body.surname`
-Follow the assertion order above - we rely on it. Be sure to remove `assert.fail()`, once complete.
+Siga a ordem de declarações acima, pois dependemos disso. Não se esqueça de remover `assert.fail()` assim que o teste terminar.
# --hints--
-All tests should pass.
+Todos os testes devem passar.
```js
(getUserInput) =>
@@ -65,7 +65,7 @@ All tests should pass.
);
```
-You should test for 'res.status' to be 200.
+Você deve testar se 'res.status' será 200.
```js
(getUserInput) =>
@@ -81,7 +81,7 @@ You should test for 'res.status' to be 200.
);
```
-You should test for 'res.type' to be 'application/json'.
+Você deve testar se 'res.type' será 'application/json'.
```js
(getUserInput) =>
@@ -97,7 +97,7 @@ You should test for 'res.type' to be 'application/json'.
);
```
-You should test for 'res.body.name' to be 'Cristoforo'.
+Você deve testar se 'res.body.name' será 'Cristoforo'.
```js
(getUserInput) =>
@@ -113,7 +113,7 @@ You should test for 'res.body.name' to be 'Cristoforo'.
);
```
-You should test for 'res.body.surname' to be 'Colombo'.
+Você deve testar se 'res.body.surname' será 'Colombo'.
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iv---put-method.md b/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iv---put-method.md
index c4644a785f..78b952c54e 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iv---put-method.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iv---put-method.md
@@ -1,6 +1,6 @@
---
id: 587d824f367417b2b2512c5b
-title: Run Functional Tests on an API Response using Chai-HTTP IV - PUT method
+title: Executar testes funcionais em uma resposta de API usando Chai-HTTP IV - método PUT
challengeType: 2
forumTopicId: 301591
dashedName: run-functional-tests-on-an-api-response-using-chai-http-iv---put-method
@@ -8,15 +8,15 @@ dashedName: run-functional-tests-on-an-api-response-using-chai-http-iv---put-met
# --description--
-As a reminder, this project is being built upon the following starter project on [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). This exercise is similar to the preceding one. Look at it for the details.
+Lembrando que este projeto está sento construído a partir do [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), ou pose ser clonado no [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). Este exercício é semelhante ao anterior. Vejamos mais detalhes aqui.
-Now that you have seen how it is done, it is your turn to do it from scratch.
+Agora que vimos como é feito, é a sua vez de fazer do zero.
# --instructions--
-Within `tests/2_functional-tests.js`, alter the `'send {surname: "da Verrazzano"}'` test (`// #4`):
+Dentro de `tests/2_functional-tests.js`, altere o teste `'send {surname: "da Verrazzano"}'` test (`// #4`):
-Send the following JSON response as a payload to the `/travellers` route:
+Envie a resposta em JSON a seguir como payload para a rota `/travellers`:
```json
{
@@ -24,18 +24,18 @@ Send the following JSON response as a payload to the `/travellers` route:
}
```
-Check for the following, within a `request.end` callback:
+Verifique o seguinte, dentro de uma função de callback de `request.end`:
1. `status`
2. `type`
3. `body.name`
4. `body.surname`
-Follow the assertion order above - we rely on it. Be sure to remove `assert.fail()`, once complete.
+Siga a ordem de declarações acima, pois dependemos disso. Não se esqueça de remover `assert.fail()` assim que o teste terminar.
# --hints--
-All tests should pass
+Todos os testes devem passar
```js
(getUserInput) =>
@@ -49,7 +49,7 @@ All tests should pass
);
```
-You should test for 'res.status' to be 200
+Você deve testar se 'res.status' será 200
```js
(getUserInput) =>
@@ -65,7 +65,7 @@ You should test for 'res.status' to be 200
);
```
-You should test for 'res.type' to be 'application/json'
+Você deve testar se 'res.type' será 'application/json'
```js
(getUserInput) =>
@@ -81,7 +81,7 @@ You should test for 'res.type' to be 'application/json'
);
```
-You should test for 'res.body.name' to be 'Giovanni'
+Você deve testar se 'res.body.name' será 'Giovanni'
```js
(getUserInput) =>
@@ -97,7 +97,7 @@ You should test for 'res.body.name' to be 'Giovanni'
);
```
-You should test for 'res.body.surname' to be 'da Verrazzano'
+Você deve testar se 'res.body.surname' será 'da Verrazzano'
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii.md b/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii.md
index 53d2c7459e..3be53b3468 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii.md
@@ -1,6 +1,6 @@
---
id: 587d824f367417b2b2512c59
-title: Run Functional Tests on API Endpoints using Chai-HTTP II
+title: Executar testes funcionais no endpoint da API usando Chai-HTTP II
challengeType: 2
forumTopicId: 301592
dashedName: run-functional-tests-on-api-endpoints-using-chai-http-ii
@@ -8,17 +8,17 @@ dashedName: run-functional-tests-on-api-endpoints-using-chai-http-ii
# --description--
-As a reminder, this project is being built upon the following starter project on [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/).
+Lembrando que este projeto está sento construído a partir do [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), ou pose ser clonado no [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/).
# --instructions--
-Within `tests/2_functional-tests.js`, alter the `'Test GET /hello with your name'` test (`// #2`) to assert the `status` and the `text` response to make the test pass.
+Dentro de `tests/2_functional-tests.js`, altere o teste `'Test GET /hello with your name'` (`// #2`) para afirmar o `status` e a resposta `text` para fazer o teste passar.
-Send your name in the query, appending `?name=` to the route. The endpoint responds with `'hello '`.
+Envie seu nome na consulta, acrescentando `?name=` à rota. O endpoint responde com `'hello '`.
# --hints--
-All tests should pass
+Todos os testes devem passar
```js
(getUserInput) =>
@@ -32,7 +32,7 @@ All tests should pass
);
```
-You should test for 'res.status' == 200
+Você deve testar se 'res.status' == 200
```js
(getUserInput) =>
@@ -48,7 +48,7 @@ You should test for 'res.status' == 200
);
```
-You should test for 'res.text' == 'hello Guest'
+Você deve testar se 'res.text' == 'hello Guest'
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http.md b/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http.md
index dc99b2d46a..b5908ffe68 100644
--- a/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http.md
+++ b/curriculum/challenges/portuguese/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http.md
@@ -1,6 +1,6 @@
---
id: 587d824e367417b2b2512c58
-title: Run Functional Tests on API Endpoints using Chai-HTTP
+title: Executar testes funcionais no endpoint da API usando Chai-HTTP
challengeType: 2
forumTopicId: 301593
dashedName: run-functional-tests-on-api-endpoints-using-chai-http
@@ -8,13 +8,13 @@ dashedName: run-functional-tests-on-api-endpoints-using-chai-http
# --description--
-As a reminder, this project is being built upon the following starter project on [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), or cloned from [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/).
+Lembrando que este projeto está sento construído a partir do [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), ou pose ser clonado no [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/).
-Mocha allows testing asyncronous operations. There is a small (BIG) difference. Can you spot it?
+O Mocha permite testar operações assíncronas. Há uma pequena (GRANDE) diferença. Você consegue identificar?
-We can test our API endpoints using a plugin, called `chai-http`. Let's see how it works. And remember, API calls are asynchronous.
+Podemos testar os endpoints de API usando um plugin, chamado `chai-http`. Vamos ver como isso funciona. E lembre-se: as chamadas de API são assíncronas.
-The following is an example of a test using `chai-http` for the `'GET /hello?name=[name] => "hello [name]"'` suite. The test sends a name string in a url query string (`?name=John`) using a `GET`request to the `server`. In the `end` method's callback function, the response object (`res`) is received and contains the `status` property. The first `assert.equal` checks if the status is equal to `200`. The second `assert.equal` checks that the response string (`res.text`) is equal to `"hello John"`.
+A seguir, vemos um exemplo de um teste usando `chai-http` para a suite `'GET /hello?name=[name] => "hello [name]"'`. O teste envia uma string de nome em uma string de consulta de url (`?name=John`) usando uma solicitação de `GET` para o `server`. Na função de callback do método `end`, o objeto de resposta (`res`) é recebido e contém a propriedade `status`. O primeiro `assert.equal` verifica se o status é igual a `200`. O segundo `assert.equal` verifica se a string de resposta (`res.text`) é igual a `"hello John"`.
```js
suite('GET /hello?name=[name] => "hello [name]"', function () {
@@ -34,17 +34,17 @@ suite('GET /hello?name=[name] => "hello [name]"', function () {
});
```
-Notice the `done` parameter in the test's callback function. Calling it at the end without an argument is necessary to signal successful asynchronous completion.
+Observe o parâmetro `done` na função de callback do teste. Chamá-la no final sem um argumento é necessário para sinalizar uma conclusão assíncrona bem-sucedida.
# --instructions--
-Within `tests/2_functional-tests.js`, alter the `'Test GET /hello with no name'` test (`// #1`) to assert the `status` and the `text` response to make the test pass. Do not alter the arguments passed to the asserts.
+Dentro de `tests/2_functional-tests.js`, altere o teste `'Test GET /hello with no name'` (`// #1`) para afirmar o `status` e a resposta `text` para fazer o teste passar. Não altere os argumentos passados às afirmações.
-There should be no name in the query; the endpoint responds with `hello Guest`.
+Não deve haver nome na consulta. O endpoint responde com `hello Guest`.
# --hints--
-All tests should pass
+Todos os testes devem passar
```js
(getUserInput) =>
@@ -58,7 +58,7 @@ All tests should pass
);
```
-You should test for 'res.status' == 200
+Você deve testar se 'res.status' == 200
```js
(getUserInput) =>
@@ -74,7 +74,7 @@ You should test for 'res.status' == 200
);
```
-You should test for 'res.text' == 'hello Guest'
+Você deve testar se 'res.text' == 'hello Guest'
```js
(getUserInput) =>
diff --git a/curriculum/challenges/portuguese/07-scientific-computing-with-python/python-for-everybody/networking-write-a-web-browser.md b/curriculum/challenges/portuguese/07-scientific-computing-with-python/python-for-everybody/networking-write-a-web-browser.md
index d1fea01e37..d14542052e 100644
--- a/curriculum/challenges/portuguese/07-scientific-computing-with-python/python-for-everybody/networking-write-a-web-browser.md
+++ b/curriculum/challenges/portuguese/07-scientific-computing-with-python/python-for-everybody/networking-write-a-web-browser.md
@@ -34,7 +34,7 @@ Um servidor web simples.
---
-Um cliente de email simples.
+Um client de e-mail simples.
---