From f3da789fa4e4c74d4a8ae0bff45b3435030ade0a Mon Sep 17 00:00:00 2001 From: camperbot Date: Mon, 19 Jul 2021 16:05:37 +0530 Subject: [PATCH] chore(i18n,curriculum): update translations (#42918) --- .../find-characters-with-lazy-matching.md | 2 +- .../set-up-passport.md | 2 +- .../find-characters-with-lazy-matching.md | 2 +- .../set-up-passport.md | 2 +- .../find-characters-with-lazy-matching.md | 2 +- .../react-and-redux/connect-redux-to-react.md | 16 +- .../connect-redux-to-the-messages-app.md | 18 +- .../react/use-state-to-toggle-an-element.md | 28 +-- ...-the-lifecycle-method-componentdidmount.md | 14 +- ...the-lifecycle-method-componentwillmount.md | 12 +- .../write-a-react-component-from-scratch.md | 16 +- .../react/write-a-simple-counter.md | 18 +- .../find-characters-with-lazy-matching.md | 2 +- .../exercise-tracker.md | 2 +- .../file-metadata-microservice.md | 2 +- .../request-header-parser-microservice.md | 2 +- .../timestamp-microservice.md | 2 +- .../url-shortener-microservice.md | 2 +- .../meet-the-node-console.md | 2 +- ...e-of-any-node.js-project-or-npm-package.md | 2 +- .../install-and-set-up-mongoose.md | 2 +- .../set-up-a-template-engine.md | 34 +-- .../set-up-passport.md | 2 +- ...ality-with-.deepequal-and-.notdeepequal.md | 2 +- .../compare-the-properties-of-two-elements.md | 2 +- .../learn-how-javascript-assertions-work.md | 20 +- ...sponse-using-chai-http-iii---put-method.md | 2 +- ...esponse-using-chai-http-iv---put-method.md | 24 +- ...sts-on-api-endpoints-using-chai-http-ii.md | 14 +- ...-tests-on-api-endpoints-using-chai-http.md | 22 +- ...ional-tests-using-a-headless-browser-ii.md | 2 +- ...nctional-tests-using-a-headless-browser.md | 48 ++-- ...mulate-actions-using-a-headless-browser.md | 24 +- .../test-for-truthiness.md | 18 +- .../test-if-a-string-contains-a-substring.md | 14 +- ...f-a-value-falls-within-a-specific-range.md | 16 +- .../test-if-a-value-is-a-string.md | 16 +- .../test-if-a-value-is-an-array.md | 2 +- ...ue-is-of-a-specific-data-structure-type.md | 20 +- ...st-if-a-variable-or-function-is-defined.md | 14 +- .../test-if-an-array-contains-an-item.md | 12 +- .../test-if-an-object-has-a-property.md | 2 +- ...-object-is-an-instance-of-a-constructor.md | 2 +- ...s-below-or-at-least-as-large-as-another.md | 16 +- .../use-assert.isok-and-assert.isnotok.md | 2 +- ...se-regular-expressions-to-test-a-string.md | 2 +- ...se-the-double-equals-to-assert-equality.md | 18 +- ...triple-equals-to-assert-strict-equality.md | 18 +- .../american-british-translator.md | 2 +- .../issue-tracker.md | 74 +++--- .../metric-imperial-converter.md | 94 ++++---- .../personal-library.md | 36 +-- .../sudoku-solver.md | 116 +++++----- .../introduction-to-data-analysis.md | 16 +- .../numpy-algebra-and-size.md | 20 +- .../numpy-arrays.md | 12 +- .../numpy-boolean-arrays.md | 12 +- .../numpy-introduction-a.md | 18 +- .../numpy-introduction-b.md | 20 +- ...onal-selection-and-modifying-dataframes.md | 12 +- .../pandas-creating-columns.md | 12 +- ...ndas-indexing-and-conditional-selection.md | 12 +- .../reading-data-csv-and-txt.md | 12 +- .../reading-data-from-databases.md | 18 +- .../page-view-time-series-visualizer.md | 12 +- .../numpy/basics-of-numpy.md | 4 +- .../numpy/mathematics.md | 4 +- .../numpy/reorganizing-arrays.md | 4 +- .../data-analysis-with-python-certificate.yml | 12 +- .../information-security-certificate.yml | 10 +- .../legacy-back-end-certificate.yml | 22 +- .../legacy-data-visualization-certificate.yml | 22 +- .../legacy-front-end-certificate.yml | 22 +- .../legacy-full-stack-certificate.yml | 14 +- ...rity-and-quality-assurance-certificate.yml | 12 +- ...chine-learning-with-python-certificate.yml | 12 +- .../quality-assurance-certificate.yml | 12 +- .../relational-databases-certificate.yml | 10 +- ...ific-computing-with-python-certificate.yml | 12 +- .../find-characters-with-lazy-matching.md | 2 +- .../react-and-redux/connect-redux-to-react.md | 16 +- .../connect-redux-to-the-messages-app.md | 18 +- .../extract-local-state-into-redux.md | 26 +-- .../extract-state-logic-to-redux.md | 20 +- .../getting-started-with-react-redux.md | 16 +- .../manage-state-locally-first.md | 24 +- .../react-and-redux/map-dispatch-to-props.md | 16 +- .../react-and-redux/map-state-to-props.md | 18 +- .../moving-forward-from-here.md | 12 +- .../use-provider-to-connect-redux-to-react.md | 18 +- ...state-in-the-user-interface-another-way.md | 16 +- .../react/render-with-an-if-else-condition.md | 16 +- ...ps-with-stateless-functional-components.md | 20 +- .../react/set-state-with-this.setstate.md | 18 +- .../use--for-a-more-concise-conditional.md | 14 +- ...ry-expression-for-conditional-rendering.md | 27 ++- ...anced-javascript-in-react-render-method.md | 25 +- ...y.filter-to-dynamically-filter-an-array.md | 16 +- ...rray.map-to-dynamically-render-elements.md | 26 +-- .../react/use-default-props.md | 10 +- ...roptypes-to-define-the-props-you-expect.md | 18 +- .../use-react-to-render-nested-components.md | 16 +- .../react/use-state-to-toggle-an-element.md | 28 +-- ...-the-lifecycle-method-componentdidmount.md | 14 +- ...the-lifecycle-method-componentwillmount.md | 12 +- .../write-a-react-component-from-scratch.md | 16 +- .../react/write-a-simple-counter.md | 18 +- .../redux/combine-multiple-reducers.md | 20 +- .../copy-an-object-with-object.assign.md | 16 +- .../redux/create-a-redux-store.md | 18 +- .../redux/define-a-redux-action.md | 12 +- .../redux/define-an-action-creator.md | 12 +- .../redux/dispatch-an-action-event.md | 14 +- .../redux/get-state-from-the-redux-store.md | 10 +- .../redux/handle-an-action-in-the-store.md | 16 +- .../redux/never-mutate-state.md | 16 +- .../redux/register-a-store-listener.md | 14 +- .../redux/remove-an-item-from-an-array.md | 12 +- .../redux/send-action-data-to-the-store.md | 14 +- ...ch-statement-to-handle-multiple-actions.md | 20 +- .../redux/use-const-for-action-types.md | 24 +- ...ddleware-to-handle-asynchronous-actions.md | 22 +- .../use-the-spread-operator-on-arrays.md | 16 +- .../redux/write-a-counter-with-redux.md | 18 +- ...yle-until-a-condition-is-met-with-while.md | 28 +-- .../sass/create-reusable-css-with-mixins.md | 24 +- ...ne-set-of-css-styles-to-another-element.md | 16 +- .../sass/nest-css-with-sass.md | 12 +- ...tyles-into-smaller-chunks-with-partials.md | 16 +- .../sass/store-data-with-sass-variables.md | 22 +- .../use-each-to-map-over-items-in-a-list.md | 18 +- .../sass/use-for-to-create-a-sass-loop.md | 28 +-- ...if-and-else-to-add-logic-to-your-styles.md | 20 +- .../visualize-data-with-a-bar-chart.md | 40 ++-- .../add-a-hover-effect-to-a-d3-element.md | 10 +- ...hain-middleware-to-create-a-time-server.md | 16 +- .../get-data-from-post-requests.md | 22 +- .../pandas-dataframes.md | 34 +-- .../apis-and-microservices-certificate.yml | 12 +- .../data-analysis-with-python-certificate.yml | 12 +- .../data-visualization-certificate.yml | 12 +- .../front-end-libraries-certificate.yml | 12 +- .../information-security-certificate.yml | 12 +- ...rithms-and-data-structures-certificate.yml | 12 +- .../legacy-back-end-certificate.yml | 22 +- .../legacy-data-visualization-certificate.yml | 22 +- .../legacy-front-end-certificate.yml | 22 +- .../legacy-full-stack-certificate.yml | 14 +- ...rity-and-quality-assurance-certificate.yml | 12 +- ...chine-learning-with-python-certificate.yml | 12 +- .../quality-assurance-certificate.yml | 12 +- .../relational-databases-certificate.yml | 12 +- .../responsive-web-design-certificate.yml | 12 +- ...ific-computing-with-python-certificate.yml | 12 +- .../celestial-bodies-database.md | 2 +- .../learn-relational-databases/final-boss.md | 2 +- .../learn-advanced-bash-by-building.md | 2 +- ...-and-sql-by-building-a-bike-rental-shop.md | 2 +- .../learn-bash-by-building-a-boilerplate.md | 2 +- ...ash-scripting-by-building-five-programs.md | 2 +- ...git-by-building-an-sql-reference-object.md | 2 +- ...building-a-list-of-inspirational-quotes.md | 2 +- .../learn-nano-by-building-a-castle.md | 2 +- ...-databases-by-building-a-mario-database.md | 2 +- ...earn-sql-by-building-a-student-database.md | 2 +- .../periodic-table-database.md | 2 +- .../salon-appointment-scheduler.md | 2 +- .../world-cup-database.md | 2 +- .../dictionaries/portuguese/comments.json | 216 +++++++++--------- 169 files changed, 1365 insertions(+), 1367 deletions(-) diff --git a/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md b/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md index 368b5f1d30..95098ecdb3 100644 --- a/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md +++ b/curriculum/challenges/chinese-traditional/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md @@ -33,7 +33,7 @@ assert(result[0] == '

'); `myRegex` 應該使用懶惰匹配 ```js -assert(/\?/g.test(myRegex)); +assert(/[^\\][\*\+\?]\?/.test(myRegex)); ``` `myRegex` 不應包含字符串 `h1` diff --git a/curriculum/challenges/chinese-traditional/06-quality-assurance/advanced-node-and-express/set-up-passport.md b/curriculum/challenges/chinese-traditional/06-quality-assurance/advanced-node-and-express/set-up-passport.md index 44a669cfbf..73fe3e7890 100644 --- a/curriculum/challenges/chinese-traditional/06-quality-assurance/advanced-node-and-express/set-up-passport.md +++ b/curriculum/challenges/chinese-traditional/06-quality-assurance/advanced-node-and-express/set-up-passport.md @@ -111,7 +111,7 @@ Express app 可以使用新的依賴。 (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/chinese/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md b/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md index 5912f00bd1..c967709928 100644 --- a/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md +++ b/curriculum/challenges/chinese/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md @@ -33,7 +33,7 @@ assert(result[0] == '

'); `myRegex` 应该使用懒惰匹配 ```js -assert(/\?/g.test(myRegex)); +assert(/[^\\][\*\+\?]\?/.test(myRegex)); ``` `myRegex` 不应包含字符串 `h1` diff --git a/curriculum/challenges/chinese/06-quality-assurance/advanced-node-and-express/set-up-passport.md b/curriculum/challenges/chinese/06-quality-assurance/advanced-node-and-express/set-up-passport.md index 41ebb647f0..72a0085bcd 100644 --- a/curriculum/challenges/chinese/06-quality-assurance/advanced-node-and-express/set-up-passport.md +++ b/curriculum/challenges/chinese/06-quality-assurance/advanced-node-and-express/set-up-passport.md @@ -111,7 +111,7 @@ Express app 可以使用新的依赖。 (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/espanol/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md index 6575079385..74b6716471 100644 --- a/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md +++ b/curriculum/challenges/espanol/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md @@ -33,7 +33,7 @@ assert(result[0] == '

'); `myRegex` debe usar una coincidencia perezosa ```js -assert(/\?/g.test(myRegex)); +assert(/[^\\][\*\+\?]\?/.test(myRegex)); ``` `myRegex` no debe incluir la cadena `h1` diff --git a/curriculum/challenges/espanol/03-front-end-libraries/react-and-redux/connect-redux-to-react.md b/curriculum/challenges/espanol/03-front-end-libraries/react-and-redux/connect-redux-to-react.md index b016ed7ef1..c74b1d2da9 100644 --- a/curriculum/challenges/espanol/03-front-end-libraries/react-and-redux/connect-redux-to-react.md +++ b/curriculum/challenges/espanol/03-front-end-libraries/react-and-redux/connect-redux-to-react.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036147 -title: Connect Redux to React +title: Conecta Redux a React challengeType: 6 forumTopicId: 301426 dashedName: connect-redux-to-react @@ -8,23 +8,23 @@ dashedName: connect-redux-to-react # --description-- -Now that you've written both the `mapStateToProps()` and the `mapDispatchToProps()` functions, you can use them to map `state` and `dispatch` to the `props` of one of your React components. The `connect` method from React Redux can handle this task. This method takes two optional arguments, `mapStateToProps()` and `mapDispatchToProps()`. They are optional because you may have a component that only needs access to `state` but doesn't need to dispatch any actions, or vice versa. +Ahora que has escrito tanto la función `mapStateToProps()` como la función `mapDispatchToProps()`, puedes usarlos para asignar `state` y `dispatch` a las `props` de uno de tus componentes React. El método `connect` de React Redux puede manejar esta tarea. Este método toma dos argumentos opcionales, `mapStateToProps()` y `mapDispatchToProps()`. Son opcionales porque puedes tener un componente que solo necesita acceso al `state` pero no necesita enviar ninguna acción, o viceversa. -To use this method, pass in the functions as arguments, and immediately call the result with your component. This syntax is a little unusual and looks like: +Para utilizar este método, pasa las funciones como argumentos, y llama inmediatamente al resultado con tu componente. Esta sintaxis es un poco inusual y se ve así: ```js connect(mapStateToProps, mapDispatchToProps)(MyComponent) ``` -**Note:** If you want to omit one of the arguments to the `connect` method, you pass `null` in its place. +**Nota:** Si deseas omitir uno de los argumentos del método `connect`, pasa `null` en su lugar. # --instructions-- -The code editor has the `mapStateToProps()` and `mapDispatchToProps()` functions and a new React component called `Presentational`. Connect this component to Redux with the `connect` method from the `ReactRedux` global object, and call it immediately on the `Presentational` component. Assign the result to a new `const` called `ConnectedComponent` that represents the connected component. That's it, now you're connected to Redux! Try changing either of `connect`'s arguments to `null` and observe the test results. +El editor de código tiene las funciones `mapStateToProps()` y `mapDispatchToProps()` y un nuevo componente React llamado `Presentational`. Conecta este componente a Redux con el método `connect` del objeto global `ReactRedux`, y llámalo inmediatamente en el componente `Presentational`. Asigna el resultado a una nueva `const` llamada `ConnectedComponent` que representa el componente conectado. Eso es todo, ¡ahora estás conectado a Redux! Intenta cambiar cualquiera de los argumentos de `connect` a `null` y observa los resultados de la prueba. # --hints-- -The `Presentational` component should render. +El componente `Presentational` debe renderizarse. ```js assert( @@ -35,7 +35,7 @@ assert( ); ``` -The `Presentational` component should receive a prop `messages` via `connect`. +El componente `Presentational` debe recibir una prop `messages` a través de `connect`. ```js assert( @@ -47,7 +47,7 @@ assert( ); ``` -The `Presentational` component should receive a prop `submitNewMessage` via `connect`. +El componente `Presentational` debe recibir una prop `submitNewMessage` a través de `connect`. ```js assert( diff --git a/curriculum/challenges/espanol/03-front-end-libraries/react-and-redux/connect-redux-to-the-messages-app.md b/curriculum/challenges/espanol/03-front-end-libraries/react-and-redux/connect-redux-to-the-messages-app.md index ce25f89ba6..52be7d936a 100644 --- a/curriculum/challenges/espanol/03-front-end-libraries/react-and-redux/connect-redux-to-the-messages-app.md +++ b/curriculum/challenges/espanol/03-front-end-libraries/react-and-redux/connect-redux-to-the-messages-app.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036148 -title: Connect Redux to the Messages App +title: Conecta Redux a la aplicación de mensajes challengeType: 6 forumTopicId: 301427 dashedName: connect-redux-to-the-messages-app @@ -8,17 +8,17 @@ dashedName: connect-redux-to-the-messages-app # --description-- -Now that you understand how to use `connect` to connect React to Redux, you can apply what you've learned to your React component that handles messages. +Ahora que entiendes cómo usar `connect` para conectar React a Redux, puedes aplicar lo que has aprendido a tu componente React que maneja mensajes. -In the last lesson, the component you connected to Redux was named `Presentational`, and this wasn't arbitrary. This term *generally* refers to React components that are not directly connected to Redux. They are simply responsible for the presentation of UI and do this as a function of the props they receive. By contrast, container components are connected to Redux. These are typically responsible for dispatching actions to the store and often pass store state to child components as props. +En la última lección, el componente que conectaste a Redux se llamó `Presentational`, y esto no fue arbitrario. Este término *generalmente* se refiere a componentes React que no están directamente conectados a Redux. Ellos simplemente son responsables de la presentación de la interfaz de usuario y lo hacen en función de las props que reciben. Por el contrario, los contenedores componentes están conectados a Redux. Estos son típicamente responsables de enviar acciones al store y a menudo pasan el estado del store a componentes secundarios como props. # --instructions-- -The code editor has all the code you've written in this section so far. The only change is that the React component is renamed to `Presentational`. Create a new component held in a constant called `Container` that uses `connect` to connect the `Presentational` component to Redux. Then, in the `AppWrapper`, render the React Redux `Provider` component. Pass `Provider` the Redux `store` as a prop and render `Container` as a child. Once everything is setup, you will see the messages app rendered to the page again. +El editor tiene todo el código que has escrito hasta ahora en esta sección. El único cambio es que el componente React se renombra a `Presentational`. Crea un nuevo componente en una constante llamada `Container` que usa `connect` para conectar el componente `Presentational` a Redux. Luego, en el `AppWrapper`, renderiza el componente `Provider` de React Redux. Pasa a `Provider` el `store` Redux como una prop y renderiza `Container` como un hijo. Una vez que todo esté configurado, verás que los mensajes de la aplicación son visualizados nuevamente en la página. # --hints-- -The `AppWrapper` should render to the page. +El `AppWrapper` debe renderizarse. ```js assert( @@ -29,7 +29,7 @@ assert( ); ``` -The `Presentational` component should render to page. +El componente `Presentational` debe renderizarse. ```js assert( @@ -40,7 +40,7 @@ assert( ); ``` -The `Presentational` component should render an `h2`, `input`, `button`, and `ul` elements. +El componente `Presentational` debe renderizar los siguientes elementos: un `h2`, `input`, `button`, y `ul`. ```js assert( @@ -57,7 +57,7 @@ assert( ); ``` -The `Presentational` component should receive `messages` from the Redux store as a prop. +El componente `Presentational` debe recibir `messages` desde el store Redux como una prop. ```js assert( @@ -70,7 +70,7 @@ assert( ); ``` -The `Presentational` component should receive the `submitMessage` action creator as a prop. +El componente `Presentational` debe recibir la acción `submitMessage` como una prop. ```js assert( diff --git a/curriculum/challenges/espanol/03-front-end-libraries/react/use-state-to-toggle-an-element.md b/curriculum/challenges/espanol/03-front-end-libraries/react/use-state-to-toggle-an-element.md index d4b7578928..8dfa9e2a72 100644 --- a/curriculum/challenges/espanol/03-front-end-libraries/react/use-state-to-toggle-an-element.md +++ b/curriculum/challenges/espanol/03-front-end-libraries/react/use-state-to-toggle-an-element.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036176 -title: Use State to Toggle an Element +title: Usa el estado para alternar un elemento challengeType: 6 forumTopicId: 301421 dashedName: use-state-to-toggle-an-element @@ -8,7 +8,7 @@ dashedName: use-state-to-toggle-an-element # --description-- -Sometimes you might need to know the previous state when updating the state. However, state updates may be asynchronous - this means React may batch multiple `setState()` calls into a single update. This means you can't rely on the previous value of `this.state` or `this.props` when calculating the next value. So, you should not use code like this: +A veces puedes necesitar conocer el estado anterior al actualizar el estado. Sin embargo, las actualizaciones del estado pueden ser asíncronas - esto significa que React puede procesar múltiples llamadas a `setState()` en una sola actualización. Esto significa que no puedes confiar en el valor anterior de `this.state` o `this.props` al calcular el siguiente valor. Por lo tanto, no debes usar código como este: ```jsx this.setState({ @@ -16,7 +16,7 @@ this.setState({ }); ``` -Instead, you should pass `setState` a function that allows you to access state and props. Using a function with `setState` guarantees you are working with the most current values of state and props. This means that the above should be rewritten as: +En su lugar, debes pasar una función a `setState` que te permitirá acceder al estado y props. El usar una función con `setState` te garantiza que estás trabajando con los valores más actuales del estado y props. Esto significa que lo anterior debe reescribirse así: ```jsx this.setState((state, props) => ({ @@ -24,7 +24,7 @@ this.setState((state, props) => ({ })); ``` -You can also use a form without `props` if you need only the `state`: +También puedes usar un formulario sin `props` si necesitas solo el `state`: ```jsx this.setState(state => ({ @@ -32,21 +32,21 @@ this.setState(state => ({ })); ``` -Note that you have to wrap the object literal in parentheses, otherwise JavaScript thinks it's a block of code. +Ten en cuenta que tienes que encapsular el objeto literal entre paréntesis, de lo contrario JavaScript pensará que es un bloque de código. # --instructions-- -`MyComponent` has a `visibility` property which is initialized to `false`. The render method returns one view if the value of `visibility` is true, and a different view if it is false. +`MyComponent` tiene una propiedad `visibility` que se inicializa con el valor `false`. El método de renderización devuelve un resultado si el valor de `visibility` es verdadero, y un resultado diferente si es falso. -Currently, there is no way of updating the `visibility` property in the component's `state`. The value should toggle back and forth between true and false. There is a click handler on the button which triggers a class method called `toggleVisibility()`. Pass a function to `setState` to define this method so that the `state` of `visibility` toggles to the opposite value when the method is called. If `visibility` is `false`, the method sets it to `true`, and vice versa. +Actualmente, no hay forma de actualizar la propiedad `visibility` en el `state` del componente. El valor debe cambiar entre verdadero y falso. Hay un manejador para el evento clic en el botón que activa un método de clase llamado `toggleVisibility()`. Pasa una función a `setState` para definir este método, de tal forma que el `state` de `visibility` cambie al valor opuesto cuando se llame el método. Si `visibility` es `false`, el método lo cambia a `true` y viceversa. -Finally, click the button to see the conditional rendering of the component based on its `state`. +Finalmente, haz clic en el botón para ver la renderizado condicional del componente basado en su `state`. -**Hint:** Don't forget to bind the `this` keyword to the method in the `constructor`! +**Pista:** ¡No olvides enlazar la palabra clave `this` al método en el `constructor`! # --hints-- -`MyComponent` should return a `div` element which contains a `button`. +`MyComponent` debe devolver un elemento `div` el cual debe contener una etiqueta `button`. ```js assert.strictEqual( @@ -56,7 +56,7 @@ assert.strictEqual( ); ``` -The state of `MyComponent` should initialize with a `visibility` property set to `false`. +El estado de `MyComponent` debe inicializarse con una propiedad `visibility` establecida a `false`. ```js assert.strictEqual( @@ -65,7 +65,7 @@ assert.strictEqual( ); ``` -Clicking the button element should toggle the `visibility` property in state between `true` and `false`. +Al hacer clic en el botón se debe cambiar la propiedad `visibility` en el estado entre `true` y `false`. ```js (() => { @@ -89,7 +89,7 @@ Clicking the button element should toggle the `visibility` property in state bet })(); ``` -An anonymous function should be passed to `setState`. +Una función anónima debe pasarse a `setState`. ```js const paramRegex = '[a-zA-Z$_]\\w*(,[a-zA-Z$_]\\w*)?'; @@ -104,7 +104,7 @@ assert( ); ``` -`this` should not be used inside `setState` +`this` no debe usarse dentro de `setState` ```js assert(!/this\.setState\([^}]*this/.test(code)); diff --git a/curriculum/challenges/espanol/03-front-end-libraries/react/use-the-lifecycle-method-componentdidmount.md b/curriculum/challenges/espanol/03-front-end-libraries/react/use-the-lifecycle-method-componentdidmount.md index f20b192ce8..8550181d00 100644 --- a/curriculum/challenges/espanol/03-front-end-libraries/react/use-the-lifecycle-method-componentdidmount.md +++ b/curriculum/challenges/espanol/03-front-end-libraries/react/use-the-lifecycle-method-componentdidmount.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403617d -title: Use the Lifecycle Method componentDidMount +title: Usa el método de ciclo de vida componentDidMount challengeType: 6 forumTopicId: 301422 dashedName: use-the-lifecycle-method-componentdidmount @@ -8,17 +8,17 @@ dashedName: use-the-lifecycle-method-componentdidmount # --description-- -Most web developers, at some point, need to call an API endpoint to retrieve data. If you're working with React, it's important to know where to perform this action. +La mayoría de los desarrolladores web, en algún momento, necesitan llamar al endpoint de un API para obtener datos. Si estás trabajando con React, es importante saber dónde realizar esta acción. -The best practice with React is to place API calls or any calls to your server in the lifecycle method `componentDidMount()`. This method is called after a component is mounted to the DOM. Any calls to `setState()` here will trigger a re-rendering of your component. When you call an API in this method, and set your state with the data that the API returns, it will automatically trigger an update once you receive the data. +La mejor práctica con React es ubicar las llamadas API o cualquier llamada a tu servidor en el método de ciclo de vida `componentDidMount()`. Este método se llama después de que un componente es montado (mounted) en el DOM. Cualquier llamada a `setState()` aquí desencadenará un re-renderizado de tu componente. Cuando se llame a una API en este método, y se modifique el estado con los datos que la API devuelve, automáticamente se ejecutará una actualización una vez que los datos sean recibidos. # --instructions-- -There is a mock API call in `componentDidMount()`. It sets state after 2.5 seconds to simulate calling a server to retrieve data. This example requests the current total active users for a site. In the render method, render the value of `activeUsers` in the `h1` after the text `Active Users:`. Watch what happens in the preview, and feel free to change the timeout to see the different effects. +Hay una llamada simulada al API en `componentDidMount()`. Esta llamada modifica el estado después de 2.5 segundos para simular una llamada a un servidor para obtener datos. Este ejemplo consulta el total de usuarios activos actual para un sitio. En el método render, se renderiza el valor de `activeUsers` en el `h1` después del texto `Active Users:`. Mira lo que sucede en la vista previa, y siéntete libre de cambiar el tiempo de espera para ver los diferentes efectos. # --hints-- -`MyComponent` should render a `div` element which wraps an `h1` tag. +`MyComponent` debe mostrar un elemento `div` el cual contiene una etiqueta `h1`. ```js assert( @@ -32,7 +32,7 @@ assert( ); ``` -Component state should be updated with a timeout function in `componentDidMount`. +El estado del componente debe actualizarse con una función timeout en `componentDidMount`. ```js assert( @@ -45,7 +45,7 @@ assert( ); ``` -The `h1` tag should render the `activeUsers` value from `MyComponent`'s state. +La etiqueta `h1` debe renderizar el valor `activeUsers` del estado de `MyComponent`. ```js (() => { diff --git a/curriculum/challenges/espanol/03-front-end-libraries/react/use-the-lifecycle-method-componentwillmount.md b/curriculum/challenges/espanol/03-front-end-libraries/react/use-the-lifecycle-method-componentwillmount.md index 6095a48eed..18ba5d33d8 100644 --- a/curriculum/challenges/espanol/03-front-end-libraries/react/use-the-lifecycle-method-componentwillmount.md +++ b/curriculum/challenges/espanol/03-front-end-libraries/react/use-the-lifecycle-method-componentwillmount.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403617c -title: Use the Lifecycle Method componentWillMount +title: Usa el método de ciclo de vida componentWillMount challengeType: 6 forumTopicId: 301423 dashedName: use-the-lifecycle-method-componentwillmount @@ -8,17 +8,17 @@ dashedName: use-the-lifecycle-method-componentwillmount # --description-- -React components have several special methods that provide opportunities to perform actions at specific points in the lifecycle of a component. These are called lifecycle methods, or lifecycle hooks, and allow you to catch components at certain points in time. This can be before they are rendered, before they update, before they receive props, before they unmount, and so on. Here is a list of some of the main lifecycle methods: `componentWillMount()` `componentDidMount()` `shouldComponentUpdate()` `componentDidUpdate()` `componentWillUnmount()` The next several lessons will cover some of the basic use cases for these lifecycle methods. +Los componentes React tienen varios métodos especiales que proporcionan oportunidades para realizar acciones en puntos específicos en el ciclo de vida de un componente. Estos se llaman métodos de ciclo de vida, o interceptores (hooks) de ciclo de vida, y te permiten interceptar componentes en determinados momentos del tiempo. Esto puede ser antes de que se rendericen, antes de que se actualicen, antes de que reciban las props, antes de que se desmonten, etc. Aquí hay una lista de algunos de los métodos principales del ciclo de vida: `componentWillMount()` `componentDidMount()` `shouldComponentUpdate()` `componentDidUpdate()` `componentWillUnmount()`. Las siguientes lecciones cubrirán algunos de los casos de uso básicos para estos métodos del ciclo de vida. -**Note:** The `componentWillMount` Lifecycle method will be deprecated in a future version of 16.X and removed in version 17. [(Source)](https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html) +**Nota:** El método de ciclo de vida `componentWillMount` se desaprobará en una versión futura de 16.X y se eliminará en la versión 17. [(Fuente)](https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html) # --instructions-- -The `componentWillMount()` method is called before the `render()` method when a component is being mounted to the DOM. Log something to the console within `componentWillMount()` - you may want to have your browser console open to see the output. +El método `componentWillMount()` es invocado antes del método `render()` cuando un componente está siendo montado en el DOM. Imprime algo en la consola dentro de `componentWillMount()` - puede que quieras tener la consola del navegador abierta para ver el resultado. # --hints-- -`MyComponent` should render a `div` element. +`MyComponent` debe renderizar un elemento `div`. ```js assert( @@ -29,7 +29,7 @@ assert( ); ``` -`console.log` should be called in `componentWillMount`. +`console.log` debe ser llamado en `componentWillMount`. ```js assert( diff --git a/curriculum/challenges/espanol/03-front-end-libraries/react/write-a-react-component-from-scratch.md b/curriculum/challenges/espanol/03-front-end-libraries/react/write-a-react-component-from-scratch.md index 83cf8603ab..6c1145cd14 100644 --- a/curriculum/challenges/espanol/03-front-end-libraries/react/write-a-react-component-from-scratch.md +++ b/curriculum/challenges/espanol/03-front-end-libraries/react/write-a-react-component-from-scratch.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036168 -title: Write a React Component from Scratch +title: Escribe un componente React desde cero challengeType: 6 forumTopicId: 301424 dashedName: write-a-react-component-from-scratch @@ -8,17 +8,17 @@ dashedName: write-a-react-component-from-scratch # --description-- -Now that you've learned the basics of JSX and React components, it's time to write a component on your own. React components are the core building blocks of React applications so it's important to become very familiar with writing them. Remember, a typical React component is an ES6 `class` which extends `React.Component`. It has a render method that returns HTML (from JSX) or `null`. This is the basic form of a React component. Once you understand this well, you will be prepared to start building more complex React projects. +Ahora que has aprendido los conceptos básicos de JSX y componentes React, es el momento de escribir un componente por tu cuenta. Los componentes React son el bloque de construcción principal de las aplicaciones React, por lo que es importante familiarizarse con cómo escribirlos. Recuerda, un componente típico de React es una `class` ES6 que hereda de `React.Component`. Tiene un método de render que retorna HTML (de JSX) o `null`. Esta es la estructura básica de un componente React. Una vez que tengas un buen entendimiento de esto, estarás preparado para empezar a construir proyectos React más complejos. # --instructions-- -Define a class `MyComponent` that extends `React.Component`. Its render method should return a `div` that contains an `h1` tag with the text: `My First React Component!` in it. Use this text exactly, the case and punctuation matter. Make sure to call the constructor for your component, too. +Define una clase `MyComponent` que herede de `React.Component`. Su método render debe devolver un `div` que contenga una etiqueta `h1` con el texto: `My First React Component!` en él. Utiliza este texto de manera exacta, las mayúsculas, minúsculas y puntuación son importantes. También asegúrate de llamar el constructor de tu componente. -Render this component to the DOM using `ReactDOM.render()`. There is a `div` with `id='challenge-node'` available for you to use. +Renderiza este componente al DOM usando `ReactDOM.render()`. Hay un `div` con `id='challenge-node'` disponible para que lo uses. # --hints-- -There should be a React component called `MyComponent`. +Debe existir un componente React llamado `MyComponent`. ```js (getUserInput) => @@ -29,7 +29,7 @@ There should be a React component called `MyComponent`. ); ``` -`MyComponent` should contain an `h1` tag with text `My First React Component!` Case and punctuation matter. +`MyComponent` debe contener una etiqueta `h1` con texto `My First React Component!`. Las mayúsculas, minúsculas y puntuación son importantes. ```js assert( @@ -40,13 +40,13 @@ assert( ); ``` -`MyComponent` should render to the DOM. +`MyComponent` debe renderizarse al DOM. ```js assert(document.getElementById('challenge-node').childNodes.length === 1); ``` -`MyComponent` should have a constructor calling `super` with `props`. +`MyComponent` debe tener un constructor invocando `super` con las `props`. ```js assert( diff --git a/curriculum/challenges/espanol/03-front-end-libraries/react/write-a-simple-counter.md b/curriculum/challenges/espanol/03-front-end-libraries/react/write-a-simple-counter.md index 9522c78e54..b64a91232f 100644 --- a/curriculum/challenges/espanol/03-front-end-libraries/react/write-a-simple-counter.md +++ b/curriculum/challenges/espanol/03-front-end-libraries/react/write-a-simple-counter.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036177 -title: Write a Simple Counter +title: Escribe un contador simple challengeType: 6 forumTopicId: 301425 dashedName: write-a-simple-counter @@ -8,17 +8,17 @@ dashedName: write-a-simple-counter # --description-- -You can design a more complex stateful component by combining the concepts covered so far. These include initializing `state`, writing methods that set `state`, and assigning click handlers to trigger these methods. +Puedes diseñar un componente con un estado más complejo combinando los conceptos cubiertos hasta ahora. Estos incluyen inicializar el `state`, escribir métodos que establezcan `state` y asignar manejadores de eventos clic para activar estos métodos. # --instructions-- -The `Counter` component keeps track of a `count` value in `state`. There are two buttons which call methods `increment()` and `decrement()`. Write these methods so the counter value is incremented or decremented by 1 when the appropriate button is clicked. Also, create a `reset()` method so when the reset button is clicked, the count is set to 0. +El componente `Counter` mantiene un seguimiento de un valor `count` en el `state`. Hay dos botones que llaman a métodos `increment()` y `decrement()`. Escribe estos métodos para que el valor del contador sea incrementado o decrementado por 1 cuando se haga clic en el botón apropiado. También, crea un método `reset()` para que cuando se haga clic en el botón reset, el contador se establezca a 0. -**Note:** Make sure you don't modify the `className`s of the buttons. Also, remember to add the necessary bindings for the newly-created methods in the constructor. +**Nota:** Asegúrate de no modificar el `className`de los botones. Además, recuerda agregar en el constructor los enlaces necesarios para los métodos recién creados. # --hints-- -`Counter` should return a `div` element which contains three buttons with text content in this order `Increment!`, `Decrement!`, `Reset`. +`Counter` debe devolver un elemento `div` que contiene tres botones con contenido de texto en este orden `Increment!`, `Decrement!`, `Reset`. ```js assert( @@ -33,14 +33,14 @@ assert( ); ``` -The state of `Counter` should initialize with a `count` property set to `0`. +El estado de `Counter` debe inicializarse con una propiedad `count` establecida en `0`. ```js const mockedComponent = Enzyme.mount(React.createElement(Counter)); assert(mockedComponent.find('h1').text() === 'Current Count: 0'); ``` -Clicking the increment button should increment the count by `1`. +Al hacer clic en el botón de incremento se incrementará el contador en `1`. ```js const mockedComponent = Enzyme.mount(React.createElement(Counter)); @@ -48,7 +48,7 @@ mockedComponent.find('.inc').simulate('click'); assert(mockedComponent.find('h1').text() === 'Current Count: 1'); ``` -Clicking the decrement button should decrement the count by `1`. +Al hacer clic en el botón de disminuir se reducirá el contador en `1`. ```js const mockedComponent = Enzyme.mount(React.createElement(Counter)); @@ -56,7 +56,7 @@ mockedComponent.find('.dec').simulate('click'); assert(mockedComponent.find('h1').text() === 'Current Count: -1'); ``` -Clicking the reset button should reset the count to `0`. +Al hacer clic en el botón reset se reiniciará el contador a `0`. ```js const mockedComponent = Enzyme.mount(React.createElement(Counter)); diff --git a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md index c59bf29a1f..52f74fd91b 100644 --- a/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md +++ b/curriculum/challenges/italian/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md @@ -33,7 +33,7 @@ assert(result[0] == '

'); `myRegex` dovrebbe usare la corrispondenza lazy ```js -assert(/\?/g.test(myRegex)); +assert(/[^\\][\*\+\?]\?/.test(myRegex)); ``` `myRegex` non dovrebbe includere la stringa `h1` diff --git a/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/exercise-tracker.md b/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/exercise-tracker.md index 3aa838ae92..eb570f5f8b 100644 --- a/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/exercise-tracker.md +++ b/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/exercise-tracker.md @@ -11,7 +11,7 @@ dashedName: exercise-tracker Costruisci un'app JavaScript full-stack che sia funzionalmente simile a questa: . Lavorare su questo progetto ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: - Clonare [questa repository GitHub](https://github.com/freeCodeCamp/boilerplate-project-exercisetracker/) e completa il tuo progetto localmente. -- Usare [il nostro progetto di avvio Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-exercisetracker) per completare il tuo progetto. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-exercisetracker) per completare il tuo progetto. - Usare un costruttore di siti di tua scelta per completare il progetto. Assicurati di incorporare tutti i file della nostra repository GitHub. Quando hai finito, assicurati che una demo funzionante del tuo progetto sia ospitata pubblicamente da qualche parte. Quindi invia l'URL nel campo `Solution Link`. Facoltativamente, invia anche un link al codice sorgente del tuo progetto nel campo `GitHub Link`. diff --git a/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/file-metadata-microservice.md b/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/file-metadata-microservice.md index 81ce3fdbaf..84cdb0db08 100644 --- a/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/file-metadata-microservice.md +++ b/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/file-metadata-microservice.md @@ -11,7 +11,7 @@ dashedName: file-metadata-microservice Costruisci un'app JavaScript full-stack che sia funzionalmente simile a questa: . Lavorare su questo progetto ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: - Clonare [questa repository GitHub](https://github.com/freeCodeCamp/boilerplate-project-filemetadata/) e completare il tuo progetto localmente. -- Usare [il nostro progetto di avvio Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-filemetadata) per completare il tuo progetto. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-filemetadata) per completare il tuo progetto. - Usare un costruttore di siti di tua scelta per completare il progetto. Assicurati di incorporare tutti i file della nostra repository GitHub. Quando hai finito, assicurati che una demo funzionante del tuo progetto sia ospitata da qualche parte di pubblico. Quindi invia l'URL nel campo `Solution Link`. Facoltativamente, invia anche un link al codice sorgente dei tuoi progetti nel campo `GitHub Link`. diff --git a/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/request-header-parser-microservice.md b/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/request-header-parser-microservice.md index 4d815141fe..218117004e 100644 --- a/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/request-header-parser-microservice.md +++ b/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/request-header-parser-microservice.md @@ -11,7 +11,7 @@ dashedName: request-header-parser-microservice Costruisci un'app JavaScript full-stack che sia funzionalmente simile a questa: . Lavorare su questo progetto ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: - Clonare [questa repository GitHub](https://github.com/freeCodeCamp/boilerplate-project-headerparser/) e completare il tuo progetto localmente. -- Usare [il nostro progetto di avvio Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-headerparser) per completare il tuo progetto. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-headerparser) per completare il tuo progetto. - Usare un costruttore di siti di tua scelta per completare il progetto. Assicurati di incorporare tutti i file della nostra repository GitHub. Quando hai finito, assicurati che una demo funzionante del tuo progetto sia ospitata da qualche parte di pubblico. Quindi invia l'URL nel campo `Solution Link`. Facoltativamente, invia anche un link al codice sorgente del tuo progetto nel campo `GitHub Link`. diff --git a/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/timestamp-microservice.md b/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/timestamp-microservice.md index b2c7362317..5e5c4e2389 100644 --- a/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/timestamp-microservice.md +++ b/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/timestamp-microservice.md @@ -11,7 +11,7 @@ dashedName: timestamp-microservice Costruisci un'app JavaScript full-stack che sia funzionalmente simile a questa: . Lavorare su questo progetto ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: - Clonare [questa repository GitHub](https://github.com/freeCodeCamp/boilerplate-project-timestamp/) e completare il tuo progetto localmente. -- Usare [il nostro progetto di avvio Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-timestamp) per completare il tuo progetto. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-timestamp) per completare il tuo progetto. - Usare un costruttore di siti di tua scelta per completare il progetto. Assicurati di incorporare tutti i file della nostra repository GitHub. Quando hai finito, assicurati che una demo funzionante del tuo progetto sia ospitata da qualche parte di pubblico. Quindi invia l'URL nel campo `Solution Link`. Facoltativamente, invia anche un link al codice sorgente dei tuoi progetti nel campo `GitHub Link`. diff --git a/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/url-shortener-microservice.md b/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/url-shortener-microservice.md index ef902b7cfc..5b26656554 100644 --- a/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/url-shortener-microservice.md +++ b/curriculum/challenges/italian/05-apis-and-microservices/apis-and-microservices-projects/url-shortener-microservice.md @@ -11,7 +11,7 @@ dashedName: url-shortener-microservice Costruisci un'app JavaScript full-stack che sia funzionalmente simile a questa: . Lavorare su questo progetto ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: - Clonare [questa repository GitHub](https://github.com/freeCodeCamp/boilerplate-project-urlshortener/) e completare il tuo progetto localmente. -- Usare [il nostro progetto di avvio Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-urlshortener) per completare il tuo progetto. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-urlshortener) per completare il tuo progetto. - Usare un costruttore di siti di tua scelta per completare il progetto. Assicurati di incorporare tutti i file della nostra repository GitHub. Quando hai finito, assicurati che una demo funzionante del tuo progetto sia ospitata da qualche parte di pubblico. Quindi invia l'URL nel campo `Solution Link`. Facoltativamente, invia anche un link al codice sorgente dei tuoi progetti nel campo `GitHub Link`. diff --git a/curriculum/challenges/italian/05-apis-and-microservices/basic-node-and-express/meet-the-node-console.md b/curriculum/challenges/italian/05-apis-and-microservices/basic-node-and-express/meet-the-node-console.md index 2616df852d..70820646ef 100644 --- a/curriculum/challenges/italian/05-apis-and-microservices/basic-node-and-express/meet-the-node-console.md +++ b/curriculum/challenges/italian/05-apis-and-microservices/basic-node-and-express/meet-the-node-console.md @@ -11,7 +11,7 @@ dashedName: meet-the-node-console Lavorare su queste sfide ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: - Clonare [questo repository GitHub](https://github.com/freeCodeCamp/boilerplate-express/) e completare queste sfide localmente. -- Usare [il nostro progetto di avvio Replit](https://replit.com/github/freeCodeCamp/boilerplate-express) per completare queste sfide. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-express) per completare queste sfide. - Usa un costruttore di siti di tua scelta per completare il progetto. Assicurati di incorporare tutti i file della nostra repository GitHub. Quando hai finito, assicurati che una demo funzionante del tuo progetto sia ospitata da qualche parte di pubblico. Quindi invia l'URL nel campo `Solution Link`. diff --git a/curriculum/challenges/italian/05-apis-and-microservices/managing-packages-with-npm/how-to-use-package.json-the-core-of-any-node.js-project-or-npm-package.md b/curriculum/challenges/italian/05-apis-and-microservices/managing-packages-with-npm/how-to-use-package.json-the-core-of-any-node.js-project-or-npm-package.md index df825f53e1..d5dd74143b 100644 --- a/curriculum/challenges/italian/05-apis-and-microservices/managing-packages-with-npm/how-to-use-package.json-the-core-of-any-node.js-project-or-npm-package.md +++ b/curriculum/challenges/italian/05-apis-and-microservices/managing-packages-with-npm/how-to-use-package.json-the-core-of-any-node.js-project-or-npm-package.md @@ -11,7 +11,7 @@ dashedName: how-to-use-package-json-the-core-of-any-node-js-project-or-npm-packa Lavorare su queste sfide ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: - Clonare [questo repository GitHub](https://github.com/freeCodeCamp/boilerplate-npm/) e completare queste sfide localmente. -- Usare [il nostro progetto di avvio Replit](https://replit.com/github/freeCodeCamp/boilerplate-npm) per completare queste sfide. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-npm) per completare queste sfide. - Usare un costruttore di siti a tua scelta per completare il progetto. Assicurati di incorporare tutti i file dal nostro repository GitHub. Quando hai finito, assicurati che una demo funzionante del tuo progetto sia ospitata pubblicamente da qualche parte. Quindi invia l'URL nel campo `Solution Link`. Facoltativamente, invia anche un link al codice sorgente del tuo progetto nel campo `GitHub Link`. diff --git a/curriculum/challenges/italian/05-apis-and-microservices/mongodb-and-mongoose/install-and-set-up-mongoose.md b/curriculum/challenges/italian/05-apis-and-microservices/mongodb-and-mongoose/install-and-set-up-mongoose.md index 349b0837fe..ea03265b58 100644 --- a/curriculum/challenges/italian/05-apis-and-microservices/mongodb-and-mongoose/install-and-set-up-mongoose.md +++ b/curriculum/challenges/italian/05-apis-and-microservices/mongodb-and-mongoose/install-and-set-up-mongoose.md @@ -11,7 +11,7 @@ dashedName: install-and-set-up-mongoose Lavorare su queste sfide ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: - Clonare [questo repository GitHub](https://github.com/freeCodeCamp/boilerplate-mongomongoose/) e completare queste sfide localmente. -- Usare [il nostro progetto di avvio Replit](https://replit.com/github/freeCodeCamp/boilerplate-mongomongoose) per completare queste sfide. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-mongomongoose) per completare queste sfide. - Usa un costruttore di siti a tua scelta per completare il progetto. Assicurati di incorporare tutti i file dal nostro repository GitHub. Quando hai finito, assicurati che una demo funzionante del tuo progetto sia ospitata pubblicamente da qualche parte. Quindi invia l'URL nel campo `Solution Link`. diff --git a/curriculum/challenges/italian/06-quality-assurance/advanced-node-and-express/set-up-a-template-engine.md b/curriculum/challenges/italian/06-quality-assurance/advanced-node-and-express/set-up-a-template-engine.md index 0a89bd5293..b3179a5030 100644 --- a/curriculum/challenges/italian/06-quality-assurance/advanced-node-and-express/set-up-a-template-engine.md +++ b/curriculum/challenges/italian/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: Imposta un template engine 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: +Lavorare su queste sfide ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: -- 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. +- Clonare [questo repository GitHub](https://github.com/freeCodeCamp/boilerplate-advancednode/) e completare queste sfide localmente. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-advancednode) per completare queste sfide. +- Usare un costruttore di siti di tua scelta per completare il progetto. Assicurati di incorporare tutti i file della nostra repository 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 hai finito, assicurati che una demo funzionante del tuo progetto sia ospitata da qualche parte di pubblico. Quindi invia l'URL nel 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. +Un modello di motore ti permette di utilizzare file di template statici (come quelli scritti in *Pug*) nella tua app. Al runtime, il template engine sostituisce le variabili in un file modello con valori effettivi che possono essere forniti dal tuo server. Quindi trasforma il template in un file HTML statico che viene inviato al client. Questo approccio facilita la progettazione di una pagina HTML e permette di visualizzare le variabili sulla pagina senza dover effettuare una chiamata API dal client. -Add `pug@~3.0.0` as a dependency in your `package.json` file. +Aggiungi `pug@~3.0.0` come dipendenza nel tuo file `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')` +Express deve sapere quale templare engine si sta utilizzando. Utilizzeremo il metodo `set` per assegnare `pug` come valore di `view engine` della proprietà: `app.set('view engine', 'pug')` -Your page will not load until you correctly render the index file in the `views/pug` directory. +La tua pagina non verrà caricata finché non esegui correttamente il rendering del file index nella directory `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. +Modifica l’argomento della dichiarazione `res.render()` nella rotta `/` in modo che sia il percorso di file per la directory `views/pug`. Il percorso può essere un percorso relativo (relativo alle viste), o un percorso assoluto, e non richiede un'estensione del file. -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 tutto è andato come previsto, la tua home page dell'app smetterà di mostrare il messaggio "`Pug template is not defined.`" e ora mostrerà un messaggio che indica che hai reso con successo il modello 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). +Invia la tua pagina quando pensi che sia corretto. Se incontri degli errori, puoi controllare il progetto completato fino a questo punto [qui](https://gist.github.com/camperbot/3515cd676ea4dfceab4e322f59a37791). # --hints-- -Pug should be a dependency. +Pug dovrebbe essere una dipendenza. ```js (getUserInput) => @@ -51,7 +51,7 @@ Pug should be a dependency. ); ``` -View engine should be Pug. +Il motore di visualizzazione dovrebbe essere 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. +Utilizza il metodo ExpressJS corretto per visualizzare la pagina index dalla risposta. ```js (getUserInput) => @@ -87,7 +87,7 @@ Use the correct ExpressJS method to render the index page from the response. ); ``` -Pug should be working. +Pug dovrebbe funzionare. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/advanced-node-and-express/set-up-passport.md b/curriculum/challenges/italian/06-quality-assurance/advanced-node-and-express/set-up-passport.md index 9332ceba70..96530d40b0 100644 --- a/curriculum/challenges/italian/06-quality-assurance/advanced-node-and-express/set-up-passport.md +++ b/curriculum/challenges/italian/06-quality-assurance/advanced-node-and-express/set-up-passport.md @@ -111,7 +111,7 @@ La sessione e il segreto di sessione dovrebbero essere impostate correttamente. (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/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with-.deepequal-and-.notdeepequal.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with-.deepequal-and-.notdeepequal.md index 6a056eff5e..61f53ba9e4 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with-.deepequal-and-.notdeepequal.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/assert-deep-equality-with-.deepequal-and-.notdeepequal.md @@ -8,7 +8,7 @@ dashedName: assert-deep-equality-with--deepequal-and--notdeepequal # --description-- -Come promemoria, questo progetto viene costruito a partire dal seguente progetto iniziale su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). `deepEqual()` afferma che due oggetti sono uguali in maniera profonda. diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements.md index 348bc31012..c2425749fc 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/compare-the-properties-of-two-elements.md @@ -8,7 +8,7 @@ dashedName: compare-the-properties-of-two-elements # --description-- -Come promemoria, questo progetto viene costruito a partire dal seguente progetto iniziale su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). # --instructions-- diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.md index 9f855975a0..d55fde8fed 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/learn-how-javascript-assertions-work.md +++ b/curriculum/challenges/italian/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: Imparare come funzionano le asserzioni 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: +Lavorare su queste sfide ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: -- 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. +- Clonare [questo repository GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/) e completare queste sfide localmente. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai) per completare queste sfide. +- Usare un costruttore di siti a tua scelta per completare il progetto. Assicurati di incorporare tutti i file del nostro repository 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 hai finito, assicurati che una demo funzionante del tuo progetto sia ospitata in qualche percorso pubblico. Quindi invia l'URL nel 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. +All'interno di `tests/1_unit-tests.js`, sotto il test etichettato con `#1`, nella suite `Basic Assertions`, cambia ogni asserzione `assert` in `assert.isNull` o `assert.isNotNull` per far superare il test (dovrebbe risultare `true`). Non alterare gli argomenti passati alle asserzioni. # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => @@ -36,7 +36,7 @@ All tests should pass. ); ``` -You should choose the correct method for the first assertion - `isNull` vs. `isNotNull`. +Dovresti scegliere il metodo corretto per la prima asserzione - `isNull` oppure `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`. +Dovresti scegliere il metodo corretto per la seconda asserzione - `isNull` oppure `isNotNull`. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/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/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iii---put-method.md index 6315992bd3..72a60ca79b 100644 --- a/curriculum/challenges/italian/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/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-an-api-response-using-chai-http-iii---put-method.md @@ -8,7 +8,7 @@ dashedName: run-functional-tests-on-an-api-response-using-chai-http-iii---put-me # --description-- -Come promemoria, questo progetto viene costruito a partire dal seguente progetto iniziale su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). Nel prossimo esempio vedremo come inviare i dati in nel corpo di un payload di richiesta. Stiamo per testare una richiesta PUT. L'endpoint `'/travellers'` accetta un oggetto JSON che prende la struttura: diff --git a/curriculum/challenges/italian/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/italian/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..1b8ccd12b7 100644 --- a/curriculum/challenges/italian/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/italian/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: Eseguire test funzionali su una risposta API utilizzando il metodo PUT di Chai-HTTP IV 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. +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). Questo esercizio è simile a quello precedente. Guardalo per i dettagli. -Now that you have seen how it is done, it is your turn to do it from scratch. +Ora che hai visto come si fa, tocca a te farlo da zero. # --instructions-- -Within `tests/2_functional-tests.js`, alter the `'send {surname: "da Verrazzano"}'` test (`// #4`): +All'interno di `tests/2_functional-tests.js`, modifica il test `'send {surname: "da Verrazzano"}'` (`// #4`): -Send the following JSON response as a payload to the `/travellers` route: +Invia la seguente risposta JSON come carico utile sulla rotta `/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: +Controlla quanto segue, all'interno della callback `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. +Segui l'ordine di asserzione indicato sopra - facciamo affidamento su di esso. Assicurati di rimuovere `assert.fail()`, una volta finito. # --hints-- -All tests should pass +Tutti i test dovrebbero essere superati ```js (getUserInput) => @@ -49,7 +49,7 @@ All tests should pass ); ``` -You should test for 'res.status' to be 200 +Dovresti verificare che 'res.status' sia 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' +Dovresti verificare che 'res.type' sia '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' +Dovresti verificare che 'res.body.name' sia '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' +Dovresti verificare che 'res.body.surname' sia 'da Verrazzano'' ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii.md index 53d2c7459e..fd2ac33b9f 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http-ii.md +++ b/curriculum/challenges/italian/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: Eseguire test funzionali sugli endpoint API utilizzando 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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [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. +All'interno di `tests/2_functional-tests.js`, modifica il test `'Test GET /hello with your name'` (`// #2`) per asserire che le risposte `status` e `text` facciano passare i test. -Send your name in the query, appending `?name=` to the route. The endpoint responds with `'hello '`. +Invia il tuo nome nella query, aggiungendo `?name=` alla rotta. L'endpoint risponde con `'hello '`. # --hints-- -All tests should pass +Tutti i test dovrebbero essere superati ```js (getUserInput) => @@ -32,7 +32,7 @@ All tests should pass ); ``` -You should test for 'res.status' == 200 +Dovresti verificare che 'res.status' == 200 ```js (getUserInput) => @@ -48,7 +48,7 @@ You should test for 'res.status' == 200 ); ``` -You should test for 'res.text' == 'hello Guest' +Dovresti verificare che 'res.text' == 'hello Guest' ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http.md index dc99b2d46a..7119834dc3 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-on-api-endpoints-using-chai-http.md +++ b/curriculum/challenges/italian/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: Eseguire test funzionali sugli endpoint API utilizzando 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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). -Mocha allows testing asyncronous operations. There is a small (BIG) difference. Can you spot it? +Mocha consente di testare operazioni asincrone. C'è una piccola (GRANDE) differenza. Riesce a individuarla? -We can test our API endpoints using a plugin, called `chai-http`. Let's see how it works. And remember, API calls are asynchronous. +Possiamo testare i nostri endpoint API utilizzando un plugin, chiamato `chai-http`. Vediamo come funziona. E ricorda, le chiamate API sono asincrone. -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"`. +Il seguente è un esempio di test che utilizza `chai-http` per la suite `'GET /hello?name=[name] => "hello [name]"'`. Il test invia un nome in una stringa di query URL (`?name=John`) utilizzando una richiesta `GET` al `server`. Nella funzione di callback del metodo `end`, l'oggetto di risposta (`res`) viene ricevuto e contiene la proprietà `status`. Il primo `assert.equal` controlla se lo stato è pari a `200`. Il secondo `assert.equal` verifica che la stringa di risposta (`res.text`) sia uguale 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. +Nota il parametro `done` nella funzione di callback del test. Chiamarlo alla fine senza un argomento è necessario per segnalare il successo del completamento asincrono. # --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. +All'interno di `tests/2_functional-tests.js`, modifica il test `'Test GET /hello with no name'` (`// #1`) per asserire che le risposte `status` e `text` facciano passare i test. Non alterare gli argomenti passati alle asserzioni. -There should be no name in the query; the endpoint responds with `hello Guest`. +Non ci dovrebbe essere alcun nome nella query; l'endpoint risponde con `hello Guest`. # --hints-- -All tests should pass +Tutti i test dovrebbero essere superati ```js (getUserInput) => @@ -58,7 +58,7 @@ All tests should pass ); ``` -You should test for 'res.status' == 200 +Dovresti verificare che 'res.status' == 200 ```js (getUserInput) => @@ -74,7 +74,7 @@ You should test for 'res.status' == 200 ); ``` -You should test for 'res.text' == 'hello Guest' +Dovresti testare che 'res.text' == 'hello Guest' ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser-ii.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser-ii.md index a3af790a56..3128d0b18b 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser-ii.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser-ii.md @@ -8,7 +8,7 @@ dashedName: run-functional-tests-using-a-headless-browser-ii # --description-- -Come promemoria, questo progetto viene costruito a partire dal seguente progetto iniziale su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). # --instructions-- diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser.md index 3da3211b67..b1aec5f868 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/run-functional-tests-using-a-headless-browser.md @@ -1,6 +1,6 @@ --- id: 587d8250367417b2b2512c5d -title: Run Functional Tests using a Headless Browser +title: Eseguire test funzionali usando un headless browser challengeType: 2 forumTopicId: 301595 dashedName: run-functional-tests-using-a-headless-browser @@ -8,9 +8,9 @@ dashedName: run-functional-tests-using-a-headless-browser # --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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). -In the HTML main view we provided a input form. It sends data to the `PUT /travellers` endpoint that we used above with an Ajax request. When the request successfully completes, the client code appends a `
` containing the info returned by the call to the DOM. Here is an example of how to interact with this form: +Nella vista principale HTML abbiamo fornito un modulo di input. Esso invia con una richiesta Ajax i dati all'endpoint `PUT /travellers` che abbiamo usato sopra. Quando la richiesta è completata con successo, il codice client aggiunge un `
` contenente le informazioni restituite dalla chiamata al DOM. Ecco un esempio di come interagire con questo modulo: ```js test('#test - submit the input "surname" : "Polo"', function (done) { @@ -24,36 +24,36 @@ test('#test - submit the input "surname" : "Polo"', function (done) { } ``` -First, the `fill` method of the `browser` object fills the `surname` field of the form with the value `'Polo'`. Immediately after, the `pressButton` method invokes the `submit` event listener of the form. The `pressButton` method is asynchronous. +In primo luogo, il metodo `fill` dell'oggetto `browser` compila il campo `surname` del modulo con il valore `'Polo'`. Subito dopo, il metodo `pressButton` invoca l'event lister `submit` del modulo. Il metodo `pressButton` è asincrono. -Then, once a response is received from the AJAX request, a few assertions are made confirming: +Poi, una volta ricevuta una risposta dalla richiesta AJAX, vengono fatte alcune asserzioni, confermando che: -1. The status of the response is `200` -2. The text within the `` element matches `'Marco'` -3. The text within the `` element matches `'Polo'` -4. There is `1` `` element. +1. Lo stato della risposta è `200` +2. Il testo all'interno dell'elemento `` corrisponde a `'Marco'` +3. Il testo all'interno dell'elemento `` corrisponde a `'Polo'` +4. C'è `1` elemento ``. -Finally, the `done` callback is invoked, which is needed due to the asynchronous test. +Infine, viene invocata la callback `done`, che è necessaria a causa del test asincrono. # --instructions-- -Within `tests/2_functional-tests.js`, in the `'submit "surname" : "Colombo" - write your e2e test...'` test (`// #5`), automate filling-in and submitting the form: +All'interno di `tests/2_functional-tests.js`, nel test `'submit "surname" : "Colombo" - write your e2e test...'` (`// #5`), automatizza la compilazione e invia il modulo: -1. Fill in the form -2. Submit it pressing `'submit'` button. +1. Compila il modulo +2. Invia premendo il pulsante `'submit'`. -Within the callback: +All'interno della callback: -1. assert that status is OK `200` -2. assert that the text inside the element `span#name` is `'Cristoforo'` -3. assert that the text inside the element `span#surname` is `'Colombo'` -4. assert that the element(s) `span#dates` exist and their count is `1` +1. asserisci che lo stato è OK `200` +2. asserisci che il testo all'interno dell'elemento `span#name` è `'Cristoforo'` +3. asserisci che il testo all'interno dell'elemento `span#surname` è `'Colombo'` +4. asserisci che gli elementi `span#dates` esistono e il loro conteggio è `1` -Do not forget to remove the `assert.fail()` call. +Non dimenticare di rimuovere la chiamata `assert.fail()`. # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => @@ -67,7 +67,7 @@ All tests should pass. ); ``` -You should assert that the headless browser request succeeded. +Dovresti asserire che la richiesta dell'headless browser sia riuscita. ```js (getUserInput) => @@ -81,7 +81,7 @@ You should assert that the headless browser request succeeded. ); ``` -You should assert that the text inside the element 'span#name' is 'Cristoforo'. +Dovresti asserire che il testo all'interno dell'elemento 'span#name' sia 'Cristoforo'. ```js (getUserInput) => @@ -97,7 +97,7 @@ You should assert that the text inside the element 'span#name' is 'Cristoforo'. ); ``` -You should assert that the text inside the element 'span#surname' is 'Colombo'. +Dovresti asserire che il testo all'interno dell'elemento 'span#surname' sia 'Colombo'. ```js (getUserInput) => @@ -113,7 +113,7 @@ You should assert that the text inside the element 'span#surname' is 'Colombo'. ); ``` -You should assert that the element 'span#dates' exist and its count is 1. +Dovresti asserire che l'elemento 'span#dates' esiste e il suo conteggio sia 1. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/simulate-actions-using-a-headless-browser.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/simulate-actions-using-a-headless-browser.md index 7bf0765de5..f631548307 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/simulate-actions-using-a-headless-browser.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/simulate-actions-using-a-headless-browser.md @@ -1,45 +1,45 @@ --- id: 587d824f367417b2b2512c5c -title: Simulate Actions Using a Headless Browser +title: Simulare azioni usando un headless browser challengeType: 2 dashedName: simulate-actions-using-a-headless-browser --- # --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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). -In the next challenges we are going to simulate the human interaction with a page using a device called 'Headless Browser'. +Nelle prossime sfide simuleremo l'interazione umana con una pagina utilizzando un dispositivo chiamato 'Headless Browser' (browser senza testa). -A headless browser is a web browser without a graphical user interface. This kind of tool is particularly useful for testing web pages, as it is able to render and understand HTML, CSS, and JavaScript the same way a browser would. +Un headless browser è un browser web senza interfaccia utente grafica. Questo tipo di strumento è particolarmente utile per testare le pagine web, poiché è in grado di renderizzare e capire HTML, CSS, e JavaScript proprio come farebbe un browser. -For these challenges we are using Zombie.JS. It's a lightweight browser which is totally based on JS, without relying on additional binaries to be installed. This feature makes it usable in an environment such as Replit. There are many other (more powerful) options. +Per queste sfide stiamo usando Zombie.JS. È un browser leggero che è totalmente basato su JS, che non richiede binari aggiuntivi da installare. Questa funzione lo rende utilizzabile in un ambiente come Replit. Ci sono molte altre opzioni (più potenti). -Mocha allows you to prepare the ground running some code before the actual tests. This can be useful for example to create items in the database, which will be used in the successive tests. +Mocha ti consente di preparare il terreno eseguendo del codice prima dei test effettivi. Questo può essere utile, ad esempio, per creare elementi nel database, che saranno utilizzati nei test successivi. -With a headless browser, before the actual testing, we need to **visit** the page we are going to inspect. The `suiteSetup` 'hook' is executed only once at the suite startup. Other different hook types can be executed before each test, after each test, or at the end of a suite. See the Mocha docs for more information. +Con un headless browser, prima del test effettivo, abbiamo bisogno di **visitare** la pagina che stiamo per controllare. L'hook' `suiteSetup` viene eseguito solo una volta all'avvio della suite. Altri tipi di hook possono essere esuiti prima di ogni test, dopo ogni test, o alla fine della suite. Vedi la documentazione di Mocha per maggiori informazioni. # --instructions-- -Within `tests/2_functional-tests.js`, immediately after the `Browser` declaration, add your project URL to the `site` property of the variable: +All'interno di `tests/2_functional-tests.js`, immediatamente dopo la dichiarazione `Browser`, aggiungi l'URL del tuo progetto alla proprietà `site` della variabile: ```js Browser.site = 'https://sincere-cone.gomix.me'; // Your URL here ``` -If you are testing on a local environment replace the line above with +Se stai testando su un ambiente locale, sostituisci la riga precedente con ```js Browser.localhost('example.com', process.env.PORT || 3000); ``` -Within `tests/2_functional-tests.js`, at the root level of the `'Functional Tests with Zombie.js'` suite, instantiate a new instance of the `Browser` object with the following code: +All'interno di `tests/2_functional-tests.js`, al livello root della suite `'Functional Tests with Zombie.js'`, crea una nuova istanza dell'oggetto `Browser` con il seguente codice: ```js const browser = new Browser(); ``` -Then, use the `suiteSetup` hook to direct the `browser` to the `/` route with the following code: +Quindi, utilizza l'hook `suiteSetup` per indirizzare il `browser` al percorso `/` con il seguente codice: ```js suiteSetup(function(done) { @@ -49,7 +49,7 @@ suiteSetup(function(done) { # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness.md index a12fe6397b..d8318b6d61 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-for-truthiness.md @@ -1,6 +1,6 @@ --- id: 587d824b367417b2b2512c49 -title: Test for Truthiness +title: Testare la veridicità challengeType: 2 forumTopicId: 301596 dashedName: test-for-truthiness @@ -8,9 +8,9 @@ dashedName: test-for-truthiness # --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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). -`isTrue()` will test for the boolean value `true` and `isNotTrue()` will pass when given anything but the boolean value of `true`. +`isTrue()` testa per il valore boleano `true` e `isNotTrue()` passa per qualsiasi cosa che non sia il valore booleano `true`. ```js assert.isTrue(true, 'this will pass with the boolean value true'); @@ -18,15 +18,15 @@ assert.isTrue('true', 'this will NOT pass with the string value "true"'); assert.isTrue(1, 'this will NOT pass with the number value 1'); ``` -`isFalse()` and `isNotFalse()` also exist, and behave similarly to their true counterparts except they look for the boolean value of `false`. +Esistono anche `isFalse()` e `isNotFalse()`, si comportano in maniera simile alle loro controparti con true tranne per il fatto che testano per il valore booleano `false`. # --instructions-- -Within `tests/1_unit-tests.js` under the test labelled `#4` in the `Basic Assertions` suite, change each `assert` to either `assert.isTrue` or `assert.isNotTrue` to make the test pass (should evaluate to `true`). Do not alter the arguments passed to the asserts. +All'interno di `tests/1_unit-tests.js` sotto il test etichettato con `#4` nella suite `Basic Assertions`, cambia ogni `assert` con `assert.isTrue` oppure `assert.isNotTrue` per fare passare il test (dovrebbe essere uguale a `true`). Non cambiare gli argomenti passati alle asserzioni. # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => @@ -40,7 +40,7 @@ All tests should pass. ); ``` -You should choose the correct method for the first assertion - `isTrue` vs. `isNotTrue`. +Dovresti scegliere il metodo corretto per la prima asserzione - `isTrue` oppure `isNotTrue`. ```js (getUserInput) => @@ -54,7 +54,7 @@ You should choose the correct method for the first assertion - `isTrue` vs. `isN ); ``` -You should choose the correct method for the second assertion - `isTrue` vs. `isNotTrue`. +Dovresti scegliere il metodo corretto per la seconda asserzione - `isTrue` oppure `isNotTrue`. ```js (getUserInput) => @@ -72,7 +72,7 @@ You should choose the correct method for the second assertion - `isTrue` vs. `is ); ``` -You should choose the correct method for the third assertion - `isTrue` vs. `isNotTrue`. +Dovresti scegliere il metodo corretto per la terza asserzione - `isTrue` oppure `isNotTrue`. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring.md index 60bf0f0bd1..22c5b4da2d 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-string-contains-a-substring.md @@ -1,6 +1,6 @@ --- id: 587d824d367417b2b2512c53 -title: Test if a String Contains a Substring +title: Verificare se una stringa contiene una sottostringa challengeType: 2 forumTopicId: 301597 dashedName: test-if-a-string-contains-a-substring @@ -8,17 +8,17 @@ dashedName: test-if-a-string-contains-a-substring # --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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). -`include()` and `notInclude()` work for strings too! `include()` asserts that the actual string contains the expected substring. +`include()` e `notInclude()` funzionano anche per le stringhe! `include()` afferma che la stringa attuale contiene la sottostringa prevista. # --instructions-- -Within `tests/1_unit-tests.js` under the test labelled `#14` in the `Strings` suite, change each `assert` to either `assert.include` or `assert.notInclude` to make the test pass (should evaluate to `true`). Do not alter the arguments passed to the asserts. +All'interno di `tests/1_unit-tests.js`, sotto il test etichettato con `#14`, nella suite `Strings`, cambia ogni asserzione `assert` in `assert.include` o `assert.notInclude` per far passare il test (dovrebbe risultare `true`). Non alterare gli argomenti passati alle asserzioni. # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => @@ -32,7 +32,7 @@ All tests should pass. ); ``` -You should choose the correct method for the first assertion - `include` vs. `notInclude`. +Dovresti scegliere il metodo corretto per la prima asserzione - `include` oppure `notInclude`. ```js (getUserInput) => @@ -50,7 +50,7 @@ You should choose the correct method for the first assertion - `include` vs. `no ); ``` -You should choose the correct method for the second assertion - `include` vs. `notInclude`. +Dovresti scegliere il metodo corretto per la seconda asserzione - `include` oppure `notInclude`. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range.md index 7cddc15804..f2c7ff51c3 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-falls-within-a-specific-range.md @@ -1,6 +1,6 @@ --- id: 587d824c367417b2b2512c4f -title: Test if a Value Falls within a Specific Range +title: Verificare se un valore cade all'interno di uno specifico intervallo challengeType: 2 forumTopicId: 301598 dashedName: test-if-a-value-falls-within-a-specific-range @@ -8,23 +8,23 @@ dashedName: test-if-a-value-falls-within-a-specific-range # --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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). ```javascript .approximately(actual, expected, delta, [message]) ``` -Asserts that the `actual` is equal to `expected`, to within a +/- `delta` range. +Asserisce che `actual` sia uguale a `expected`, all'interno di un intervallo di +/- `delta`. # --instructions-- -Within `tests/1_unit-tests.js` under the test labelled `#10` in the `Comparisons` suite, change each `assert` to `assert.approximately` to make the test pass (should evaluate to `true`). +All'interno di `tests/1_unit-tests.js`, sotto il test etichettato con `#10`, nella suite `Comparisons`, cambia ogni asserzione `assert` in `assert.approximately` per far passare il test (dovrebbe risultare `true`). -Choose the minimum range (3rd parameter) to make the test always pass. It should be less than 1. +Scegli l'intervallo minimo (terzo parametro) per far passare sempre il test. Dovrebbe essere inferiore a 1. # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => @@ -38,7 +38,7 @@ All tests should pass. ); ``` -You should choose the correct range for the first assertion - `approximately(actual, expected, range)`. +Dovresti scegliere l'intervallo corretto per la prima asserzione - `approximately(actual, expected, range)`. ```js (getUserInput) => @@ -57,7 +57,7 @@ You should choose the correct range for the first assertion - `approximately(act ); ``` -You should choose the correct range for the second assertion - `approximately(actual, expected, range)`. +Dovresti scegliere l'intervallo corretto per la seconda asserzione - `approximately(actual, expected, range)`. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string.md index 9fa5b147ec..a234e97de5 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-a-string.md @@ -1,6 +1,6 @@ --- id: 587d824d367417b2b2512c52 -title: Test if a Value is a String +title: Verificare se un valore è una stringa challengeType: 2 forumTopicId: 301599 dashedName: test-if-a-value-is-a-string @@ -8,17 +8,17 @@ dashedName: test-if-a-value-is-a-string # --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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). -`isString` or `isNotString` asserts that the actual value is a string. +`isString` or `isNotString` asserisce che il valore effettivo è una stringa. # --instructions-- -Within `tests/1_unit-tests.js` under the test labelled `#13` in the `Strings` suite, change each `assert` to either `assert.isString` or `assert.isNotString` to make the test pass (should evaluate to `true`). Do not alter the arguments passed to the asserts. +All'interno di `tests/1_unit-tests.js`, sotto il test etichettato con `#13`, nella suite `Strings`, cambia ogni asserzione `assert` in `assert.isString` o `assert.isNotString` per far passare il test (dovrebbe risultare `true`). Non alterare gli argomenti passati alle asserzioni. # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => @@ -32,7 +32,7 @@ All tests should pass. ); ``` -You should choose the correct method for the first assertion - `isString` vs. `isNotString`. +Dovresti scegliere il metodo corretto per la prima asserzione - `isString` oppure `isNotString`. ```js (getUserInput) => @@ -50,7 +50,7 @@ You should choose the correct method for the first assertion - `isString` vs. `i ); ``` -You should choose the correct method for the second assertion - `isString` vs. `isNotString`. +Dovresti scegliere il metodo corretto per la seconda asserzione - `isString` oppure `isNotString`. ```js (getUserInput) => @@ -68,7 +68,7 @@ You should choose the correct method for the second assertion - `isString` vs. ` ); ``` -You should choose the correct method for the third assertion - `isString` vs. `isNotString`. +Dovresti scegliere il metodo corretto per la terza asserzione - `isString` oppure `isNotString`. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array.md index 8e4fd0cce5..6361b08bcb 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-an-array.md @@ -8,7 +8,7 @@ dashedName: test-if-a-value-is-an-array # --description-- -Come promemoria, questo progetto viene a partire dal seguente progetto iniziale su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). # --instructions-- diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type.md index 55b278c0df..17444688f1 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-value-is-of-a-specific-data-structure-type.md @@ -1,6 +1,6 @@ --- id: 587d824e367417b2b2512c56 -title: Test if a Value is of a Specific Data Structure Type +title: Verificare se un valore è di un tipo specifico di struttura dei dati challengeType: 2 forumTopicId: 301601 dashedName: test-if-a-value-is-of-a-specific-data-structure-type @@ -8,17 +8,17 @@ dashedName: test-if-a-value-is-of-a-specific-data-structure-type # --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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). -`#typeOf` asserts that value's type is the given string, as determined by `Object.prototype.toString`. +`#typeOf` asserisce che il tipo del valore è la stringa data, come determinato da `Object.prototype.toString`. # --instructions-- -Within `tests/1_unit-tests.js` under the test labelled `#17` in the `Objects` suite, change each `assert` to either `assert.typeOf` or `assert.notTypeOf` to make the test pass (should evaluate to `true`). Do not alter the arguments passed to the asserts. +All'interno di `tests/1_unit-tests.js`, sotto il test etichettato con `#17`, nella suite `Objects`, cambia ogni asserzione `assert` in `assert.typeOf` o `assert.notTypeOf` per far passare il test (dovrebbe risultare `true`). Non alterare gli argomenti passati alle asserzioni. # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => @@ -32,7 +32,7 @@ All tests should pass. ); ``` -You should choose the correct method for the first assertion - `typeOf` vs. `notTypeOf`. +Dovresti scegliere il metodo corretto per la prima asserzione - `typeOf` oppure `notTypeOf`. ```js (getUserInput) => @@ -50,7 +50,7 @@ You should choose the correct method for the first assertion - `typeOf` vs. `not ); ``` -You should choose the correct method for the second assertion - `typeOf` vs. `notTypeOf`. +Dovresti scegliere il metodo corretto per la seconda asserzione - `typeOf` oppure `notTypeOf`. ```js (getUserInput) => @@ -68,7 +68,7 @@ You should choose the correct method for the second assertion - `typeOf` vs. `no ); ``` -You should choose the correct method for the third assertion - `typeOf` vs. `notTypeOf`. +Dovresti scegliere il metodo corretto per la terza asserzione - `typeOf` oppure `notTypeOf`. ```js (getUserInput) => @@ -86,7 +86,7 @@ You should choose the correct method for the third assertion - `typeOf` vs. `not ); ``` -You should choose the correct method for the fourth assertion - `typeOf` vs. `notTypeOf`. +Dovresti scegliere il metodo corretto per la quarta asserzione - `typeOf` oppure `notTypeOf`. ```js (getUserInput) => @@ -104,7 +104,7 @@ You should choose the correct method for the fourth assertion - `typeOf` vs. `no ); ``` -You should choose the correct method for the fifth assertion - `typeOf` vs. `notTypeOf`. +Dovresti scegliere il metodo corretto per la quinta asserzione - `typeOf` oppure `notTypeOf`. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined.md index 426165f522..6c49775c7d 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-a-variable-or-function-is-defined.md @@ -1,6 +1,6 @@ --- id: 587d824b367417b2b2512c47 -title: Test if a Variable or Function is Defined +title: Verificare se una variabile o una funzione è definita challengeType: 2 forumTopicId: 301602 dashedName: test-if-a-variable-or-function-is-defined @@ -8,15 +8,15 @@ dashedName: test-if-a-variable-or-function-is-defined # --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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). # --instructions-- -Within `tests/1_unit-tests.js` under the test labelled `#2` in the `Basic Assertions` suite, change each `assert` to either `assert.isDefined()` or `assert.isUndefined()` to make the test pass (should evaluate to `true`). Do not alter the arguments passed to the asserts. +All'interno di `tests/1_unit-tests.js`, sotto il test etichettato con `#2`, nella suite `Basic Assertions`, cambia ogni asserzione `assert` in `assert.isDefined()` o `assert.isUndefined()` per far passare il test (dovrebbe risultare `true`). Non alterare gli argomenti passati alle asserzioni. # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => @@ -30,7 +30,7 @@ All tests should pass. ); ``` -You should choose the correct method for the first assertion - `isDefined` vs. `isUndefined`. +Dovresti scegliere il metodo corretto per la prima asserzione - `isDefined` oppure `isUndefined`. ```js (getUserInput) => @@ -48,7 +48,7 @@ You should choose the correct method for the first assertion - `isDefined` vs. ` ); ``` -You should choose the correct method for the second assertion - `isDefined` vs. `isUndefined`. +Dovresti scegliere il metodo corretto per la seconda asserzione - `isDefined` oppure `isUndefined`. ```js (getUserInput) => @@ -66,7 +66,7 @@ You should choose the correct method for the second assertion - `isDefined` vs. ); ``` -You should choose the correct method for the third assertion - `isDefined` vs. `isUndefined`. +Dovresti scegliere il metodo corretto per la terza asserzione - `isDefined` oppure `isUndefined`. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item.md index 0938de8bfc..11c1a135c3 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-array-contains-an-item.md @@ -1,6 +1,6 @@ --- id: 587d824d367417b2b2512c51 -title: Test if an Array Contains an Item +title: Verificare se un array contiene un elemento challengeType: 2 forumTopicId: 301603 dashedName: test-if-an-array-contains-an-item @@ -8,15 +8,15 @@ dashedName: test-if-an-array-contains-an-item # --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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). # --instructions-- -Within `tests/1_unit-tests.js` under the test labelled `#12` in the `Arrays` suite, change each `assert` to either `assert.include` or `assert.notInclude` to make the test pass (should evaluate to `true`). Do not alter the arguments passed to the asserts. +All'interno di `tests/1_unit-tests.js`, sotto il test etichettato con `#12`, nella suite `Arrays`, cambia ogni asserzione `assert` in `assert.include` o `assert.notInclude` per far passare il test (dovrebbe risultare `true`). Non alterare gli argomenti passati alle asserzioni. # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => @@ -30,7 +30,7 @@ All tests should pass. ); ``` -You should choose the correct method for the first assertion - `include` vs. `notInclude`. +Dovresti scegliere il metodo corretto per la prima asserzione - `include` oppure `notInclude`. ```js (getUserInput) => @@ -48,7 +48,7 @@ You should choose the correct method for the first assertion - `include` vs. `no ); ``` -You should choose the correct method for the second assertion - `include` vs. `notInclude`. +Dovresti scegliere il metodo corretto per la seconda asserzione - `include` oppure `notInclude`. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property.md index 0a2abcc563..47b161d239 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-has-a-property.md @@ -8,7 +8,7 @@ dashedName: test-if-an-object-has-a-property # --description-- -Come promemoria, questo progetto viene costruito a partire dal seguente progetto iniziale su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). `property` asserisce che l'oggetto effettivo ha una data proprietà. diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor.md index 81f671169a..7463740c87 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-an-object-is-an-instance-of-a-constructor.md @@ -8,7 +8,7 @@ dashedName: test-if-an-object-is-an-instance-of-a-constructor # --description-- -Come promemoria, questo progetto viene costruito a partire dal seguente progetto iniziale su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). `#instanceOf` afferma che un oggetto è un'istanza di un costruttore. diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-one-value-is-below-or-at-least-as-large-as-another.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-one-value-is-below-or-at-least-as-large-as-another.md index 66f6d98b9d..fb505ca0d4 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-one-value-is-below-or-at-least-as-large-as-another.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/test-if-one-value-is-below-or-at-least-as-large-as-another.md @@ -1,6 +1,6 @@ --- id: 587d824c367417b2b2512c4e -title: Test if One Value is Below or At Least as Large as Another +title: Verificare se un valore è minore o uguale a un altro challengeType: 2 forumTopicId: 301606 dashedName: test-if-one-value-is-below-or-at-least-as-large-as-another @@ -8,15 +8,15 @@ dashedName: test-if-one-value-is-below-or-at-least-as-large-as-another # --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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). # --instructions-- -Within `tests/1_unit-tests.js` under the test labelled `#9` in the `Comparisons` suite, change each `assert` to either `assert.isBelow` or `assert.isAtLeast` to make the test pass (should evaluate to `true`). Do not alter the arguments passed to the asserts. +All'interno di `tests/1_unit-tests.js`, sotto il test etichettato con `#9`, nella suite `Comparisons`, cambia ogni asserzione `assert` in `assert.isBelow` o `assert.isAtLeast` per far passare il test (dovrebbe risultare `true`). Non alterare gli argomenti passati alle asserzioni. # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => @@ -30,7 +30,7 @@ All tests should pass. ); ``` -You should choose the correct method for the first assertion - `isBelow` vs. `isAtLeast`. +Dovresti scegliere il metodo corretto per la prima asserzione - `isBelow` vs. `isAtLeast`. ```js (getUserInput) => @@ -48,7 +48,7 @@ You should choose the correct method for the first assertion - `isBelow` vs. `is ); ``` -You should choose the correct method for the second assertion - `isBelow` vs. `isAtLeast`. +Dovresti scegliere il metodo corretto per la seconda asserzione - `isBelow` vs. `isAtLeast`. ```js (getUserInput) => @@ -66,7 +66,7 @@ You should choose the correct method for the second assertion - `isBelow` vs. `i ); ``` -You should choose the correct method for the third assertion - `isBelow` vs. `isAtLeast`. +Dovresti scegliere il metodo corretto per la terza asserzione - `isBelow` vs. `isAtLeast`. ```js (getUserInput) => @@ -80,7 +80,7 @@ You should choose the correct method for the third assertion - `isBelow` vs. `is ); ``` -You should choose the correct method for the fourth assertion - `isBelow` vs. `isAtLeast`. +Dovresti scegliere il metodo corretto per la quarta asserzione - `isBelow` vs. `isAtLeast`. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.md index a16412d8ba..0fcf52d22a 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-assert.isok-and-assert.isnotok.md @@ -8,7 +8,7 @@ dashedName: use-assert-isok-and-assert-isnotok # --description-- -Come promemoria, questo progetto viene costruito a partire dal seguente progetto iniziale su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). `isOk()` verificherà se un valore è veritiero e `isNotOk()` verificherà se un valore è falso. diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string.md index c2e2a2c495..d7f49e0ba4 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-regular-expressions-to-test-a-string.md @@ -8,7 +8,7 @@ dashedName: use-regular-expressions-to-test-a-string # --description-- -Come promemoria, questo progetto viene costruito a partire dal seguente progetto iniziale su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). `match()` afferma che il valore effettivo corrisponde al secondo argomento espressione regolare. diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality.md index 2878f794bd..315c0b9736 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-double-equals-to-assert-equality.md @@ -1,6 +1,6 @@ --- id: 587d824b367417b2b2512c4a -title: Use the Double Equals to Assert Equality +title: Usare il doppio uguale per affermare l'uguaglianza challengeType: 2 forumTopicId: 301609 dashedName: use-the-double-equals-to-assert-equality @@ -8,17 +8,17 @@ dashedName: use-the-double-equals-to-assert-equality # --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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). -`equal()` compares objects using `==`. +`equal()` confronta oggetti usando `==`. # --instructions-- -Within `tests/1_unit-tests.js` under the test labelled `#5` in the `Equality` suite, change each `assert` to either `assert.equal` or `assert.notEqual` to make the test pass (should evaluate to `true`). Do not alter the arguments passed to the asserts. +All'interno di `tests/1_unit-tests.js`, sotto il test etichettato con `#5`, nella suite `Equality`, cambia ogni asserzione `assert` in `assert.equal` o `assert.notEqual` per far passare il test (dovrebbe risultare `true`). Non alterare gli argomenti passati alle asserzioni. # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => @@ -32,7 +32,7 @@ All tests should pass. ); ``` -You should choose the correct method for the first assertion - `equal` vs. `notEqual`. +Dovresti scegliere il metodo corretto per la prima asserzione - `equal` oppure `notEqual`. ```js (getUserInput) => @@ -50,7 +50,7 @@ You should choose the correct method for the first assertion - `equal` vs. `notE ); ``` -You should choose the correct method for the second assertion - `equal` vs. `notEqual`. +Dovresti scegliere il metodo corretto per la seconda asserzione - `equal` oppure `notEqual`. ```js (getUserInput) => @@ -68,7 +68,7 @@ You should choose the correct method for the second assertion - `equal` vs. `not ); ``` -You should choose the correct method for the third assertion - `equal` vs. `notEqual`. +Dovresti scegliere il metodo corretto per la terza asserzione - `equal` oppure `notEqual`. ```js (getUserInput) => @@ -86,7 +86,7 @@ You should choose the correct method for the third assertion - `equal` vs. `notE ); ``` -You should choose the correct method for the fourth assertion - `equal` vs. `notEqual`. +Dovresti scegliere il metodo corretto per la quarta asserzione - `equal` oppure `notEqual`. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality.md index b8e6aeedd2..7e9975a38a 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-and-testing-with-chai/use-the-triple-equals-to-assert-strict-equality.md @@ -1,6 +1,6 @@ --- id: 587d824b367417b2b2512c4b -title: Use the Triple Equals to Assert Strict Equality +title: Usare il triplo uguale per affermare l'uguaglianza stretta challengeType: 2 forumTopicId: 301610 dashedName: use-the-triple-equals-to-assert-strict-equality @@ -8,17 +8,17 @@ dashedName: use-the-triple-equals-to-assert-strict-equality # --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/). +Come promemoria, questo progetto verrà costruito a partire dalla seguente bozza su [Replit](https://replit.com/github/freeCodeCamp/boilerplate-mochachai), o clonato da [GitHub](https://github.com/freeCodeCamp/boilerplate-mochachai/). -`strictEqual()` compares objects using `===`. +`strictEqual()` confronta oggetti usando `===`. # --instructions-- -Within `tests/1_unit-tests.js` under the test labelled `#6` in the `Equality` suite, change each `assert` to either `assert.strictEqual` or `assert.notStrictEqual` to make the test pass (should evaluate to `true`). Do not alter the arguments passed to the asserts. +All'interno di `tests/1_unit-tests.js`, sotto il test etichettato con `#6`, nella suite `Equality`, cambia ogni asserzione `assert` in `assert.strictEqual` o `assert.notStrictEqual` per far passare il test (dovrebbe risultare `true`). Non alterare gli argomenti passati alle asserzioni. # --hints-- -All tests should pass. +Tutti i test dovrebbero essere superati. ```js (getUserInput) => @@ -32,7 +32,7 @@ All tests should pass. ); ``` -You should choose the correct method for the first assertion - `strictEqual` vs. `notStrictEqual`. +Dovresti scegliere il metodo corretto per la prima asserzione - `strictEqual` oppure `notStrictEqual`. ```js (getUserInput) => @@ -50,7 +50,7 @@ You should choose the correct method for the first assertion - `strictEqual` vs. ); ``` -You should choose the correct method for the second assertion - `strictEqual` vs. `notStrictEqual`. +Dovresti scegliere il metodo corretto per la seconda asserzione - `strictEqual` oppure `notStrictEqual`. ```js (getUserInput) => @@ -64,7 +64,7 @@ You should choose the correct method for the second assertion - `strictEqual` vs ); ``` -You should choose the correct method for the third assertion - `strictEqual` vs. `notStrictEqual`. +Dovresti scegliere il metodo corretto per la terza asserzione - `strictEqual` oppure `notStrictEqual`. ```js (getUserInput) => @@ -82,7 +82,7 @@ You should choose the correct method for the third assertion - `strictEqual` vs. ); ``` -You should choose the correct method for the fourth assertion - `strictEqual` vs. `notStrictEqual`. +Dovresti scegliere il metodo corretto per la quarta asserzione - `strictEqual` oppure `notStrictEqual`. ```js (getUserInput) => diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/american-british-translator.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/american-british-translator.md index 912421cb1d..32eb737e2d 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/american-british-translator.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/american-british-translator.md @@ -11,7 +11,7 @@ dashedName: american-british-translator Costruisci un'app JavaScript full-stack che sia funzionalmente simile a questa: . Lavorare su questo progetto ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: - Clonare [questo repository GitHub](https://github.com/freeCodeCamp/boilerplate-project-american-british-english-translator/) e completare il tuo progetto localmente. -- Usare [il nostro progetto di avvio Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-american-british-english-translator) per completare il tuo progetto. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-american-british-english-translator) per completare il tuo progetto. - Usare un costruttore di siti a tua scelta per completare il progetto. Assicurati di incorporare tutti i file del nostro repository GitHub. 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`. diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/issue-tracker.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/issue-tracker.md index a2fce8e7c3..87d7d1e5f3 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/issue-tracker.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/issue-tracker.md @@ -1,6 +1,6 @@ --- id: 587d8249367417b2b2512c42 -title: Issue Tracker +title: Tracciatore di problemi challengeType: 4 forumTopicId: 301569 dashedName: issue-tracker @@ -8,42 +8,42 @@ dashedName: issue-tracker # --description-- -Build a full stack JavaScript app that is functionally similar to this: . Working on this project will involve you writing your code using one of the following methods: +Costruisci un'app JavaScript full-stack che sia funzionalmente simile a questa: . Lavorare su questo progetto ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: -- Clone [this GitHub repo](https://github.com/freeCodeCamp/boilerplate-project-issuetracker/) and complete your project locally. -- Use [this Replit starter project](https://replit.com/github/freeCodeCamp/boilerplate-project-issuetracker) to complete your project. -- Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo. +- Clonare [questo repository GitHub](https://github.com/freeCodeCamp/boilerplate-project-issuetracker/) e completare il tuo progetto localmente. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-issuetracker) per completare il tuo progetto. +- Usare un costruttore di siti a tua scelta per completare il progetto. Assicurati di incorporare tutti i file del nostro repository 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. 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`. # --instructions-- -- Complete the necessary routes in `/routes/api.js` -- Create all of the functional tests in `tests/2_functional-tests.js` -- Copy the `sample.env` file to `.env` and set the variables appropriately -- To run the tests uncomment `NODE_ENV=test` in your `.env` file -- To run the tests in the console, use the command `npm run test`. To open the Replit console, press Ctrl+Shift+P (Cmd if on a Mac) and type "open shell" +- Completa le rotte necessarie in `/routes/api.js` +- Crea tutti i test funzionali in `tests/2_functional-tests.js` +- Copia il file `sample.env` su `.env` e imposta le variabili in modo appropriato +- Per eseguire i test togli i commenti dalla riga `NODE_ENV=test` nel tuo file `.env` +- Per eseguire i test nella console, utilizza il comando `npm run test`. Per aprire la console di Replit, premi Ctrl+Maiusc+P (Cmd se su un Mac) e digita "open shell" -Write the following tests in `tests/2_functional-tests.js`: +Scrivi i seguenti test in `tests/2_functional-tests.js`: -- Create an issue with every field: POST request to `/api/issues/{project}` -- Create an issue with only required fields: POST request to `/api/issues/{project}` -- Create an issue with missing required fields: POST request to `/api/issues/{project}` -- View issues on a project: GET request to `/api/issues/{project}` -- View issues on a project with one filter: GET request to `/api/issues/{project}` -- View issues on a project with multiple filters: GET request to `/api/issues/{project}` -- Update one field on an issue: PUT request to `/api/issues/{project}` -- Update multiple fields on an issue: PUT request to `/api/issues/{project}` -- Update an issue with missing `_id`: PUT request to `/api/issues/{project}` -- Update an issue with no fields to update: PUT request to `/api/issues/{project}` -- Update an issue with an invalid `_id`: PUT request to `/api/issues/{project}` -- Delete an issue: DELETE request to `/api/issues/{project}` -- Delete an issue with an invalid `_id`: DELETE request to `/api/issues/{project}` -- Delete an issue with missing `_id`: DELETE request to `/api/issues/{project}` +- Crea un'issue con ogni campo: richiesta POST a `/api/issues/{project}` +- Crea un'issue con soli campi obbligatori: richiesta POST a `/api/issues/{project}` +- Crea un'issue con i campi obbligatori mancanti: richiesta POST a `/api/issues/{project}` +- Visualizza i gli issue di un progetto: richiesta GET a `/api/issues/{project}` +- Visualizza gli issue di un progetto con un filtro: richiesta GET a `/api/issues/{project}` +- Visualizza gli issue di un progetto con più filtri: richiesta GET a `/api/issues/{project}` +- Aggiorna un campo in un issue: richiesta PUT a `/api/issues/{project}` +- Aggiorna più campi in un issue: richiesta PUT a `/api/issues/{project}` +- Aggiorna un issue con `_id` mancante: richiesta PUT a `/api/issues/{project}` +- Aggiorna un issue che non ha campi da aggiornare: richiesta PUT a `/api/issues/{project}` +- Aggiorna un issue con `_id` invalido: richiesta PUT a `/api/issues/{project}` +- Elimina un issue: richiesta DELETE a `/api/issues/{project}` +- Elimina un issue con `_id` invalido: richiesta DELETE a `/api/issues/{project}` +- Elimina un issue con `_id` mancante: richiesta DELETE a `/api/issues/{project}` # --hints-- -You can provide your own project, not the example URL. +È necessario fornire il proprio progetto, non l'URL di esempio. ```js (getUserInput) => { @@ -51,7 +51,7 @@ You can provide your own project, not the example URL. }; ``` -You can send a `POST` request to `/api/issues/{projectname}` with form data containing the required fields `issue_title`, `issue_text`, `created_by`, and optionally `assigned_to` and `status_text`. +Puoi inviare una richiesta `POST` a `/api/issues/{projectname}` con i dati del modulo contenenti i campi obbligatori `issue_title`, `issue_text`, `created_by`, e opzionalmente `assigned_to` e `status_text`. ```js async (getUserInput) => { @@ -73,7 +73,7 @@ async (getUserInput) => { }; ``` -The `POST` request to `/api/issues/{projectname}` will return the created object, and must include all of the submitted fields. Excluded optional fields will be returned as empty strings. Additionally, include `created_on` (date/time), `updated_on` (date/time), `open` (boolean, `true` for open - default value, `false` for closed), and `_id`. +La richiesta `POST` a `/api/issues/{projectname}` restituirà l'oggetto creato, e deve includere tutti i campi inviati. I campi opzionali esclusi saranno restituiti come stringhe vuote. Inoltre, includi `created_on` (data/ora), `updated_on` (data/ora), `open` (booleano, `true` per open - valore predefinito, `false` per chiuso), e `_id`. ```js async (getUserInput) => { @@ -107,7 +107,7 @@ async (getUserInput) => { }; ``` -If you send a `POST` request to `/api/issues/{projectname}` without the required fields, returned will be the error `{ error: 'required field(s) missing' }` +Se invii una richiesta `POST` a `/api/issues/{projectname}` senza i campi richiesti, deve essere restituito un errore `{ error: 'required field(s) missing' }` ```js async (getUserInput) => { @@ -125,7 +125,7 @@ async (getUserInput) => { }; ``` -You can send a `GET` request to `/api/issues/{projectname}` for an array of all issues for that specific `projectname`, with all the fields present for each issue. +È possibile inviare una richiesta `GET` a `/api/issues/{projectname}` per un array di tutti gli issue per quel specifico `projectname`, con tutti i campi presenti per ogni issue. ```js async (getUserInput) => { @@ -172,7 +172,7 @@ async (getUserInput) => { }; ``` -You can send a `GET` request to `/api/issues/{projectname}` and filter the request by also passing along any field and value as a URL query (ie. `/api/issues/{project}?open=false`). You can pass one or more field/value pairs at once. +Puoi inviare una richiesta `GET` a `/api/issues/{projectname}` e filtrare la richiesta passando anche qualsiasi campo e valore come una query di URL (es. `/api/issues/{project}?open=false`). È possibile passare una o più coppie di campo/valore contemporaneamente. ```js async (getUserInput) => { @@ -213,7 +213,7 @@ async (getUserInput) => { }; ``` -You can send a `PUT` request to `/api/issues/{projectname}` with an `_id` and one or more fields to update. On success, the `updated_on` field should be updated, and returned should be `{ result: 'successfully updated', '_id': _id }`. +Puoi inviare una richiesta `PUT` a `/api/issues/{projectname}` con un `_id` e uno o più campi da aggiornare. Al successo, il campo `updated_on` dovrebbe essere aggiornato, e dovrebbe essere restituito `{ result: 'successfully updated', '_id': _id }`. ```js async (getUserInput) => { @@ -248,7 +248,7 @@ async (getUserInput) => { }; ``` -When the `PUT` request sent to `/api/issues/{projectname}` does not include an `_id`, the return value is `{ error: 'missing _id' }`. +Quando la richiesta `PUT` inviata a `/api/issues/{projectname}` non include un `_id`, deve essere restuito `{ error: 'missing _id' }`. ```js async (getUserInput) => { @@ -264,7 +264,7 @@ async (getUserInput) => { }; ``` -When the `PUT` request sent to `/api/issues/{projectname}` does not include update fields, the return value is `{ error: 'no update field(s) sent', '_id': _id }`. On any other error, the return value is `{ error: 'could not update', '_id': _id }`. +Quando la richiesta `PUT` inviata a `/api/issues/{projectname}` non include campi da aggiornare, deve essere restuito `{ error: 'no update field(s) sent', '_id': _id }`. Su qualsiasi altro errore, il valore restituito deve essere `{ error: 'could not update', '_id': _id }`. ```js async (getUserInput) => { @@ -294,7 +294,7 @@ async (getUserInput) => { }; ``` -You can send a `DELETE` request to `/api/issues/{projectname}` with an `_id` to delete an issue. If no `_id` is sent, the return value is `{ error: 'missing _id' }`. On success, the return value is `{ result: 'successfully deleted', '_id': _id }`. On failure, the return value is `{ error: 'could not delete', '_id': _id }`. +Puoi inviare una richiesta `DELETE` a `/api/issues/{projectname}` con un `_id` per eliminare un issue. Se non viene inviato un `_id` , deve essere restuito `{ error: 'missing _id' }`. Al successo, deve essere restituito `{ result: 'successfully deleted', '_id': _id }`. Al fallimento, il valore restituito deve essere `{ error: 'could not delete', '_id': _id }`. ```js async (getUserInput) => { @@ -336,7 +336,7 @@ async (getUserInput) => { }; ``` -All 14 functional tests are complete and passing. +Tutti i 14 test funzionali sono completi e passano. ```js async (getUserInput) => { diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/metric-imperial-converter.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/metric-imperial-converter.md index e99c8953c0..57cfe2dcdb 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/metric-imperial-converter.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/metric-imperial-converter.md @@ -1,6 +1,6 @@ --- id: 587d8249367417b2b2512c41 -title: Metric-Imperial Converter +title: Convertitore Metrico-Imperiale challengeType: 4 forumTopicId: 301570 dashedName: metric-imperial-converter @@ -8,52 +8,52 @@ dashedName: metric-imperial-converter # --description-- -Build a full stack JavaScript app that is functionally similar to this: . Working on this project will involve you writing your code using one of the following methods: +Costruisci un'app JavaScript full-stack che sia funzionalmente simile a questa: . Lavorare su questo progetto ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: -- Clone [this GitHub repo](https://github.com/freeCodeCamp/boilerplate-project-metricimpconverter/) and complete your project locally. -- Use [our Replit starter project](https://replit.com/github/freeCodeCamp/boilerplate-project-metricimpconverter) to complete your project. -- Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo. +- Clonare [questo repository GitHub](https://github.com/freeCodeCamp/boilerplate-project-metricimpconverter/) e completare il tuo progetto localmente. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-metricimpconverter) per completare il tuo progetto. +- Usare un costruttore di siti a tua scelta per completare il progetto. Assicurati di incorporare tutti i file del nostro repository 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. 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`. # --instructions-- -- Complete the necessary conversion logic in `/controllers/convertHandler.js` -- Complete the necessary routes in `/routes/api.js` -- Copy the `sample.env` file to `.env` and set the variables appropriately -- To run the tests uncomment `NODE_ENV=test` in your `.env` file -- To run the tests in the console, use the command `npm run test`. To open the Replit console, press Ctrl+Shift+P (Cmd if on a Mac) and type "open shell" +- Completa la logica di conversione necessaria in `/controllers/convertHandler.js` +- Completa le rotte necessarie in `/routes/api.js` +- Copia il file `sample.env` su `.env` e imposta le variabili in modo appropriato +- Per eseguire i test togli i commenti dalla riga `NODE_ENV=test` nel tuo file `.env` +- Per eseguire i test nella console, utilizza il comando `npm run test`. Per aprire la console di Replit, premi Ctrl+Maiusc+P (Cmd se su un Mac) e digita "open shell" -Write the following tests in `tests/1_unit-tests.js`: +Scrivi i seguenti test in `tests/1_unit-tests.js`: -- `convertHandler` should correctly read a whole number input. -- `convertHandler` should correctly read a decimal number input. -- `convertHandler` should correctly read a fractional input. -- `convertHandler` should correctly read a fractional input with a decimal. -- `convertHandler` should correctly return an error on a double-fraction (i.e. `3/2/3`). -- `convertHandler` should correctly default to a numerical input of `1` when no numerical input is provided. -- `convertHandler` should correctly read each valid input unit. -- `convertHandler` should correctly return an error for an invalid input unit. -- `convertHandler` should return the correct return unit for each valid input unit. -- `convertHandler` should correctly return the spelled-out string unit for each valid input unit. -- `convertHandler` should correctly convert `gal` to `L`. -- `convertHandler` should correctly convert `L` to `gal`. -- `convertHandler` should correctly convert `mi` to `km`. -- `convertHandler` should correctly convert `km` to `mi`. -- `convertHandler` should correctly convert `lbs` to `kg`. -- `convertHandler` should correctly convert `kg` to `lbs`. +- `convertHandler` dovrebbe leggere correttamente un numero intero inserito. +- `convertHandler` dovrebbe leggere correttamente un numero decimale inserito. +- `convertHandler` dovrebbe leggere correttamente una frazione inserita. +- `convertHandler` dovrebbe leggere correttamente un input frazionario con un decimale. +- `convertHandler` dovrebbe restituire correttamente un errore su una doppia frazione (cioè `3/2/3`). +- `convertHandler` dovrebbe essere correttamente predefinito con un input numerico di `1` quando non viene fornito alcun input numerico. +- `convertHandler` dovrebbe leggere correttamente ogni input valido. +- `convertHandler` dovrebbe restituire un errore per ogni input non valido. +- `convertHandler` dovrebbe restituire l'unità di ritorno corretta per ogni unità di input valida. +- `convertHandler` dovrebbe restituire correttamente l'unità di misura scritta per esteso per ogni unità di input valida. +- `convertHandler` dovrebbe convertire correttamente `gal` in `L`. +- `convertHandler` dovrebbe convertire correttamente `L` in `gal`. +- `convertHandler` dovrebbe convertire correttamente `mi` in `km`. +- `convertHandler` dovrebbe convertire correttamente `km` in `mi`. +- `convertHandler` dovrebbe convertire correttamente `lbs` in `kg`. +- `convertHandler` dovrebbe convertire correttamente `kg` in `lbs`. -Write the following tests in `tests/2_functional-tests.js`: +Scrivi i seguenti test in `tests/2_functional-tests.js`: -- Convert a valid input such as `10L`: `GET` request to `/api/convert`. -- Convert an invalid input such as `32g`: `GET` request to `/api/convert`. -- Convert an invalid number such as `3/7.2/4kg`: `GET` request to `/api/convert`. -- Convert an invalid number AND unit such as `3/7.2/4kilomegagram`: `GET` request to `/api/convert`. -- Convert with no number such as `kg`: `GET` request to `/api/convert`. +- Converti un input valido come `10L`: richiesta `GET` a `/api/convert`. +- Converti un input non valido come `32g`: richiesta `GET` a `/api/convert`. +- Converti un input non valido come `3/7.2/4kg`: richiesta `GET` a `/api/convert`. +- Converti un input non valido come `3/7.2/4kilomegagram`: richiesta `GET` a `/api/convert`. +- Converti un input senza alcun numero come `kg`: richiesta `GET` a `/api/convert`. # --hints-- -You can provide your own project, not the example URL. +È necessario fornire il proprio progetto, non l'URL di esempio. ```js getUserInput => { @@ -65,13 +65,13 @@ getUserInput => { }; ``` -You can `GET` `/api/convert` with a single parameter containing an accepted number and unit and have it converted. (Hint: Split the input by looking for the index of the first character which will mark the start of the unit) +È possibile ottenere (`GET`) `/api/convert` con un singolo parametro contenente un numero e un'unità validi e convertirlo. (Suggerimento: Dividi l'input cercando l'indice del primo carattere, che segnerà l'inizio dell'unità) ```js ``` -You can convert `'gal'` to `'L'` and vice versa. (1 gal to 3.78541 L) +Puoi convertire `'gal'` in `'L'` e viceversa. (1 gal in 3.78541 L) ```js async getUserInput => { @@ -94,7 +94,7 @@ async getUserInput => { }; ``` -You can convert `'lbs'` to `'kg'` and vice versa. (1 lbs to 0.453592 kg) +Puoi convertire `'lbs'` in `'kg'` e viceversa. (1 lbs in 0,453592 kg) ```js async getUserInput => { @@ -117,7 +117,7 @@ async getUserInput => { }; ``` -You can convert `'mi'` to `'km'` and vice versa. (1 mi to 1.60934 km) +Puoi convertire `'mi'` in `'km'` e viceversa. (1 mi in 1.60934 km) ```js async getUserInput => { @@ -140,7 +140,7 @@ async getUserInput => { }; ``` -All incoming units should be accepted in both upper and lower case, but should be returned in both the `initUnit` and `returnUnit` in lower case, except for liter, which should be represented as an uppercase `'L'`. +Tutte le unità in entrata dovrebbero essere accettate sia in maiuscolo che in minuscolo, ma dovrebbero essere restituite in minuscolo sia per `initUnit` che `returnUnit`, ad eccezione del litro, che dovrebbe essere rappresentato come una `'L'` maiuscola. ```js async getUserInput => { @@ -163,7 +163,7 @@ async getUserInput => { }; ``` -If the unit of measurement is invalid, returned will be `'invalid unit'`. +Se l'unità di misura non è valida, sarà restituito `'invalid unit'`. ```js async getUserInput => { @@ -176,7 +176,7 @@ async getUserInput => { }; ``` -If the number is invalid, returned will be `'invalid number'`. +Se il numero non è valido, sarà restituito `'invalid number'`. ```js async getUserInput => { @@ -191,7 +191,7 @@ async getUserInput => { }; ``` -If both the unit and number are invalid, returned will be `'invalid number and unit'`. +Se sia l'unità che il numero non sono validi, sarà restituito `'invalid number and unit'`. ```js async getUserInput => { @@ -209,7 +209,7 @@ async getUserInput => { }; ``` -You can use fractions, decimals or both in the parameter (ie. 5, 1/2, 2.5/6), but if nothing is provided it will default to 1. +È possibile utilizzare frazioni, decimali o entrambi nel parametro (es. 5, 1/2, 2.5/6), ma se non viene fornito nulla il valore predefinito sarà 1. ```js async getUserInput => { @@ -240,7 +240,7 @@ async getUserInput => { }; ``` -Your return will consist of the `initNum`, `initUnit`, `returnNum`, `returnUnit`, and `string` spelling out units in the format `'{initNum} {initUnitString} converts to {returnNum} {returnUnitString}'` with the result rounded to 5 decimals. +Il tuo risultato consisterà in `initNum`, `initUnit`, `returnNum`, `returnUnit`, e `string` che indica le unità nel formato `'{initNum} {initUnitString} converts to {returnNum} {returnUnitString}'` con il risultato arrotondato a 5 decimali. ```js async getUserInput => { @@ -257,7 +257,7 @@ async getUserInput => { }; ``` -All 16 unit tests are complete and passing. +Tutti i 16 test funzionali richiesti sono completi e superati. ```js async getUserInput => { @@ -282,7 +282,7 @@ async getUserInput => { }; ``` -All 5 functional tests are complete and passing. +Tutti i 5 test funzionali richiesti sono completi e superati. ```js async getUserInput => { diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/personal-library.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/personal-library.md index 6254a8c417..bc475239d7 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/personal-library.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/personal-library.md @@ -1,6 +1,6 @@ --- id: 587d824a367417b2b2512c43 -title: Personal Library +title: Biblioteca Personale challengeType: 4 forumTopicId: 301571 dashedName: personal-library @@ -8,24 +8,24 @@ dashedName: personal-library # --description-- -Build a full stack JavaScript app that is functionally similar to this: . Working on this project will involve you writing your code using one of the following methods: +Costruisci un'app JavaScript full-stack che sia funzionalmente simile a questa: . Lavorare su questo progetto ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: -- Clone [this GitHub repo](https://github.com/freeCodeCamp/boilerplate-project-library) and complete your project locally. -- Use [our Replit starter project](https://replit.com/github/freeCodeCamp/boilerplate-project-library) to complete your project. -- Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo. +- Clonare [questo repository GitHub](https://github.com/freeCodeCamp/boilerplate-project-library) e completare il tuo progetto localmente. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-library) per completare il tuo progetto. +- Usare un costruttore di siti a tua scelta per completare il progetto. Assicurati di incorporare tutti i file del nostro repository 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. 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`. # --instructions-- -1. Add your MongoDB connection string to `.env` without quotes as `DB` Example: `DB=mongodb://admin:pass@1234.mlab.com:1234/fccpersonallib` -2. In your `.env` file set `NODE_ENV` to `test`, without quotes -3. You need to create all routes within `routes/api.js` -4. You will create all functional tests in `tests/2_functional-tests.js` +1. Aggiungi la stringa di connessione a MongoDB a `.env` senza virgolette come `DB` Esempio: `DB=mongodb://admin:pass@1234.mlab.com:1234/fccpersonallib` +2. Nel tuo file `.env` imposta `NODE_ENV` a `test`, senza virgolette +3. È necessario creare tutte le rotte dentro `routes/api.js` +4. Creerai tutti i test funzionali in `tests/2_functional-tests.js` # --hints-- -You can provide your own project, not the example URL. +È necessario fornire il proprio progetto, non l'URL di esempio. ```js (getUserInput) => { @@ -35,7 +35,7 @@ You can provide your own project, not the example URL. }; ``` -You can send a POST request to `/api/books` with `title` as part of the form data to add a book. The returned response will be an object with the `title` and a unique `_id` as keys. If `title` is not included in the request, the returned response should be the string `missing required field title`. +Puoi inviare una richiesta POST a `/api/books` con `title` come parte dei dati del modulo per aggiungere un libro. La risposta restituita sarà un oggetto con un `title` e un `_id` unico come chiavi. Se `title` non è incluso nella richiesta, la risposta restituita dovrebbe essere la stringa `missing required field title`. ```js async (getUserInput) => { @@ -56,7 +56,7 @@ async (getUserInput) => { }; ``` -You can send a GET request to `/api/books` and receive a JSON response representing all the books. The JSON response will be an array of objects with each object (book) containing `title`, `_id`, and `commentcount` properties. +Puoi inviare una richiesta GET a `/api/books` e ricevere una risposta JSON che rappresenta tutti i libri. La risposta JSON sarà un array di oggetti con ogni oggetto (libro) contenente le proprietà `title`, `_id`e `commentcount`. ```js async (getUserInput) => { @@ -84,7 +84,7 @@ async (getUserInput) => { }; ``` -You can send a GET request to `/api/books/{_id}` to retrieve a single object of a book containing the properties `title`, `_id`, and a `comments` array (empty array if no comments present). If no book is found, return the string `no book exists`. +Puoi inviare una richiesta GET a `/api/books/{_id}` per recuperare un singolo oggetto di un libro contenente le proprietà `title`, `_id` e un array di commenti `comments` (array vuoto se nessun commento è presente). Se non viene trovato nessun libro, restituisci la stringa `no book exists`. ```js async (getUserInput) => { @@ -108,7 +108,7 @@ async (getUserInput) => { }; ``` -You can send a POST request containing `comment` as the form body data to `/api/books/{_id}` to add a comment to a book. The returned response will be the books object similar to GET `/api/books/{_id}` request in an earlier test. If `comment` is not included in the request, return the string `missing required field comment`. If no book is found, return the string `no book exists`. +È possibile inviare una richiesta POST contenente `comment` come dati del corpo del modulo a `/api/books/{_id}` per aggiungere un commento a un libro. La risposta restituita sarà l'oggetto libri simile alla richiesta GET `/api/books/{_id}` in un test precedente. Se `comment` non è incluso nella richiesta, restituisci la stringa `missing required field comment`. Se non viene trovato nessun libro, restituisci la stringa `no book exists`. ```js async (getUserInput) => { @@ -146,7 +146,7 @@ async (getUserInput) => { }; ``` -You can send a DELETE request to `/api/books/{_id}` to delete a book from the collection. The returned response will be the string `delete successful` if successful. If no book is found, return the string `no book exists`. +Puoi inviare una richiesta DELETE a `/api/books/{_id}` per eliminare un libro dalla collezione. La risposta restituita sarà la stringa `delete successful` se la richiesta ha avuto successo. Se non viene trovato nessun libro, restituisce la stringa `no book exists`. ```js async (getUserInput) => { @@ -170,7 +170,7 @@ async (getUserInput) => { }; ``` -You can send a DELETE request to `/api/books` to delete all books in the database. The returned response will be the string `'complete delete successful` if successful. +Puoi inviare una richiesta DELETE a `/api/books` per eliminare tutti i libri nel database. La risposta restituita sarà la stringa `'complete delete successful` se la richiesta ha avuto successo. ```js async (getUserInput) => { @@ -187,7 +187,7 @@ async (getUserInput) => { }; ``` -All 10 functional tests required are complete and passing. +Tutti i 10 test funzionali richiesti sono completi e superati. ```js async (getUserInput) => { diff --git a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/sudoku-solver.md b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/sudoku-solver.md index b371014bf5..a73b9d4319 100644 --- a/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/sudoku-solver.md +++ b/curriculum/challenges/italian/06-quality-assurance/quality-assurance-projects/sudoku-solver.md @@ -1,6 +1,6 @@ --- id: 5e601bf95ac9d0ecd8b94afd -title: Sudoku Solver +title: Risolutore di sudoku challengeType: 4 forumTopicId: 462357 dashedName: sudoku-solver @@ -8,60 +8,60 @@ dashedName: sudoku-solver # --description-- -Build a full stack JavaScript app that is functionally similar to this: . Working on this project will involve you writing your code using one of the following methods: +Costruisci un'app JavaScript full-stack che sia funzionalmente simile a questa: . Lavorare su questo progetto ti porterà a scrivere il tuo codice utilizzando uno dei seguenti metodi: -- Clone [this GitHub repo](https://github.com/freecodecamp/boilerplate-project-sudoku-solver) and complete your project locally. -- Use [our Replit starter project](https://replit.com/github/freeCodeCamp/boilerplate-project-sudoku-solver) to complete your project. -- Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo. +- Clonare [questo repository GitHub](https://github.com/freecodecamp/boilerplate-project-sudoku-solver) e completare il tuo progetto localmente. +- Usare [la nostra bozza di progetto su Replit](https://replit.com/github/freeCodeCamp/boilerplate-project-sudoku-solver) per completare il tuo progetto. +- Usare un costruttore di siti a tua scelta per completare il progetto. Assicurati di incorporare tutti i file del nostro repository 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. 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`. # --instructions-- -- All puzzle logic can go into `/controllers/sudoku-solver.js` - - The `validate` function should take a given puzzle string and check it to see if it has 81 valid characters for the input. - - The `check` functions should be validating against the *current* state of the board. - - The `solve` function should handle solving any given valid puzzle string, not just the test inputs and solutions. You are expected to write out the logic to solve this. -- All routing logic can go into `/routes/api.js` -- See the `puzzle-strings.js` file in `/controllers` for some sample puzzles your application should solve -- To run the challenge tests on this page, set `NODE_ENV` to `test` without quotes in the `.env` file -- To run the tests in the console, use the command `npm run test`. To open the Replit console, press Ctrl+Shift+P (Cmd if on a Mac) and type "open shell" +- Tutta la logica puzzle può andare in `/controllers/sudoku-solver.js` + - La funzione `validate` dovrebbe prendere una data stringa rompicapo e controllarla per vedere se ha 81 caratteri validi per l'ingresso. + - Le funzioni `check` dovrebbero convalidare un posizionamento rispetto allo stato *corrente* della scheda. + - La funzione `solve` dovrebbe gestire la risoluzione di qualsiasi stringa di puzzle valida, non solo gli input e le soluzioni di test. Ci si aspetta che sia tu a scrivere la logica per risolvere questo problema. +- Tutta la logica di routing può entrare in `/routes/api.js` +- Vedi il file `puzzle-strings.js` in `/controllers` per alcuni puzzle di esempio che la tua applicazione dovrebbe risolvere +- Per eseguire i test su questa pagina, imposta `NODE_ENV` a `test` senza virgolette nel file `.env` +- Per eseguire i test nella console, utilizza il comando `npm run test`. Per aprire la console di Replit, premi Ctrl+Maiusc+P (Cmd se su un Mac) e digita "open shell" -Write the following tests in `tests/1_unit-tests.js`: +Scrivi i seguenti test in `tests/1_unit-tests.js`: -- Logic handles a valid puzzle string of 81 characters -- Logic handles a puzzle string with invalid characters (not 1-9 or `.`) -- Logic handles a puzzle string that is not 81 characters in length -- Logic handles a valid row placement -- Logic handles an invalid row placement -- Logic handles a valid column placement -- Logic handles an invalid column placement -- Logic handles a valid region (3x3 grid) placement -- Logic handles an invalid region (3x3 grid) placement -- Valid puzzle strings pass the solver -- Invalid puzzle strings fail the solver -- Solver returns the expected solution for an incomplete puzzle +- La logica gestisce una stringa rompicapo valida di 81 caratteri +- La logica gestisce una stringa rompicapo con caratteri non validi (non 1-9 o `.`) +- La logica gestisce una stringa rompicapo che non è di 81 caratteri di lunghezza +- La logica gestisce un posizionamento di riga valido +- La logica gestisce un posizionamento di riga non valido +- La logica gestisce un posizionamento di colonna valido +- La logica gestisce un posizionamento di colonna non valido +- La logica gestisce un posizionamento di regione (griglia 3x3) valido +- La logica gestisce un posizionamento di regione (griglia 3x3) non valido +- Le stringhe rompicapo valide passano il risolutore +- Le stringhe rompicapo non valide vengono rifiutate dal risolutore +- Il risolutore restituisce la soluzione prevista per un puzzle incompleto -Write the following tests in `tests/2_functional-tests.js` +Scrivi i seguenti test in `tests/2_functional-tests.js` -- Solve a puzzle with valid puzzle string: POST request to `/api/solve` -- Solve a puzzle with missing puzzle string: POST request to `/api/solve` -- Solve a puzzle with invalid characters: POST request to `/api/solve` -- Solve a puzzle with incorrect length: POST request to `/api/solve` -- Solve a puzzle that cannot be solved: POST request to `/api/solve` -- Check a puzzle placement with all fields: POST request to `/api/check` -- Check a puzzle placement with single placement conflict: POST request to `/api/check` -- Check a puzzle placement with multiple placement conflicts: POST request to `/api/check` -- Check a puzzle placement with all placement conflicts: POST request to `/api/check` -- Check a puzzle placement with missing required fields: POST request to `/api/check` -- Check a puzzle placement with invalid characters: POST request to `/api/check` -- Check a puzzle placement with incorrect length: POST request to `/api/check` -- Check a puzzle placement with invalid placement coordinate: POST request to `/api/check` -- Check a puzzle placement with invalid placement value: POST request to `/api/check` +- Risolvi un puzzle con stringa rompicapo valida: richiesta POST a `/api/solve` +- Risolvi un puzzle con stringa rompicapo mancante: richiesta POST a `/api/solve` +- Risolvi un puzzle con stringa rompicapo non valida: richiesta POST a `/api/solve` +- Risolvi un puzzle di lunghezza sbagliata: richiesta POST a `/api/solve` +- Risolvi un puzzle che non può essere risolto: richiesta POST a `/api/solve` +- Controlla un posizionamento del puzzle con tutti i campi: richiesta POST a `/api/check` +- Controlla un posizionamento del puzzle con un singolo conflitto di posizionamento: richiesta POST a `/api/check` +- Controlla un posizionamento del puzzle con conflitti multipli di posizionamento: richiesta POST a `/api/check` +- Controlla un posizionamento del puzzle con tutti i conflitti di posizionamento: richiesta POST a `/api/check` +- Controlla un posizionamento del puzzle con i campi richiesti mancanti: richiesta POST a `/api/check` +- Controlla un posizionamento del puzzle con caratteri non validi: richiesta POST a `/api/check` +- Controlla un posizionamento del puzzle di lunghezza sbagliata: richiesta POST a `/api/check` +- Controlla un posizionamento del puzzle con coordinate non valide: richiesta POST a `/api/check` +- Controlla un posizionamento del puzzle di valore non valido: richiesta POST a `/api/check` # --hints-- -You should provide your own project, not the example URL. +È necessario fornire il proprio progetto, non l'URL di esempio. ```js (getUserInput) => { @@ -70,7 +70,7 @@ You should provide your own project, not the example URL. }; ``` -You can `POST` `/api/solve` with form data containing `puzzle` which will be a string containing a combination of numbers (1-9) and periods `.` to represent empty spaces. The returned object will contain a `solution` property with the solved puzzle. +È possibile fare una richiesta `POST` a `/api/solve` con i dati del modulo contenente `puzzle` che sarà una stringa contenente una combinazione di numeri (1-9) e punti `.` per rappresentare spazi vuoti. L'oggetto restituito conterrà una proprietà `solution` con il puzzle risolto. ```js async (getUserInput) => { @@ -89,7 +89,7 @@ async (getUserInput) => { }; ``` -If the object submitted to `/api/solve` is missing `puzzle`, the returned value will be `{ error: 'Required field missing' }` +Se l'oggetto sottoposto a `/api/solve` non ha il `puzzle`, il valore restituito sarà `{ error: 'Required field missing' }` ```js async (getUserInput) => { @@ -107,7 +107,7 @@ async (getUserInput) => { }; ``` -If the puzzle submitted to `/api/solve` contains values which are not numbers or periods, the returned value will be `{ error: 'Invalid characters in puzzle' }` +Se il rompicapo sottoposto a `/api/solve` contiene valori che non sono numeri o punti, il valore restituito sarà `{ error: 'Invalid characters in puzzle' }` ```js async (getUserInput) => { @@ -125,7 +125,7 @@ async (getUserInput) => { }; ``` -If the puzzle submitted to `/api/solve` is greater or less than 81 characters, the returned value will be `{ error: 'Expected puzzle to be 81 characters long' }` +Se il rompicapo sottoposto a `/api/solve` ha lunghezza maggiore o minore di 81 caratteri, il valore restituito sarà `{ error: 'Expected puzzle to be 81 characters long' }` ```js async (getUserInput) => { @@ -143,7 +143,7 @@ async (getUserInput) => { }; ``` -If the puzzle submitted to `/api/solve` is invalid or cannot be solved, the returned value will be `{ error: 'Puzzle cannot be solved' }` +Se il puzzle sottoposto a `/api/solve` non è valido o non può essere risolto, il valore restituito sarà `{ error: 'Puzzle cannot be solved' }` ```js async (getUserInput) => { @@ -161,7 +161,7 @@ async (getUserInput) => { }; ``` -You can `POST` to `/api/check` an object containing `puzzle`, `coordinate`, and `value` where the `coordinate` is the letter A-I indicating the row, followed by a number 1-9 indicating the column, and `value` is a number from 1-9. +Puoi fare una richiesta `POST` a `/api/check` con un oggetto contenente `puzzle`, `coordinate`, e `value` dove la coordinata `coordinate` è la lettera A-I che indica la riga, seguita da un numero 1-9 che indica la colonna, e `value` è un numero compreso tra 1 e 9. ```js async (getUserInput) => { @@ -180,7 +180,7 @@ async (getUserInput) => { }; ``` -The return value from the `POST` to `/api/check` will be an object containing a `valid` property, which is `true` if the number may be placed at the provided coordinate and `false` if the number may not. If false, the returned object will also contain a `conflict` property which is an array containing the strings `"row"`, `"column"`, and/or `"region"` depending on which makes the placement invalid. +Il valore di ritorno della richiesta `POST` a `/api/check` sarà un oggetto contenente una proprietà `valid`, che sarà `true` se il numero può essere posto alla coordinata fornita e `false` se non può. Se falso, l'oggetto restituito conterrà anche una proprietà `conflict` che è un array contenente le stringhe `"row"`, `"column"`, e/o `"region"` a seconda di quale rende il posizionamento non valido. ```js async (getUserInput) => { @@ -203,7 +203,7 @@ async (getUserInput) => { }; ``` -If `value` submitted to `/api/check` is already placed in `puzzle` on that `coordinate`, the returned value will be an object containing a `valid` property with `true` if `value` is not conflicting. +Se il valore `value` sottoposto a `/api/check` è già posizionato sul `puzzle` a quella `coordinate`, il valore restituito sarà un oggetto contenente una proprietà `valid` con `true` se `value` non dà conflitto. ```js async (getUserInput) => { @@ -222,7 +222,7 @@ async (getUserInput) => { }; ``` -If the puzzle submitted to `/api/check` contains values which are not numbers or periods, the returned value will be `{ error: 'Invalid characters in puzzle' }` +Se il puzzle sottoposto a `/api/check` contiene valori che non sono numeri o punti, il valore restituito sarà `{ error: 'Invalid characters in puzzle' }` ```js async (getUserInput) => { @@ -242,7 +242,7 @@ async (getUserInput) => { }; ``` -If the puzzle submitted to `/api/check` is greater or less than 81 characters, the returned value will be `{ error: 'Expected puzzle to be 81 characters long' }` +Se il rompicapo sottoposto a `/api/check` ha lunghezza maggiore o minore di 81 caratteri, il valore restituito sarà `{ error: 'Expected puzzle to be 81 characters long' }` ```js async (getUserInput) => { @@ -262,7 +262,7 @@ async (getUserInput) => { }; ``` -If the object submitted to `/api/check` is missing `puzzle`, `coordinate` or `value`, the returned value will be `{ error: Required field(s) missing }` +Se all'oggetto sottoposto a `/api/check` manca `puzzle`, `coordinate` o `value`, il valore restituito sarà `{ error: Required field(s) missing }` ```js async (getUserInput) => { @@ -280,7 +280,7 @@ async (getUserInput) => { }; ``` -If the coordinate submitted to `api/check` does not point to an existing grid cell, the returned value will be `{ error: 'Invalid coordinate'}` +Se la coordinata inviata a `api/check` non punta a una cella della griglia esistente, il valore restituito sarà `{ error: 'Invalid coordinate'}` ```js async (getUserInput) => { @@ -300,7 +300,7 @@ async (getUserInput) => { }; ``` -If the `value` submitted to `/api/check` is not a number between 1 and 9, the returned values will be `{ error: 'Invalid value' }` +Se il valore `value` inviato a `/api/check` non è un numero compreso tra 1 e 9, i valori restituiti saranno `{ error: 'Invalid value' }` ```js async (getUserInput) => { @@ -320,7 +320,7 @@ async (getUserInput) => { }; ``` -All 12 unit tests are complete and passing. See `/tests/1_unit-tests.js` for the expected behavior you should write tests for. +Tutti i 12 test funzionali richiesti sono completi e superati. Vedi `/tests/1_unit-tests.js` per il comportamento previsto per il quale dovresti scrivere dei test. ```js async (getUserInput) => { @@ -343,7 +343,7 @@ async (getUserInput) => { }; ``` -All 14 functional tests are complete and passing. See `/tests/2_functional-tests.js` for the functionality you should write tests for. +Tutti i 14 test funzionali richiesti sono completi e superati. Vedi `/tests/2_functional-tests.js` per le funzionalità per le quali dovresti scrivere dei test. ```js async (getUserInput) => { diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/introduction-to-data-analysis.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/introduction-to-data-analysis.md index a907b1568d..735202f214 100644 --- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/introduction-to-data-analysis.md +++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/introduction-to-data-analysis.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c14c -title: Introduction to Data Analysis +title: Introduzione all'analisi dei dati challengeType: 11 videoId: VJrP2FUzKP0 dashedName: introduction-to-data-analysis @@ -8,31 +8,31 @@ dashedName: introduction-to-data-analysis # --description-- -More resources: +Altre risorse: -\- [Slides](https://docs.google.com/presentation/d/1cUIt8b2ySz-85_ykfeuuWsurccwTAuFPn782pZBzFsU/edit?usp=sharing) +\- [Presentazione](https://docs.google.com/presentation/d/1cUIt8b2ySz-85_ykfeuuWsurccwTAuFPn782pZBzFsU/edit?usp=sharing) # --question-- ## --text-- -Which of the following is **not** part of Data Analysis? +Quale dei seguenti elementi **non** è parte dell'analisi dei dati? ## --answers-- -Building statistical models and data visualizations. +Costruire modelli statistici e visualizzazioni di dati. --- -Picking a desired conclusion for the analysis. +Scegliere una conclusione desiderata per l'analisi. --- -Fixing incorrect values and removing invalid data. +Correggere i valori errati e rimuovere i dati non validi. --- -Transforming data into an appropriate data structure. +Trasformare i dati in una struttura di dati appropriata. ## --video-solution-- diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-algebra-and-size.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-algebra-and-size.md index 454f7c5646..2775558e59 100644 --- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-algebra-and-size.md +++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-algebra-and-size.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c157 -title: Numpy Algebra and Size +title: Algebra e dimensione con Numpy challengeType: 11 videoId: XAT97YLOKD8 dashedName: numpy-algebra-and-size @@ -8,34 +8,34 @@ dashedName: numpy-algebra-and-size # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*Invece di usare notebooks.ai come mostrato nel video, puoi usare Google Colab.* -More resources: +Altre risorse: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [Notebook su GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) +- [Come aprire Notebooks da GitHub usando Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What is the relationship between size of objects (such as lists and datatypes) in memory in Python's standard library and the NumPy library? Knowing this, what are the implications for performance? +Qual è la relazione tra le dimensioni degli oggetti (come liste e tipi di dati) nella memoria nella libreria standard di Python e nella libreria NumPy? Sapendo questo, quali sono le implicazioni per le prestazioni? ## --answers-- -Standard Python objects take up much more memory to store than NumPy objects; operations on comparable standard Python and NumPy objects complete in roughly the same time. +Gli oggetti Python standard occupano molta più memoria degli oggetti NumPy; operazioni su oggetti Python e NumPy standard comparabili sono completate approssimativamente nello stesso tempo. --- -NumPy objects take up much more memory than standard Python objects; operations on NumPy objects complete very quickly compared to comparable objects in standard Python. +Gli oggetti NumPy occupano molta più memoria degli oggetti Python standard; le operazioni su oggetti NumPy sono completate molto più rapidamente rispetto agli oggetti comparabili presenti in Python standard. --- -NumPy objects take up much less memory than Standard Python objects; operations on Standard Python objects complete very quickly compared to comparable objects on NumPy Object. +Gli oggetti NumPy occupano molta meno memoria degli oggetti Python standard; le operazioni su oggetti Python standard sono completate molto più rapidamente rispetto agli oggetti comparabili su NumPy. --- -Standard Python objects take up more memory than NumPy objects; operations on NumPy objects complete very quickly compared to comparable objects in standard Python. +Gli oggetti Python standard occupano più memoria degli oggetti NumPy; le operazioni su oggetti NumPy sono completate molto più rapidamente rispetto agli oggetti comparabili presenti in Python standard. ## --video-solution-- diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-arrays.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-arrays.md index b5504e836e..62cf8d3059 100644 --- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-arrays.md +++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-arrays.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c154 -title: Numpy Arrays +title: Array di Numpy challengeType: 11 videoId: VDYVFHBL1AM dashedName: numpy-arrays @@ -8,18 +8,18 @@ dashedName: numpy-arrays # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*Invece di usare notebooks.ai come mostrato nel video, puoi usare Google Colab.* -More resources: +Altre risorse: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [Notebook su GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) +- [Come aprire Notebooks da GitHub usando Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What will the following code print out? +Cosa verrà visualizzato nella console con il seguente codice? ```py A = np.array([ diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-boolean-arrays.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-boolean-arrays.md index f271dff4b0..1361af2947 100644 --- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-boolean-arrays.md +++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-boolean-arrays.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c156 -title: Numpy Boolean Arrays +title: Array booleani di Numpy challengeType: 11 videoId: N1ttsMmcVMM dashedName: numpy-boolean-arrays @@ -8,18 +8,18 @@ dashedName: numpy-boolean-arrays # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*Invece di usare notebooks.ai come mostrato nel video, puoi usare Google Colab.* -More resources: +Altre risorse: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [Notebook su GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) +- [Come aprire Notebooks da GitHub usando Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What will the following code print out? +Cosa verrà visualizzato nella console con il seguente codice? ```py a = np.arange(5) diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-a.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-a.md index fc38697f40..c6780d7dec 100644 --- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-a.md +++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-a.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c152 -title: Numpy Introduction A +title: Introduzione a Numpy A challengeType: 11 videoId: P-JjV6GBCmk dashedName: numpy-introduction-a @@ -8,30 +8,30 @@ dashedName: numpy-introduction-a # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*Invece di usare notebooks.ai come mostrato nel video, puoi usare Google Colab.* -More resources: +Altre risorse: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [Notebook su GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) +- [Come aprire Notebooks da GitHub usando Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -Why is Numpy an important, but unpopular Python library? +Perché Numpy è una libreria Python importante ma poco popolare? ## --answers-- -Often you won't work directly with Numpy. +Spesso non lavorerai direttamente con Numpy. --- -It is extremely slow. +È estremamente lento. --- -Working with Numpy is difficult. +Lavorare con Numpy è difficile. ## --video-solution-- diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-b.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-b.md index a863e42074..d6b8f6ba2a 100644 --- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-b.md +++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/numpy-introduction-b.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c153 -title: Numpy Introduction B +title: Introduzione a Numpy B challengeType: 11 videoId: YIqgrNLAZkA dashedName: numpy-introduction-b @@ -8,34 +8,34 @@ dashedName: numpy-introduction-b # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*Invece di usare notebooks.ai come mostrato nel video, puoi invece usare Google Colab.* -More resources: +Altre risorse: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [Notebook su GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-numpy) +- [Come aprire Notebooks da GitHub usando Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -About how much memory does the integer `5` consume in plain Python? +Quanta memoria consuma all'incirca in Python puro il numero intero `5`? ## --answers-- -32 bits +32 bit --- -20 bytes +20 byte --- -16 bytes +16 byte --- -8 bits +8 bit ## --video-solution-- diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/pandas-conditional-selection-and-modifying-dataframes.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/pandas-conditional-selection-and-modifying-dataframes.md index 3d17a73a55..f0558929a6 100644 --- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/pandas-conditional-selection-and-modifying-dataframes.md +++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/pandas-conditional-selection-and-modifying-dataframes.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c15b -title: Pandas Conditional Selection and Modifying DataFrames +title: Selezione condizionale con Panda e modifica dei DataFrame challengeType: 11 videoId: BFlH0fN5xRQ dashedName: pandas-conditional-selection-and-modifying-dataframes @@ -8,18 +8,18 @@ dashedName: pandas-conditional-selection-and-modifying-dataframes # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*Invece di usare notebooks.ai come mostrato nel video, puoi usare Google Colab.* -More resources: +Altre risorse: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [Notebook su GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas) +- [Come aprire Notebooks da GitHub usando Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What will the following code print out? +Cosa verrà visualizzato nella console con il seguente codice? ```py import pandas as pd diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/pandas-creating-columns.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/pandas-creating-columns.md index 7d20f76c4a..a404eaa7bf 100644 --- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/pandas-creating-columns.md +++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/pandas-creating-columns.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c15c -title: Pandas Creating Columns +title: Creazione di colonne con Panda challengeType: 11 videoId: _sSo2XZoB3E dashedName: pandas-creating-columns @@ -8,18 +8,18 @@ dashedName: pandas-creating-columns # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*Invece di usare notebooks.ai come mostrato nel video, puoi usare Google Colab.* -More resources: +Altre risorse: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [Notebook su GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas) +- [Come aprire Notebooks da GitHub usando Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What code would add a "Certificates per month" column to the `certificates_earned` DataFrame like the one below? +Quale codice aggiungerebbe una colonna "Certificates per month" al DataFrame `certificates_earned` come mostrato sotto?
      Certificates  Time (in months)  Certificates per month
 Tom               8                16                    0.50
diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/pandas-indexing-and-conditional-selection.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/pandas-indexing-and-conditional-selection.md
index 1107f217f4..4a423d8963 100644
--- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/pandas-indexing-and-conditional-selection.md
+++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/pandas-indexing-and-conditional-selection.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a093a74c4063ca6f7c159
-title: Pandas Indexing and Conditional Selection
+title: Indicizzazione di Pandas e selezione condizionale
 challengeType: 11
 videoId: '-ZOrgV_aA9A'
 dashedName: pandas-indexing-and-conditional-selection
@@ -8,18 +8,18 @@ dashedName: pandas-indexing-and-conditional-selection
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*Invece di usare notebooks.ai come mostrato nel video, puoi usare Google Colab.*
 
-More resources:
+Altre risorse:
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [Notebook su GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas)
+-   [Come aprire Notebooks da GitHub usando Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-What will the following code print out?
+Cosa verrà visualizzato nella console con il seguente codice?
 
 ```py
 import pandas as pd
diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-csv-and-txt.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-csv-and-txt.md
index 442d815a51..a89b84b4bd 100644
--- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-csv-and-txt.md
+++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-csv-and-txt.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a093a74c4063ca6f7c162
-title: Reading Data CSV and TXT
+title: Lettura di dati CSV e TXT
 challengeType: 11
 videoId: ViGEv0zOzUk
 dashedName: reading-data-csv-and-txt
@@ -8,18 +8,18 @@ dashedName: reading-data-csv-and-txt
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*Invece di usare notebooks.ai come mostrato nel video, puoi usare Google Colab.*
 
-More resources:
+Altre risorse:
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/RDP-Reading-Data-with-Python-and-Pandas/tree/master/unit-1-reading-data-with-python-and-pandas/lesson-1-reading-csv-and-txt-files/files)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [Notebook su GitHub](https://github.com/ine-rmotr-curriculum/RDP-Reading-Data-with-Python-and-Pandas/tree/master/unit-1-reading-data-with-python-and-pandas/lesson-1-reading-csv-and-txt-files/files)
+-   [Come aprire Notebooks da GitHub usando Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-How would you import the CSV file `data.csv` and store it in a DataFrame using the Pandas module?
+Come faresti per importare il file CSV `data.csv` e salvarlo in un DataFrame usando il modulo Pandas?
 
 ## --answers--
 
diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-from-databases.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-from-databases.md
index 9a6275ac38..4084d0a821 100644
--- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-from-databases.md
+++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-course/reading-data-from-databases.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a093a74c4063ca6f7c163
-title: Reading Data from Databases
+title: Leggere i dati dal database
 challengeType: 11
 videoId: MtgXS1MofRw
 dashedName: reading-data-from-databases
@@ -8,30 +8,30 @@ dashedName: reading-data-from-databases
 
 # --description--
 
-*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.*
+*Invece di usare notebooks.ai come mostrato nel video, puoi usare Google Colab.*
 
-More resources:
+Altre risorse:
 
--   [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/RDP-Reading-Data-with-Python-and-Pandas/tree/master/unit-1-reading-data-with-python-and-pandas/lesson-11-reading-data-from-relational-databases/files)
--   [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
+-   [Notebook su GitHub](https://github.com/ine-rmotr-curriculum/RDP-Reading-Data-with-Python-and-Pandas/tree/master/unit-1-reading-data-with-python-and-pandas/lesson-11-reading-data-from-relational-databases/files)
+-   [Come aprire Notebooks da GitHub usando Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb)
 
 # --question--
 
 ## --text--
 
-What method does a `Cursor` instance have and what does it allow?
+Che metodo ha un'istanza di `Cursor` e che cosa permette?
 
 ## --answers--
 
-The `Cursor` instance has a `.run()` method which allows you to run SQL queries.
+L'istanza `Cursor` ha un metodo `.run()` che consente di eseguire query SQL.
 
 ---
 
-The `Cursor` instance has a `.select()` method which allows you to select records.
+L'istanza `Cursor` ha un metodo `.select()` che consente di selezionare un documento.
 
 ---
 
-The `Cursor` instance has an `.execute()` method which will receive SQL parameters to run against the database.
+L'istanza `Cursor` ha un metodo `.execute()` che riceverà i parametri SQL da eseguire sul database.
 
 ## --video-solution--
 
diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-projects/page-view-time-series-visualizer.md b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-projects/page-view-time-series-visualizer.md
index f0501c882b..65abce52f9 100644
--- a/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-projects/page-view-time-series-visualizer.md
+++ b/curriculum/challenges/italian/08-data-analysis-with-python/data-analysis-with-python-projects/page-view-time-series-visualizer.md
@@ -1,6 +1,6 @@
 ---
 id: 5e46f802ac417301a38fb92b
-title: Page View Time Series Visualizer
+title: Visualizzatore della pagina delle serie temporali
 challengeType: 10
 forumTopicId: 462369
 dashedName: page-view-time-series-visualizer
@@ -8,17 +8,17 @@ dashedName: page-view-time-series-visualizer
 
 # --description--
 
-For this project you will visualize time series data using a line chart, bar chart, and box plots. You will use Pandas, matplotlib, and seaborn to visualize a dataset containing the number of page views each day on the freeCodeCamp.org forum from 2016-05-09 to 2019-12-03. The data visualizations will help you understand the patterns in visits and identify yearly and monthly growth.
+Per questo progetto visualizzerai i dati delle serie temporali usando un grafico a linea, un grafico a barre, e un diagramma a scatola e baffi. Userai Pandas, matplotlib, e seaborn per visualizzare il set dei dati contentente il numero di visualizzazioni di pagina di ogni giorno per il forum di freecodecamp.org dal 2016-05-09 al 2019-12-03. La visualizzazione dei dati ti aiuterà a riconoscerme schemi nelle visite e identificare crescita annuale e mensile.
 
-You can access [the full project description and starter code on Replit](https://replit.com/github/freeCodeCamp/boilerplate-page-view-time-series-visualizer).
+Puoi accedere [alla descrizione completa del progetto e al codice iniziale su Replit](https://replit.com/github/freeCodeCamp/boilerplate-page-view-time-series-visualizer).
 
-After going to that link, fork the project. Once you complete the project based on the instructions in 'README.md', submit your project link below.
+Dopo essere andato a quel collegamento, fai un fork del progetto. Una volta completato il progetto in base alle istruzioni riportate in 'README.md', invia il link del progetto qui sotto.
 
-We are still developing the interactive instructional part of the data analysis with Python curriculum. For now, you will have to use other resources to learn how to pass this challenge.
+Stiamo ancora sviluppando la parte didattica interattiva del curriculum di analisi dei dati con Python. Per ora, dovrai utilizzare altre risorse per imparare a superare questa sfida.
 
 # --hints--
 
-It should pass all Python tests.
+Dovrebbe superare tutti i test Python.
 
 ```js
 
diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/numpy/basics-of-numpy.md b/curriculum/challenges/italian/08-data-analysis-with-python/numpy/basics-of-numpy.md
index 57b1924af7..52b88c19a2 100644
--- a/curriculum/challenges/italian/08-data-analysis-with-python/numpy/basics-of-numpy.md
+++ b/curriculum/challenges/italian/08-data-analysis-with-python/numpy/basics-of-numpy.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a0a8e09c5df3cc3600ed3
-title: Basics of Numpy
+title: Fondamenti di Numpy
 challengeType: 11
 videoId: f9QrZrKQMLI
 dashedName: basics-of-numpy
@@ -10,7 +10,7 @@ dashedName: basics-of-numpy
 
 ## --text--
 
-What will the following code print?
+Cosa scriverà il seguente codice?
 
 ```python
 b = np.array([[1.0,2.0,3.0],[3.0,4.0,5.0]])
diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/numpy/mathematics.md b/curriculum/challenges/italian/08-data-analysis-with-python/numpy/mathematics.md
index f3b1a3c111..b6528fbc5a 100644
--- a/curriculum/challenges/italian/08-data-analysis-with-python/numpy/mathematics.md
+++ b/curriculum/challenges/italian/08-data-analysis-with-python/numpy/mathematics.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a0a8e09c5df3cc3600ed8
-title: Mathematics
+title: Matematica
 challengeType: 11
 videoId: 7txegvyhtVk
 dashedName: mathematics
@@ -10,7 +10,7 @@ dashedName: mathematics
 
 ## --text--
 
-What is the value of `b` after running the following code?
+Qual è il valore di `b` dopo aver eseguito il seguente codice?
 
 ```py
 import numpy as np
diff --git a/curriculum/challenges/italian/08-data-analysis-with-python/numpy/reorganizing-arrays.md b/curriculum/challenges/italian/08-data-analysis-with-python/numpy/reorganizing-arrays.md
index 7e4903c864..6f5ab69ad1 100644
--- a/curriculum/challenges/italian/08-data-analysis-with-python/numpy/reorganizing-arrays.md
+++ b/curriculum/challenges/italian/08-data-analysis-with-python/numpy/reorganizing-arrays.md
@@ -1,6 +1,6 @@
 ---
 id: 5e9a0a8e09c5df3cc3600ed9
-title: Reorganizing Arrays
+title: Riorganizzazione degli array
 challengeType: 11
 videoId: VNWAQbEM-C8
 dashedName: reorganizing-arrays
@@ -10,7 +10,7 @@ dashedName: reorganizing-arrays
 
 ## --text--
 
-What code would produce the following array?
+Quale codice produrrebbe il seguente array?
 
 ```py
 [[1. 1.]
diff --git a/curriculum/challenges/italian/12-certificates/data-analysis-with-python-certificate/data-analysis-with-python-certificate.yml b/curriculum/challenges/italian/12-certificates/data-analysis-with-python-certificate/data-analysis-with-python-certificate.yml
index 238899200c..e7c99338ce 100644
--- a/curriculum/challenges/italian/12-certificates/data-analysis-with-python-certificate/data-analysis-with-python-certificate.yml
+++ b/curriculum/challenges/italian/12-certificates/data-analysis-with-python-certificate/data-analysis-with-python-certificate.yml
@@ -1,22 +1,22 @@
 ---
 id: 5e46fc95ac417301a38fb934
-title: Data Analysis with Python Certificate
+title: Certificato Analisi dei dati con Python
 challengeType: 7
 isPrivate: true
 tests:
   - 
     id: 5e46f7e5ac417301a38fb928
-    title: Mean-Variance-Standard Deviation Calculator
+    title: Calcolatore della Varianza, Media e Deviazione Standard
   - 
     id: 5e46f7e5ac417301a38fb929
-    title: Demographic Data Analyzer
+    title: Analizzatore di Dati Demografici
   - 
     id: 5e46f7f8ac417301a38fb92a
-    title: Medical Data Visualizer
+    title: Visualizzatore di Dati Medici
   - 
     id: 5e46f802ac417301a38fb92b
-    title: Page View Time Series Visualizer
+    title: Visualizzatore della pagina delle serie temporali
   - 
     id: 5e4f5c4b570f7e3a4949899f
-    title: Sea Level Predictor
+    title: Predittore del livello del mare
 
diff --git a/curriculum/challenges/italian/12-certificates/information-security-certificate/information-security-certificate.yml b/curriculum/challenges/italian/12-certificates/information-security-certificate/information-security-certificate.yml
index a6339cfb86..cb3f589bfa 100644
--- a/curriculum/challenges/italian/12-certificates/information-security-certificate/information-security-certificate.yml
+++ b/curriculum/challenges/italian/12-certificates/information-security-certificate/information-security-certificate.yml
@@ -1,21 +1,21 @@
 ---
 id: 5e6021435ac9d0ecd8b94b00
-title: Information Security Certificate
+title: Certificato Sicurezza dell'Informazione
 challengeType: 7
 isPrivate: true
 tests:
   - 
     id: 587d824a367417b2b2512c44
-    title: Stock Price Checker
+    title: Controllo del prezzo delle azioni
   - 
     id: 587d824a367417b2b2512c45
-    title: Anonymous Message Board
+    title: Pannello messaggi Anonimo
   - 
     id: 5e46f979ac417301a38fb932
     title: Port Scanner
   - 
     id: 5e46f983ac417301a38fb933
-    title: SHA-1 Password Cracker
+    title: Cracker Password SHA-1
   - 
     id: 5e601c775ac9d0ecd8b94aff
-    title: Secure Real Time Multiplayer Game
+    title: Gioco multiplayer in tempo reale sicuro
diff --git a/curriculum/challenges/italian/12-certificates/legacy-back-end-certificate/legacy-back-end-certificate.yml b/curriculum/challenges/italian/12-certificates/legacy-back-end-certificate/legacy-back-end-certificate.yml
index d48ecd7921..b3dbc1b3e7 100644
--- a/curriculum/challenges/italian/12-certificates/legacy-back-end-certificate/legacy-back-end-certificate.yml
+++ b/curriculum/challenges/italian/12-certificates/legacy-back-end-certificate/legacy-back-end-certificate.yml
@@ -1,36 +1,36 @@
 ---
 id: 660add10cb82ac38a17513be
-title: Legacy Back End Certificate
+title: Vecchio Certificato Back End
 challengeType: 7
 isPrivate: true
 tests:
   - 
     id: bd7158d8c443edefaeb5bdef
-    title: Timestamp Microservice
+    title: Microservizio Timestamp
   - 
     id: bd7158d8c443edefaeb5bdff
-    title: Request Header Parser Microservice
+    title: Microservizio Parser di header della richiesta
   - 
     id: bd7158d8c443edefaeb5bd0e
-    title: URL Shortener Microservice
+    title: Microservizio Abbreviazione URL
   - 
     id: bd7158d8c443edefaeb5bdee
-    title: Image Search Abstraction Layer
+    title: Livello di astrazione Ricerca Immagine
   - 
     id: bd7158d8c443edefaeb5bd0f
-    title: File Metadata Microservice
+    title: Microservizio Metadati di un file
   - 
     id: bd7158d8c443eddfaeb5bdef
-    title: Build a Voting App
+    title: Costruisci un'app per le votazioni
   - 
     id: bd7158d8c443eddfaeb5bdff
-    title: Build a Nightlife Coordination App
+    title: Costruisci un'app per il coordinamento della vita notturna
   - 
     id: bd7158d8c443eddfaeb5bd0e
-    title: Chart the Stock Market
+    title: Grafico della Borsa
   - 
     id: bd7158d8c443eddfaeb5bd0f
-    title: Manage a Book Trading Club
+    title: Gestisci un Club di scambio del libro
   - 
     id: bd7158d8c443eddfaeb5bdee
-    title: Build a Pinterest Clone
+    title: Costruisci un Clone di Pinterest
diff --git a/curriculum/challenges/italian/12-certificates/legacy-data-visualization-certificate/legacy-data-visualization-certificate.yml b/curriculum/challenges/italian/12-certificates/legacy-data-visualization-certificate/legacy-data-visualization-certificate.yml
index 1508cf30d8..cadf620463 100644
--- a/curriculum/challenges/italian/12-certificates/legacy-data-visualization-certificate/legacy-data-visualization-certificate.yml
+++ b/curriculum/challenges/italian/12-certificates/legacy-data-visualization-certificate/legacy-data-visualization-certificate.yml
@@ -1,36 +1,36 @@
 ---
 id: 561add10cb82ac39a17513bc
-title: Legacy Data Visualization Certificate
+title: Vecchio Certificato Data Visualization
 challengeType: 7
 isPrivate: true
 tests:
   - 
     id: bd7157d8c242eddfaeb5bd13
-    title: Build a Markdown Previewer
+    title: Costruisci un visualizzatore di Markdown
   - 
     id: bd7156d8c242eddfaeb5bd13
-    title: Build a Camper Leaderboard
+    title: Costruisci una Classifica Camper
   - 
     id: bd7155d8c242eddfaeb5bd13
-    title: Build a Recipe Box
+    title: Costruisci una scatola delle ricette
   - 
     id: bd7154d8c242eddfaeb5bd13
-    title: Build the Game of Life
+    title: Costruisci il Gioco della Vita
   - 
     id: bd7153d8c242eddfaeb5bd13
-    title: Build a Roguelike Dungeon Crawler Game
+    title: Costruisci un gioco di genere Rogue Dungeon Crawler
   - 
     id: bd7168d8c242eddfaeb5bd13
-    title: Visualize Data with a Bar Chart
+    title: Visualizza i dati con un grafico a barre
   - 
     id: bd7178d8c242eddfaeb5bd13
-    title: Visualize Data with a Scatterplot Graph
+    title: Visualizza i dati con un grafico a dispersione
   - 
     id: bd7188d8c242eddfaeb5bd13
-    title: Visualize Data with a Heat Map
+    title: Visualizza i dati con una mappa di calore
   - 
     id: bd7198d8c242eddfaeb5bd13
-    title: Show National Contiguity with a Force Directed Graph
+    title: Mostra la Contiguità Nazionale con un Grafico diretto della Forza
   - 
     id: bd7108d8c242eddfaeb5bd13
-    title: Map Data Across the Globe
+    title: Mappa i dati in tutto il globo
diff --git a/curriculum/challenges/italian/12-certificates/legacy-front-end-certificate/legacy-front-end-certificate.yml b/curriculum/challenges/italian/12-certificates/legacy-front-end-certificate/legacy-front-end-certificate.yml
index 93d72c9b7f..2ba770837a 100644
--- a/curriculum/challenges/italian/12-certificates/legacy-front-end-certificate/legacy-front-end-certificate.yml
+++ b/curriculum/challenges/italian/12-certificates/legacy-front-end-certificate/legacy-front-end-certificate.yml
@@ -1,36 +1,36 @@
 ---
 id: 561add10cb82ac38a17513be
-title: Legacy Front End Certificate
+title: Vecchio Certificato Front End
 challengeType: 7
 isPrivate: true
 tests:
   - 
     id: bd7158d8c242eddfaeb5bd13
-    title: Build a Personal Portfolio Webpage
+    title: Costruisci una pagina per il tuo portfolio personale
   - 
     id: bd7158d8c442eddfaeb5bd13
-    title: Build a Random Quote Machine
+    title: Costruisci una Macchina per le citazioni casuali
   - 
     id: bd7158d8c442eddfaeb5bd0f
-    title: Build a 25 + 5 Clock
+    title: Costruisci un Orologio 25 + 5
   - 
     id: bd7158d8c442eddfaeb5bd17
-    title: Build a JavaScript Calculator
+    title: Costruisci una calcolatrice JavaScript
   - 
     id: bd7158d8c442eddfaeb5bd10
-    title: Show the Local Weather
+    title: Mostra il Meteo locale
   - 
     id: bd7158d8c442eddfaeb5bd1f
-    title: Use the Twitch JSON API
+    title: Usa l'API JSON di Twitch
   - 
     id: bd7158d8c442eddfaeb5bd18
-    title: Stylize Stories on Camper News
+    title: Storie di Stylize su Camper News
   - 
     id: bd7158d8c442eddfaeb5bd19
-    title: Build a Wikipedia Viewer
+    title: Costruisci un visualizzatore di Wikipedia
   - 
     id: bd7158d8c442eedfaeb5bd1c
-    title: Build a Tic Tac Toe Game
+    title: Costruisci un gioco Tic Tac Toe
   - 
     id: bd7158d8c442eddfaeb5bd1c
-    title: Build a Simon Game
+    title: Costruisci un gioco Simon
diff --git a/curriculum/challenges/italian/12-certificates/legacy-full-stack-certificate/legacy-full-stack-certificate.yml b/curriculum/challenges/italian/12-certificates/legacy-full-stack-certificate/legacy-full-stack-certificate.yml
index 97e2fcfc9d..b7ecace0da 100644
--- a/curriculum/challenges/italian/12-certificates/legacy-full-stack-certificate/legacy-full-stack-certificate.yml
+++ b/curriculum/challenges/italian/12-certificates/legacy-full-stack-certificate/legacy-full-stack-certificate.yml
@@ -1,24 +1,24 @@
 ---
 id: 561add10cb82ac38a17213bd
-title: Legacy Full Stack Certificate
+title: Vecchio certificato Full Stack
 challengeType: 7
 isPrivate: true
 tests:
   - 
     id: 561add10cb82ac38a17513bc
-    title: Responsive Web Design Certificate
+    title: Certificato Web Design Responsivo
   - 
     id: 561abd10cb81ac38a17513bc
-    title: JavaScript Algorithms and Data Structures Certificate
+    title: Certificato Algoritmi e Strutture Dati in JavaScript
   - 
     id: 561acd10cb82ac38a17513bc
-    title: Front End Libraries Certificate
+    title: Certificato Librerie di sviluppo Front End
   - 
     id: 5a553ca864b52e1d8bceea14
-    title: Data Visualization Certificate
+    title: Certificato Data Visualization
   - 
     id: 561add10cb82ac38a17523bc
-    title: API's and Microservices Certificate
+    title: Certificato API e microservizi
   - 
     id: 561add10cb82ac38a17213bc
-    title: Legacy Information Security and Quality Assurance Certificate
+    title: Vecchio certificato di Sicurezza delle Informazioni e Garanzia di Qualità
diff --git a/curriculum/challenges/italian/12-certificates/legacy-information-security-and-quality-assurance-certificate/legacy-information-security-and-quality-assurance-certificate.yml b/curriculum/challenges/italian/12-certificates/legacy-information-security-and-quality-assurance-certificate/legacy-information-security-and-quality-assurance-certificate.yml
index 1990a343ed..7679562b10 100644
--- a/curriculum/challenges/italian/12-certificates/legacy-information-security-and-quality-assurance-certificate/legacy-information-security-and-quality-assurance-certificate.yml
+++ b/curriculum/challenges/italian/12-certificates/legacy-information-security-and-quality-assurance-certificate/legacy-information-security-and-quality-assurance-certificate.yml
@@ -1,21 +1,21 @@
 ---
 id: 561add10cb82ac38a17213bc
-title: Legacy Information Security and Quality Assurance Certificate
+title: Vecchio certificato di Sicurezza delle Informazioni e Garanzia di Qualità
 challengeType: 7
 isPrivate: true
 tests:
   - 
     id: 587d8249367417b2b2512c41
-    title: Metric-Imperial Converter
+    title: Convertitore Metrico-Imperiale
   - 
     id: 587d8249367417b2b2512c42
-    title: Issue Tracker
+    title: Tracciatore di problemi
   - 
     id: 587d824a367417b2b2512c43
-    title: Personal Library
+    title: Biblioteca personale
   - 
     id: 587d824a367417b2b2512c44
-    title: Stock Price Checker
+    title: Controllo del prezzo delle azioni
   - 
     id: 587d824a367417b2b2512c45
-    title: Anonymous Message Board
+    title: Pannello messaggi anonimo
diff --git a/curriculum/challenges/italian/12-certificates/machine-learning-with-python-certificate/machine-learning-with-python-certificate.yml b/curriculum/challenges/italian/12-certificates/machine-learning-with-python-certificate/machine-learning-with-python-certificate.yml
index 266eb63948..bf1b253c50 100644
--- a/curriculum/challenges/italian/12-certificates/machine-learning-with-python-certificate/machine-learning-with-python-certificate.yml
+++ b/curriculum/challenges/italian/12-certificates/machine-learning-with-python-certificate/machine-learning-with-python-certificate.yml
@@ -1,22 +1,22 @@
 ---
 id: 5e46fc95ac417301a38fb935
-title: Machine Learning with Python Certificate
+title: Certificato Machine Learning con Python
 challengeType: 7
 isPrivate: true
 tests:
   - 
     id: 5e46f8d6ac417301a38fb92d
-    title: Rock Paper Scissors
+    title: Carta Sasso Forbice
   - 
     id: 5e46f8dcac417301a38fb92e
-    title: Cat and Dog Image Classifier
+    title: Classificatore di immagini di gatti e cani
   - 
     id: 5e46f8e3ac417301a38fb92f
-    title: Book Recommendation Engine using KNN
+    title: Motore per la raccomandazione di libri che usa KNN
   - 
     id: 5e46f8edac417301a38fb930
-    title: Linear Regression Health Costs Calculator
+    title: Calcolatore di costi per la salute con la Regressione Lineare
   - 
     id: 5e46f8edac417301a38fb931
-    title: Neural Network SMS Text Classifier
+    title: Classificatore neurale di messaggi SMS
 
diff --git a/curriculum/challenges/italian/12-certificates/quality-assurance-certificate/quality-assurance-certificate.yml b/curriculum/challenges/italian/12-certificates/quality-assurance-certificate/quality-assurance-certificate.yml
index 5e229ba55c..54e505e219 100644
--- a/curriculum/challenges/italian/12-certificates/quality-assurance-certificate/quality-assurance-certificate.yml
+++ b/curriculum/challenges/italian/12-certificates/quality-assurance-certificate/quality-assurance-certificate.yml
@@ -1,22 +1,22 @@
 ---
 id: 5e611829481575a52dc59c0e
-title: Quality Assurance Certificate
+title: Certificato Garanzia di Qualità
 challengeType: 7
 isPrivate: true
 tests:
   - 
     id: 587d8249367417b2b2512c41
-    title: Metric-Imperial Converter
+    title: Convertitore Metrico-Imperiale
   - 
     id: 587d8249367417b2b2512c42
-    title: Issue Tracker
+    title: Tracciatore di Problemi
   - 
     id: 587d824a367417b2b2512c43
-    title: Personal Library
+    title: Biblioteca Personale
   - 
     id: 5e601bf95ac9d0ecd8b94afd
-    title: Sudoku Solver
+    title: Risolutore Sudoku
   - 
     id: 5e601c0d5ac9d0ecd8b94afe
-    title: American British Translator
+    title: Traduttore Americano Britannico
 
diff --git a/curriculum/challenges/italian/12-certificates/relational-databases-certificate/relational-databases-certificate.yml b/curriculum/challenges/italian/12-certificates/relational-databases-certificate/relational-databases-certificate.yml
index 1d01bf91d9..8ff874556c 100644
--- a/curriculum/challenges/italian/12-certificates/relational-databases-certificate/relational-databases-certificate.yml
+++ b/curriculum/challenges/italian/12-certificates/relational-databases-certificate/relational-databases-certificate.yml
@@ -1,21 +1,21 @@
 ---
 id: 606243f50267e718b1e755f4
-title: Relational Databases Certificate
+title: Certificato Database Relazionali
 challengeType: 7
 isPrivate: true
 tests:
   - 
     id: 5f1a4ef5d5d6b5ab580fc6ae
-    title: Celestial Bodies Database
+    title: Database Corpi Celesti
   - 
     id: 5f9771307d4d22b9d2b75a94
-    title: World Cup Database
+    title: Database Coppa Del Mondo
   - 
     id: 5f87ac112ae598023a42df1a
-    title: Salon Appointment Scheduler
+    title: Pianificatore Appuntamento Salone
   - 
     id: 602d9ff222201c65d2a019f2
-    title: Periodic Table Database
+    title: Database della Tavola Periodica
   - 
     id: 602da04c22201c65d2a019f4
     title: Final Boss
diff --git a/curriculum/challenges/italian/12-certificates/scientific-computing-with-python-certificate/scientific-computing-with-python-certificate.yml b/curriculum/challenges/italian/12-certificates/scientific-computing-with-python-certificate/scientific-computing-with-python-certificate.yml
index 1f2f103e94..a5f5bfa2de 100644
--- a/curriculum/challenges/italian/12-certificates/scientific-computing-with-python-certificate/scientific-computing-with-python-certificate.yml
+++ b/curriculum/challenges/italian/12-certificates/scientific-computing-with-python-certificate/scientific-computing-with-python-certificate.yml
@@ -1,21 +1,21 @@
 ---
 id: 5e44431b903586ffb414c951
-title: Scientific Computing with Python Certificate
+title: Certificato Calcolo scientifico con Python
 challengeType: 7
 isPrivate: true
 tests:
   - 
     id: 5e44412c903586ffb414c94c
-    title: Arithmetic Formatter
+    title: Formattatore aritmetico
   - 
     id: 5e444136903586ffb414c94d
-    title: Time Calculator
+    title: Calcolatrice del tempo
   - 
     id: 5e44413e903586ffb414c94e
-    title: Budget App
+    title: App per il budget
   - 
     id: 5e444147903586ffb414c94f
-    title: Polygon Area Calculator
+    title: Calcolatore dell'area dei poligoni
   - 
     id: 5e44414f903586ffb414c950
-    title: Probability Calculator
+    title: Calcolatore delle probabilità
diff --git a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md
index 7113a2ca4a..284991c644 100644
--- a/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md
+++ b/curriculum/challenges/portuguese/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md
@@ -33,7 +33,7 @@ assert(result[0] == '

'); `myRegex` deve ser preguiçosa ```js -assert(/\?/g.test(myRegex)); +assert(/[^\\][\*\+\?]\?/.test(myRegex)); ``` `myRegex` não deve incluir a string `h1` diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/connect-redux-to-react.md b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/connect-redux-to-react.md index b016ed7ef1..02b7950c37 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/connect-redux-to-react.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/connect-redux-to-react.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036147 -title: Connect Redux to React +title: Conecte o Redux ao React challengeType: 6 forumTopicId: 301426 dashedName: connect-redux-to-react @@ -8,23 +8,23 @@ dashedName: connect-redux-to-react # --description-- -Now that you've written both the `mapStateToProps()` and the `mapDispatchToProps()` functions, you can use them to map `state` and `dispatch` to the `props` of one of your React components. The `connect` method from React Redux can handle this task. This method takes two optional arguments, `mapStateToProps()` and `mapDispatchToProps()`. They are optional because you may have a component that only needs access to `state` but doesn't need to dispatch any actions, or vice versa. +Agora que você escreveu ambas as funções `mapStateToProps()` and the `mapDispatchToProps()`, você pode usá-las para mapear `state` e `dispatch` para `props` de um de seus componentes React. O método `connect` do Redux React pode lidar com essa tarefa. Esse método recebe dois argumentos opcionais, `mapStateToProps()` e `mapDispatchToProps()`. Eles são opcionais porque você pode ter um componente que precisa apenas acessar o `state`, mas não precisa despachar nenhuma ação, ou vice versa. -To use this method, pass in the functions as arguments, and immediately call the result with your component. This syntax is a little unusual and looks like: +Para usar esse método, passe nas funções como argumentos, e imediatamente chame o resultado com seu componente. Essa sintaxe é um pouco incomum e se parece com: ```js connect(mapStateToProps, mapDispatchToProps)(MyComponent) ``` -**Note:** If you want to omit one of the arguments to the `connect` method, you pass `null` in its place. +**Nota:** Se você quiser omitir um dos argumentos do método `connect`, você passa `null` no lugar. # --instructions-- -The code editor has the `mapStateToProps()` and `mapDispatchToProps()` functions and a new React component called `Presentational`. Connect this component to Redux with the `connect` method from the `ReactRedux` global object, and call it immediately on the `Presentational` component. Assign the result to a new `const` called `ConnectedComponent` that represents the connected component. That's it, now you're connected to Redux! Try changing either of `connect`'s arguments to `null` and observe the test results. +O editor de código tem as funções `mapStateToProps()` e `mapDispatchToProps()` e um novo componente React chamado `Presentational`. Conecte esse componente ao redux com o método `connect` do objeto global `ReactRedux`, e o chame imediatamente no componente `Presentational`. Atribua o resultado a uma nova `const` chamada `ConnectedComponent` que representa o componente conectado. É isso, agora você está conectado ao Redux! Tente alterar qualquer um dos argumentos de `connect` para `null` e observe os resultados do teste. # --hints-- -The `Presentational` component should render. +O componente `Presentational` deve renderizar. ```js assert( @@ -35,7 +35,7 @@ assert( ); ``` -The `Presentational` component should receive a prop `messages` via `connect`. +O componente `Presentational` deve receber uma prop `messages` via `connect`. ```js assert( @@ -47,7 +47,7 @@ assert( ); ``` -The `Presentational` component should receive a prop `submitNewMessage` via `connect`. +O componente `Presentational` deve receber uma prop `submitNewMessage` via `connect`. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/connect-redux-to-the-messages-app.md b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/connect-redux-to-the-messages-app.md index ce25f89ba6..3952626304 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/connect-redux-to-the-messages-app.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/connect-redux-to-the-messages-app.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036148 -title: Connect Redux to the Messages App +title: Conecte o Redux ao App de Mensagens challengeType: 6 forumTopicId: 301427 dashedName: connect-redux-to-the-messages-app @@ -8,17 +8,17 @@ dashedName: connect-redux-to-the-messages-app # --description-- -Now that you understand how to use `connect` to connect React to Redux, you can apply what you've learned to your React component that handles messages. +Agora que você entendeu como usar `connect` para conectar o React ao Redux, você pode aplicar o que aprendeu ao seus componentes React que lidam com mensagens. -In the last lesson, the component you connected to Redux was named `Presentational`, and this wasn't arbitrary. This term *generally* refers to React components that are not directly connected to Redux. They are simply responsible for the presentation of UI and do this as a function of the props they receive. By contrast, container components are connected to Redux. These are typically responsible for dispatching actions to the store and often pass store state to child components as props. +Na última lição, o componente que você conectou ao Redux foi nomeado `Presentational`, e isso não foi arbitrário. Esse termo *geralmente* refere-se a componentes React que não estão conectados diretamente ao Redux. Eles simplesmente são responsáveis pela apresentação da interface do usuário e fazem isso como uma função das props que recebem. Em contraste, os componentes de contêiner são conectados ao Redux. Estes são tipicamente responsáveis por despachar ações ao store e, frequentemente, passam o state do store para componentes filhos como props. # --instructions-- -The code editor has all the code you've written in this section so far. The only change is that the React component is renamed to `Presentational`. Create a new component held in a constant called `Container` that uses `connect` to connect the `Presentational` component to Redux. Then, in the `AppWrapper`, render the React Redux `Provider` component. Pass `Provider` the Redux `store` as a prop and render `Container` as a child. Once everything is setup, you will see the messages app rendered to the page again. +O editor de código tem todo o código que você escreveu nesta seção até agora. A única alteração é que o componente React é renomeado para `Presentational`. Crie um novo componente mantido em uma constante chamada `Container` que usa `connect` para conectar o componente `Presentational` ao Redux. Em seguida, no `AppWrapper`, renderize o componente `Provider` do Redux React. Passe `Provider` ao `store` do Redux como prop e renderize `Container` como filho. Assim que tudo estiver pronto, você verá as mensagens do app renderizados na página novamente. # --hints-- -The `AppWrapper` should render to the page. +O `AppWrapper` deve ser renderizardo na página. ```js assert( @@ -29,7 +29,7 @@ assert( ); ``` -The `Presentational` component should render to page. +O componente `Presentational` deve ser renderizado na página. ```js assert( @@ -40,7 +40,7 @@ assert( ); ``` -The `Presentational` component should render an `h2`, `input`, `button`, and `ul` elements. +O componente `Presentational` deve renderizar os elementos `h2`, `input`, `button`, e `ul`. ```js assert( @@ -57,7 +57,7 @@ assert( ); ``` -The `Presentational` component should receive `messages` from the Redux store as a prop. +O componente `Presentational` deve receber `messages` do store Redux como prop. ```js assert( @@ -70,7 +70,7 @@ assert( ); ``` -The `Presentational` component should receive the `submitMessage` action creator as a prop. +O componente `Presentational` deve receber o criador de ação `submitMessage` como prop. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/extract-local-state-into-redux.md b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/extract-local-state-into-redux.md index b1c4581f2e..9d8aa93f81 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/extract-local-state-into-redux.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/extract-local-state-into-redux.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036149 -title: Extract Local State into Redux +title: Extrair Estado Local para dentro do Redux challengeType: 6 forumTopicId: 301428 dashedName: extract-local-state-into-redux @@ -8,17 +8,17 @@ dashedName: extract-local-state-into-redux # --description-- -You're almost done! Recall that you wrote all the Redux code so that Redux could control the state management of your React messages app. Now that Redux is connected, you need to extract the state management out of the `Presentational` component and into Redux. Currently, you have Redux connected, but you are handling the state locally within the `Presentational` component. +Você está quase pronto! Lembre-se que você escreveu todo o código Redux para que o Redux pudesse controlar o gerenciamento de estado do seu aplicativo de mensagens React. Agora que o Redux está conectado, você precisa extrair o gerenciamento de estado do componente `Presentational` para o Redux. Atualmente, você tem o Redux conectado, mas está manipulando o estado localmente dentro do componente `Presentational`. # --instructions-- -In the `Presentational` component, first, remove the `messages` property in the local `state`. These messages will be managed by Redux. Next, modify the `submitMessage()` method so that it dispatches `submitNewMessage()` from `this.props`, and pass in the current message input from local `state` as an argument. Because you removed `messages` from local state, remove the `messages` property from the call to `this.setState()` here as well. Finally, modify the `render()` method so that it maps over the messages received from `props` rather than `state`. +No componente `Presentational`, primeiro, remova a propriedade `messages` no `state` local. Essas mensagens serão gerenciadas pelo Redux. Em seguida, modifique o método `submitMessage()` para que ele despache `submitNewMessage()` de `this.props`, e passe no input de mensagem atual do `state` local como um argumento. Como você removeu `mensagens` do state local, também remova aqui a propriedade `messages` da chamada para `this.setState()`. Finalmente, modifique o método `render()` para que ele mapeie as mensagens recebidas de `props` ao invés do `state`. -Once these changes are made, the app will continue to function the same, except Redux manages the state. This example also illustrates how a component may have local `state`: your component still tracks user input locally in its own `state`. You can see how Redux provides a useful state management framework on top of React. You achieved the same result using only React's local state at first, and this is usually possible with simple apps. However, as your apps become larger and more complex, so does your state management, and this is the problem Redux solves. +Quando essas alterações forem feitas, o aplicativo continuará a funcionar do mesmo jeito, exceto que o Redux gerencia o estado. Este exemplo também ilustra como um componente pode ter um `state` local: seu componente ainda monitora a entrada do usuário localmente em seu próprio `state`. Você pode ver como o Redux fornece um framework de gerenciamento de estado útil em cima do React. Você alcançou o mesmo resultado usando apenas o state local do React no início, e isso geralmente é possível com aplicativos simples. No entanto, como seus aplicativos se tornam maiores e mais complexos, seu gerenciamento de estado também fica mais complexo, e esse é o problema que o Redux resolve. # --hints-- -The `AppWrapper` should render to the page. +O `AppWrapper` deve ser renderizado na página. ```js assert( @@ -29,7 +29,7 @@ assert( ); ``` -The `Presentational` component should render to page. +O componente `Presentational` deve ser renderizado na página. ```js assert( @@ -40,7 +40,7 @@ assert( ); ``` -The `Presentational` component should render an `h2`, `input`, `button`, and `ul` elements. +O componente `Presentational` deve renderizar os elementos `h2`, `input`, `button` e `ul`. ```js assert( @@ -57,7 +57,7 @@ assert( ); ``` -The `Presentational` component should receive `messages` from the Redux store as a prop. +O componente `Presentational` deve receber `messages` do store Redux como prop. ```js assert( @@ -70,7 +70,7 @@ assert( ); ``` -The `Presentational` component should receive the `submitMessage` action creator as a prop. +O componente `Presentational` deve receber o criador de ação `submitMessage` como prop. ```js assert( @@ -83,7 +83,7 @@ assert( ); ``` -The state of the `Presentational` component should contain one property, `input`, which is initialized to an empty string. +O state do componente `Presentational` deve conter uma propriedade, `input`, a qual é inicializada como uma string vazia. ```js assert( @@ -100,7 +100,7 @@ assert( ); ``` -Typing in the `input` element should update the state of the `Presentational` component. +Digitar no elemento `input` deve atualizar o estado do componente `Presentational`. ```js async () => { @@ -124,7 +124,7 @@ async () => { }; ``` -Dispatching the `submitMessage` on the `Presentational` component should update Redux store and clear the input in local state. +Despachar o `submitMessage` no componente `Presentational` deve atualizar o store Redux e limpar o input no state local. ```js async () => { @@ -156,7 +156,7 @@ async () => { }; ``` -The `Presentational` component should render the `messages` from the Redux store. +O componente `Presentational` deve renderizar `messages` do store Redux. ```js async () => { diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/extract-state-logic-to-redux.md b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/extract-state-logic-to-redux.md index 6718ed802e..4f5d962971 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/extract-state-logic-to-redux.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/extract-state-logic-to-redux.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036143 -title: Extract State Logic to Redux +title: Extrair a Lógica de State do Redux challengeType: 6 forumTopicId: 301429 dashedName: extract-state-logic-to-redux @@ -8,23 +8,23 @@ dashedName: extract-state-logic-to-redux # --description-- -Now that you finished the React component, you need to move the logic it's performing locally in its `state` into Redux. This is the first step to connect the simple React app to Redux. The only functionality your app has is to add new messages from the user to an unordered list. The example is simple in order to demonstrate how React and Redux work together. +Agora que você terminou o componente React, você precisa mover a lógica que está sendo executada localmente em seu `state` para o Redux. Este é o primeiro passo para conectar um aplicativo React simples ao Redux. A única funcionalidade que o seu app possui é adicionar novas mensagens do usuário em uma lista não ordenada. O exemplo é simples para demonstrar como o React e Redux trabalham juntos. # --instructions-- -First, define an action type `ADD` and set it to a const `ADD`. Next, define an action creator `addMessage()` which creates the action to add a message. You'll need to pass a `message` to this action creator and include the message in the returned `action`. +Primeiro, defina um tipo de ação `ADD` e atribua ela a constante `ADD`. Em seguida, defina o criador de ação `addMessage()` o qual cria uma ação para adicionar uma mensagem. Você precisará passar `message` para esse criador de ação e incluir a mensagem na `action` retornada. -Then create a reducer called `messageReducer()` that handles the state for the messages. The initial state should equal an empty array. This reducer should add a message to the array of messages held in state, or return the current state. Finally, create your Redux store and pass it the reducer. +Em seguida, crie um reducer chamado `messageReducer()` que lida com o state para as mensagens. O state inicial deve ser igual a um array vazio. Este reducer deve adicionar uma mensagem ao array de mensagens mantidos no state, ou retornar o state atual. Finalmente, crie seu store Redux e passe o reducer. # --hints-- -The const `ADD` should exist and hold a value equal to the string `ADD` +A const `ADD` deve existir e manter um valor igual a string `ADD` ```js assert(ADD === 'ADD'); ``` -The action creator `addMessage` should return an object with `type` equal to `ADD` and `message` equal to the message that is passed in. +O criador de ação `addMessage` deve retornar um objeto com `type` igual a `ADD` e `message` igual à mensagem que foi passada. ```js assert( @@ -35,13 +35,13 @@ assert( ); ``` -`messageReducer` should be a function. +`messageReducer` deve ser uma função. ```js assert(typeof messageReducer === 'function'); ``` -The store should exist and have an initial state set to an empty array. +O store deve existir e ter um estado inicial definido como um array vazio. ```js assert( @@ -52,7 +52,7 @@ assert( ); ``` -Dispatching `addMessage` against the store should immutably add a new message to the array of messages held in state. +Despachar `addMessage` para o store deve imutavelmente adicionar uma nova mensagem ao array de mensagens mantido no state. ```js assert( @@ -66,7 +66,7 @@ assert( ); ``` -The `messageReducer` should return the current state if called with any other actions. +O `messageReducer` deve retornar o state atual se chamado com qualquer outra ação. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/getting-started-with-react-redux.md b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/getting-started-with-react-redux.md index 8bf764191f..4de8d4b241 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/getting-started-with-react-redux.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/getting-started-with-react-redux.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036141 -title: Getting Started with React Redux +title: Primeiros Passos com Redux React challengeType: 6 forumTopicId: 301430 dashedName: getting-started-with-react-redux @@ -8,19 +8,19 @@ dashedName: getting-started-with-react-redux # --description-- -This series of challenges introduces how to use Redux with React. First, here's a review of some of the key principles of each technology. React is a view library that you provide with data, then it renders the view in an efficient, predictable way. Redux is a state management framework that you can use to simplify the management of your application's state. Typically, in a React Redux app, you create a single Redux store that manages the state of your entire app. Your React components subscribe to only the pieces of data in the store that are relevant to their role. Then, you dispatch actions directly from React components, which then trigger store updates. +Essa série de desafio introduz como usar o Redux com React. Primeiro, aqui está uma revisão de alguns princípios chaves de cada tecnologia. React é uma biblioteca de visualização que você fornece dados, e então ele renderiza a visualização de uma forma eficiente e previsível. Redux é um framework de gerenciamento de estado que você usa para simplificar o gerenciamento do estado da sua aplicação. Tipicamente, em uma aplicação Redux React, você cria um único store Redux que gerencia o estado de todo o seu app. Seus componentes React inscrevem-se apenas aos pedaços de dados no store que são relevantes para suas responsabilidades. Em seguida, você despacha ações diretamente de componentes React, o que então aciona a atualização do store. -Although React components can manage their own state locally, when you have a complex app, it's generally better to keep the app state in a single location with Redux. There are exceptions when individual components may have local state specific only to them. Finally, because Redux is not designed to work with React out of the box, you need to use the `react-redux` package. It provides a way for you to pass Redux `state` and `dispatch` to your React components as `props`. +Embora componentes React podem gerenciar seus próprios estados localmente, quando você tem um app complexo, geralmente é melhor manter o estado do app em um único lugar com Redux. Existem exceções quando componentes individuais podem ter um estado local específico apenas para eles. Finalmente, como o redux não é projetado para trabalhar com o React puro, você precisa usar o pacote `react-redux`. Ele fornece uma forma de você passar o `state` e `dispatch` do Redux para seus componentes React como `props`. -Over the next few challenges, first, you'll create a simple React component which allows you to input new text messages. These are added to an array that's displayed in the view. This should be a nice review of what you learned in the React lessons. Next, you'll create a Redux store and actions that manage the state of the messages array. Finally, you'll use `react-redux` to connect the Redux store with your component, thereby extracting the local state into the Redux store. +Ao longo dos próximos desafios, primeiro, você criará um componente React simples que lhe permite inserir novas mensagens de texto. Estes são adicionados a um array que é exibido na exibição. Essa deve ser uma boa revisão do que você aprendeu nas lições do React. Em seguida, você vai criar um store e ações do Redux que gerenciam o estado do array de mensagens. Finalmente, você usará `react-redux` para conectar o store do Redux com seu componente, deste modo extraindo o state local para o store Redux. # --instructions-- -Start with a `DisplayMessages` component. Add a constructor to this component and initialize it with a state that has two properties: `input`, that's set to an empty string, and `messages`, that's set to an empty array. +Comece com o componente `DisplayMessages`. Adicione um construtor para esse componente e inicialize ele com um state com duas propriedades: `input`, que é definido como uma string vazia, e `messages`, que é definido para um array vazio. # --hints-- -The `DisplayMessages` component should render an empty `div` element. +O componente `DisplayMessages` deve renderizar um elemento `div` vazio. ```js assert( @@ -31,7 +31,7 @@ assert( ); ``` -The `DisplayMessages` constructor should be called properly with `super`, passing in `props`. +O construtor `DisplayMessages` deve ser chamado corretamente com `super`, passando `props`. ```js (getUserInput) => @@ -46,7 +46,7 @@ The `DisplayMessages` constructor should be called properly with `super`, passin ); ``` -The `DisplayMessages` component should have an initial state equal to `{input: "", messages: []}`. +O componente `DisplayMessages` deve ter um state inicial igual a `{input: "", messages: []}`. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/manage-state-locally-first.md b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/manage-state-locally-first.md index ec7c618f3d..4888779c00 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/manage-state-locally-first.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/manage-state-locally-first.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036142 -title: Manage State Locally First +title: Gerenciar State Localmente Primeiro challengeType: 6 forumTopicId: 301431 dashedName: manage-state-locally-first @@ -8,19 +8,19 @@ dashedName: manage-state-locally-first # --description-- -Here you'll finish creating the `DisplayMessages` component. +Aqui você terminará de criar o componente `DisplayMessages`. # --instructions-- -First, in the `render()` method, have the component render an `input` element, `button` element, and `ul` element. When the `input` element changes, it should trigger a `handleChange()` method. Also, the `input` element should render the value of `input` that's in the component's state. The `button` element should trigger a `submitMessage()` method when it's clicked. +Primeiro, no método `render()`, faça o componente renderizar os elementos `input`, `button` e `ul`. Quando o elemento `input` alterar, ele deve acionar o método `handleChange()`. Além disso, o elemento `input` deve renderizar o valor do `input` que está no state do componente. O elemento `button` deve acionar o método `submitMessage()` quando for clicado. -Second, write these two methods. The `handleChange()` method should update the `input` with what the user is typing. The `submitMessage()` method should concatenate the current message (stored in `input`) to the `messages` array in local state, and clear the value of the `input`. +Em segundo lugar, escreva esses dois métodos. O método `handleChange()` deve atualizar o `input` com o que o usuário digitar. O método `submitMessage()` deve concatenar a mensagem atual (armazenada em `input`) para o array `messages` no state local, e limpar o valor do `input`. -Finally, use the `ul` to map over the array of `messages` and render it to the screen as a list of `li` elements. +Finalmente, use o `ul` para mapear em cima do array `messages` e o renderize na tela como uma lista de elementos `li`. # --hints-- -The `DisplayMessages` component should initialize with a state equal to `{ input: "", messages: [] }`. +O componente `DisplayMessages` deve inicializar com o estado igual a `{ input: "", messages: []}`. ```js assert( @@ -36,7 +36,7 @@ assert( ); ``` -The `DisplayMessages` component should render a `div` containing an `h2` element, a `button` element, a `ul` element, and `li` elements as children. +O componente `DisplayMessages` deve renderizar um `div` contendo um elemento `h2`, um elemento `button`, um elemento `ul` e elementos `li` como filhos. ```js async () => { @@ -58,13 +58,13 @@ async () => { }; ``` -`.map` should be used on the `messages` array. +`.map` deve ser usado no array de `mensagens`. ```js assert(code.match(/this\.state\.messages\.map/g)); ``` -The `input` element should render the value of `input` in local state. +O elemento `input` deve renderizar o valor de `input` no state local. ```js async () => { @@ -83,7 +83,7 @@ async () => { }; ``` -Calling the method `handleChange` should update the `input` value in state to the current input. +Chamar o método `handleChange` deve atualizar o valor do `input` no state para o input atual. ```js async () => { @@ -106,7 +106,7 @@ async () => { }; ``` -Clicking the `Add message` button should call the method `submitMessage` which should add the current `input` to the `messages` array in state. +Clicar o botão `Add message` deve chamar o método `submitMessage` o qual deve adicionar o texto atual no `input` ao array `messages` no state. ```js async () => { @@ -149,7 +149,7 @@ async () => { }; ``` -The `submitMessage` method should clear the current input. +O método `submitMessage` deve limpar o input atual. ```js async () => { diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/map-dispatch-to-props.md b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/map-dispatch-to-props.md index 72dae912c2..0c776fdd97 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/map-dispatch-to-props.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/map-dispatch-to-props.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036146 -title: Map Dispatch to Props +title: Mapeie Dispatch para Props challengeType: 6 forumTopicId: 301432 dashedName: map-dispatch-to-props @@ -8,9 +8,9 @@ dashedName: map-dispatch-to-props # --description-- -The `mapDispatchToProps()` function is used to provide specific action creators to your React components so they can dispatch actions against the Redux store. It's similar in structure to the `mapStateToProps()` function you wrote in the last challenge. It returns an object that maps dispatch actions to property names, which become component `props`. However, instead of returning a piece of `state`, each property returns a function that calls `dispatch` with an action creator and any relevant action data. You have access to this `dispatch` because it's passed in to `mapDispatchToProps()` as a parameter when you define the function, just like you passed `state` to `mapStateToProps()`. Behind the scenes, React Redux is using Redux's `store.dispatch()` to conduct these dispatches with `mapDispatchToProps()`. This is similar to how it uses `store.subscribe()` for components that are mapped to `state`. +A função `mapDispatchToProps()` é usada para fornecer criadores de ação específicos para seus componentes React, para que eles possam despachar ações ao store Redux. É semelhante em estrutura à função `mapStateToProps()` que você escreveu no último desafio. Isso retorna um objeto que mapeia as ações de despache para nomes de propriedades, o que se torna `props` do componente. No entanto, em vez de retornar um pedaço do `state`, cada propriedade retorna uma função que chama `dispatch` com um criador de ação e quaisquer dados de ação relevantes. Você tem acesso a este `dispatch` porque ele foi passado para `mapDispatchToProps()` como um parâmetro quando você define a função, assim como você passou o estado `` para `mapStateToProps()`. Nos bastidores, React Redux está usando `store.dispatch()` do Redux para realizar estes despachos com `mapDispatchToProps()`. Isso é semelhante a como ele usa `store.subscribe()` para componentes que são mapeados para o `state`. -For example, you have a `loginUser()` action creator that takes a `username` as an action payload. The object returned from `mapDispatchToProps()` for this action creator would look something like: +Por exemplo, você tem o criador de ação `loginUser()` que recebe um `username` como uma ação payload. O objeto retornado do `mapDispatchToProps()` para este criador da ação pareceria algo como: ```jsx { @@ -22,11 +22,11 @@ For example, you have a `loginUser()` action creator that takes a `username` as # --instructions-- -The code editor provides an action creator called `addMessage()`. Write the function `mapDispatchToProps()` that takes `dispatch` as an argument, then returns an object. The object should have a property `submitNewMessage` set to the dispatch function, which takes a parameter for the new message to add when it dispatches `addMessage()`. +O editor de código fornece um criador de ação chamado `addMessage()`. Escreva a função `mapDispatchToProps()` que recebe `dispatch` como um argumento, e então retorna um objeto. O objeto deve ter a propriedade `submitNewMessage` definida para a função de despacho, que recebe um parâmetro para a nova mensagem a ser adicionada quando despachar `addMessage()`. # --hints-- -`addMessage` should return an object with keys `type` and `message`. +`addMessage` deve retornar um objeto com chaves `type` e `message`. ```js assert( @@ -40,19 +40,19 @@ assert( ); ``` -`mapDispatchToProps` should be a function. +`mapDispatchToProps` deve ser uma função. ```js assert(typeof mapDispatchToProps === 'function'); ``` -`mapDispatchToProps` should return an object. +`mapDispatchToProps` deve retornar um objeto. ```js assert(typeof mapDispatchToProps() === 'object'); ``` -Dispatching `addMessage` with `submitNewMessage` from `mapDispatchToProps` should return a message to the dispatch function. +Despachar `addMessage` com `submitNewMessage` do `mapDispatchToProps` deve retornar uma mensagem para a função de despachamento. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/map-state-to-props.md b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/map-state-to-props.md index e75b1fb34c..c9a027500f 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/map-state-to-props.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/map-state-to-props.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036145 -title: Map State to Props +title: Mapear State para Props challengeType: 6 forumTopicId: 301433 dashedName: map-state-to-props @@ -8,37 +8,37 @@ dashedName: map-state-to-props # --description-- -The `Provider` component allows you to provide `state` and `dispatch` to your React components, but you must specify exactly what state and actions you want. This way, you make sure that each component only has access to the state it needs. You accomplish this by creating two functions: `mapStateToProps()` and `mapDispatchToProps()`. +O componente `Provider` permite que você forneça `state` e `dispatch` para seus componentes React, mas você deve especificar exatamente que state e actions deseja. Desta forma, você tem certeza que cada componente só tem acesso ao state de que precisa. Você consegue isso criando duas funções: `mapStateToProps()` e `mapDispatchToProps()`. -In these functions, you declare what pieces of state you want to have access to and which action creators you need to be able to dispatch. Once these functions are in place, you'll see how to use the React Redux `connect` method to connect them to your components in another challenge. +Nessas funções, você declara quais pedaços do state você quer ter acesso e quais criadores de ação você precisa ser capaz de despachar. Quando essas funções estiverem no lugar, você verá como usar o método `connect` do React Redux para conectá-los aos seus componentes em outro desafio. -**Note:** Behind the scenes, React Redux uses the `store.subscribe()` method to implement `mapStateToProps()`. +**Nota:** Nos bastidores, o React Redux usa o método `store.subscribe()` para implementar `mapStateToProps()`. # --instructions-- -Create a function `mapStateToProps()`. This function should take `state` as an argument, then return an object which maps that state to specific property names. These properties will become accessible to your component via `props`. Since this example keeps the entire state of the app in a single array, you can pass that entire state to your component. Create a property `messages` in the object that's being returned, and set it to `state`. +Crie a função `mapStateToProps()`. Esta função deve receber `state` como um argumento, em seguida, retornar um objeto que mapeia esse state para nomes de propriedade específicos. Essas propriedades se tornarão acessíveis para o componente via `props`. Uma vez que esse exemplo mantém o estado inteiro do app em um único array, você pode passar todo o state para o seu componente. Cria uma propriedade `messages` no objeto que está sendo retornado e defina-a no `state`. # --hints-- -The const `state` should be an empty array. +A const `state` deve ser um array vazio. ```js assert(Array.isArray(state) && state.length === 0); ``` -`mapStateToProps` should be a function. +`mapStateToProps` deve ser uma função. ```js assert(typeof mapStateToProps === 'function'); ``` -`mapStateToProps` should return an object. +`mapStateToProps` deve retornar um objeto. ```js assert(typeof mapStateToProps() === 'object'); ``` -Passing an array as state to `mapStateToProps` should return this array assigned to a key of `messages`. +Passar um array como state para `mapStateToProps` deve retornar esse array atribuído à chave `messages`. ```js assert(mapStateToProps(['messages']).messages.pop() === 'messages'); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/moving-forward-from-here.md b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/moving-forward-from-here.md index b7921af1cc..e99205d145 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/moving-forward-from-here.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/moving-forward-from-here.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403614a -title: Moving Forward From Here +title: Movendo Adiante Daqui challengeType: 6 forumTopicId: 301434 dashedName: moving-forward-from-here @@ -8,19 +8,19 @@ dashedName: moving-forward-from-here # --description-- -Congratulations! You finished the lessons on React and Redux. There's one last item worth pointing out before you move on. Typically, you won't write React apps in a code editor like this. This challenge gives you a glimpse of what the syntax looks like if you're working with npm and a file system on your own machine. The code should look similar, except for the use of `import` statements (these pull in all of the dependencies that have been provided for you in the challenges). The "Managing Packages with npm" section covers npm in more detail. +Parabéns! Você concluiu as lições sobre React e Redux. Vale a pena destacar um último item antes de continuar. Normalmente, você não escreverá apps React em um editor de código como esse. Esse desafio dá-lhe um vislumbre de como a sintaxe se parece se você está trabalhando com o npm e um sistema de arquivos na sua própria máquina. O código deve ser similar, exceto para o uso de instruções de `import` (essas puxam em todas as dependências fornecidas para você nos desafios). A seção "Gerenciando pacotes com npm" cobre o npm com mais detalhes. -Finally, writing React and Redux code generally requires some configuration. This can get complicated quickly. If you are interested in experimenting on your own machine, the Create React App comes configured and ready to go. +Finalmente, escrever o React e o código Redux geralmente requerem alguma configuração. Isto pode tornar-se complicado rapidamente. Se você estiver interessado em experimentar em sua própria máquina, o Criar um App React vem configurado e pronto para ser usado. -Alternatively, you can enable Babel as a JavaScript Preprocessor in CodePen, add React and ReactDOM as external JavaScript resources, and work there as well. +Como alternativa, você pode habilitar o Babel como um pré-processador de JavaScript no CodePen, adicionar React e ReactDOM como recursos externos de JavaScript, e trabalhar lá também. # --instructions-- -Log the message `'Now I know React and Redux!'` to the console. +Exiba a mensagem `'Now I know React and Redux!'` no console. # --hints-- -The message `Now I know React and Redux!` should be logged to the console. +A mensagem `Now I know React and Redux!` deve ser exibida no console. ```js (getUserInput) => diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/use-provider-to-connect-redux-to-react.md b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/use-provider-to-connect-redux-to-react.md index dfef55cdd2..f36925f428 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/use-provider-to-connect-redux-to-react.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react-and-redux/use-provider-to-connect-redux-to-react.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036144 -title: Use Provider to Connect Redux to React +title: Use Provider para Conectar Redux ao React challengeType: 6 forumTopicId: 301435 dashedName: use-provider-to-connect-redux-to-react @@ -8,9 +8,9 @@ dashedName: use-provider-to-connect-redux-to-react # --description-- -In the last challenge, you created a Redux store to handle the messages array and created an action for adding new messages. The next step is to provide React access to the Redux store and the actions it needs to dispatch updates. React Redux provides its `react-redux` package to help accomplish these tasks. +No último desafio, você criou um store Redux para lidar com o array messages e criou uma ação para adicionar novas mensagens. O próximo passo é fornecer ao React o acesso ao store Redux e as ações que ele precise para despachar atualizações. React Redux fornece seu pacote `react-redux` para ajudar a realizar essas tarefas. -React Redux provides a small API with two key features: `Provider` and `connect`. Another challenge covers `connect`. The `Provider` is a wrapper component from React Redux that wraps your React app. This wrapper then allows you to access the Redux `store` and `dispatch` functions throughout your component tree. `Provider` takes two props, the Redux store and the child components of your app. Defining the `Provider` for an App component might look like this: +React Redux fornece uma pequena API com dois principais recursos: `Provider` e `connect`. Outro desafio cobre `connect`. O `Provider` é um componente encapsulador do Redux React que encapsula seu aplicativo React. Este wrapper permite então que você acesse o `store` Redux e funções de `dispatch` em toda a sua árvore de componentes. `Provider` usa duas props, o store do Redux e os componentes filhos do seu aplicativo. Definir o `Provider` para um componente do aplicativo pode se parecer com isto: ```jsx @@ -20,13 +20,13 @@ React Redux provides a small API with two key features: `Provider` and `connect` # --instructions-- -The code editor now shows all your Redux and React code from the past several challenges. It includes the Redux store, actions, and the `DisplayMessages` component. The only new piece is the `AppWrapper` component at the bottom. Use this top level component to render the `Provider` from `ReactRedux`, and pass the Redux store as a prop. Then render the `DisplayMessages` component as a child. Once you are finished, you should see your React component rendered to the page. +O editor de código agora mostra todos os seus códigos Redux e React dos vários desafios passados. Inclui o store, actions e o componente `DisplayMessages`. O único novo pedaço é o componente `AppWrapper` na parte inferior. Use este componente de nível superior para renderizar o `Provider` de `ReactRedux`, e passar ao store do Redux como uma propriedade. Em seguida, renderize o componente `DisplayMessages` como filho. Quando você terminar, você deve usar seu componente React renderizado para a página. -**Note:** React Redux is available as a global variable here, so you can access the Provider with dot notation. The code in the editor takes advantage of this and sets it to a constant `Provider` for you to use in the `AppWrapper` render method. +**Nota:** Redux React está disponível como uma variável global aqui, então você pode acessar o Provider com notação de ponto. O código no editor aproveita isso e o define para uma constante `Provider` para você usar no método de renderização `AppWrapper`. # --hints-- -The `AppWrapper` should render. +O `AppWrapper` deve renderizar. ```js assert( @@ -37,7 +37,7 @@ assert( ); ``` -The `Provider` wrapper component should have a prop of `store` passed to it, equal to the Redux store. +O componente wrapper do `Provider` deve ter uma propriedade `store` passada para ele, igual ao store do Redux. ```js (getUserInput) => @@ -51,7 +51,7 @@ The `Provider` wrapper component should have a prop of `store` passed to it, equ ); ``` -`DisplayMessages` should render as a child of `AppWrapper`. +`DisplayMessages` deve renderizar como filho de `AppWrapper`. ```js assert( @@ -64,7 +64,7 @@ assert( ); ``` -The `DisplayMessages` component should render an `h2`, `input`, `button`, and `ul` element. +O componente `DisplayMessages` deve renderizar os elementos `h2`, `input`, `button`, e `ul`. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/render-state-in-the-user-interface-another-way.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/render-state-in-the-user-interface-another-way.md index e1dd33ed04..14f1b651ed 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/render-state-in-the-user-interface-another-way.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/render-state-in-the-user-interface-another-way.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036172 -title: Render State in the User Interface Another Way +title: Renderizar Estado na Interface de Usuário de Outra Forma challengeType: 6 forumTopicId: 301408 dashedName: render-state-in-the-user-interface-another-way @@ -8,17 +8,17 @@ dashedName: render-state-in-the-user-interface-another-way # --description-- -There is another way to access `state` in a component. In the `render()` method, before the `return` statement, you can write JavaScript directly. For example, you could declare functions, access data from `state` or `props`, perform computations on this data, and so on. Then, you can assign any data to variables, which you have access to in the `return` statement. +Há outra forma de acessar o `state` em um componente. No método `render()`, antes da instrução `return`, você pode escrever JavaScript diretamente. Por exemplo, você poderia declarar funções, acessar dados de `state` ou `props`, executar computações nesses dados, entre outras coisas. Em seguida, você pode atribuir quaisquer dados para variáveis, que você tem acesso na instrução `return`. # --instructions-- -In the `MyComponent` render method, define a `const` called `name` and set it equal to the name value in the component's `state`. Because you can write JavaScript directly in this part of the code, you don't have to enclose this reference in curly braces. +No método de renderização do `MyComponent`, defina uma `const` chamada `name` e defina-a igual ao valor do nome no `state` do componente. Como você pode escrever JavaScript diretamente nesta parte do código, você não precisa incluir essa referência em chaves. -Next, in the return statement, render this value in an `h1` tag using the variable `name`. Remember, you need to use the JSX syntax (curly braces for JavaScript) in the return statement. +Em seguida, na instrução return, renderize este valor em uma tag `h1` usando a variável `name`. Lembre-se, você precisa usar a sintaxe JSX (chaves para JavaScript) na instrução de retorno. # --hints-- -`MyComponent` should have a key `name` with value `freeCodeCamp` stored in its state. +`MyComponent` deve ter uma chave `name` com o valor `freeCodeCamp` armazenado no seu state. ```js assert( @@ -27,7 +27,7 @@ assert( ); ``` -`MyComponent` should render an `h1` header enclosed in a single `div`. +`MyComponent` deve renderizar um título `h1` que está dentro de um único `div`. ```js assert( @@ -37,14 +37,14 @@ assert( ); ``` -The rendered `h1` tag should include a reference to `{name}`. +A tag `h1` renderizada deve ter uma referência a `{name}`. ```js (getUserInput) => assert(/

\n*\s*\{\s*name\s*\}\s*\n*<\/h1>/.test(getUserInput('index'))); ``` -The rendered `h1` header should contain text rendered from the component's state. +O título `h1` renderizado deve conter apenas texto renderizado do estado do componente. ```js async () => { diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/render-with-an-if-else-condition.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/render-with-an-if-else-condition.md index b56c814074..92f600e829 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/render-with-an-if-else-condition.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/render-with-an-if-else-condition.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036184 -title: Render with an If-Else Condition +title: Renderizar com uma condição If-Else challengeType: 6 forumTopicId: 301410 dashedName: render-with-an-if-else-condition @@ -8,17 +8,17 @@ dashedName: render-with-an-if-else-condition # --description-- -Another application of using JavaScript to control your rendered view is to tie the elements that are rendered to a condition. When the condition is true, one view renders. When it's false, it's a different view. You can do this with a standard `if/else` statement in the `render()` method of a React component. +Outra aplicação de usar JavaScript para controlar sua visão renderizada é associar os elementos que são renderizados em uma condição. Quando a condição é verdadeira, uma visão renderiza. Quando é falso, é uma visão diferente. Você pode fazer isso com uma instrução padrão `if/else` no método `render()` de um componente React. # --instructions-- -MyComponent contains a `boolean` in its state which tracks whether you want to display some element in the UI or not. The `button` toggles the state of this value. Currently, it renders the same UI every time. Rewrite the `render()` method with an `if/else` statement so that if `display` is `true`, you return the current markup. Otherwise, return the markup without the `h1` element. +MyComponent contém um `boolean` em seu estado que rastreia se você deseja exibir algum elemento na interface do usuário ou não. O `button` alterna o estado deste valor. No momento, ele renderiza a mesma interface do usuário todas as vezes. Reescreva o método `render()` com uma instrução `if/else` para que se `display` for `true`, você retorna a marcação atual. Caso contrário, retorne a marcação sem o elemento `h1`. -**Note:** You must write an `if/else` to pass the tests. Use of the ternary operator will not pass here. +**Nota:** Você deve escrever um `if/else` para passar nos testes. O uso do operador ternário não passará aqui. # --hints-- -`MyComponent` should exist and render. +`MyComponent` deve existir e renderizar. ```js assert( @@ -29,7 +29,7 @@ assert( ); ``` -When `display` is set to `true`, a `div`, `button`, and `h1` should render. +Quando `display` é definido como `true`, uma `div`, um `button`, e um `h1` devem renderizar. ```js async () => { @@ -50,7 +50,7 @@ async () => { }; ``` -When `display` is set to `false`, only a `div` and `button` should render. +Quando `display` é definido como `false`, apenas uma `div` e um `button` devem renderizar. ```js async () => { @@ -71,7 +71,7 @@ async () => { }; ``` -The render method should use an `if/else` statement to check the condition of `this.state.display`. +O método de renderização deve usar um comando `if/else` para verificar a condição de `this.state.display`. ```js (getUserInput) => diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/review-using-props-with-stateless-functional-components.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/review-using-props-with-stateless-functional-components.md index c9d751ce8d..b7cdc7831e 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/review-using-props-with-stateless-functional-components.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/review-using-props-with-stateless-functional-components.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403616f -title: Review Using Props with Stateless Functional Components +title: Revise Uso de Props com Componentes Funcionais Sem Estado challengeType: 6 forumTopicId: 301411 dashedName: review-using-props-with-stateless-functional-components @@ -8,19 +8,19 @@ dashedName: review-using-props-with-stateless-functional-components # --description-- -Except for the last challenge, you've been passing props to stateless functional components. These components act like pure functions. They accept props as input and return the same view every time they are passed the same props. You may be wondering what state is, and the next challenge will cover it in more detail. Before that, here's a review of the terminology for components. +Exceto pelo último desafio, você tem passado "props" para componentes funcionais sem estado. Esses componentes agem como funções puras. Eles aceitam props como entrada e retornam a mesma view toda vez que eles são passados nas mesmas props. Você pode estar se perguntando o que é state, e o próximo desafio o abordará com mais detalhes. Antes disso, aqui está uma revisão da terminologia para componentes. -A *stateless functional component* is any function you write which accepts props and returns JSX. A *stateless component*, on the other hand, is a class that extends `React.Component`, but does not use internal state (covered in the next challenge). Finally, a *stateful component* is a class component that does maintain its own internal state. You may see stateful components referred to simply as components or React components. +Um *componente funcional stateless (sem estado)* é qualquer função que você escreve que aceita props e retorna JSX. Um *componente stateless (sem estado)*, por outro lado, é uma classe que estende `React.Component`, mas não usa estado interno (abordado no próximo desafio). Finalmente, um *componente stateful (com estado)* é um componente de classe que mantém seu próprio estado interno. Você pode ver componentes de estado referidos simplesmente como componentes ou componentes React. -A common pattern is to try to minimize statefulness and to create stateless functional components wherever possible. This helps contain your state management to a specific area of your application. In turn, this improves development and maintenance of your app by making it easier to follow how changes to state affect its behavior. +Um padrão comum é tentar minimizar statefulness e criar componentes funcionais sem estado, sempre que possível. Isso ajuda a conter sua gestão de estado para uma área específica de sua aplicação. Por sua vez, isso melhora o desenvolvimento e a manutenção do seu aplicativo, tornando mais fácil acompanhar como alterações no estado afetam seu comportamento. # --instructions-- -The code editor has a `CampSite` component that renders a `Camper` component as a child. Define the `Camper` component and assign it default props of `{ name: 'CamperBot' }`. Inside the `Camper` component, render any code that you want, but make sure to have one `p` element that includes only the `name` value that is passed in as a `prop`. Finally, define `propTypes` on the `Camper` component to require `name` to be provided as a prop and verify that it is of type `string`. +O editor de código tem um componente `CampSite` que renderiza um componente `Camper` como filho. Defina o componente `Camper` e atribua-lhe as propriedades padrão de `{ name: 'CamperBot' }`. Dentro do componente `Camper`, renderize qualquer código que você quiser, mas certifique-se de ter um elemento `p` que inclua apenas o valor `name` que é passado como uma `prop`. Finalmente defina `propTypes` no componente `Camper` para exigir que o `name` seja fornecido como uma prop e verifique se é do tipo `string`. # --hints-- -The `CampSite` component should render. +O componente `CampSite` deve ser renderizado. ```js assert( @@ -31,7 +31,7 @@ assert( ); ``` -The `Camper` component should render. +O componente `Camper` deve ser renderizado. ```js assert( @@ -42,7 +42,7 @@ assert( ); ``` -The `Camper` component should include default props which assign the string `CamperBot` to the key `name`. +O componente `Camper` deve incluir a props padrão que atribui a string `CamperBot` à chave `name`. ```js assert( @@ -52,7 +52,7 @@ assert( ); ``` -The `Camper` component should include prop types which require the `name` prop to be of type `string`. +O componente `Camper` deve incluir tipo de prop, o que obriga que a prop `name` seja do tipo `string`. ```js assert( @@ -62,7 +62,7 @@ assert( ); ``` -The `Camper` component should contain a `p` element with only the text from the `name` prop. +O componente `Camper` deve conter um elemento `p` com apenas o texto da prop `name`. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/set-state-with-this.setstate.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/set-state-with-this.setstate.md index 93b387efc9..b12d72e5f8 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/set-state-with-this.setstate.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/set-state-with-this.setstate.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036173 -title: Set State with this.setState +title: Definir estado com this.setState challengeType: 6 forumTopicId: 301412 dashedName: set-state-with-this-setstate @@ -8,7 +8,7 @@ dashedName: set-state-with-this-setstate # --description-- -The previous challenges covered component `state` and how to initialize state in the `constructor`. There is also a way to change the component's `state`. React provides a method for updating component `state` called `setState`. You call the `setState` method within your component class like so: `this.setState()`, passing in an object with key-value pairs. The keys are your state properties and the values are the updated state data. For instance, if we were storing a `username` in state and wanted to update it, it would look like this: +Os desafios anteriores abordaram `state` de componente e como inicializar state no `construtor`. Há também uma maneira de alterar o `state` do componente. React fornece um método para atualizar o componente `state` chamado `setState`. Você chama o método `setState` dentro da sua classe de componente assim: `this.setState()`, passando como parâmetro um objeto com pares de valor chave. As chaves são suas propriedades do estado e os valores são dados do estado atualizados. Por exemplo, se armazenássemos um `username` em state e quiséssemos atualizá-lo, ficaria assim: ```jsx this.setState({ @@ -16,17 +16,17 @@ this.setState({ }); ``` -React expects you to never modify `state` directly, instead always use `this.setState()` when state changes occur. Also, you should note that React may batch multiple state updates in order to improve performance. What this means is that state updates through the `setState` method can be asynchronous. There is an alternative syntax for the `setState` method which provides a way around this problem. This is rarely needed but it's good to keep it in mind! Please consult the [React documentation](https://facebook.github.io/react/docs/state-and-lifecycle.html) for further details. +React espera que você nunca modifique o `state` diretamente, em vez disso sempre use `this.setState()` quando as mudanças de estado ocorrerem. Além disso, você deve notar que React pode agrupar várias atualizações de estado para melhorar o desempenho. Isso significa que atualizações de estado através do método `setState` podem ser assíncronas. Existe uma sintaxe alternativa para o método `setState` que fornece uma forma de contornar esse problema. Isso raramente é necessário, mas é bom ter isso em mente! Por favor, consulte a [documentação do React](https://facebook.github.io/react/docs/state-and-lifecycle.html) para mais detalhes. # --instructions-- -There is a `button` element in the code editor which has an `onClick()` handler. This handler is triggered when the `button` receives a click event in the browser, and runs the `handleClick` method defined on `MyComponent`. Within the `handleClick` method, update the component `state` using `this.setState()`. Set the `name` property in `state` to equal the string `React Rocks!`. +Há um elemento`button` no editor de código que tem um manipulador `onClick()`. Este manipulador é acionado quando o `button` recebe um evento de clique no navegador e executa o método `handleClick` definido no `MyComponent`. Dentro do método `handleClick`, atualize o componente `state` usando `this.setState()`. Defina a propriedade `name` no `state` para ser igual à string `React Rocks!`. -Click the button and watch the rendered state update. Don't worry if you don't fully understand how the click handler code works at this point. It's covered in upcoming challenges. +Clique no botão e veja a atualização do estado renderizado. Não se preocupe se você não entender completamente como o código do manipulador de cliques funciona neste momento. Será abordado nos desafios futuros. # --hints-- -The state of `MyComponent` should initialize with the key value pair `{ name: Initial State }`. +O state de `MyComponent` deve inicializar com o par de chave e valor `{ name: Initial State }`. ```js assert( @@ -35,13 +35,13 @@ assert( ); ``` -`MyComponent` should render an `h1` header. +`MyComponent` deve retornar um título `h1`. ```js assert(Enzyme.mount(React.createElement(MyComponent)).find('h1').length === 1); ``` -The rendered `h1` header should contain text rendered from the component's state. +O título `h1` renderizado deve conter apenas texto renderizado do estado do componente. ```js async () => { @@ -57,7 +57,7 @@ async () => { }; ``` -Calling the `handleClick` method on `MyComponent` should set the name property in state to equal `React Rocks!`. +Chamar o método `handleClick` no `MyComponent` deve definir a propriedade name em state para igual a `React Rocks!`. ```js async () => { diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/use--for-a-more-concise-conditional.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/use--for-a-more-concise-conditional.md index 0f13747bc3..67bf794cb1 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/use--for-a-more-concise-conditional.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/use--for-a-more-concise-conditional.md @@ -8,21 +8,21 @@ dashedName: use--for-a-more-concise-conditional # --description-- -The `if/else` statements worked in the last challenge, but there's a more concise way to achieve the same result. Imagine that you are tracking several conditions in a component and you want different elements to render depending on each of these conditions. If you write a lot of `else if` statements to return slightly different UIs, you may repeat code which leaves room for error. Instead, you can use the `&&` logical operator to perform conditional logic in a more concise way. This is possible because you want to check if a condition is `true`, and if it is, return some markup. Here's an example: +As declarações `if/else` funcionaram no último desafio, mas há uma maneira mais concisa de alcançar o mesmo resultado. Imagine que está a monitorar várias condições num componente e que pretende que diferentes elementos sejam renderizados, dependendo de cada uma destas condições. Se você escrever muitas instruções `else if` para retornar interfaces de usuário ligeiramente diferentes, você pode repetir código o que deixa espaço para erros. Ao invés disso, você pode usar o operador lógico `&&` para executar a lógica condicional de uma forma mais concisa. Isto é possível porque você quer verificar se uma condição é `verdadeira`, e se é, retorna uma marcação. Um exemplo: ```jsx {condition &&

markup

} ``` -If the `condition` is `true`, the markup will be returned. If the condition is `false`, the operation will immediately return `false` after evaluating the `condition` and return nothing. You can include these statements directly in your JSX and string multiple conditions together by writing `&&` after each one. This allows you to handle more complex conditional logic in your `render()` method without repeating a lot of code. +Se a `condition` for `verdadeira`, a marcação será retornada. Se a condição for `falsa`, a operação retornará imediatamente `false` após avaliar a `condition` e não retornará nada. Você pode incluir essas declarações diretamente em seu JSX e juntar várias condições, escrevendo `&&` após cada uma. Isso permite que você lide com uma lógica condicional mais complexa em seu método `render()` sem repetir muito código. # --instructions-- -Solve the previous example again, so the `h1` only renders if `display` is `true`, but use the `&&` logical operator instead of an `if/else` statement. +Resolva o exemplo anterior novamente, para que `h1` renderize apenas se `display` for `true`, mas use o operador lógico `&&` ao invés de uma instrução `if/else`. # --hints-- -`MyComponent` should exist and render. +`MyComponent` deve existir e renderizar. ```js assert( @@ -33,7 +33,7 @@ assert( ); ``` -When `display` is set to `true`, a `div`, `button`, and `h1` should render. +Quando `display` é definido como `true`, uma `div`, um `button`, e um `h1` devem renderizar. ```js async () => { @@ -54,7 +54,7 @@ async () => { }; ``` -When `display` is set to `false`, only a `div` and `button` should render. +Quando `display` é definido como `false`, apenas uma `div` e um `button` devem renderizar. ```js async () => { @@ -75,7 +75,7 @@ async () => { }; ``` -The render method should use the `&&` logical operator to check the condition of `this.state.display`. +O método de renderização deve usar o operador lógico `&&` para verificar a condição de `this.state.display`. ```js (getUserInput) => assert(getUserInput('index').includes('&&')); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-a-ternary-expression-for-conditional-rendering.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-a-ternary-expression-for-conditional-rendering.md index 3329290523..f4aff8a51f 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-a-ternary-expression-for-conditional-rendering.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-a-ternary-expression-for-conditional-rendering.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036187 -title: Use a Ternary Expression for Conditional Rendering +title: Usar uma Expressão Ternária para Renderização Condicional challengeType: 6 forumTopicId: 301414 dashedName: use-a-ternary-expression-for-conditional-rendering @@ -8,7 +8,7 @@ dashedName: use-a-ternary-expression-for-conditional-rendering # --description-- -Before moving on to dynamic rendering techniques, there's one last way to use built-in JavaScript conditionals to render what you want: the ternary operator. The ternary operator is often utilized as a shortcut for `if/else` statements in JavaScript. They're not quite as robust as traditional `if/else` statements, but they are very popular among React developers. One reason for this is because of how JSX is compiled, `if/else` statements can't be inserted directly into JSX code. You might have noticed this a couple challenges ago — when an `if/else` statement was required, it was always *outside* the `return` statement. Ternary expressions can be an excellent alternative if you want to implement conditional logic within your JSX. Recall that a ternary operator has three parts, but you can combine several ternary expressions together. Here's the basic syntax: +Antes de seguir para técnicas de renderização dinâmica, Há uma última maneira de usar condicionais de JavaScript incorporadas para renderizar o que você quer: o operador ternário. O operador ternário é frequentemente utilizado como um atalho para comandos `if/else` em JavaScript. Eles não são tão robustos quanto as declarações tradicionais `if/else`, mas são muito populares entre desenvolvedores React. Uma das razões para isso é devido a como JSX é compilado, instruções `if/else` não podem ser inseridas diretamente no código JSX. Você pode ter percebido isso há alguns desafios — quando uma instrução `if/else` foi necessária, estava sempre *fora* da instrução `return`. Expressões Ternárias podem ser uma excelente alternativa se você deseja implementar a lógica condicional dentro de seu JSX. Lembre que um operador ternário tem três partes, mas você pode combinar várias expressões ternárias juntas. Aqui está a sintaxe básica: ```jsx condition ? expressionIfTrue : expressionIfFalse; @@ -16,24 +16,23 @@ condition ? expressionIfTrue : expressionIfFalse; # --instructions-- -The code editor has three constants defined within the `CheckUserAge` component's `render()` method. They are called `buttonOne`, `buttonTwo`, and `buttonThree`. Each of these is assigned a simple JSX expression representing a button element. First, initialize the state of `CheckUserAge` with `input` and `userAge` both set to values of an empty string. +O editor de código tem três constantes definidas dentro do método `render()` do componente `CheckUserAge`. Eles são chamados de `buttonOne`, `buttonTwo` e `buttonThree`. A cada uma destas é atribuída uma simples expressão JSX representando um elemento de botão. Primeiro, inicialize o estado de `CheckUserAge` com `input` e `userAge` definidos com valores de uma string vazia. -Once the component is rendering information to the page, users should have a way to interact with it. Within the component's `return` statement, set up a ternary expression that implements the following logic: when the page first loads, render the submit button, `buttonOne`, to the page. Then, when a user enters their age and clicks the button, render a different button based on the age. If a user enters a number less than `18`, render `buttonThree`. If a user enters a number greater than or equal to `18`, render `buttonTwo`. +Uma vez que o componente está renderizando informações na página, os usuários devem ter uma maneira de interagir com ele. Dentro da instrução `return` do componente, configure uma expressão ternária que implementa a seguinte lógica: quando a página primeiro carrega, renderizar o botão de envio, `buttonOne`, para a página. Então, quando um usuário digita sua idade e clica no botão, renderize um botão diferente baseado na idade. Se um usuário inserir um número menor que `18`, renderize `buttonThree`. Se um usuário inserir um número maior ou igual a `18`, renderize `buttonTwo`. # --hints-- -The `CheckUserAge` component should render with a single `input` element and a single `button` element. +O componente `CheckUserAge` deve renderizar com um único elemento `input` e um único elementobutton`.

-```js -assert( +
assert(
   Enzyme.mount(React.createElement(CheckUserAge)).find('div').find('input')
     .length === 1 &&
     Enzyme.mount(React.createElement(CheckUserAge)).find('div').find('button')
       .length === 1
 );
-```
+`
-The `CheckUserAge` component's state should be initialized with a property of `userAge` and a property of `input`, both set to a value of an empty string. +O state do componente `CheckUserAge` deve ser inicializado com uma propriedade de `userAge` e uma propriedade `input`, ambos definidos com o valor de uma string vazia. ```js assert( @@ -42,7 +41,7 @@ assert( ); ``` -When the `CheckUserAge` component is first rendered to the DOM, the `button`'s inner text should be Submit. +Quando o componente `CheckUserAge` é renderizado pela primeira vez no DOM, o texto interno do `button` deve ser enviado. ```js assert( @@ -51,7 +50,7 @@ assert( ); ``` -When a number of less than 18 is entered into the `input` element and the `button` is clicked, the `button`'s inner text should read `You Shall Not Pass`. +Quando um número menor que 18 for inserido no elemento `input` e o `button` for clicado, o texto interno do `button` será `You Shall Not Pass`. ```js (() => { @@ -83,7 +82,7 @@ When a number of less than 18 is entered into the `input` element and the `butto })(); ``` -When a number greater than or equal to 18 is entered into the `input` element and the `button` is clicked, the `button`'s inner text should read `You May Enter`. +Quando um número maior ou igual a 18 for inserido no elemento `input` e o `button` for clicado, o texto interno do `button` deve ler `You May Enter`. ```js (() => { @@ -115,7 +114,7 @@ When a number greater than or equal to 18 is entered into the `input` element an })(); ``` -Once a number has been submitted, and the value of the `input` is once again changed, the `button` should return to reading `Submit`. +Uma vez que um número for enviado, e o valor do `input` é novamente alterado, o texto interno do `button` deve voltar a ser `Submit`. ```js (() => { @@ -156,7 +155,7 @@ Once a number has been submitted, and the value of the `input` is once again cha })(); ``` -Your code should not contain any `if/else` statements. +Seu código não deve conter nenhuma instrução `if/else`. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-advanced-javascript-in-react-render-method.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-advanced-javascript-in-react-render-method.md index d9bccebbf2..8c39a9e958 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-advanced-javascript-in-react-render-method.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-advanced-javascript-in-react-render-method.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036183 -title: Use Advanced JavaScript in React Render Method +title: Use JavaScript Avançado no Método de Renderização do React challengeType: 6 forumTopicId: 301415 dashedName: use-advanced-javascript-in-react-render-method @@ -8,27 +8,26 @@ dashedName: use-advanced-javascript-in-react-render-method # --description-- -In previous challenges, you learned how to inject JavaScript code into JSX code using curly braces, `{ }`, for tasks like accessing props, passing props, accessing state, inserting comments into your code, and most recently, styling your components. These are all common use cases to put JavaScript in JSX, but they aren't the only way that you can utilize JavaScript code in your React components. +Nos desafios anteriores, você aprendeu como injetar o código JavaScript em JSX usando chaves `{ }`, para tarefas como acessar props, passar props, acessar o state, inserir comentários em seu código e, mais recentemente, estilizar seus componentes. Estes são todos os casos de uso comuns para colocar JavaScript em JSX, mas eles não são a única maneira de você usar o código JavaScript em seus componentes React. -You can also write JavaScript directly in your `render` methods, before the `return` statement, ***without*** inserting it inside of curly braces. This is because it is not yet within the JSX code. When you want to use a variable later in the JSX code *inside* the `return` statement, you place the variable name inside curly braces. +Você também pode escrever JavaScript diretamente nos seus métodos de `render`, antes da instrução `return`, ***sem*** inseri-lo dentro de chaves. Isto é devido a ainda não está dentro do código JSX. Quando você quiser usar uma variável mais tarde no código JSX *dentro* da instrução `return`, você coloca o nome da variável dentro de chaves. # --instructions-- -In the code provided, the `render` method has an array that contains 20 phrases to represent the answers found in the classic 1980's Magic Eight Ball toy. The button click event is bound to the `ask` method, so each time the button is clicked a random number will be generated and stored as the `randomIndex` in state. On line 52, delete the string `change me!` and reassign the `answer` const so your code randomly accesses a different index of the `possibleAnswers` array each time the component updates. Finally, insert the `answer` const inside the `p` tags. +No código fornecido, o método `render` tem uma matriz que contém 20 frases para representar as respostas encontradas no clássico brinquedo da Bola de Oito Mágica de 1980. O evento de clique no botão está ligado ao método `ask`, então cada vez que o botão é clicado um número aleatório será gerado e armazenado como o `randomIndex` no state. Na linha 52, exclua a string `change me!` e reatribua a const `answer` para que seu código acesse aleatoriamente um índice diferente do array `possibleAnswers` a cada vez que o componente atualizar. Finalmente, insira a const `answer` dentro das tags `p`. # --hints-- -The `MagicEightBall` component should exist and should render to the page. +O componente MagicEightBall` deve existir e deve renderizar à página.

-```js -assert.strictEqual( +
assert.strictEqual(
   Enzyme.mount(React.createElement(MagicEightBall)).find('MagicEightBall')
     .length,
   1
 );
-```
+`
-`MagicEightBall`'s first child should be an `input` element. +O primeiro filho de `MagicEightBall` deve ser um elemento `input`. ```js assert.strictEqual( @@ -40,7 +39,7 @@ assert.strictEqual( ); ``` -`MagicEightBall`'s third child should be a `button` element. +O terceiro filho de `MagicEightBall` deve ser um elemento `button`. ```js assert.strictEqual( @@ -52,7 +51,7 @@ assert.strictEqual( ); ``` -`MagicEightBall`'s state should be initialized with a property of `userInput` and a property of `randomIndex` both set to a value of an empty string. +`MagicEightBall`deve ser inicializado com uma propriedade `userInput` e uma propriedade `randomIndex` ambas definidas com o valor de uma string vazia. ```js assert( @@ -62,7 +61,7 @@ assert( ); ``` -When `MagicEightBall` is first mounted to the DOM, it should return an empty `p` element. +Quando `MagicEightBall` for montado pela primeira vez no DOM, ele deve retornar um elemento `p` vazio. ```js assert( @@ -71,7 +70,7 @@ assert( ); ``` -When text is entered into the `input` element and the button is clicked, the `MagicEightBall` component should return a `p` element that contains a random element from the `possibleAnswers` array. +Quando o texto é inserido no elemento `input` e o botão é clicado, o componente `MagicEightBall` deve retornar um elemento `p` que contém um elemento aleatório do array `possibleAnswers`. ```js (() => { diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-array.filter-to-dynamically-filter-an-array.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-array.filter-to-dynamically-filter-an-array.md index 9aa54c9672..b1e047c6a9 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-array.filter-to-dynamically-filter-an-array.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-array.filter-to-dynamically-filter-an-array.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403618c -title: Use Array.filter() to Dynamically Filter an Array +title: Use Array.filter() para Filtrar Dinamicamente um Array challengeType: 6 forumTopicId: 301416 dashedName: use-array-filter-to-dynamically-filter-an-array @@ -8,7 +8,7 @@ dashedName: use-array-filter-to-dynamically-filter-an-array # --description-- -The `map` array method is a powerful tool that you will use often when working with React. Another method related to `map` is `filter`, which filters the contents of an array based on a condition, then returns a new array. For example, if you have an array of users that all have a property `online` which can be set to `true` or `false`, you can filter only those users that are online by writing: +O método de array `map` é uma ferramenta poderosa que você usará muitas vezes ao trabalhar com React. Outro método relacionado a `map` é o `filter`, o qual filtra o conteúdo de um array baseado em uma condição, em seguida retorna um novo array. Por exemplo, se você tem um array de usuários que todo usuário têm a propriedade `online` que pode ser definida como `true` ou `false`, você pode filtrar apenas aqueles usuários que estão online escrevendo: ```js let onlineUsers = users.filter(user => user.online); @@ -16,11 +16,11 @@ let onlineUsers = users.filter(user => user.online); # --instructions-- -In the code editor, `MyComponent`'s `state` is initialized with an array of users. Some users are online and some aren't. Filter the array so you see only the users who are online. To do this, first use `filter` to return a new array containing only the users whose `online` property is `true`. Then, in the `renderOnline` variable, map over the filtered array, and return a `li` element for each user that contains the text of their `username`. Be sure to include a unique `key` as well, like in the last challenges. +No editor de código, o `state` de `MyComponent` é inicializado com um array de usuários. Alguns usuários estão online e outros não. Filtre o array para que você veja apenas os usuários que estão online. Para isso, primeiro use `filter` para retornar um novo array contendo apenas os usuários os quais possuem a propriedade `online` como `true`. Em seguida, na variável `renderOnline`, mapeie sobre o array filtrado e retorne um elemento `li` para cada usuário que contem o texto de seus `username`. Garante que você inclua uma `key` única, como nos últimos desafios. # --hints-- -`MyComponent` should exist and render to the page. +`MyComponent` deve existir e ser rendizado na página. ```js assert.strictEqual( @@ -29,7 +29,7 @@ assert.strictEqual( ); ``` -`MyComponent`'s state should be initialized to an array of six users. +O state de `MyComponent` deve ser inicializado com um array de seis usuários. ```js assert( @@ -40,7 +40,7 @@ assert( ); ``` -`MyComponent` should return a `div`, an `h1`, and then an unordered list containing `li` elements for every user whose online status is set to `true`. +`MyComponent` deve retornar os elementos `div`, `h1` e em seguida uma lista não ordenada contendo elementos `li` para cada usuário que possui o status online como sendo `true (verdadeiro)`. ```js (() => { @@ -83,7 +83,7 @@ assert( })(); ``` -`MyComponent` should render `li` elements that contain the `username` of each online user. +`MyComponent` deve renderizar elementos `li` que contêm o `username` de cada usuário online. ```js (() => { @@ -109,7 +109,7 @@ assert( })(); ``` -Each list item element should have a unique `key` attribute. +Cada item de elemento da lista deve ter um atributo `key` único. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-array.map-to-dynamically-render-elements.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-array.map-to-dynamically-render-elements.md index 0d6cca62f6..9b93712e86 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-array.map-to-dynamically-render-elements.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-array.map-to-dynamically-render-elements.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403618a -title: Use Array.map() to Dynamically Render Elements +title: Use Array.map() para Renderizar Elementos Dinamicamente challengeType: 6 forumTopicId: 301417 dashedName: use-array-map-to-dynamically-render-elements @@ -8,21 +8,21 @@ dashedName: use-array-map-to-dynamically-render-elements # --description-- -Conditional rendering is useful, but you may need your components to render an unknown number of elements. Often in reactive programming, a programmer has no way to know what the state of an application is until runtime, because so much depends on a user's interaction with that program. Programmers need to write their code to correctly handle that unknown state ahead of time. Using `Array.map()` in React illustrates this concept. +Renderização condicional é útil, mas você pode precisar de seus componentes para renderizar um número desconhecido de elementos. Muitas vezes em programação reativa, um programador não tem como saber o estado de uma aplicação até o tempo de execução, porque muito depende da interação do usuário com esse programa. Os programadores precisam escrever o seu código para lidar corretamente com esse estado desconhecido antes do tempo. Usar `Array.map()` em React ilustra este conceito. -For example, you create a simple "To Do List" app. As the programmer, you have no way of knowing how many items a user might have on their list. You need to set up your component to dynamically render the correct number of list elements long before someone using the program decides that today is laundry day. +Por exemplo, você cria um aplicativo "Lista de Coisas a Fazer" simples. Como programador, você não tem como saber quantos itens um usuário pode ter em sua lista. Você precisa configurar seu componente para renderizar dinamicamente o número correto de elementos da lista muito antes de alguém usar o programa decidir que hoje é o dia da lavagem. # --instructions-- -The code editor has most of the `MyToDoList` component set up. Some of this code should look familiar if you completed the controlled form challenge. You'll notice a `textarea` and a `button`, along with a couple of methods that track their states, but nothing is rendered to the page yet. +O editor de código tem a maioria do componente `MyToDoList` configurado. Parte deste código deve parecer familiar se você completou o desafio de formulário controlado. Você notará um `textarea` e um `button`, junto com alguns métodos que rastreiam seus estados, mas nada é renderizado na página ainda. -Inside the `constructor`, create a `this.state` object and define two states: `userInput` should be initialized as an empty string, and `toDoList` should be initialized as an empty array. Next, delete the comment in the `render()` method next to the `items` variable. In its place, map over the `toDoList` array stored in the component's internal state and dynamically render a `li` for each item. Try entering the string `eat, code, sleep, repeat` into the `textarea`, then click the button and see what happens. +Dentro do `construtor`, crie um objeto `this.state` e defina dois estados: `userInput` deve ser inicializado como uma string vazia, e `toDoList` deve ser inicializado como um array vazio. Em seguida, exclua o comentário no método `render()` ao lado da variável `itens`. Em seu lugar, mapeie sobre o array `toDoList` armazenado no estado interno do componente e renderize dinamicamente um `li` para cada item. Tente inserir a string `eat, code, sleep, repeat` dentro do `textarea`, depois clique no botão e veja o que acontece. -**Note:** You may know that all sibling child elements created by a mapping operation like this do need to be supplied with a unique `key` attribute. Don't worry, this is the topic of the next challenge. +**Nota:** Você pode saber que todos os elementos filhos do irmão criados por uma operação de mapeamento como esta precisam ser fornecidos com um atributo `key` exclusivo. Não se preocupe, este é o tema do próximo desafio. # --hints-- -The MyToDoList component should exist and render to the page. +O componente MyToDoList deve existir e renderizar à página. ```js assert( @@ -33,7 +33,7 @@ assert( ); ``` -The first child of `MyToDoList` should be a `textarea` element. +O primeiro filho do `MyToDoList` deve ser um elemento `textarea`. ```js assert( @@ -47,7 +47,7 @@ assert( ); ``` -The second child of `MyToDoList` should be a `br` element. +O segundo filho do `MyToDoList` deve ser um elemento `br`. ```js assert( @@ -60,7 +60,7 @@ assert( ); ``` -The third child of `MyToDoList` should be a `button` element. +O terceiro filho do `MyToDoList` deve ser um elemento `button`. ```js assert( @@ -74,7 +74,7 @@ assert( ); ``` -The state of `MyToDoList` should be initialized with `toDoList` as an empty array. +O estado de `MyToDoList` deve ser inicializado com `toDoList` como um array vazio. ```js assert( @@ -89,7 +89,7 @@ assert( ); ``` -The state of `MyToDoList` should be initialized with `userInput` as an empty string. +O estado de `MyToDoList` deve ser inicializado com `userInput` como uma string vazia. ```js assert( @@ -104,7 +104,7 @@ assert( ); ``` -When the `Create List` button is clicked, the `MyToDoList` component should dynamically return an unordered list that contains a list item element for every item of a comma-separated list entered into the `textarea` element. +Quando o botão `Create List` é clicado, o componente `MyToDoList` deve retornar, dinamicamente, uma lista não ordenada que contém um elemento de item de lista para cada item de uma lista separada por vírgulas inserida no elemento `textarea`. ```js (() => { diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-default-props.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-default-props.md index 1f048ada95..d2fc258828 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-default-props.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-default-props.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403616b -title: Use Default Props +title: Usar Propriedades Padrão challengeType: 6 forumTopicId: 301418 dashedName: use-default-props @@ -8,15 +8,15 @@ dashedName: use-default-props # --description-- -React also has an option to set default props. You can assign default props to a component as a property on the component itself and React assigns the default prop if necessary. This allows you to specify what a prop value should be if no value is explicitly provided. For example, if you declare `MyComponent.defaultProps = { location: 'San Francisco' }`, you have defined a location prop that's set to the string `San Francisco`, unless you specify otherwise. React assigns default props if props are undefined, but if you pass `null` as the value for a prop, it will remain `null`. +React também tem uma opção para definir as propriedades padrão. Você pode atribuir propriedades padrão a um componente como uma propriedade no próprio componente e o React atribui a propriedade padrão se necessário. Isso permite que você especifique qual deve ser um valor da propriedade se nenhum valor for explicitamente fornecido. Por exemplo, se você declarar `MyComponent.defaultProps = { location: 'San Francisco' }`, você definiu uma propriedade de localização definida para a string `San Francisco`, a menos que você especifique de outra forma. React atribui propriedades padrão se "props" forem indefinidas, mas se você passar `null` como o valor para uma prop, continuará `null`. # --instructions-- -The code editor shows a `ShoppingCart` component. Define default props on this component which specify a prop `items` with a value of `0`. +O editor de código mostra um componente `ShoppingCart`. Defina as props padrão neste componente que especifica um objeto `items` com um valor de `0`. # --hints-- -The `ShoppingCart` component should render. +O componente `ShoppingCart` deve renderizar. ```js assert( @@ -27,7 +27,7 @@ assert( ); ``` -The `ShoppingCart` component should have a default prop of `{ items: 0 }`. +O componente `ShoppingCart` deve ter uma propriedade padrão de `{ items: 0 }`. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-proptypes-to-define-the-props-you-expect.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-proptypes-to-define-the-props-you-expect.md index 2c6a725994..0c7a2e7f56 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-proptypes-to-define-the-props-you-expect.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-proptypes-to-define-the-props-you-expect.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403616d -title: Use PropTypes to Define the Props You Expect +title: Use PropTypes para definir os Props que Você Espera challengeType: 6 forumTopicId: 301419 dashedName: use-proptypes-to-define-the-props-you-expect @@ -8,25 +8,25 @@ dashedName: use-proptypes-to-define-the-props-you-expect # --description-- -React provides useful type-checking features to verify that components receive props of the correct type. For example, your application makes an API call to retrieve data that you expect to be in an array, which is then passed to a component as a prop. You can set `propTypes` on your component to require the data to be of type `array`. This will throw a useful warning when the data is of any other type. +React fornece recursos úteis de checagem de tipos para verificar se os componentes recebem propriedades do tipo correto. Por exemplo, o seu aplicativo faz uma chamada de API para recuperar dados que você espera estar em um array, que é então passado para um componente como uma prop. Você pode definir `propTypes` no seu componente para exigir que os dados sejam do tipo `array`. Isso lançará um aviso útil quando os dados forem de qualquer outro tipo. -It's considered a best practice to set `propTypes` when you know the type of a prop ahead of time. You can define a `propTypes` property for a component in the same way you defined `defaultProps`. Doing this will check that props of a given key are present with a given type. Here's an example to require the type `function` for a prop called `handleClick`: +É considerada uma boa prática definir `propTypes` quando você sabe o tipo de uma "prop" antes do tempo. Você pode definir uma propriedade `propTypes` para um componente da mesma forma que você definiu `defaultProps`. Fazendo isso irá verificar se "props" de uma determinada chave estão presentes com um determinado tipo. Aqui está um exemplo para exigir o tipo `function` para uma propriedade chamada `handleClick`: ```js MyComponent.propTypes = { handleClick: PropTypes.func.isRequired } ``` -In the example above, the `PropTypes.func` part checks that `handleClick` is a function. Adding `isRequired` tells React that `handleClick` is a required property for that component. You will see a warning if that prop isn't provided. Also notice that `func` represents `function`. Among the seven JavaScript primitive types, `function` and `boolean` (written as `bool`) are the only two that use unusual spelling. In addition to the primitive types, there are other types available. For example, you can check that a prop is a React element. Please refer to the [documentation](https://reactjs.org/docs/jsx-in-depth.html#specifying-the-react-element-type) for all of the options. +No exemplo acima, a parte `PropTypes.func` verifica se `handleClick` é uma função. Adicionando `isRequired` diz ao React que `handleClick` é uma propriedade necessária para esse componente. Você verá um aviso se essa propriedade não for fornecida. Também observe que `func` representa `function`. Entre os sete tipos primitivos de JavaScript, `function` e `boolean` (escrito como `bool`) são os únicos dois que usam ortografia incomum. Além dos tipos primitivos, existem outros tipos disponíveis. Por exemplo, você pode verificar que uma prop é um elemento React. Por favor, consulte a [documentação](https://reactjs.org/docs/jsx-in-depth.html#specifying-the-react-element-type) para todas as opções. -**Note:** As of React v15.5.0, `PropTypes` is imported independently from React, like this: `import PropTypes from 'prop-types';` +**Nota:** A partir do React v15.5.0, `PropTypes` é importado independentemente do React, como: `import PropTypes from 'prop-types';` # --instructions-- -Define `propTypes` for the `Items` component to require `quantity` as a prop and verify that it is of type `number`. +Defina `propTypes` para o componente `Items` para exigir `quantity` como uma propriedade e verifique se é do tipo `number`. # --hints-- -The `ShoppingCart` component should render. +O componente `ShoppingCart` deve renderizar. ```js assert( @@ -37,7 +37,7 @@ assert( ); ``` -The `Items` component should render. +O componente `Items` deve renderizar. ```js assert( @@ -48,7 +48,7 @@ assert( ); ``` -The `Items` component should include a `propTypes` check to require a value for `quantity` and ensure that its value is a number. +O componente `Items` deve incluir uma verificação de `propTypes` para exigir um valor para a `quantity` e garantir que o seu valor é um número. ```js (getUserInput) => diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-react-to-render-nested-components.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-react-to-render-nested-components.md index 3f98507054..e0118fe116 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-react-to-render-nested-components.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-react-to-render-nested-components.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036165 -title: Use React to Render Nested Components +title: Usar React para Renderizar Componentes Aninhados challengeType: 6 forumTopicId: 301420 dashedName: use-react-to-render-nested-components @@ -8,23 +8,23 @@ dashedName: use-react-to-render-nested-components # --description-- -The last challenge showed a simple way to compose two components, but there are many different ways you can compose components with React. +O último desafio mostrou uma maneira simples de compor dois componentes, mas há muitas maneiras diferentes que você pode compor componentes com React. -Component composition is one of React's powerful features. When you work with React, it is important to start thinking about your user interface in terms of components like the App example in the last challenge. You break down your UI into its basic building blocks, and those pieces become the components. This helps to separate the code responsible for the UI from the code responsible for handling your application logic. It can greatly simplify the development and maintenance of complex projects. +Composição de componente é uma das funcionalidades poderosas do React. Ao trabalhar com React, é importante começar a pensar na sua interface de usuário em termos de componentes como o App exemplo no último desafio. Você divide sua interface de usuário em seus blocos de construção básicos, e essas peças se tornam os componentes. Isso ajuda a separar o código responsável pela interface do usuário do código responsável por lidar com a lógica da sua aplicação. Pode simplificar grandemente o desenvolvimento e a manutenção de projectos complexos. # --instructions-- -There are two functional components defined in the code editor, called `TypesOfFruit` and `Fruits`. Take the `TypesOfFruit` component and compose it, or *nest* it, within the `Fruits` component. Then take the `Fruits` component and nest it within the `TypesOfFood` component. The result should be a child component, nested within a parent component, which is nested within a parent component of its own! +Existem dois componentes funcionais definidos no editor de código, chamados `TypesOfFruit` e `Fruits`. Pegue o componente `TypesOfFruit` e componha, ou *nest* ele dentro do componente `Fruits`. Em seguida, pegue o componente `Fruits` e aninhe-o dentro do componente `TypesOfFood`. O resultado deve ser um componente filho, aninhado em um componente pai, que está aninhado dentro do seu próprio componente pai! # --hints-- -The `TypesOfFood` component should return a single `div` element. +O componente `TypesOfFood` deve retornar um único elemento `div`. ```js assert(Enzyme.shallow(React.createElement(TypesOfFood)).type() === 'div'); ``` -The `TypesOfFood` component should return the `Fruits` component. +O componente `TypesOfFood` deve retornar o component `Fruits`. ```js assert( @@ -33,7 +33,7 @@ assert( ); ``` -The `Fruits` component should return the `TypesOfFruit` component. +O componente `Fruits` deve retornar o component `TypesOfFruit`. ```js assert( @@ -42,7 +42,7 @@ assert( ); ``` -The `TypesOfFruit` component should return the `h2` and `ul` elements. +O componente `TypesOfFood` deve retornar os elementos `h2` e `ul`. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-state-to-toggle-an-element.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-state-to-toggle-an-element.md index d4b7578928..b1d3bbf52d 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-state-to-toggle-an-element.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-state-to-toggle-an-element.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036176 -title: Use State to Toggle an Element +title: Usar State para Alternar um Elemento challengeType: 6 forumTopicId: 301421 dashedName: use-state-to-toggle-an-element @@ -8,7 +8,7 @@ dashedName: use-state-to-toggle-an-element # --description-- -Sometimes you might need to know the previous state when updating the state. However, state updates may be asynchronous - this means React may batch multiple `setState()` calls into a single update. This means you can't rely on the previous value of `this.state` or `this.props` when calculating the next value. So, you should not use code like this: +Às vezes você pode precisar saber o estado anterior ao atualizar o estado. No entanto, atualizações de estado podem ser assíncronas - isso significa que React pode fazer várias chamadas `setState()` em uma única atualização. Isto significa que você não pode confiar no valor anterior de `this.state` ou `this.props` ao calcular o próximo valor. Então, você não deve usar códigos como este: ```jsx this.setState({ @@ -16,7 +16,7 @@ this.setState({ }); ``` -Instead, you should pass `setState` a function that allows you to access state and props. Using a function with `setState` guarantees you are working with the most current values of state and props. This means that the above should be rewritten as: +Ao invés disso, você deve passar a `setState` uma função que lhe permite acessar state e props. Usando uma função com `setState` garante que você está trabalhando com os valores mais atuais de state e props. Isto significa que o acima deve ser reescrito como: ```jsx this.setState((state, props) => ({ @@ -24,7 +24,7 @@ this.setState((state, props) => ({ })); ``` -You can also use a form without `props` if you need only the `state`: +Você também pode usar um formulário sem `props` se você precisar apenas do `state`: ```jsx this.setState(state => ({ @@ -32,21 +32,21 @@ this.setState(state => ({ })); ``` -Note that you have to wrap the object literal in parentheses, otherwise JavaScript thinks it's a block of code. +Observe que você tem que envolver o objeto literalmente entre parênteses, caso contrário, JavaScript pensa que é um bloco de código. # --instructions-- -`MyComponent` has a `visibility` property which is initialized to `false`. The render method returns one view if the value of `visibility` is true, and a different view if it is false. +`MyComponent` tem uma propriedade `visibilty` que foi inicializada como `false`. O método de renderização retorna uma view se o valor de `visibility` for verdadeiro e uma view diferente se for falsa. -Currently, there is no way of updating the `visibility` property in the component's `state`. The value should toggle back and forth between true and false. There is a click handler on the button which triggers a class method called `toggleVisibility()`. Pass a function to `setState` to define this method so that the `state` of `visibility` toggles to the opposite value when the method is called. If `visibility` is `false`, the method sets it to `true`, and vice versa. +Atualmente, não há forma de atualizar a propriedade `visibility` no `state` do componente. O valor deve alternar entre verdadeiro e falso. Há um manipulador de cliques no botão que aciona um método de classe chamado `toggleVisibility()`. Passe uma função para `setState` para definir esse método para que o `state` de `visibility` alterne para o valor oposto quando o método for chamado. Se `visibilidade` for `falso`, o método define para `verdadeiro`, e vice-versa. -Finally, click the button to see the conditional rendering of the component based on its `state`. +Finalmente, clique no botão para ver a renderização condicional do componente com base no seu `state`. -**Hint:** Don't forget to bind the `this` keyword to the method in the `constructor`! +**Dica:** Não se esqueça de vincular a palavra-chave `this` ao método no `construtor`! # --hints-- -`MyComponent` should return a `div` element which contains a `button`. +`MyComponent` deve retornar um elemento `div` que contém um `button`. ```js assert.strictEqual( @@ -56,7 +56,7 @@ assert.strictEqual( ); ``` -The state of `MyComponent` should initialize with a `visibility` property set to `false`. +O state de `MyComponent` deve inicializar com uma propriedade `visibility` definida como `false`. ```js assert.strictEqual( @@ -65,7 +65,7 @@ assert.strictEqual( ); ``` -Clicking the button element should toggle the `visibility` property in state between `true` and `false`. +Clicar no elemento do botão deve alternar a propriedade `visibility` no state entre `true` e `false`. ```js (() => { @@ -89,7 +89,7 @@ Clicking the button element should toggle the `visibility` property in state bet })(); ``` -An anonymous function should be passed to `setState`. +Uma função anônima deve ser passada para `setState`. ```js const paramRegex = '[a-zA-Z$_]\\w*(,[a-zA-Z$_]\\w*)?'; @@ -104,7 +104,7 @@ assert( ); ``` -`this` should not be used inside `setState` +`this` não deve ser usado dentro de `setState` ```js assert(!/this\.setState\([^}]*this/.test(code)); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-the-lifecycle-method-componentdidmount.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-the-lifecycle-method-componentdidmount.md index f20b192ce8..55213df31b 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-the-lifecycle-method-componentdidmount.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-the-lifecycle-method-componentdidmount.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403617d -title: Use the Lifecycle Method componentDidMount +title: Use o Método do Ciclo de Vida componentDidMount challengeType: 6 forumTopicId: 301422 dashedName: use-the-lifecycle-method-componentdidmount @@ -8,17 +8,17 @@ dashedName: use-the-lifecycle-method-componentdidmount # --description-- -Most web developers, at some point, need to call an API endpoint to retrieve data. If you're working with React, it's important to know where to perform this action. +A maioria dos desenvolvedores web, em algum momento, precisa chamar uma rota de uma API para recuperar dados. Se você está trabalhando com React, é importante saber onde executar esta ação. -The best practice with React is to place API calls or any calls to your server in the lifecycle method `componentDidMount()`. This method is called after a component is mounted to the DOM. Any calls to `setState()` here will trigger a re-rendering of your component. When you call an API in this method, and set your state with the data that the API returns, it will automatically trigger an update once you receive the data. +A melhor prática com React é colocar chamadas de API ou qualquer chamada para seu servidor no método do ciclo de vida `componentDidMount()`. Este método é chamado depois que um componente é montado no DOM. Qualquer chamada para `setState()` aqui ativará uma re-renderização do componente. Quando você chamar uma API neste método, e definir seu estado com os dados que a API retorna, ele automaticamente acionará uma atualização quando receber os dados. # --instructions-- -There is a mock API call in `componentDidMount()`. It sets state after 2.5 seconds to simulate calling a server to retrieve data. This example requests the current total active users for a site. In the render method, render the value of `activeUsers` in the `h1` after the text `Active Users:`. Watch what happens in the preview, and feel free to change the timeout to see the different effects. +Há uma chamada de API simulada em `componentDidMount()`. Ele define o estado após 2.5 segundos para simular a chamada de um servidor para recuperar dados. Este exemplo solicita o total de usuários ativos atuais para um site. No método de renderização, renderiza o valor de `activeUsers` no `h1` após o texto `Active Users:`. Observe o que acontece na pré-visualização e sinta-se livre para mudar o tempo limite para ver os diferentes efeitos. # --hints-- -`MyComponent` should render a `div` element which wraps an `h1` tag. +`MyComponent` deve renderizar um elemento `div` o qual envolve a tag `h1`. ```js assert( @@ -32,7 +32,7 @@ assert( ); ``` -Component state should be updated with a timeout function in `componentDidMount`. +State do componente deve ser atualizado com uma função de timeout em `componentDidMount`. ```js assert( @@ -45,7 +45,7 @@ assert( ); ``` -The `h1` tag should render the `activeUsers` value from `MyComponent`'s state. +A tag `h1` deve renderizar o valor `activeUsers` do state de `MyComponent`. ```js (() => { diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-the-lifecycle-method-componentwillmount.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-the-lifecycle-method-componentwillmount.md index 6095a48eed..fd9c9ad637 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/use-the-lifecycle-method-componentwillmount.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/use-the-lifecycle-method-componentwillmount.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403617c -title: Use the Lifecycle Method componentWillMount +title: Use o Método do Ciclo de Vida componentWillMount challengeType: 6 forumTopicId: 301423 dashedName: use-the-lifecycle-method-componentwillmount @@ -8,17 +8,17 @@ dashedName: use-the-lifecycle-method-componentwillmount # --description-- -React components have several special methods that provide opportunities to perform actions at specific points in the lifecycle of a component. These are called lifecycle methods, or lifecycle hooks, and allow you to catch components at certain points in time. This can be before they are rendered, before they update, before they receive props, before they unmount, and so on. Here is a list of some of the main lifecycle methods: `componentWillMount()` `componentDidMount()` `shouldComponentUpdate()` `componentDidUpdate()` `componentWillUnmount()` The next several lessons will cover some of the basic use cases for these lifecycle methods. +Componentes React tem vários métodos especiais que fornecem oportunidades de executar ações em pontos específicos do ciclo de vida de um componente. Esses são chamados métodos do ciclo de vida, ou ganchos do ciclo de vida, e permitem que você capture componentes em certos pontos do tempo. Isso pode ser antes que sejam renderizados, antes que eles atualizem, antes que eles recebam props, antes que eles desmontem e assim por diante. Aqui está uma lista de alguns dos principais métodos do ciclo de vida: `componentWillMount()` `componentDidMount()` `shouldComponentUpdate()` `componentDidUpdate()` `componentWillUnmount()` As próximas aulas cobrirão alguns dos casos de uso básicos para estes métodos de ciclo de vida. -**Note:** The `componentWillMount` Lifecycle method will be deprecated in a future version of 16.X and removed in version 17. [(Source)](https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html) +**Nota:** O método do ciclo de vida `componentWillMount` será descontinuado em uma versão futura de 16.X e removido na versão 17. [(Fonte)](https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html) # --instructions-- -The `componentWillMount()` method is called before the `render()` method when a component is being mounted to the DOM. Log something to the console within `componentWillMount()` - you may want to have your browser console open to see the output. +O método `componentWillMount()` é chamado antes do método `render()` quando um componente está sendo montado no DOM. Registre algo no console dentro de `componentWillMount()` - você pode querer que seu console do navegador esteja aberto para ver a saída. # --hints-- -`MyComponent` should render a `div` element. +`MyComponent` deve retornar um elemento `div`. ```js assert( @@ -29,7 +29,7 @@ assert( ); ``` -`console.log` should be called in `componentWillMount`. +`console.log` deve ser chamado em `componentWillMount`. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/write-a-react-component-from-scratch.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/write-a-react-component-from-scratch.md index 83cf8603ab..f688cfa313 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/write-a-react-component-from-scratch.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/write-a-react-component-from-scratch.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036168 -title: Write a React Component from Scratch +title: Escreva um Componente React do Zero challengeType: 6 forumTopicId: 301424 dashedName: write-a-react-component-from-scratch @@ -8,17 +8,17 @@ dashedName: write-a-react-component-from-scratch # --description-- -Now that you've learned the basics of JSX and React components, it's time to write a component on your own. React components are the core building blocks of React applications so it's important to become very familiar with writing them. Remember, a typical React component is an ES6 `class` which extends `React.Component`. It has a render method that returns HTML (from JSX) or `null`. This is the basic form of a React component. Once you understand this well, you will be prepared to start building more complex React projects. +Agora que você aprendeu os conceitos básicos de componentes JSX e React, é hora de escrever um componente por conta própria. Componentes React são os blocos centrais de construção de aplicações React, por isso é importante se familiarizar com a escrita. Lembre-se, um componente típico React é uma classe `ES6` que estende `React.Component`. Ele possui um método de renderização que retorna HTML (a partir de JSX) ou `null`. Essa é a forma básica de um componente React. Assim que você entender bem, você estará preparado para começar a construir projetos mais complexos em React. # --instructions-- -Define a class `MyComponent` that extends `React.Component`. Its render method should return a `div` that contains an `h1` tag with the text: `My First React Component!` in it. Use this text exactly, the case and punctuation matter. Make sure to call the constructor for your component, too. +Define uma classe `MyComponent` que estende `React.Component`. Seu método de renderização deve retornar uma `div` que contém uma tag `h1` com o texto: `My First React Component!` nela. Use este texto exatamente, letras maiúsculas e minúsculas, e pontuação importam. Certifique-se de chamar o construtor para seu componente também. -Render this component to the DOM using `ReactDOM.render()`. There is a `div` with `id='challenge-node'` available for you to use. +Renderize este componente para o DOM usando `ReactDOM.render()`. Há um `div` com `id='challenge-node'` disponível para você usar. # --hints-- -There should be a React component called `MyComponent`. +Deve haver um componente React chamado `MyComponent`. ```js (getUserInput) => @@ -29,7 +29,7 @@ There should be a React component called `MyComponent`. ); ``` -`MyComponent` should contain an `h1` tag with text `My First React Component!` Case and punctuation matter. +`MeuComponente` deve conter uma tag `h1` com texto `My First React Component!` Letras maiúsculas e minúsculas, e pontuação importam. ```js assert( @@ -40,13 +40,13 @@ assert( ); ``` -`MyComponent` should render to the DOM. +`MyComponent` deve existir e ser rendizado no DOM. ```js assert(document.getElementById('challenge-node').childNodes.length === 1); ``` -`MyComponent` should have a constructor calling `super` with `props`. +`MyComponent` deve ter um construtor chamando `super` com `props`. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/react/write-a-simple-counter.md b/curriculum/challenges/portuguese/03-front-end-libraries/react/write-a-simple-counter.md index 9522c78e54..c1afb139d8 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/react/write-a-simple-counter.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/react/write-a-simple-counter.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036177 -title: Write a Simple Counter +title: Escrever um Contador Simples challengeType: 6 forumTopicId: 301425 dashedName: write-a-simple-counter @@ -8,17 +8,17 @@ dashedName: write-a-simple-counter # --description-- -You can design a more complex stateful component by combining the concepts covered so far. These include initializing `state`, writing methods that set `state`, and assigning click handlers to trigger these methods. +Você pode projetar um componente de estado mais complexo combinando os conceitos abordados até agora. Estes incluem inicializar o `state`, escrever métodos que definem `state`, e atribuir manipuladores de cliques para acionar esses métodos. # --instructions-- -The `Counter` component keeps track of a `count` value in `state`. There are two buttons which call methods `increment()` and `decrement()`. Write these methods so the counter value is incremented or decremented by 1 when the appropriate button is clicked. Also, create a `reset()` method so when the reset button is clicked, the count is set to 0. +O componente `Counter` mantém controle de um valor `count` em `state`. Existem dois botões que chamam os métodos `increment()` e `decrement()`. Escreva esses métodos para que o valor do contador seja incrementado ou decrementado por 1 quando o botão apropriado for clicado. Além disso, crie um método `reset()`, para que quando o botão reset é clicado, a contagem é definida como 0. -**Note:** Make sure you don't modify the `className`s of the buttons. Also, remember to add the necessary bindings for the newly-created methods in the constructor. +**Nota:** Certifique-se de não modificar o `className` dos botões. Lembre-se também de adicionar as ligações necessárias para os métodos recém-criados no construtor. # --hints-- -`Counter` should return a `div` element which contains three buttons with text content in this order `Increment!`, `Decrement!`, `Reset`. +`Counter` deve retornar um elemento `div` que contém três botões com conteúdo de texto nesta ordem `Increment!`, `Decrement!`, `Reset`. ```js assert( @@ -33,14 +33,14 @@ assert( ); ``` -The state of `Counter` should initialize with a `count` property set to `0`. +O estado de `Counter` deve inicializar com a propriedade `count` definida como `0`. ```js const mockedComponent = Enzyme.mount(React.createElement(Counter)); assert(mockedComponent.find('h1').text() === 'Current Count: 0'); ``` -Clicking the increment button should increment the count by `1`. +Clicar no botão increment deve incrementar a contagem em `1`. ```js const mockedComponent = Enzyme.mount(React.createElement(Counter)); @@ -48,7 +48,7 @@ mockedComponent.find('.inc').simulate('click'); assert(mockedComponent.find('h1').text() === 'Current Count: 1'); ``` -Clicking the decrement button should decrement the count by `1`. +Clicar no botão decrement deve decrementar a contagem em `1`. ```js const mockedComponent = Enzyme.mount(React.createElement(Counter)); @@ -56,7 +56,7 @@ mockedComponent.find('.dec').simulate('click'); assert(mockedComponent.find('h1').text() === 'Current Count: -1'); ``` -Clicking the reset button should reset the count to `0`. +Clicando no botão reset deve redefinir a contagem para `0`. ```js const mockedComponent = Enzyme.mount(React.createElement(Counter)); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/combine-multiple-reducers.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/combine-multiple-reducers.md index 741bfc9c6a..e9464557bc 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/combine-multiple-reducers.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/combine-multiple-reducers.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036154 -title: Combine Multiple Reducers +title: Combinar Múltiplos Reducers challengeType: 6 forumTopicId: 301436 dashedName: combine-multiple-reducers @@ -8,11 +8,11 @@ dashedName: combine-multiple-reducers # --description-- -When the state of your app begins to grow more complex, it may be tempting to divide state into multiple pieces. Instead, remember the first principle of Redux: all app state is held in a single state object in the store. Therefore, Redux provides reducer composition as a solution for a complex state model. You define multiple reducers to handle different pieces of your application's state, then compose these reducers together into one root reducer. The root reducer is then passed into the Redux `createStore()` method. +Quando o estado do seu app começa a se tornar mais complexo, pode ser tentador dividir o estado em várias peças. Em vez disso, lembre-se do primeiro princípio do Redux: todos os estados do aplicativo são mantidos em um único objeto de estado na store. Portanto, Redux fornece a composição do redutor como solução para um modelo de estado complexo. Você define vários reducers para lidar com diferentes partes do estado da sua aplicação, e então compõe estes reducers em um único reducer raiz. O reducer raiz é então passado para o método Redux `createStore()`. -In order to let us combine multiple reducers together, Redux provides the `combineReducers()` method. This method accepts an object as an argument in which you define properties which associate keys to specific reducer functions. The name you give to the keys will be used by Redux as the name for the associated piece of state. +Para que possamos combinar múltiplos reducers juntos, Redux fornece o método `combineReducers()`. Este método aceita um objeto como argumento no qual você define propriedades que associam chaves a funções específicas de reducer. Os nomes que você der às chaves serão usados pelo Redux para pedaço do nome associado do state. -Typically, it is a good practice to create a reducer for each piece of application state when they are distinct or unique in some way. For example, in a note-taking app with user authentication, one reducer could handle authentication while another handles the text and notes that the user is submitting. For such an application, we might write the `combineReducers()` method like this: +Normalmente, é uma boa prática criar um reducer para cada peça do estado da aplicação quando eles são distintos ou únicos de alguma forma. Por exemplo, em um aplicativo de anotações com autenticação de usuário, um reducer poderia lidar com a autenticação enquanto outro manipula o texto e notas que o usuário está enviando. Para tal aplicação, podemos escrever o método `combineReducers()` assim: ```js const rootReducer = Redux.combineReducers({ @@ -21,15 +21,15 @@ const rootReducer = Redux.combineReducers({ }); ``` -Now, the key `notes` will contain all of the state associated with our notes and handled by our `notesReducer`. This is how multiple reducers can be composed to manage more complex application state. In this example, the state held in the Redux store would then be a single object containing `auth` and `notes` properties. +Agora, as chaves `notes` conterão todo o estado associado às nossas notas e serão tratadas pelo nosso `notesReducer`. É assim que múltiplos reducers podem ser compostos para gerenciar um estado mais complexo da aplicação. Neste exemplo, o estado mantido no armazenamento do Redux seria, em seguida, um único objeto contendo as propriedades `auth` e `notes`. # --instructions-- -There are `counterReducer()` and `authReducer()` functions provided in the code editor, along with a Redux store. Finish writing the `rootReducer()` function using the `Redux.combineReducers()` method. Assign `counterReducer` to a key called `count` and `authReducer` to a key called `auth`. +Existem as funções `counterReducer()` e `authReducer()` fornecidas no editor de código, junto com um store (armazém) Redux. Termine de escrever a função `rootReducer()` usando o método `Redux.combineReducers()`. Atribua `counterReducer` a uma chave chamada `count` e `authReducer` a uma chave chamada `auth`. # --hints-- -The `counterReducer` should increment and decrement the `state`. +O `counterReducer` deve incrementar e decrementar o `estado`. ```js assert( @@ -45,7 +45,7 @@ assert( ); ``` -The `authReducer` should toggle the `state` of `authenticated` between `true` and `false`. +O `authReducer` deve alternar o `state` de `authenticated` entre `true` e `false`. ```js assert( @@ -59,7 +59,7 @@ assert( ); ``` -The store `state` should have two keys: `count`, which holds a number, and `auth`, which holds an object. The `auth` object should have a property of `authenticated`, which holds a boolean. +O `state` armazenado deve ter duas chaves: `count`, que contém um número e um `auth`, que contém um objeto. O objeto `auth` deve ter a propriedade `authenticated`, a qual possui um booleano. ```js assert( @@ -74,7 +74,7 @@ assert( ); ``` -The `rootReducer` should be a function that combines the `counterReducer` and the `authReducer`. +`rootReducer` deve ser uma função que combina o `counterReducer` e o `authReducer`. ```js (getUserInput) => diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/copy-an-object-with-object.assign.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/copy-an-object-with-object.assign.md index 9c004ef012..fc3299795a 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/copy-an-object-with-object.assign.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/copy-an-object-with-object.assign.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403615b -title: Copy an Object with Object.assign +title: Copiar um objeto com Object.assign challengeType: 6 forumTopicId: 301437 dashedName: copy-an-object-with-object-assign @@ -8,21 +8,21 @@ dashedName: copy-an-object-with-object-assign # --description-- -The last several challenges worked with arrays, but there are ways to help enforce state immutability when state is an `object`, too. A useful tool for handling objects is the `Object.assign()` utility. `Object.assign()` takes a target object and source objects and maps properties from the source objects to the target object. Any matching properties are overwritten by properties in the source objects. This behavior is commonly used to make shallow copies of objects by passing an empty object as the first argument followed by the object(s) you want to copy. Here's an example: +Os últimos desafios funcionaram com matrizes, mas também existem maneiras de ajudar a impor a imutabilidade do state quando o state for um `objeto`. Uma ferramenta útil para lidar com objetos é o `Object.assign()`. `Object.assign()` recebe um objeto alvo e objetos fonte e mapeia propriedades dos objetos de origem para o objeto alvo. Qualquer propriedades correspondentes são substituídas por propriedades nos objetos de origem. Esse comportamento é comumente usado para fazer cópias rasas de objetos, passando um objeto vazio como o primeiro argumento seguido do(s) objeto(s) que você deseja copiar. Um exemplo: ```js const newObject = Object.assign({}, obj1, obj2); ``` -This creates `newObject` as a new `object`, which contains the properties that currently exist in `obj1` and `obj2`. +Isso cria `newObject` como um novo `objeto`, que contém as propriedades que atualmente existem em `obj1` e `obj2`. # --instructions-- -The Redux state and actions were modified to handle an `object` for the `state`. Edit the code to return a new `state` object for actions with type `ONLINE`, which set the `status` property to the string `online`. Try to use `Object.assign()` to complete the challenge. +O estado e ações do Redux foram modificados para manipular um `objeto` para o `state`. Edite o código para retornar um novo objeto `state` para ações com tipo `ONLINE`, que define a propriedade `status` para a string `online`. Tente usar `Object.assign()` para completar o desafio. # --hints-- -The Redux store should exist and initialize with a state that is equivalent to the `defaultState` object declared on line 1. +O store do Redux deve existir e inicializar com um estado equivalente ao objeto `defaultState` declarado na linha 1. ```js assert( @@ -39,13 +39,13 @@ assert( ); ``` -`wakeUp` and `immutableReducer` both should be functions. +`wakeUp` e `immutableReducer` ambas devem ser funções. ```js assert(typeof wakeUp === 'function' && typeof immutableReducer === 'function'); ``` -Dispatching an action of type `ONLINE` should update the property `status` in state to `online` and should NOT mutate state. +Despachando uma ação do tipo `ONLINE` deve atualizar a propriedade `status` no estado para `online` e NÃO deve alterar o estado. ```js assert( @@ -65,7 +65,7 @@ assert( ); ``` -`Object.assign` should be used to return new state. +`Object.assign` deve ser usado para retornar um novo estado. ```js (getUserInput) => assert(getUserInput('index').includes('Object.assign')); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/create-a-redux-store.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/create-a-redux-store.md index 4eb9227a82..64f5eb441d 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/create-a-redux-store.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/create-a-redux-store.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403614b -title: Create a Redux Store +title: Criar um Store Redux challengeType: 6 forumTopicId: 301439 dashedName: create-a-redux-store @@ -8,29 +8,29 @@ dashedName: create-a-redux-store # --description-- -Redux is a state management framework that can be used with a number of different web technologies, including React. +Redux é um framework de gerenciamento do state que pode ser usada com uma série de diferentes tecnologias web, incluindo React. -In Redux, there is a single state object that's responsible for the entire state of your application. This means if you had a React app with ten components, and each component had its own local state, the entire state of your app would be defined by a single state object housed in the Redux `store`. This is the first important principle to understand when learning Redux: the Redux store is the single source of truth when it comes to application state. +No Redux, há um único objeto state responsável por todo o estado de sua aplicação. Isto significa que se você tinha um aplicativo React com dez componentes, e cada componente tinha seu próprio estado local, todo o estado do seu aplicativo seria definido por um único objeto de estado alojado na `store` do Redux. Este é o primeiro princípio importante a ser entendido ao aprender Redux: o armazenamento do Redux é a única fonte da verdade quando se trata do estado do aplicativo. -This also means that any time any piece of your app wants to update state, it **must** do so through the Redux store. The unidirectional data flow makes it easier to track state management in your app. +Isso também significa que, a qualquer momento que qualquer parte de seu aplicativo queira atualizar state, **deve** fazer isso através do store do Redux. O fluxo de dados unidirecional torna mais fácil rastrear o gerenciamento de estado em seu aplicativo. # --instructions-- -The Redux `store` is an object which holds and manages application `state`. There is a method called `createStore()` on the Redux object, which you use to create the Redux `store`. This method takes a `reducer` function as a required argument. The `reducer` function is covered in a later challenge, and is already defined for you in the code editor. It simply takes `state` as an argument and returns `state`. +O `store` do Redux é um objeto que contém e gerencia o `state` da aplicação. Há um método chamado `createStore()` no objeto do Redux, que você usa para criar o `store` do Redux. Este método recebe uma função `reducer` como um argumento necessário. A função `reducer` é coberta em um desafio posterior, e já está definida para você no editor de código. Ele simplesmente recebe o `state` como um argumento e retorna o `state`. -Declare a `store` variable and assign it to the `createStore()` method, passing in the `reducer` as an argument. +Declare uma variável `store` e atribua-a ao método `createStore()`, passando no `reducer` como argumento. -**Note:** The code in the editor uses ES6 default argument syntax to initialize this state to hold a value of `5`. If you're not familiar with default arguments, you can refer to the [ES6 section in the Curriculum](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/set-default-parameters-for-your-functions) which covers this topic. +**Nota:** O código no editor usa a sintaxe de argumento padrão ES6 para inicializar este estado para ter um valor de `5`. Se você não está familiarizado com os argumentos padrão, você pode se referir [ à seção ES6 no Curriculum](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/set-default-parameters-for-your-functions) que aborda este tópico. # --hints-- -The Redux store should exist. +O store (armazenamento) Redux deve existir. ```js assert(typeof store.getState === 'function'); ``` -The Redux store should have a value of 5 for the state. +O armazenamento do Redux deve ter um valor de 5 para o estado. ```js assert(store.getState() === 5); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/define-a-redux-action.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/define-a-redux-action.md index 31f49e2e33..d648cfa955 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/define-a-redux-action.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/define-a-redux-action.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403614d -title: Define a Redux Action +title: Definir uma Ação Redux challengeType: 6 forumTopicId: 301440 dashedName: define-a-redux-action @@ -8,17 +8,17 @@ dashedName: define-a-redux-action # --description-- -Since Redux is a state management framework, updating state is one of its core tasks. In Redux, all state updates are triggered by dispatching actions. An action is simply a JavaScript object that contains information about an action event that has occurred. The Redux store receives these action objects, then updates its state accordingly. Sometimes a Redux action also carries some data. For example, the action carries a username after a user logs in. While the data is optional, actions must carry a `type` property that specifies the 'type' of action that occurred. +Uma vez que o Redux é um framework de gestão de estado, atualizar o state é uma das suas principais tarefas. No Redux, todas as atualizações de estado são acionadas despachando ações. Uma ação é simplesmente um objeto JavaScript que contém informações sobre um evento de ação que ocorreu. O armazenamento Redux recebe estes objetos de ação, então atualiza seu estado de acordo. Às vezes, uma ação do Redux também contém alguns dados. Por exemplo, a ação carrega um nome de usuário após o login do usuário. Enquanto os dados são opcionais, ações devem carregar uma propriedade `type` que especifica o 'tipo' da ação que ocorreu. -Think of Redux actions as messengers that deliver information about events happening in your app to the Redux store. The store then conducts the business of updating state based on the action that occurred. +Pense em ações Redux como mensageiros que fornecem informações sobre eventos acontecendo em seu aplicativo para o armazenamento (store) do Redux. O store então conduz a tarefa de atualizar o state baseado na ação que ocorreu. # --instructions-- -Writing a Redux action is as simple as declaring an object with a type property. Declare an object `action` and give it a property `type` set to the string `'LOGIN'`. +Escrever uma ação Redux é tão simples quanto declarar um objeto com uma propriedade type. Declare um objeto `action` e o dê uma propriedade `type` definido para a string `'LOGIN'`. # --hints-- -An `action` object should exist. +Um objeto de `action` deve existir. ```js assert( @@ -28,7 +28,7 @@ assert( ); ``` -The `action` object should have a key property `type` with value `LOGIN`. +O objeto `action` deve ter a propriedade chave `type` com o valor de `LOGIN`. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/define-an-action-creator.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/define-an-action-creator.md index 656723c9e1..9cb2067f49 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/define-an-action-creator.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/define-an-action-creator.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403614e -title: Define an Action Creator +title: Defina um Criador de Action challengeType: 6 forumTopicId: 301441 dashedName: define-an-action-creator @@ -8,27 +8,27 @@ dashedName: define-an-action-creator # --description-- -After creating an action, the next step is sending the action to the Redux store so it can update its state. In Redux, you define action creators to accomplish this. An action creator is simply a JavaScript function that returns an action. In other words, action creators create objects that represent action events. +Após criar uma ação, o próximo passo é enviar a ação para o armazenamento do Redux para que ele possa atualizar seu estado. No Redux, você define os criadores de ação para realizar isso. Um criador de ação é simplesmente uma função JavaScript que retorna uma ação. Em outras palavras, criadores de ações criam objetos que representam eventos de ação. # --instructions-- -Define a function named `actionCreator()` that returns the `action` object when called. +Defina uma função chamada `actionCreator()` que retorna o objeto `action` quando chamado. # --hints-- -The function `actionCreator` should exist. +A função `actionCreator` deve existir. ```js assert(typeof actionCreator === 'function'); ``` -Running the `actionCreator` function should return the `action` object. +Executando a função `actionCreator` deve retornar o objeto `action`. ```js assert(typeof action === 'object'); ``` -The returned `action` should have a key property `type` with value `LOGIN`. +O objeto `action` deve ter a propriedade chave `type` com o valor `LOGIN`. ```js assert(action.type === 'LOGIN'); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/dispatch-an-action-event.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/dispatch-an-action-event.md index 46bfbbb12e..b82a71e72b 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/dispatch-an-action-event.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/dispatch-an-action-event.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403614f -title: Dispatch an Action Event +title: Despachar um Evento de Ação challengeType: 6 forumTopicId: 301442 dashedName: dispatch-an-action-event @@ -8,9 +8,9 @@ dashedName: dispatch-an-action-event # --description-- -`dispatch` method is what you use to dispatch actions to the Redux store. Calling `store.dispatch()` and passing the value returned from an action creator sends an action back to the store. +O método `dispatch` é o que você usa para enviar ações para o store do Redux. Chamando `store.dispatch()` e passando o valor retornado de um criador de ação envia uma ação de volta para store. -Recall that action creators return an object with a type property that specifies the action that has occurred. Then the method dispatches an action object to the Redux store. Based on the previous challenge's example, the following lines are equivalent, and both dispatch the action of type `LOGIN`: +Lembre que os criadores de ações retornam um objeto com uma propriedade type que especifica a ação que ocorreu. Em seguida, o método despacha um objeto de ação para store do Redux. Com base no exemplo do desafio anterior, as linhas a seguir são equivalentes, e ambas enviam a ação do tipo `LOGIN`: ```js store.dispatch(actionCreator()); @@ -19,23 +19,23 @@ store.dispatch({ type: 'LOGIN' }); # --instructions-- -The Redux store in the code editor has an initialized state that's an object containing a `login` property currently set to `false`. There's also an action creator called `loginAction()` which returns an action of type `LOGIN`. Dispatch the `LOGIN` action to the Redux store by calling the `dispatch` method, and pass in the action created by `loginAction()`. +O store do Redux no editor de código tem um estado inicializado que contém um objeto que contém a propriedade `login` atualmente definida como `false`. Também há um criador de ação chamado `loginAction()` que retorna uma ação do tipo `LOGIN`. Despache a ação `LOGIN` para o store do Redux chamando o método `dispatch`, e passe na ação criada por `loginAction()`. # --hints-- -Calling the function `loginAction` should return an object with `type` property set to the string `LOGIN`. +Chamando a função `loginAction` deve retornar um objeto com a propriedade `type` definida para a string `LOGIN`. ```js assert(loginAction().type === 'LOGIN'); ``` -The store should be initialized with an object with property `login` set to `false`. +Store deve ser inicializado com um objeto com a propriedade `login` definido como `false`. ```js assert(store.getState().login === false); ``` -The `store.dispatch()` method should be used to dispatch an action of type `LOGIN`. +O método `store.dispatch()` deve ser usado para despachar uma ação do tipo `LOGIN`. ```js (getUserInput) => diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/get-state-from-the-redux-store.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/get-state-from-the-redux-store.md index 7c348ad330..cf0ff67b0f 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/get-state-from-the-redux-store.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/get-state-from-the-redux-store.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403614c -title: Get State from the Redux Store +title: Obter Estado na Loja Redux challengeType: 6 forumTopicId: 301443 dashedName: get-state-from-the-redux-store @@ -8,21 +8,21 @@ dashedName: get-state-from-the-redux-store # --description-- -The Redux store object provides several methods that allow you to interact with it. For example, you can retrieve the current `state` held in the Redux store object with the `getState()` method. +O objeto store do Redux fornece vários métodos que permitem você interagir com ele. Por exemplo, você pode recuperar o `state` atual mantido no objeto store do Redux com o método `getState()`. # --instructions-- -The code from the previous challenge is re-written more concisely in the code editor. Use `store.getState()` to retrieve the `state` from the `store`, and assign this to a new variable `currentState`. +O código do desafio anterior é reescrito de forma mais concisa no editor de código. Use `store.getState()` para recuperar o `state` do `store`, e o atribuir a nova variável `currentState`. # --hints-- -The Redux store should have a value of 5 for the initial state. +O store do Redux deve ter um valor de 5 para o state inicial. ```js assert(store.getState() === 5); ``` -A variable `currentState` should exist and should be assigned the current state of the Redux store. +Uma variável `currentState` deve existir e deve ser atribuída ao state atual no store do Redux. ```js (getUserInput) => diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/handle-an-action-in-the-store.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/handle-an-action-in-the-store.md index d33750b9c3..b8510877ea 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/handle-an-action-in-the-store.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/handle-an-action-in-the-store.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036150 -title: Handle an Action in the Store +title: Manipule uma Ação no Store challengeType: 6 forumTopicId: 301444 dashedName: handle-an-action-in-the-store @@ -8,29 +8,29 @@ dashedName: handle-an-action-in-the-store # --description-- -After an action is created and dispatched, the Redux store needs to know how to respond to that action. This is the job of a `reducer` function. Reducers in Redux are responsible for the state modifications that take place in response to actions. A `reducer` takes `state` and `action` as arguments, and it always returns a new `state`. It is important to see that this is the **only** role of the reducer. It has no side effects — it never calls an API endpoint and it never has any hidden surprises. The reducer is simply a pure function that takes state and action, then returns new state. +Depois que uma ação é criada e despachada, o store do Redux precisa saber como responder a essa ação. Esse é o trabalho de uma função `reducer`. Reducers em Redux são responsáveis pelas modificações de estado que ocorrem em resposta a ações. Um `reducer` recebe como argumentos `state` e `action`, e ele sempre retorna um novo `state`. É importante ver que esse é o **único** papel do reducer. Ele não tem efeitos colaterais — nunca chama uma rota de API e nunca tem nenhuma surpresa escondida. O reducer é simplesmente uma função pura que exige os parâmetros state e action, e depois retorna um novo state. -Another key principle in Redux is that `state` is read-only. In other words, the `reducer` function must **always** return a new copy of `state` and never modify state directly. Redux does not enforce state immutability, however, you are responsible for enforcing it in the code of your reducer functions. You'll practice this in later challenges. +Outro princípio chave em Redux é que o `state` é somente de leitura. Em outras palavras, a função `reducer` deve **sempre** retornar uma nova cópia do `state` e nunca modificar o estado diretamente. Redux não impõe imutabilidade do estado, no entanto, você é responsável por aplicá-lo no código de suas funções reducer. Você vai praticar isso em desafios futuros. # --instructions-- -The code editor has the previous example as well as the start of a `reducer` function for you. Fill in the body of the `reducer` function so that if it receives an action of type `'LOGIN'` it returns a state object with `login` set to `true`. Otherwise, it returns the current `state`. Note that the current `state` and the dispatched `action` are passed to the reducer, so you can access the action's type directly with `action.type`. +O editor de código tem o exemplo anterior, bem como o início de uma função `reducer` para você. Preencha o corpo da função `reducer` para que se receber uma ação do tipo `'LOGIN'` ele retorna um objeto state com `login` definido como `true`. Caso contrário, retorna o `state` atual. Note que o `state` atual e a `action` despachada foram passados para o reducer, para que você possa acessar o tipo da ação diretamente com `action.type`. # --hints-- -Calling the function `loginAction` should return an object with type property set to the string `LOGIN`. +Chamar a função `loginAction` deve retornar um objeto com a propriedade `type` definida para a string `LOGIN`. ```js assert(loginAction().type === 'LOGIN'); ``` -The store should be initialized with an object with property `login` set to `false`. +Store deve ser inicializado com um objeto com a propriedade `login` definido como `false`. ```js assert(store.getState().login === false); ``` -Dispatching `loginAction` should update the `login` property in the store state to `true`. +Despachar `loginAction` deve atualizar a propriedade `login` no state do store para `true`. ```js assert( @@ -43,7 +43,7 @@ assert( ); ``` -If the action is not of type `LOGIN`, the store should return the current state. +Se a ação não é do tipo `LOGIN`, o store deve retornar o estado atual. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/never-mutate-state.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/never-mutate-state.md index 002a7c4da2..352f170234 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/never-mutate-state.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/never-mutate-state.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036158 -title: Never Mutate State +title: Nunca Alterar State challengeType: 6 forumTopicId: 301445 dashedName: never-mutate-state @@ -8,19 +8,19 @@ dashedName: never-mutate-state # --description-- -These final challenges describe several methods of enforcing the key principle of state immutability in Redux. Immutable state means that you never modify state directly, instead, you return a new copy of state. +Estes desafios finais descrevem vários métodos de aplicação do princípio fundamental da imutabilidade do state em Redux. O state imutável significa que você nunca modifica o estado diretamente, em vez disso, você retorna uma nova cópia do estado. -If you took a snapshot of the state of a Redux app over time, you would see something like `state 1`, `state 2`, `state 3`,`state 4`, `...` and so on where each state may be similar to the last, but each is a distinct piece of data. This immutability, in fact, is what provides such features as time-travel debugging that you may have heard about. +Se você tirasse um snapshot do estado de um aplicativo Redux ao longo do tempo, você veria algo como `state 1`, `state 2`, `state 3`,`state 4`, `...` e assim por diante onde cada estado pode ser semelhante ao último, mas cada um é um dado distinto. Esta imutabilidade, na verdade, é o que fornece recursos como a depuração de viagem no tempo (time-travel debugging) que você pode ter ouvido sobre. -Redux does not actively enforce state immutability in its store or reducers, that responsibility falls on the programmer. Fortunately, JavaScript (especially ES6) provides several useful tools you can use to enforce the immutability of your state, whether it is a `string`, `number`, `array`, or `object`. Note that strings and numbers are primitive values and are immutable by nature. In other words, 3 is always 3. You cannot change the value of the number 3. An `array` or `object`, however, is mutable. In practice, your state will probably consist of an `array` or `object`, as these are useful data structures for representing many types of information. +Redux não impõe ativamente a imutabilidade do state em seu store ou reducers, essa responsabilidade é do programador. Felizmente, o JavaScript (especialmente ES6) fornece várias ferramentas úteis que você pode usar para impor a imutabilidade do seu estado, tanto se é uma `string`, `number`, `array` ou `objeto`. Observe que as strings e números são valores primitivos e são imutáveis por natureza. Em outras palavras, 3 é sempre 3. Você não pode alterar o valor do número 3. Um `array` ou `objeto`, no entanto, são mutáveis. Na prática, seu estado provavelmente consistirá em um `array` ou `objeto`, visto que se trata de estruturas de dados úteis para a representação de muitos tipos de informação. # --instructions-- -There is a `store` and `reducer` in the code editor for managing to-do items. Finish writing the `ADD_TO_DO` case in the reducer to append a new to-do to the state. There are a few ways to accomplish this with standard JavaScript or ES6. See if you can find a way to return a new array with the item from `action.todo` appended to the end. +Há um `store` e `reducer` no editor de código para gerenciar itens a fazer. Termine de escrever o caso `ADD_TO_DO` no reducer para adicionar um novo 'a fazer' (to-do) ao state. Existem algumas maneiras de realizar isso com JavaScript padrão ou ES6. Veja se você pode encontrar uma maneira de retornar um novo array com o item do `action.todo` anexado ao final. # --hints-- -The Redux store should exist and initialize with a state equal to the `todos` array in the code editor. +O store do Redux deve existir e inicializar com um estado igual ao array `todos` no editor de código. ```js assert( @@ -39,13 +39,13 @@ assert( ); ``` -`addToDo` and `immutableReducer` both should be functions. +`addToDo` e `immutableReducer` ambas devem ser funções. ```js assert(typeof addToDo === 'function' && typeof immutableReducer === 'function'); ``` -Dispatching an action of type `ADD_TO_DO` on the Redux store should add a `todo` item and should NOT mutate state. +Despachando uma ação do tipo `ADD_TO_DO` no store Redux deve adicionar um item `todo` e NÃO deve modificar o state. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/register-a-store-listener.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/register-a-store-listener.md index d3d43ced41..fa024bdf11 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/register-a-store-listener.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/register-a-store-listener.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036153 -title: Register a Store Listener +title: Registrar um Ouvinte de Store challengeType: 6 forumTopicId: 301446 dashedName: register-a-store-listener @@ -8,15 +8,15 @@ dashedName: register-a-store-listener # --description-- -Another method you have access to on the Redux `store` object is `store.subscribe()`. This allows you to subscribe listener functions to the store, which are called whenever an action is dispatched against the store. One simple use for this method is to subscribe a function to your store that simply logs a message every time an action is received and the store is updated. +Outro método que você tem acesso ao objeto `store` do Redux é `store.subscribe()`. Isso permite que você inscreva funções de ouvinte ao store, que são chamadas sempre que uma ação é enviada ao store. Um uso simples para este método é inscrever uma função no seu store que simplesmente registra uma mensagem toda vez que uma ação é recebida e a loja é atualizada. # --instructions-- -Write a callback function that increments the global variable `count` every time the store receives an action, and pass this function in to the `store.subscribe()` method. You'll see that `store.dispatch()` is called three times in a row, each time directly passing in an action object. Watch the console output between the action dispatches to see the updates take place. +Escreva uma função de callback que incrementa a variável global `count` toda vez que o store receber uma ação, e passe esta função para o método `store.subscribe()`. Você verá que `store.dispatch()` é chamado três vezes seguidas, a cada vez que passa diretamente em um objeto de ação. Assista a saída do console entre os despachos de ação para ver as atualizações que ocorrem. # --hints-- -Dispatching the `ADD` action on the store should increment the state by `1`. +Despachando a ação `ADD` no store deve incrementar o estado por `1`. ```js assert( @@ -29,19 +29,19 @@ assert( ); ``` -There should be a listener function subscribed to the store using `store.subscribe`. +Deve haver uma função de ouvinte inscrita no store usando `store.subscribe`. ```js (getUserInput) => assert(getUserInput('index').match(/store\s*\.\s*subscribe\(/gm)); ``` -The `store.subscribe` should receive a function. +O `store.subscribe` deve receber uma função. ```js (getUserInput) => assert(getUserInput('index').match(/(\s*function\s*)|(\s*\(\s*\)\s*=>)/gm)) ``` -The callback to `store.subscribe` should also increment the global `count` variable as the store is updated. +O callback para `store.subscribe` também deve incrementar a variável global `count` à medida que o store é atualizado. ```js assert(store.getState() === count); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/remove-an-item-from-an-array.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/remove-an-item-from-an-array.md index 16bd461669..6b5199173b 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/remove-an-item-from-an-array.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/remove-an-item-from-an-array.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d403615a -title: Remove an Item from an Array +title: Remover um item de um Array challengeType: 6 forumTopicId: 301447 dashedName: remove-an-item-from-an-array @@ -8,15 +8,15 @@ dashedName: remove-an-item-from-an-array # --description-- -Time to practice removing items from an array. The spread operator can be used here as well. Other useful JavaScript methods include `slice()` and `concat()`. +Hora de praticar a remoção de itens de um array. O operador spread também pode ser usado aqui. Outros métodos de JavaScript úteis incluem `slice()` e `concat()`. # --instructions-- -The reducer and action creator were modified to remove an item from an array based on the index of the item. Finish writing the reducer so a new state array is returned with the item at the specific index removed. +O reducer e criador de ação foram modificados para remover um item de um array com base no índice do item. Termine de escrever o reducer para que um novo array state seja retornado com o item no índice especificado removido. # --hints-- -The Redux store should exist and initialize with a state equal to `[0,1,2,3,4,5]` +O store do Redux deve existir e inicializar com um estado igual a `[0,1,2,3,4,5]` ```js assert( @@ -30,7 +30,7 @@ assert( ); ``` -`removeItem` and `immutableReducer` both should be functions. +`removeItem` e `immutableReducer` ambos devem ser funções. ```js assert( @@ -38,7 +38,7 @@ assert( ); ``` -Dispatching the `removeItem` action creator should remove items from the state and should NOT mutate state. +Despachando o criador de ação `removeItem` deve remover itens do state e NÃO deve modificar o state. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/send-action-data-to-the-store.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/send-action-data-to-the-store.md index ccfda74b7a..c147997647 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/send-action-data-to-the-store.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/send-action-data-to-the-store.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036155 -title: Send Action Data to the Store +title: Enviar Dados de Ação para a loja challengeType: 6 forumTopicId: 301448 dashedName: send-action-data-to-the-store @@ -8,19 +8,19 @@ dashedName: send-action-data-to-the-store # --description-- -By now you've learned how to dispatch actions to the Redux store, but so far these actions have not contained any information other than a `type`. You can also send specific data along with your actions. In fact, this is very common because actions usually originate from some user interaction and tend to carry some data with them. The Redux store often needs to know about this data. +Até agora você aprendeu como enviar ações para o store do Redux, mas até agora essas ações não continham nenhuma informação diferente de um `type`. Você também pode enviar dados específicos, juntamente com suas ações. Na verdade, isso é muito comum porque as ações geralmente se originam de alguma interação do usuário e tendem a carregar alguns dados com elas. Muitas vezes, o store do Redux precisa saber sobre esses dados. # --instructions-- -There's a basic `notesReducer()` and an `addNoteText()` action creator defined in the code editor. Finish the body of the `addNoteText()` function so that it returns an `action` object. The object should include a `type` property with a value of `ADD_NOTE`, and also a `text` property set to the `note` data that's passed into the action creator. When you call the action creator, you'll pass in specific note information that you can access for the object. +Há dois criadores de ações básicos, `notesReducer()` e um `addNoteText()`, definidos no editor de código. Finalize o corpo da função `addNodeText()` para que ela retorne um objeto `action`. O objeto deve incluir a propriedade `type` com o valor `ADD_NOTE` e também uma propriedade `text` definida para o dado `note` que foi passado ao criador de ação. Quando você chama o criador de ação, você passará uma informação note específica que você pode acessar para o objeto. -Next, finish writing the `switch` statement in the `notesReducer()`. You need to add a case that handles the `addNoteText()` actions. This case should be triggered whenever there is an action of type `ADD_NOTE` and it should return the `text` property on the incoming `action` as the new `state`. +Em seguida, termine de escreve a instrução `switch` no `notesReducer()`. Você precisa adicionar um caso que lide com ações do `addNodeText()`. Esse caso deve ser acionado sempre que há uma ação do tipo `ADD_NOTE` e ele deve retornar a propriedade `text` na `action` chegando como o novo `state`. -The action is dispatched at the bottom of the code. Once you're finished, run the code and watch the console. That's all it takes to send action-specific data to the store and use it when you update store `state`. +A ação é despachada no final do código. Quando terminar, rode o código e olhe o console. Isso é tudo que é necessário para enviar dados específicos de ações ao store e o usar quando você atualizar o `state` do store. # --hints-- -The action creator `addNoteText` should return an object with keys `type` and `text`. +O criador de ação `addNoteText` deve retornar um objeto com chaves `type` e `text`. ```js assert( @@ -31,7 +31,7 @@ assert( ); ``` -Dispatching an action of type `ADD_NOTE` with the `addNoteText` action creator should update the `state` to the string passed to the action creator. +Despachar uma ação do tipo `ADD_NOTE` com o criador de ação `addNodeText` deve atualizar o `state` para a string passada para o criador da ação. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-a-switch-statement-to-handle-multiple-actions.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-a-switch-statement-to-handle-multiple-actions.md index 604bc416f7..397df002df 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-a-switch-statement-to-handle-multiple-actions.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-a-switch-statement-to-handle-multiple-actions.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036151 -title: Use a Switch Statement to Handle Multiple Actions +title: Use um Comando Switch para Lidar com Várias Ações challengeType: 6 forumTopicId: 301449 dashedName: use-a-switch-statement-to-handle-multiple-actions @@ -8,35 +8,35 @@ dashedName: use-a-switch-statement-to-handle-multiple-actions # --description-- -You can tell the Redux store how to handle multiple action types. Say you are managing user authentication in your Redux store. You want to have a state representation for when users are logged in and when they are logged out. You represent this with a single state object with the property `authenticated`. You also need action creators that create actions corresponding to user login and user logout, along with the action objects themselves. +Você pode dizer ao store do Redux como lidar com vários tipos de ação. Digamos que você está gerenciando a autenticação de usuário em seu store Redux. Você quer ter uma representação de estado para quando os usuários estiverem logados e quando forem desconectados. Você representa isso com um único objeto state com a propriedade `authenticated`. Você também precisa de criadores de ações que criem ações correspondentes ao login e logout do usuário, juntamente com os próprios objetos de ação. # --instructions-- -The code editor has a store, actions, and action creators set up for you. Fill in the `reducer` function to handle multiple authentication actions. Use a JavaScript `switch` statement in the `reducer` to respond to different action events. This is a standard pattern in writing Redux reducers. The switch statement should switch over `action.type` and return the appropriate authentication state. +O editor de código tem um store, actions e criadores de actions configurados para você. Preencha a função `reducer` para lidar com várias ações de autenticação. Use a instrução do JavaScript `switch` no `reducer` para responder a diferentes eventos de ação. Este é um padrão para escrever reducers do Redux. O comando switch deve mudar acima de `action.type` e retornar o estado de autenticação apropriado. -**Note:** At this point, don't worry about state immutability, since it is small and simple in this example. For each action, you can return a new object — for example, `{authenticated: true}`. Also, don't forget to write a `default` case in your switch statement that returns the current `state`. This is important because once your app has multiple reducers, they are all run any time an action dispatch is made, even when the action isn't related to that reducer. In such a case, you want to make sure that you return the current `state`. +**Nota:** Neste ponto, não se preocupe com imutabilidade do state, já que é pequeno e simples neste exemplo. Para cada ação, você pode retornar um novo objeto — por exemplo, `{authenticated: true}`. Além disso, não se esqueça de escrever um caso `default` na sua instrução switch que retorna o `state`atual. Isso é importante porque uma vez seu aplicativo tem vários redutores, todos eles são executados toda vez que uma ação é enviada, mesmo quando a ação não é relacionada a esse reducer. Nesses casos, você quer garantir que você retorna o `state` atual. # --hints-- -Calling the function `loginUser` should return an object with type property set to the string `LOGIN`. +Chamar a função `loginUser` deve retornar um objeto com a propriedade `type` definida para a string `LOGIN`. ```js assert(loginUser().type === 'LOGIN'); ``` -Calling the function `logoutUser` should return an object with type property set to the string `LOGOUT`. +Chamar a função `logoutUser` deve retornar um objeto com a propriedade `type` definida para a string `LOGOUT`. ```js assert(logoutUser().type === 'LOGOUT'); ``` -The store should be initialized with an object with an `authenticated` property set to `false`. +Store deve ser inicializado com um objeto com a propriedade `authenticated` definido como `false`. ```js assert(store.getState().authenticated === false); ``` -Dispatching `loginUser` should update the `authenticated` property in the store state to `true`. +Despachar `loginUser` deve atualizar a propriedade `authenticated` no state do store para `true`. ```js assert( @@ -51,7 +51,7 @@ assert( ); ``` -Dispatching `logoutUser` should update the `authenticated` property in the store state to `false`. +Despachar `logoutUser` deve atualizar a propriedade `authenticated` no state do store para `false`. ```js assert( @@ -67,7 +67,7 @@ assert( ); ``` -The `authReducer` function should handle multiple action types with a `switch` statement. +A função `authReducer` deve lidar com vários tipos de ação com um comando `switch`. ```js (getUserInput) => diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-const-for-action-types.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-const-for-action-types.md index e34d2505f4..374c1b928c 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-const-for-action-types.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-const-for-action-types.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036152 -title: Use const for Action Types +title: Usar const para Action Types challengeType: 6 forumTopicId: 301450 dashedName: use-const-for-action-types @@ -8,35 +8,35 @@ dashedName: use-const-for-action-types # --description-- -A common practice when working with Redux is to assign action types as read-only constants, then reference these constants wherever they are used. You can refactor the code you're working with to write the action types as `const` declarations. +Uma prática comum ao trabalhar com Redux é atribuir tipos de ação como constantes somente de leitura, fazendo referência a essas constantes onde quer que elas sejam usadas. Você pode refatorar o código com o qual você estava trabalhando para escrever os tipos de ação com declarações `const`. # --instructions-- -Declare `LOGIN` and `LOGOUT` as `const` values and assign them to the strings `'LOGIN'` and `'LOGOUT'`, respectively. Then, edit the `authReducer()` and the action creators to reference these constants instead of string values. +Declare `LOGIN` e `LOGOUT` como valores `const` e os atribua às strings `'LOGIN'` e `'LOGOUT'`, respectivamente. Então, edite o `authReducer()` e os criadores de ação para fazer referência a essas constantes ao invés de valores string. -**Note:** It's generally a convention to write constants in all uppercase, and this is standard practice in Redux as well. +**Nota:** É uma convenção escrever constantes com todas as letras maiúsculas, e essa prática também é padrão no Redux. # --hints-- -Calling the function `loginUser` should return an object with `type` property set to the string `LOGIN`. +Chamar a função `loginUser` deve retornar um objeto com a propriedade `type` definida para a string `LOGIN`. ```js assert(loginUser().type === 'LOGIN'); ``` -Calling the function `logoutUser` should return an object with `type` property set to the string `LOGOUT`. +Chamar a função `logoutUser` deve retornar um objeto com a propriedade `type` definida para a string `LOGOUT`. ```js assert(logoutUser().type === 'LOGOUT'); ``` -The store should be initialized with an object with property `login` set to `false`. +Store deve ser inicializado com um objeto com a propriedade `login` definido como `false`. ```js assert(store.getState().authenticated === false); ``` -Dispatching `loginUser` should update the `login` property in the store state to `true`. +Despachar `loginUser` deve atualizar a propriedade `login` no state do store para `true`. ```js assert( @@ -51,7 +51,7 @@ assert( ); ``` -Dispatching `logoutUser` should update the `login` property in the store state to `false`. +Despachar `logoutUser` deve atualizar a propriedade `login` no state do store para `false`. ```js assert( @@ -67,7 +67,7 @@ assert( ); ``` -The `authReducer` function should handle multiple action types with a switch statement. +A função `authReducer` deve lidar com vários tipos de ação com um comando `switch`. ```js (getUserInput) => @@ -83,7 +83,7 @@ The `authReducer` function should handle multiple action types with a switch sta ); ``` -`LOGIN` and `LOGOUT` should be declared as `const` values and should be assigned strings of `LOGIN`and `LOGOUT`. +`LOGIN` e `LOGOUT` devem ser declarados como valores `const` e devem ser atribuídos as strings `LOGIN`e `LOGOUT`. ```js const noWhiteSpace = __helpers.removeWhiteSpace(code); @@ -94,7 +94,7 @@ assert( ); ``` -The action creators and the reducer should reference the `LOGIN` and `LOGOUT` constants. +Os criadores de ação e o reducer devem fazer referência às constantes `LOGIN` e `LOGOUT`. ```js (getUserInput) => diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-middleware-to-handle-asynchronous-actions.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-middleware-to-handle-asynchronous-actions.md index 9839855204..a75a2e8c55 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-middleware-to-handle-asynchronous-actions.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-middleware-to-handle-asynchronous-actions.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036156 -title: Use Middleware to Handle Asynchronous Actions +title: Usar o Middleware para lidar com Ações Assíncronas challengeType: 6 forumTopicId: 301451 dashedName: use-middleware-to-handle-asynchronous-actions @@ -8,39 +8,39 @@ dashedName: use-middleware-to-handle-asynchronous-actions # --description-- -So far these challenges have avoided discussing asynchronous actions, but they are an unavoidable part of web development. At some point you'll need to call asynchronous endpoints in your Redux app, so how do you handle these types of requests? Redux provides middleware designed specifically for this purpose, called Redux Thunk middleware. Here's a brief description how to use this with Redux. +Até agora, estes desafios têm evitado discutir ações assíncronas, mas elas constituem uma parte inevitável do desenvolvimento web. Em algum momento, você precisará chamar rotas assíncronas no seu aplicativo Redux, então como você lida com esses tipos de pedidos? Redux fornece o middleware desenhado especificamente para esse propósito, chamado midleware Thunk Redux. Aqui está uma breve descrição sobre como usar isso com o Redux. -To include Redux Thunk middleware, you pass it as an argument to `Redux.applyMiddleware()`. This statement is then provided as a second optional parameter to the `createStore()` function. Take a look at the code at the bottom of the editor to see this. Then, to create an asynchronous action, you return a function in the action creator that takes `dispatch` as an argument. Within this function, you can dispatch actions and perform asynchronous requests. +Para incluir o middleware Thunk do Redux, você o passa como um argumento para `Redux.applyMiddleware()`. Esta declaração é então fornecida como o segundo parâmetro opcional para a função `createStore()`. Dê uma olhada no código na parte inferior do editor para ver isso. Então, para criar uma ação assíncrona, você retorna uma função no criador de ação que recebe `dispatch` como argumento. Dentro dessa função, você pode despachar ações e executar requisições assíncronas. -In this example, an asynchronous request is simulated with a `setTimeout()` call. It's common to dispatch an action before initiating any asynchronous behavior so that your application state knows that some data is being requested (this state could display a loading icon, for instance). Then, once you receive the data, you dispatch another action which carries the data as a payload along with information that the action is completed. +Neste exemplo, uma requisição assíncrona é simulada com uma chamada a `setTimeout()`. É comum despachar uma ação antes de iniciar qualquer comportamento assíncrono para que o estado do seu aplicativo saiba que alguns dados estão sendo requisitados (este estado pode exibir um ícone de carregamento, por exemplo). Em seguida, ao receber os dados, você envia outra ação que carrega os dados como um payload junto com informações de que a ação foi concluída. -Remember that you're passing `dispatch` as a parameter to this special action creator. This is what you'll use to dispatch your actions, you simply pass the action directly to dispatch and the middleware takes care of the rest. +Lembre-se de que você está passando o `dispatch` como um parâmetro para este criador de ação especial. Isso é o que você vai usar para despachar suas ações, você simplesmente passa a ação diretamente para despachar e o middleware cuida do resto. # --instructions-- -Write both dispatches in the `handleAsync()` action creator. Dispatch `requestingData()` before the `setTimeout()` (the simulated API call). Then, after you receive the (pretend) data, dispatch the `receivedData()` action, passing in this data. Now you know how to handle asynchronous actions in Redux. Everything else continues to behave as before. +Escreva os dois despachadores no criador de ação `handleAsync()`. Despache `requestingData()` antes do `setTimeout()` (a chamada de API simulada). Então, depois de receber os dados (simulados), despache a ação `receivedData()`, passando estes dados. Agora você sabe como lidar com ações assíncronas no Redux. Todo o resto continua a comportar-se como antes. # --hints-- -The `requestingData` action creator should return an object of type equal to the value of `REQUESTING_DATA`. +O criador de ação `requestingData` deve retornar um objeto de tipo igual ao valor de `REQUESTING_DATA`. ```js assert(requestingData().type === REQUESTING_DATA); ``` -The `receivedData` action creator should return an object of type equal to the value of `RECEIVED_DATA`. +O criador de ação `receivedData` deve retornar um objeto de tipo igual ao valor de `REQUESTING_DATA`. ```js assert(receivedData('data').type === RECEIVED_DATA); ``` -`asyncDataReducer` should be a function. +`asyncDataReducer` deve ser uma função. ```js assert(typeof asyncDataReducer === 'function'); ``` -Dispatching the `requestingData` action creator should update the store `state` property of fetching to `true`. +Despachando o criador de ação `requestingData` deve atualizar a propriedade `state` do store de buscar para `verdadeiro`. ```js assert( @@ -53,7 +53,7 @@ assert( ); ``` -Dispatching `handleAsync` should dispatch the data request action and then dispatch the received data action after a delay. +Despachando `handleAsync` deve enviar a ação de requisição de dados e, em seguida, enviar a ação de dados recebidos após um atraso. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-the-spread-operator-on-arrays.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-the-spread-operator-on-arrays.md index 68e6f320ac..c5fd88c635 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-the-spread-operator-on-arrays.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/use-the-spread-operator-on-arrays.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036159 -title: Use the Spread Operator on Arrays +title: Usar o Operador Spread em Arrays challengeType: 6 forumTopicId: 301452 dashedName: use-the-spread-operator-on-arrays @@ -8,21 +8,21 @@ dashedName: use-the-spread-operator-on-arrays # --description-- -One solution from ES6 to help enforce state immutability in Redux is the spread operator: `...`. The spread operator has a variety of applications, one of which is well-suited to the previous challenge of producing a new array from an existing array. This is relatively new, but commonly used syntax. For example, if you have an array `myArray` and write: +Uma solução da ES6 para ajudar a impor imutabilidade do estado no Redux é o operador spread: `...`. O operador spread tem uma variedade de aplicações, um dos quais é bem adequado ao desafio anterior de produzir um novo array a partir de um array existente. Trata-se de uma sintaxe relativamente nova, mas comumente usada. Por exemplo, se você tem um array `myArray` e escreve: ```js let newArray = [...myArray]; ``` -`newArray` is now a clone of `myArray`. Both arrays still exist separately in memory. If you perform a mutation like `newArray.push(5)`, `myArray` doesn't change. The `...` effectively *spreads* out the values in `myArray` into a new array. To clone an array but add additional values in the new array, you could write `[...myArray, 'new value']`. This would return a new array composed of the values in `myArray` and the string `new value` as the last value. The spread syntax can be used multiple times in array composition like this, but it's important to note that it only makes a shallow copy of the array. That is to say, it only provides immutable array operations for one-dimensional arrays. +`newArray` agora é um clone de `myArray`. Ambas os arrays ainda existem separadamente na memória. Se você executar uma mutação como `newArray.push(5)`, `myArray` não muda. O `...` efetivamente *spreads (espalha)* os valores em `myArray` em um novo array. Para clonar um array, mas adicionar valores adicionais no novo array, você pode escrever `[...myArray, 'new value']`. Isso retornaria uma nova matriz composta pelos valores em `myArray` e a string `new value` como o último valor. A sintaxe spread pode ser usada várias vezes na composição de array como esta, mas é importante notar que ele só faz uma cópia superficial do array. Ou seja, apenas proporciona operações de array imutáveis para arrays unidimensionais. # --instructions-- -Use the spread operator to return a new copy of state when a to-do is added. +Use o operador spread para retornar uma nova cópia do state quando uma tarefa (to-do) for adicionada. # --hints-- -The Redux store should exist and initialize with a state equal to `["Do not mutate state!"]`. +O store do Redux deve existir e inicializar com um estado igual a `["Do not mutate state!"]`. ```js assert( @@ -36,13 +36,13 @@ assert( ); ``` -`addToDo` and `immutableReducer` both should be functions. +`addToDo` e `immutableReducer` ambos devem ser funções. ```js assert(typeof addToDo === 'function' && typeof immutableReducer === 'function'); ``` -Dispatching an action of type `ADD_TO_DO` on the Redux store should add a `todo` item and should NOT mutate state. +Despachar uma ação do tipo `ADD_TO_DO` no store Redux deve adicionar um item `todo` e NÃO deve modificar o state. ```js assert( @@ -57,7 +57,7 @@ assert( ); ``` -The spread operator should be used to return new state. +O operador spread deve ser usado para retornar um novo estado. ```js (getUserInput) => assert(getUserInput('index').includes('...state')); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/redux/write-a-counter-with-redux.md b/curriculum/challenges/portuguese/03-front-end-libraries/redux/write-a-counter-with-redux.md index 9bf25454c3..70f5341aa5 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/redux/write-a-counter-with-redux.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/redux/write-a-counter-with-redux.md @@ -1,6 +1,6 @@ --- id: 5a24c314108439a4d4036157 -title: Write a Counter with Redux +title: Escreva um Contador com Redux challengeType: 6 forumTopicId: 301453 dashedName: write-a-counter-with-redux @@ -8,33 +8,33 @@ dashedName: write-a-counter-with-redux # --description-- -Now you've learned all the core principles of Redux! You've seen how to create actions and action creators, create a Redux store, dispatch your actions against the store, and design state updates with pure reducers. You've even seen how to manage complex state with reducer composition and handle asynchronous actions. These examples are simplistic, but these concepts are the core principles of Redux. If you understand them well, you're ready to start building your own Redux app. The next challenges cover some of the details regarding `state` immutability, but first, here's a review of everything you've learned so far. +Agora você aprendeu todos os princípios fundamentais do Redux! Você viu como criar criadores de ações e ações, criar um store do Redux, despachar suas ações ao store e projetar atualizações de estado com reducers puros. Você até viu como gerenciar o estado complexo com a composição do reducer e a lidar com ações assíncronas. Estes exemplos são simplistas, mas estes conceitos são os princípios fundamentais do Redux. Se você os entendeu bem, você está pronto para começar a construir seu próprio aplicativo Redux. Os próximos desafios cobrem alguns detalhes sobre imutabilidade do `state`, mas primeiro, aqui está uma revisão de tudo o que você aprendeu até agora. # --instructions-- -In this lesson, you'll implement a simple counter with Redux from scratch. The basics are provided in the code editor, but you'll have to fill in the details! Use the names that are provided and define `incAction` and `decAction` action creators, the `counterReducer()`, `INCREMENT` and `DECREMENT` action types, and finally the Redux `store`. Once you're finished you should be able to dispatch `INCREMENT` or `DECREMENT` actions to increment or decrement the state held in the `store`. Good luck building your first Redux app! +Nesta lição, você implementará um contador simples com o Redux do zero. O básico é fornecido no editor de código, mas você terá que preencher os detalhes! Use os nomes que são fornecidos e defina os criadores de ação `incAction` e `decAction`, os tipos de ação `counterReducer()`, `INCREMENT` e `DECREMENT` e, finalmente, o `store` Redux. Depois de ter terminado, você deve ser capaz de despachar as ações `INCREMENT` ou `DECREMENT` para incrementar ou decrementar o estado mantido no `store`. Boa sorte ao construir seu primeiro aplicativo Redux! # --hints-- -The action creator `incAction` should return an action object with `type` equal to the value of `INCREMENT` +O criador de ação `incAction` deve retornar um objeto de ação com `type` igual ao valor de `INCREMENT` ```js assert(incAction().type === INCREMENT); ``` -The action creator `decAction` should return an action object with `type` equal to the value of `DECREMENT` +O criador de ação `decAction` deve retornar um objeto de ação com `type` igual ao valor de `DECREMENT` ```js assert(decAction().type === DECREMENT); ``` -The Redux store should initialize with a `state` of 0. +O store do Redux deve inicializar com o `state` igual a 0. ```js assert(store.getState() === 0); ``` -Dispatching `incAction` on the Redux store should increment the `state` by 1. +Despachar `incAction` no store Redux deve incrementar o `state` por 1. ```js assert( @@ -47,7 +47,7 @@ assert( ); ``` -Dispatching `decAction` on the Redux store should decrement the `state` by 1. +Despachar `decAction` no store Redux deve decrementar o `state` por 1. ```js assert( @@ -60,7 +60,7 @@ assert( ); ``` -`counterReducer` should be a function +`counterReducer` deve ser uma função ```js assert(typeof counterReducer === 'function'); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/sass/apply-a-style-until-a-condition-is-met-with-while.md b/curriculum/challenges/portuguese/03-front-end-libraries/sass/apply-a-style-until-a-condition-is-met-with-while.md index 0e6f582247..33730d9cc9 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/sass/apply-a-style-until-a-condition-is-met-with-while.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/sass/apply-a-style-until-a-condition-is-met-with-while.md @@ -1,6 +1,6 @@ --- id: 587d7dbf367417b2b2512bbb -title: Apply a Style Until a Condition is Met with @while +title: Aplicar um Estilo Até que Uma Condição Seja Atendida com @while challengeType: 0 forumTopicId: 301454 dashedName: apply-a-style-until-a-condition-is-met-with-while @@ -8,9 +8,9 @@ dashedName: apply-a-style-until-a-condition-is-met-with-while # --description-- -The `@while` directive is an option with similar functionality to the JavaScript `while` loop. It creates CSS rules until a condition is met. +A diretiva `@while` é uma opção com funcionalidade semelhante ao laço `while` do JavaScript. Isso cria as regras do CSS até que uma condição seja atendida. -The `@for` challenge gave an example to create a simple grid system. This can also work with `@while`. +O desafio `@for` deu um exemplo para criar um sistema de grid simples. Isso também pode funcionar com `@while`. ```scss $x: 1; @@ -20,59 +20,59 @@ $x: 1; } ``` -First, define a variable `$x` and set it to 1. Next, use the `@while` directive to create the grid system *while* `$x` is less than 13. After setting the CSS rule for `width`, `$x` is incremented by 1 to avoid an infinite loop. +Primeiro, defina a variável `$x` e defina-a como 1. Em seguida, use a diretiva `@while` para criar o sistema de grid *enquanto* `$x` for menor que 13. Depois de definir a regra CSS para `width`, `$x` é incrementado por 1 para evitar um loop infinito. # --instructions-- -Use `@while` to create a series of classes with different `font-sizes`. +Use `@while` para criar uma série de classes com diferentes `font-sizes`. -There should be 5 different classes from `text-1` to `text-5`. Then set `font-size` to `15px` multiplied by the current index number. Make sure to avoid an infinite loop! +Deve haver 5 classes diferentes de `text-1` até `text-5`. Em seguida, defina `font-size` como `15px` multiplicado pelo número de índice atual. Certifique-se de evitar um loop infinito! # --hints-- -Your code should use the `@while` directive. +Seu código deve usar a diretiva `@while`. ```js assert(code.match(/@while /g)); ``` -Your code should use an index variable which starts at an index of 1. +Seu código deve usar uma variável de índice que começa em um índice de 1. ```js assert(code.match(/\$.*:\s*?1;/gi)); ``` -Your code should increment the counter variable. +Seu código deve incrementar a variável contadora. ```js assert(code.match(/\$(.*)\s*?:\s*\$\1\s*\+\s*1\s*;/gi)); ``` -Your `.text-1` class should have a `font-size` of `15px`. +Sua classe `.text-1` deve ter um `font-size` de `15px`. ```js assert($('.text-1').css('font-size') == '15px'); ``` -Your `.text-2` class should have a `font-size` of `30px`. +Sua classe `.text-2` deve ter um `font-size` de `30px`. ```js assert($('.text-2').css('font-size') == '30px'); ``` -Your `.text-3` class should have a `font-size` of `45px`. +Sua classe `.text-3` deve ter um `font-size` de `45px`. ```js assert($('.text-3').css('font-size') == '45px'); ``` -Your `.text-4` class should have a `font-size` of `60px`. +Sua classe `.text-4` deve ter um `font-size` de `60px`. ```js assert($('.text-4').css('font-size') == '60px'); ``` -Your `.text-5` class should have a `font-size` of `75px`. +Sua classe `.text-5` deve ter um `font-size` de `75px`. ```js assert($('.text-5').css('font-size') == '75px'); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/sass/create-reusable-css-with-mixins.md b/curriculum/challenges/portuguese/03-front-end-libraries/sass/create-reusable-css-with-mixins.md index 0d9d13c6f0..c4b368a3c2 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/sass/create-reusable-css-with-mixins.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/sass/create-reusable-css-with-mixins.md @@ -1,6 +1,6 @@ --- id: 587d7dbd367417b2b2512bb6 -title: Create Reusable CSS with Mixins +title: Criar CSS Reutilizável com Mixins challengeType: 0 forumTopicId: 301455 dashedName: create-reusable-css-with-mixins @@ -8,9 +8,9 @@ dashedName: create-reusable-css-with-mixins # --description-- -In Sass, a mixin is a group of CSS declarations that can be reused throughout the style sheet. +Em Sass, um mixin é um grupo de declarações CSS que podem ser reutilizados em toda a folha de estilos. -Newer CSS features take time before they are fully adopted and ready to use in all browsers. As features are added to browsers, CSS rules using them may need vendor prefixes. Consider `box-shadow`: +Os recursos CSS mais recentes levam tempo antes de serem totalmente adotados e prontos para uso em todos os navegadores. Como recursos são adicionados aos navegadores, as regras CSS que os usam podem precisar de prefixos de fornecedores. Considere `box-shadow`: ```scss div { @@ -21,7 +21,7 @@ div { } ``` -It's a lot of typing to re-write this rule for all the elements that have a `box-shadow`, or to change each value to test different effects. Mixins are like functions for CSS. Here is how to write one: +É muito digitação para reescrever esta regra para todos os elementos que têm uma `box-shadow`, ou para alterar cada valor para testar efeitos diferentes. Mixins são como funções para CSS. Veja como escrever um: ```scss @mixin box-shadow($x, $y, $blur, $c){ @@ -32,7 +32,7 @@ It's a lot of typing to re-write this rule for all the elements that have a `box } ``` -The definition starts with `@mixin` followed by a custom name. The parameters (the `$x`, `$y`, `$blur`, and `$c` in the example above) are optional. Now any time a `box-shadow` rule is needed, only a single line calling the mixin replaces having to type all the vendor prefixes. A mixin is called with the `@include` directive: +A definição começa com `@mixin` seguido por um nome personalizado. Os parâmetros (o `$x`, `$y`, `$blur`, e `$c` no exemplo acima) são opcionais. Agora, a qualquer momento que uma regra `box-shadow` é necessária, apenas uma única linha que chama o mixin substitui a necessidade de digitar todos os prefixos do fornecedor. Um mixin é chamado com a diretiva `@include`: ```scss div { @@ -42,17 +42,17 @@ div { # --instructions-- -Write a mixin for `border-radius` and give it a `$radius` parameter. It should use all the vendor prefixes from the example. Then use the `border-radius` mixin to give the `#awesome` element a border radius of `15px`. +Escreva um mixin para `border-radius` e dê a ele o parâmetro `$radius`. Deve usar todos os prefixos de fornecedor do exemplo. Em seguida, use o mixin de `border-radius` para dar ao elemento `#awesome` um raio de borda de `15px`. # --hints-- -Your code should declare a mixin named `border-radius` which has a parameter named `$radius`. +Seu código deve declarar um mixin nomeado `border-radius` que tem um parâmetro chamado `$radius`. ```js assert(code.match(/@mixin\s+?border-radius\s*?\(\s*?\$radius\s*?\)\s*?{/gi)); ``` -Your code should include the `-webkit-border-radius` vendor prefix that uses the `$radius` parameter. +Seu código deve incluir o prefixo do fornecedor `-webkit-border-radius` que usa o parâmetro `$radius`. ```js assert( @@ -60,7 +60,7 @@ assert( ); ``` -Your code should include the `-moz-border-radius` vendor prefix that uses the `$radius` parameter. +Seu código deve incluir o prefixo do fornecedor `-moz-border-radius` que usa o parâmetro `$radius`. ```js assert( @@ -68,13 +68,13 @@ assert( ); ``` -Your code should include the `-ms-border-radius` vendor prefix that uses the `$radius` parameter. +Seu código deve incluir o prefixo do fornecedor `-ms-border-radius` que usa o parâmetro `$radius`. ```js assert(__helpers.removeWhiteSpace(code).match(/-ms-border-radius:\$radius;/gi)); ``` -Your code should include the general `border-radius` rule that uses the `$radius` parameter. +Seu código deve incluir a regra geral `border-radius` que usa o parâmetro `$radius`. ```js assert( @@ -83,7 +83,7 @@ assert( ); ``` -Your code should call the `border-radius mixin` using the `@include` keyword, setting it to `15px`. +Seu código deve chamar o `mixin border-radius` usando a palavra-chave `@include`, definindo-o como `15px`. ```js assert(code.match(/@include\s+?border-radius\(\s*?15px\s*?\)\s*;/gi)); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/sass/extend-one-set-of-css-styles-to-another-element.md b/curriculum/challenges/portuguese/03-front-end-libraries/sass/extend-one-set-of-css-styles-to-another-element.md index c5723d66d1..7d25db8e60 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/sass/extend-one-set-of-css-styles-to-another-element.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/sass/extend-one-set-of-css-styles-to-another-element.md @@ -1,6 +1,6 @@ --- id: 587d7fa5367417b2b2512bbd -title: Extend One Set of CSS Styles to Another Element +title: Estender um Conjunto de Estilos CSS para Outro Elemento challengeType: 0 forumTopicId: 301456 dashedName: extend-one-set-of-css-styles-to-another-element @@ -8,9 +8,9 @@ dashedName: extend-one-set-of-css-styles-to-another-element # --description-- -Sass has a feature called `extend` that makes it easy to borrow the CSS rules from one element and build upon them in another. +Sass tem um recurso chamado `extend` que faz com que seja fácil pegar emprestado as regras CSS de um elemento e construí-las em outro. -For example, the below block of CSS rules style a `.panel` class. It has a `background-color`, `height` and `border`. +Por exemplo, o bloco abaixo de regras CSS estiliza uma classe `.panel`. Tem um `background-color`, um `height` e um `border`. ```scss .panel{ @@ -20,7 +20,7 @@ For example, the below block of CSS rules style a `.panel` class. It has a `back } ``` -Now you want another panel called `.big-panel`. It has the same base properties as `.panel`, but also needs a `width` and `font-size`. It's possible to copy and paste the initial CSS rules from `.panel`, but the code becomes repetitive as you add more types of panels. The `extend` directive is a simple way to reuse the rules written for one element, then add more for another: +Agora você quer outro painel chamado `.big-panel`. Ele tem as mesmas propriedades de base que `.panel`, mas também precisa de um `width` e `font-size`. É possível copiar e colar as regras iniciais de CSS do `.panel`, mas o código se torna repetitivo à medida que você adiciona mais tipos de painéis. A diretiva `extend` é uma maneira simples de reutilizar as regras escritas para um elemento, e então adicionar mais para outro: ```scss .big-panel{ @@ -30,15 +30,15 @@ Now you want another panel called `.big-panel`. It has the same base properties } ``` -The `.big-panel` will have the same properties as `.panel` in addition to the new styles. +O `.big-panel` terá as mesmas propriedades que `.panel` além dos novos estilos. # --instructions-- -Make a class `.info-important` that extends `.info` and also has a `background-color` set to magenta. +Faça uma classe `.info-important` que estenda `.info` e também tenha um `background-color` definido como magenta. # --hints-- -Your `info-important` class should have a `background-color` set to `magenta`. +Sua classe `info-important` deve ter um `background-color` definido para `magenta`. ```js assert( @@ -48,7 +48,7 @@ assert( ); ``` -Your `info-important` class should use `@extend` to inherit the styling from the `info` class. +Sua classe `info-important` deve usar `@extend` para herdar o estilo da classe `info`. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/sass/nest-css-with-sass.md b/curriculum/challenges/portuguese/03-front-end-libraries/sass/nest-css-with-sass.md index 1e7b8493c6..53fbbadd35 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/sass/nest-css-with-sass.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/sass/nest-css-with-sass.md @@ -1,6 +1,6 @@ --- id: 587d7dbd367417b2b2512bb5 -title: Nest CSS with Sass +title: Aninhar CSS com Sass challengeType: 0 forumTopicId: 301457 dashedName: nest-css-with-sass @@ -8,9 +8,9 @@ dashedName: nest-css-with-sass # --description-- -Sass allows nesting of CSS rules, which is a useful way of organizing a style sheet. +Sass permite aninhar as regras CSS, o que é uma maneira útil de organizar uma folha de estilo. -Normally, each element is targeted on a different line to style it, like so: +Normalmente, cada elemento é direcionado a uma linha diferente para estilizá-lo, assim: ```scss nav { @@ -26,7 +26,7 @@ nav ul li { } ``` -For a large project, the CSS file will have many lines and rules. This is where nesting can help organize your code by placing child style rules within the respective parent elements: +Para um grande projeto, o arquivo CSS terá muitas linhas e regras. Aqui é onde aninhar pode ajudar a organizar seu código colocando regras de estilo filho dentro dos respectivos elementos parentais: ```scss nav { @@ -45,11 +45,11 @@ nav { # --instructions-- -Use the nesting technique shown above to re-organize the CSS rules for both children of `.blog-post` element. For testing purposes, the `h1` should come before the `p` element. +Use a técnica de aninhamento mostrada acima para reorganizar as regras CSS para ambos os filhos do elemento `.blog-post`. Para fins de teste, o `h1` deve vir antes do elemento `p`. # --hints-- -Your code should re-organize the CSS rules so the `h1` and `p` are nested in the `.blog-post` parent element. +Seu código deve re-organizar as regras CSS para que o `h1` e `p` estejam aninhados no elemento pai `.blog-post`. ```js assert( diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/sass/split-your-styles-into-smaller-chunks-with-partials.md b/curriculum/challenges/portuguese/03-front-end-libraries/sass/split-your-styles-into-smaller-chunks-with-partials.md index 9262041c3a..82ca5b8d5f 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/sass/split-your-styles-into-smaller-chunks-with-partials.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/sass/split-your-styles-into-smaller-chunks-with-partials.md @@ -1,6 +1,6 @@ --- id: 587d7dbf367417b2b2512bbc -title: Split Your Styles into Smaller Chunks with Partials +title: Divida Seus Estilos em Pedaços Menores com Partials challengeType: 0 forumTopicId: 301459 dashedName: split-your-styles-into-smaller-chunks-with-partials @@ -8,25 +8,25 @@ dashedName: split-your-styles-into-smaller-chunks-with-partials # --description-- -Partials in Sass are separate files that hold segments of CSS code. These are imported and used in other Sass files. This is a great way to group similar code into a module to keep it organized. +Partials no Sass são arquivos separados que possuem segmentos de código CSS. Estes são importados e usados em outros arquivos Sass. Essa é uma ótima maneira de agrupar código semelhante em um módulo para mantê-lo organizado. -Names for partials start with the underscore (`_`) character, which tells Sass it is a small segment of CSS and not to convert it into a CSS file. Also, Sass files end with the `.scss` file extension. To bring the code in the partial into another Sass file, use the `@import` directive. +Nomes de partials começam com o caractere sublinhado (`_`), que diz para Sass que é um pequeno segmento de CSS e para não convertê-lo em um arquivo CSS. Além disso, os arquivos Sass terminam com a extensão de arquivo `.scss`. Para trazer o código partial para outro arquivo Sass, use a diretiva `@import`. -For example, if all your mixins are saved in a partial named "\_mixins.scss", and they are needed in the "main.scss" file, this is how to use them in the main file: +Por exemplo, se todos os seus mixins são salvos em uma partial chamada "\_mixins.scss", e eles são necessários no arquivo "main.scss", essa é a forma de como usá-los no arquivo principal: ```scss @import 'mixins' ``` -Note that the underscore and file extension are not needed in the `import` statement - Sass understands it is a partial. Once a partial is imported into a file, all variables, mixins, and other code are available to use. +Observe que o sublinhado e a extensão de arquivo não são necessários na instrução import` - Sass entende que é partial. Uma vez que um partial é importado para um arquivo, todas as variáveis, mixins e outro código estão disponíveis para uso.

-# --instructions-- +

--instructions--

-Write an `@import` statement to import a partial named `_variables.scss` into the main.scss file. +

Escreva uma declaração @import` para importar uma partial chamada `_variables.scss` para o arquivo main.scss. # --hints-- -Your code should use the `@import` directive, and should not include the underscore in the file name. +Seu código deve usar a diretiva `@import` e não deve incluir o sublinhado no nome do arquivo. ```js assert(code.match(/@import\s+?('|")variables\1/gi)); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/sass/store-data-with-sass-variables.md b/curriculum/challenges/portuguese/03-front-end-libraries/sass/store-data-with-sass-variables.md index b106a6fb84..70c0369f9c 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/sass/store-data-with-sass-variables.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/sass/store-data-with-sass-variables.md @@ -1,6 +1,6 @@ --- id: 587d7dbd367417b2b2512bb4 -title: Store Data with Sass Variables +title: Armazenar Dados com Variáveis do Sass challengeType: 0 forumTopicId: 301460 dashedName: store-data-with-sass-variables @@ -8,18 +8,18 @@ dashedName: store-data-with-sass-variables # --description-- -One feature of Sass that's different than CSS is it uses variables. They are declared and set to store data, similar to JavaScript. +Um recurso do Sass que é diferente do CSS é que ele usa variáveis. Elas são declaradas e definidas para armazenar dados, semelhante ao JavaScript. -In JavaScript, variables are defined using the `let` and `const` keywords. In Sass, variables start with a `$` followed by the variable name. +Em JavaScript, variáveis são definidas usando as palavras-chave `let` e `const`. Em Sass, variáveis começam com um `$` seguido do nome da variável. -Here are a couple examples: +Aqui está alguns exemplos: ```scss $main-fonts: Arial, sans-serif; $headings-color: green; ``` -And to use the variables: +A para usar variáveis: ```scss h1 { @@ -28,33 +28,33 @@ h1 { } ``` -One example where variables are useful is when a number of elements need to be the same color. If that color is changed, the only place to edit the code is the variable value. +Um exemplo onde variáveis são úteis é quando um número de elementos precisa ser da mesma cor. Se essa cor for alterada, o único local para se editar no código é no valor da variável. # --instructions-- -Create a variable `$text-color` and set it to `red`. Then change the value of the `color` property for the `.blog-post` and `h2` to the `$text-color` variable. +Crie a variável `$text-color` e defina-a como `red`. Em seguida, altere o valor da propriedade `color` dos elementos `.blog-post` e `h2` para a variável `$text-color`. # --hints-- -Your code should have a Sass variable declared for `$text-color` with a value of `red`. +Seu código deve ter uma variável Sass declarada `$text-color` com o valor `red`. ```js assert(code.match(/\$text-color\s*:\s*?red\s*;/g)); ``` -Your code should use the `$text-color` variable to change the `color` for the `.blog-post` and `h2` items. +Seu código deve usar a variável `$text-color` para alterar a propriedade `color` para os itens `.blog-post` e `h2`. ```js assert(code.match(/color\s*:\s*\$text-color\s*;?/g)); ``` -Your `.blog-post` element should have a `color` of red. +Seu elemento `.blog-post` deve ter a propriedade `color` definida como red. ```js assert($('.blog-post').css('color') == 'rgb(255, 0, 0)'); ``` -Your `h2` elements should have a `color` of red. +Seus elementos `h2` devem ter a propriedade `color` definida como red. ```js assert($('h2').css('color') == 'rgb(255, 0, 0)'); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/sass/use-each-to-map-over-items-in-a-list.md b/curriculum/challenges/portuguese/03-front-end-libraries/sass/use-each-to-map-over-items-in-a-list.md index bfdc68db55..b1f15b5ea6 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/sass/use-each-to-map-over-items-in-a-list.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/sass/use-each-to-map-over-items-in-a-list.md @@ -1,6 +1,6 @@ --- id: 587d7dbf367417b2b2512bba -title: Use @each to Map Over Items in a List +title: Use @each para Mapear Sobre Itens em uma Lista challengeType: 0 forumTopicId: 301461 dashedName: use-each-to-map-over-items-in-a-list @@ -8,7 +8,7 @@ dashedName: use-each-to-map-over-items-in-a-list # --description-- -The last challenge showed how the `@for` directive uses a starting and ending value to loop a certain number of times. Sass also offers the `@each` directive which loops over each item in a list or map. On each iteration, the variable gets assigned to the current value from the list or map. +O último desafio mostrou como a diretiva `@for` usa valores de início e fim para iterar uma quantidade determinada de vezes. Sass também oferece a diretiva `@each` a qual itera sobre cada item em uma lista ou mapa. Em cada iteração, a variável é atribuída ao valor atual da lista ou do mapa. ```scss @each $color in blue, red, green { @@ -16,7 +16,7 @@ The last challenge showed how the `@for` directive uses a starting and ending va } ``` -A map has slightly different syntax. Here's an example: +Um mapa possui uma sintaxe ligeiramente diferente. Aqui está um exemplo: ```scss $colors: (color1: blue, color2: red, color3: green); @@ -26,7 +26,7 @@ $colors: (color1: blue, color2: red, color3: green); } ``` -Note that the `$key` variable is needed to reference the keys in the map. Otherwise, the compiled CSS would have `color1`, `color2`... in it. Both of the above code examples are converted into the following CSS: +Note que a variável `$key` é necessária para referenciar as chaves no mapa. Caso contrário, o CSS compilado teria `color1`, `color2`... nele. Ambos os exemplos de código acima são convertidos para os CSS seguintes: ```scss .blue-text { @@ -44,29 +44,29 @@ Note that the `$key` variable is needed to reference the keys in the map. Otherw # --instructions-- -Write an `@each` directive that goes through a list: `blue, black, red` and assigns each variable to a `.color-bg` class, where the `color` part changes for each item. Each class should set the `background-color` the respective color. +Escreva uma diretiva `@each` que passar por uma lista: `blue, black, red` e atribui cada variável à classe `.color-bg`, aonde a parte `color` altera para cada item. Cada classe deve definir a propriedade `background-color` para a respectiva cor. # --hints-- -Your code should use the `@each` directive. +Seu código deve usar a diretiva `@each`. ```js assert(code.match(/@each /g)); ``` -Your `.blue-bg` class should have a `background-color` of blue. +Sua classe `.blue-bg` deve ter a propriedade `background-color` definida com o valor blue. ```js assert($('.blue-bg').css('background-color') == 'rgb(0, 0, 255)'); ``` -Your `.black-bg` class should have a `background-color` of black. +Sua classe `.black-bg` deve ter a propriedade `background-color` com o valor black. ```js assert($('.black-bg').css('background-color') == 'rgb(0, 0, 0)'); ``` -Your `.red-bg` class should have a `background-color` of red. +Sua classe `.red-bg` deve ter a propriedade `background-color` com o valor red. ```js assert($('.red-bg').css('background-color') == 'rgb(255, 0, 0)'); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/sass/use-for-to-create-a-sass-loop.md b/curriculum/challenges/portuguese/03-front-end-libraries/sass/use-for-to-create-a-sass-loop.md index f2d8bd73b8..b414e94ae3 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/sass/use-for-to-create-a-sass-loop.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/sass/use-for-to-create-a-sass-loop.md @@ -1,6 +1,6 @@ --- id: 587d7dbe367417b2b2512bb9 -title: Use @for to Create a Sass Loop +title: Use @for para Criar um Laço Sass challengeType: 0 forumTopicId: 301462 dashedName: use-for-to-create-a-sass-loop @@ -8,11 +8,11 @@ dashedName: use-for-to-create-a-sass-loop # --description-- -The `@for` directive adds styles in a loop, very similar to a `for` loop in JavaScript. +A diretiva `@for` adiciona estilos em um laço, muito similar ao laço `for` em JavaScript. -`@for` is used in two ways: "start through end" or "start to end". The main difference is that the "start **to** end" *excludes* the end number as part of the count, and "start **through** end" *includes* the end number as part of the count. +`@for` é usado de duas maneiras: "começo ao fim" ou "começo até o fim". A principal diferença é que "começo **até o** fim" *exclui* o número final como parte da contagem, enquanto "começo ** ao ** fim" *inclui* o número final como parte da contagem. -Here's a start **through** end example: +Aqui está um exemplo de começo **ao** fim: ```scss @for $i from 1 through 12 { @@ -20,7 +20,7 @@ Here's a start **through** end example: } ``` -The `#{$i}` part is the syntax to combine a variable (`i`) with text to make a string. When the Sass file is converted to CSS, it looks like this: +A parte `#{$i}` é a sintaxe para combinar uma variável (`i`) com texto para criar uma string. Quando o arquivo Sass é convertido para CSS, ele se parece com isto: ```scss .col-1 { @@ -38,47 +38,47 @@ The `#{$i}` part is the syntax to combine a variable (`i`) with text to make a s } ``` -This is a powerful way to create a grid layout. Now you have twelve options for column widths available as CSS classes. +Essa é uma maneira poderosa de criar um layout de grade. Agora você tem doze opções para a largura das colunas disponíveis como classes CSS. # --instructions-- -Write a `@for` directive that takes a variable `$j` that goes from 1 **to** 6. +Escreva uma diretiva `@for` que recebe uma variável `$j` que vai de 1 **até** 6. -It should create 5 classes called `.text-1` to `.text-5` where each has a `font-size` set to 15px multiplied by the index. +Isso deve criar 5 classes chamadas `.text-1` até `.text-5` onde cada um tem um `font-size` definido como 15px multiplicado pelo índice. # --hints-- -Your code should use the `@for` directive. +Seu código deve usar a diretiva `@for`. ```js assert(code.match(/@for /g)); ``` -Your `.text-1` class should have a `font-size` of 15px. +Sua classe `.text-1` deve ter um `font-size` de `15px`. ```js assert($('.text-1').css('font-size') == '15px'); ``` -Your `.text-2` class should have a `font-size` of 30px. +Sua classe `.text-2` deve ter um `font-size` de `15px`. ```js assert($('.text-2').css('font-size') == '30px'); ``` -Your `.text-3` class should have a `font-size` of 45px. +Sua classe `.text-3` deve ter um `font-size` de `15px`. ```js assert($('.text-3').css('font-size') == '45px'); ``` -Your `.text-4` class should have a `font-size` of 60px. +Sua classe `.text-4` deve ter um `font-size` de `15px`. ```js assert($('.text-4').css('font-size') == '60px'); ``` -Your `.text-5` class should have a `font-size` of 75px. +Sua classe `.text-5` deve ter um `font-size` de `15px`. ```js assert($('.text-5').css('font-size') == '75px'); diff --git a/curriculum/challenges/portuguese/03-front-end-libraries/sass/use-if-and-else-to-add-logic-to-your-styles.md b/curriculum/challenges/portuguese/03-front-end-libraries/sass/use-if-and-else-to-add-logic-to-your-styles.md index e13d113b23..13ef0ed8e3 100644 --- a/curriculum/challenges/portuguese/03-front-end-libraries/sass/use-if-and-else-to-add-logic-to-your-styles.md +++ b/curriculum/challenges/portuguese/03-front-end-libraries/sass/use-if-and-else-to-add-logic-to-your-styles.md @@ -1,6 +1,6 @@ --- id: 587d7dbe367417b2b2512bb8 -title: Use @if and @else to Add Logic To Your Styles +title: Use @if e @else para adicionar lógica a seus estilos challengeType: 0 forumTopicId: 301463 dashedName: use-if-and-else-to-add-logic-to-your-styles @@ -8,7 +8,7 @@ dashedName: use-if-and-else-to-add-logic-to-your-styles # --description-- -The `@if` directive in Sass is useful to test for a specific case - it works just like the `if` statement in JavaScript. +A diretiva `@if` no Sass é útil para testar um caso específico - funciona exatamente como a instrução `if` em JavaScript. ```scss @mixin make-bold($bool) { @@ -18,7 +18,7 @@ The `@if` directive in Sass is useful to test for a specific case - it works jus } ``` -And just like in JavaScript, `@else if` and `@else` test for more conditions: +E assim como em JavaScript, teste `@else if` e `@else` para mais condições: ```scss @mixin text-effect($val) { @@ -39,7 +39,7 @@ And just like in JavaScript, `@else if` and `@else` test for more conditions: # --instructions-- -Create a mixin called `border-stroke` that takes a parameter `$val`. The mixin should check for the following conditions using `@if`, `@else if`, and `@else`: +Crie um mixin chamado `border-stroke` que recebe o parâmetro `$val`. O mixin deve verificar as seguintes condições usando `@if`, `@else if`, e `@else`: ```scss light - 1px solid black @@ -47,17 +47,17 @@ medium - 3px solid black heavy - 6px solid black ``` -If `$val` is not `light`, `medium`, or `heavy`, the border should be set to `none`. +Se `$val` não for `light`, `medium`, ou `heavy`, a borda deve ser ajustada para `none`. # --hints-- -Your code should declare a mixin named `border-stroke` which has a parameter named `$val`. +Seu código deve declarar um mixin nomeado `border-stroke` que tem um parâmetro chamado `$val`. ```js assert(code.match(/@mixin\s+?border-stroke\s*?\(\s*?\$val\s*?\)\s*?{/gi)); ``` -Your mixin should have an `@if` statement to check if `$val` is `light`, and to set the `border` to `1px solid black`. +Seu mixin deve ter uma instrução `@if` para verificar se `$val` é `light`, e definir a `border` como `1px solid black`. ```js assert( @@ -67,7 +67,7 @@ assert( ); ``` -Your mixin should have an `@else if` statement to check if `$val` is `medium`, and to set the `border` to `3px solid black`. +Seu mixin deve ter uma instrução `@else if` para verificar se `$val` é `medium`, e definir a `border` como `3px solid black`. ```js assert( @@ -77,7 +77,7 @@ assert( ); ``` -Your mixin should have an `@else if` statement to check if `$val` is `heavy`, and to set the `border` to `6px solid black`. +Seu mixin deve ter uma instrução `@else if` para verificar se `$val` é `heavy`, e definir a `border` como `6px solid black`. ```js assert( @@ -87,7 +87,7 @@ assert( ); ``` -Your mixin should have an `@else` statement to set the `border` to `none`. +Seu mixin deve ter um comando `@else` para definir `border` para `none`. ```js assert(code.match(/@else\s*?{\s*?border\s*?:\s*?none\s*?;\s*?}/gi)); diff --git a/curriculum/challenges/portuguese/04-data-visualization/data-visualization-projects/visualize-data-with-a-bar-chart.md b/curriculum/challenges/portuguese/04-data-visualization/data-visualization-projects/visualize-data-with-a-bar-chart.md index 33794d33d4..fe86af575a 100644 --- a/curriculum/challenges/portuguese/04-data-visualization/data-visualization-projects/visualize-data-with-a-bar-chart.md +++ b/curriculum/challenges/portuguese/04-data-visualization/data-visualization-projects/visualize-data-with-a-bar-chart.md @@ -1,6 +1,6 @@ --- id: bd7168d8c242eddfaeb5bd13 -title: Visualize Data with a Bar Chart +title: Visualize dados com um gráfico de barras challengeType: 3 forumTopicId: 301464 dashedName: visualize-data-with-a-bar-chart @@ -8,43 +8,43 @@ dashedName: visualize-data-with-a-bar-chart # --description-- -**Objective:** Build a [CodePen.io](https://codepen.io) app that is functionally similar to this: . +**Objetivo:** criar um app do [CodePen.io](https://codepen.io) que possua uma funcionalidade similar a essa: . -Fulfill the below [user stories](https://en.wikipedia.org/wiki/User_story) and get all of the tests to pass. Give it your own personal style. +Atenda às [especificações de usuário](https://en.wikipedia.org/wiki/User_story) abaixo para passar em todos os testes. Dê a elas o seu próprio estilo pessoal. -You can use HTML, JavaScript, CSS, and the D3 svg-based visualization library. The tests require axes to be generated using the D3 axis property, which automatically generates ticks along the axis. These ticks are required for passing the D3 tests because their positions are used to determine alignment of graphed elements. You will find information about generating axes at . Required (non-virtual) DOM elements are queried on the moment of each test. If you use a frontend framework (like Vue for example), the test results may be inaccurate for dynamic content. We hope to accommodate them eventually, but these frameworks are not currently supported for D3 projects. +Você pode usar HTML, JavaScript, CSS e a biblioteca de visualização D3, baseada em svg. Os testes requerem que os eixos sejam gerados usando a propriedade de eixos do D3, que geram automaticamente marcações ao longo do eixo. Essas marcações são exigidas para passar nos testes do D3 porque suas posições são usadas para determinar o alinhamento dos elementos do gráfico. Você vai encontrar informações sobre a geração de eixos em . Os elementos DOM obrigatórios (não virtuais) são consultados no momento de cada teste. Se você usar um framework de front-end (como o Vue por exemplo), os resultados dos testes podem ser imprecisos para conteúdo dinâmico. Esperamos dar suporte a eles um dia, mas atualmente esses frameworks não são suportados para os projetos de D3. -**User Story #1:** My chart should have a title with a corresponding `id="title"`. +**Especificação de usuário nº 1:** Meu gráfico deve ter um título com um `id="title"` correspondente. -**User Story #2:** My chart should have a `g` element x-axis with a corresponding `id="x-axis"`. +**Especificação de usuário nº 2:** Meu gráfico deve ter um elemento `g` no eixo x com um `id="x-axis"` correspondente. -**User Story #3:** My chart should have a `g` element y-axis with a corresponding `id="y-axis"`. +**Especificação de usuário nº 3:** Meu gráfico deve ter um elemento `g` no eixo y com um `id="y-axis"` correspondente. -**User Story #4:** Both axes should contain multiple tick labels, each with a corresponding `class="tick"`. +**Especificação de usuário nº 4:** Ambos os eixos devem conter múltiplos rótulos (labels) de marcação, cada um com uma `class="tick"` correspondente. -**User Story #5:** My chart should have a `rect` element for each data point with a corresponding `class="bar"` displaying the data. +**Especificação de usuário nº 5:** Meu gráfico deve ter um elemento `rect` para cada ponto com uma classe `class="bar"` correspondente exibindo os dados. -**User Story #6:** Each bar should have the properties `data-date` and `data-gdp` containing `date` and `GDP` values. +**Especificação de usuário nº 6:** Cada barra deve ter as propriedades `data-date` e `data-gdp`, contendo os valores `date` e `GDP`, respectivamente. -**User Story #7:** The bar elements' `data-date` properties should match the order of the provided data. +**Especificação de usuário nº 7:** As propriedades `data-date` das barras devem corresponder à ordem fornecida pelos dados. -**User Story #8:** The bar elements' `data-gdp` properties should match the order of the provided data. +**Especificação de usuário nº 8:** As propriedades `data-gdp` das barras devem corresponder à ordem fornecida pelos dados. -**User Story #9:** Each bar element's height should accurately represent the data's corresponding `GDP`. +**Especificação de usuário nº 9:** A altura de cada barra deve representar corretamente os dados de `GDP` correspondentes. -**User Story #10:** The `data-date` attribute and its corresponding bar element should align with the corresponding value on the x-axis. +**Especificação de usuário nº 10:** O atributo `data-date` e sua barra correspondente devem estar alinhados com o seu valor correspondente no eixo x. -**User Story #11:** The `data-gdp` attribute and its corresponding bar element should align with the corresponding value on the y-axis. +**Especificação de usuário nº 11:** O atributo `data-gdp` e sua barra correspondente devem estar alinhados com o seu valor correspondente no eixo y. -**User Story #12:** I can mouse over an area and see a tooltip with a corresponding `id="tooltip"` which displays more information about the area. +**Especificação de usuário nº 12:** Eu posso passar o mouse sobre uma área e ver uma dica com uma `id="tooltip"` correspondente, que exibe mais informações sobre a área. -**User Story #13:** My tooltip should have a `data-date` property that corresponds to the `data-date` of the active area. +**Especificação de usuário nº 13:** Minha ferramenta de dica (tooltip) deve ter uma propriedade `data-date` que corresponda à `data-date` da área ativa, isto é, onde o mouse está em cima. -Here is the dataset you will need to complete this project: `https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/GDP-data.json` +Aqui está o dataset de que você precisará para completar este projeto: `https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/GDP-data.json` -You can build your project by using this CodePen template and clicking `Save` to create your own pen. Or you can use this CDN link to run the tests in any environment you like: `https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js`. +Você pode fazer o seu projeto usando este modelo da CodePen e clicando em `Save` para criar seu próprio pen. Ou você pode usar este link da CDN para executar os testes em qualquer ambiente que você preferir: `https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js`. -Once you're done, submit the URL to your working project with all its tests passing. +Quando tiver terminado, envie o URL do seu projeto depois de ele haver passado em todos os testes. # --solutions-- diff --git a/curriculum/challenges/portuguese/04-data-visualization/data-visualization-with-d3/add-a-hover-effect-to-a-d3-element.md b/curriculum/challenges/portuguese/04-data-visualization/data-visualization-with-d3/add-a-hover-effect-to-a-d3-element.md index beb4f34992..829c43bd59 100644 --- a/curriculum/challenges/portuguese/04-data-visualization/data-visualization-with-d3/add-a-hover-effect-to-a-d3-element.md +++ b/curriculum/challenges/portuguese/04-data-visualization/data-visualization-with-d3/add-a-hover-effect-to-a-d3-element.md @@ -1,6 +1,6 @@ --- id: 587d7faa367417b2b2512bd4 -title: Add a Hover Effect to a D3 Element +title: Adicionar um efeito de hover a um elemento D3 challengeType: 6 forumTopicId: 301469 dashedName: add-a-hover-effect-to-a-d3-element @@ -8,17 +8,17 @@ dashedName: add-a-hover-effect-to-a-d3-element # --description-- -It's possible to add effects that highlight a bar when the user hovers over it with the mouse. So far, the styling for the rectangles is applied with the built-in D3 and SVG methods, but you can use CSS as well. +É possível adicionar efeitos que destacam uma barra quando o usuário passa o mouse sobre ela. Até agora, o estilo para os retângulos é aplicado com os métodos incorporados do D3 e SVG, mas você também pode usar CSS. -You set the CSS class on the SVG elements with the `attr()` method. Then the `:hover` pseudo-class for your new class holds the style rules for any hover effects. +Você definiu a classe CSS no elemento SVG com o método `attr()`. Então, a pseudoclasse `:hover` para a sua nova classe contém as regras do estilo para quaisquer efeitos de hover. # --instructions-- -Use the `attr()` method to add a class of `bar` to all the `rect` elements. This changes the `fill` color of the bar to brown when you mouse over it. +Use o método `attr()` para adicionar uma classe de `bar` a todos os elementos `rect`. Isso altera a cor da barra para marrom quando você passar o mouse por cima dela. # --hints-- -Your `rect` elements should have a class of `bar`. +Seus elementos `rect` devem ter uma classe `bar`. ```js assert($('rect').attr('class').trim().split(/\s+/g).includes('bar')); diff --git a/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/chain-middleware-to-create-a-time-server.md b/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/chain-middleware-to-create-a-time-server.md index d68ab003f3..df2660ab4a 100644 --- a/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/chain-middleware-to-create-a-time-server.md +++ b/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/chain-middleware-to-create-a-time-server.md @@ -1,6 +1,6 @@ --- id: 587d7fb1367417b2b2512bf4 -title: Chain Middleware to Create a Time Server +title: Encadeie middleware para criar um servidor de tempo challengeType: 2 forumTopicId: 301510 dashedName: chain-middleware-to-create-a-time-server @@ -8,9 +8,9 @@ dashedName: chain-middleware-to-create-a-time-server # --description-- -Middleware can be mounted at a specific route using `app.METHOD(path, middlewareFunction)`. Middleware can also be chained inside route definition. +O middleware pode ser montado em uma rota específica usando `app.METHOD(path, middlewareFunction)`. O middleware também pode ser encadeado nas definições de rota. -Look at the following example: +Observe o exemplo abaixo: ```js app.get('/user', function(req, res, next) { @@ -21,17 +21,17 @@ app.get('/user', function(req, res, next) { }); ``` -This approach is useful to split the server operations into smaller units. That leads to a better app structure, and the possibility to reuse code in different places. This approach can also be used to perform some validation on the data. At each point of the middleware stack you can block the execution of the current chain and pass control to functions specifically designed to handle errors. Or you can pass control to the next matching route, to handle special cases. We will see how in the advanced Express section. +Esse método é útil para separar as operações de servidor em pedaços menores. Isso fornece uma melhor estrutura de aplicativo, além da possibilidade de reusar código em partes diferentes. Esse método também pode ser usado para realizar algumas validações de dados. Em cada ponto da pilha de middleware, você poderá bloquear a execução da cadeia atual e passar o controle para funções específicas criadas especificamente para gerenciar erros. Você também pode passar o controle para a próxima rota correspondente, para gerenciar casos especiais. Veremos como fazer isso na seção avançada do Express. # --instructions-- -In the route `app.get('/now', ...)` chain a middleware function and the final handler. In the middleware function you should add the current time to the request object in the `req.time` key. You can use `new Date().toString()`. In the handler, respond with a JSON object, taking the structure `{time: req.time}`. +Na rota `app.get('/now', ...)`, encadeie uma função middleware e o handler final. Na função middleware, você deverá adicionar o tempo atual no objeto de requisição na chave `req.time`. Você pode usar `new Date().toString()`. No gerenciador, responda com um objeto JSON, pegando a estrutura `{time: req.time}`. -**Note:** The test will not pass if you don’t chain the middleware. If you mount the function somewhere else, the test will fail, even if the output result is correct. +**Nota:** o teste não vai passar se você não encadear o middleware. Se você montar a função em algum outro lugar, o teste vai falhar, mesmo que o resultado final esteja correto. # --hints-- -The /now endpoint should have mounted middleware +O endpoint (URL) /now deve ter o middleware montado ```js (getUserInput) => @@ -49,7 +49,7 @@ The /now endpoint should have mounted middleware ); ``` -The /now endpoint should return a time that is +/- 20 secs from now +O endpoint (URL) /now deve retornar um horário que possui margem de erro de +/- 20 segundos a partir de agora ```js (getUserInput) => diff --git a/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/get-data-from-post-requests.md b/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/get-data-from-post-requests.md index 8398c13973..cc12002ddd 100644 --- a/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/get-data-from-post-requests.md +++ b/curriculum/challenges/portuguese/05-apis-and-microservices/basic-node-and-express/get-data-from-post-requests.md @@ -1,6 +1,6 @@ --- id: 587d7fb2367417b2b2512bf8 -title: Get Data from POST Requests +title: Retorne dados de requisições POST challengeType: 2 forumTopicId: 301511 dashedName: get-data-from-post-requests @@ -8,27 +8,27 @@ dashedName: get-data-from-post-requests # --description-- -Mount a POST handler at the path `/name`. It’s the same path as before. We have prepared a form in the html frontpage. It will submit the same data of exercise 10 (Query string). If the body-parser is configured correctly, you should find the parameters in the object `req.body`. Have a look at the usual library example: +Monte um handler POST no caminho `/name`. É o mesmo caminho de antes. Nós preparamos um formulário na página inicial html. Ele vai enviar os mesmos dados do exercício 10 (string de consulta). Se o body-parser estiver configurado corretamente, você deverá encontrar os parâmetros do objeto `req.body`. Dê uma olhada no exemplo habitual da biblioteca:

route: POST '/library'
urlencoded_body: userId=546&bookId=6754
req.body: {userId: '546', bookId: '6754'}
-Respond with the same JSON object as before: `{name: 'firstname lastname'}`. Test if your endpoint works using the html form we provided in the app frontpage. +Responda com o mesmo objeto JSON usado antes: `{name: 'firstname lastname'}`. Teste se seu endpoint (URL) funciona usando o formulário html que fornecemos na página inicial do aplicativo. -Tip: There are several other http methods other than GET and POST. And by convention there is a correspondence between the http verb, and the operation you are going to execute on the server. The conventional mapping is: +Dica: existem vários outros métodos http além de GET e POST. Por convenção, existem correspondências entre o verbo http e a operação que você vai executar no servidor. O mapeamento convencional é: -POST (sometimes PUT) - Create a new resource using the information sent with the request, +POST (às vezes, PUT) – Cria um novo recurso usando a informação enviada com a requisição, -GET - Read an existing resource without modifying it, +GET - Lê um recurso existente sem modificá-lo, -PUT or PATCH (sometimes POST) - Update a resource using the data sent, +PUT ou PATCH (às vezes, POST) – Atualiza um recurso usando os dados enviados, -DELETE => Delete a resource. +DELETE=> Exclui um recurso. -There are also a couple of other methods which are used to negotiate a connection with the server. Except from GET, all the other methods listed above can have a payload (i.e. the data into the request body). The body-parser middleware works with these methods as well. +Existem também alguns outros métodos que são usados para estabelecer uma conexão com o servidor. Com a exceção de GET, todos os outros métodos listados acima podem ter uma payload(carga) (exemplo: os dados enviados no corpo da requisição). O middleware body-parser também funciona com esses métodos. # --hints-- -Test 1 : Your API endpoint should respond with the correct name +Teste 1 : O endpoint (URL) da API deve responder com o nome correto ```js (getUserInput) => @@ -46,7 +46,7 @@ Test 1 : Your API endpoint should respond with the correct name ); ``` -Test 2 : Your API endpoint should respond with the correct name +Teste 2: O endpoint da API deve responder com o nome correto ```js (getUserInput) => diff --git a/curriculum/challenges/portuguese/08-data-analysis-with-python/data-analysis-with-python-course/pandas-dataframes.md b/curriculum/challenges/portuguese/08-data-analysis-with-python/data-analysis-with-python-course/pandas-dataframes.md index fd5eedb176..0cc95e6aeb 100644 --- a/curriculum/challenges/portuguese/08-data-analysis-with-python/data-analysis-with-python-course/pandas-dataframes.md +++ b/curriculum/challenges/portuguese/08-data-analysis-with-python/data-analysis-with-python-course/pandas-dataframes.md @@ -1,6 +1,6 @@ --- id: 5e9a093a74c4063ca6f7c15a -title: Pandas DataFrames +title: DataFrames do Pandas challengeType: 11 videoId: 7SgFBYXaiH0 dashedName: pandas-dataframes @@ -8,18 +8,18 @@ dashedName: pandas-dataframes # --description-- -*Instead of using notebooks.ai like it shows in the video, you can use Google Colab instead.* +*Ao invés de usar notebooks.ai como foi mostrado no vídeo, você pode usar o Google Colab como substituto.* -More resources: +Mais recursos: -- [Notebooks on GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas) -- [How to open Notebooks from GitHub using Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) +- [Notebooks no GitHub](https://github.com/ine-rmotr-curriculum/freecodecamp-intro-to-pandas) +- [Como abrir notebooks do GitHub usando o Google Colab.](https://colab.research.google.com/github/googlecolab/colabtools/blob/master/notebooks/colab-github-demo.ipynb) # --question-- ## --text-- -What will the following code print out? +O que será impresso pelo código a seguir? ```py import pandas as pd @@ -37,27 +37,27 @@ print(certificates_earned.iloc[2]) ## --answers--
-Tom      16
-Kris      5
-Ahmad     9
-Beau     12
-Name: Time (in months), dtype: int64
+Tom 16
+Kris 5
+Ahmad 9
+Beau 12
+Nome: Tempo (em meses), dtype: int64
 
---
-Certificates         6
-Time (in months)    12
-Name: Beau, dtype: int64
+Certificados 6
+Tempo (em meses) 12
+Nome: Beau, dtype: int64
 
---
-Certificates        5
-Time (in months)    9
-Name: Ahmad, dtype: int64
+Certificados 5
+Tempo (em meses) 9
+Nome: Ahmad, dtype: int64
 
## --video-solution-- diff --git a/curriculum/challenges/portuguese/12-certificates/apis-and-microservices-certificate/apis-and-microservices-certificate.yml b/curriculum/challenges/portuguese/12-certificates/apis-and-microservices-certificate/apis-and-microservices-certificate.yml index b691e98afa..3ed9fd6637 100644 --- a/curriculum/challenges/portuguese/12-certificates/apis-and-microservices-certificate/apis-and-microservices-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/apis-and-microservices-certificate/apis-and-microservices-certificate.yml @@ -1,21 +1,21 @@ --- id: 561add10cb82ac38a17523bc -title: APIs and Microservices Certificate +title: Certificado de APIs e microsserviços challengeType: 7 isPrivate: true tests: - id: bd7158d8c443edefaeb5bdef - title: Timestamp Microservice + title: Microsserviço de timestamp - id: bd7158d8c443edefaeb5bdff - title: Request Header Parser Microservice + title: Microsserviço parseador de cabeçalho de requisição - id: bd7158d8c443edefaeb5bd0e - title: URL Shortener Microservice + title: Microsserviço redutor de URL - id: 5a8b073d06fa14fcfde687aa - title: Exercise Tracker + title: Rastreador de exercícios - id: bd7158d8c443edefaeb5bd0f - title: File Metadata Microservice + title: Microsserviço de metadados de arquivos diff --git a/curriculum/challenges/portuguese/12-certificates/data-analysis-with-python-certificate/data-analysis-with-python-certificate.yml b/curriculum/challenges/portuguese/12-certificates/data-analysis-with-python-certificate/data-analysis-with-python-certificate.yml index 238899200c..b664a4f0a3 100644 --- a/curriculum/challenges/portuguese/12-certificates/data-analysis-with-python-certificate/data-analysis-with-python-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/data-analysis-with-python-certificate/data-analysis-with-python-certificate.yml @@ -1,22 +1,22 @@ --- id: 5e46fc95ac417301a38fb934 -title: Data Analysis with Python Certificate +title: Certificado de análise de dados com Python challengeType: 7 isPrivate: true tests: - id: 5e46f7e5ac417301a38fb928 - title: Mean-Variance-Standard Deviation Calculator + title: Calculadora de média, variância e desvio padrão - id: 5e46f7e5ac417301a38fb929 - title: Demographic Data Analyzer + title: Analisador de dados demográficos - id: 5e46f7f8ac417301a38fb92a - title: Medical Data Visualizer + title: Visualizador de dados médicos - id: 5e46f802ac417301a38fb92b - title: Page View Time Series Visualizer + title: Visualizador de séries temporais de visitas de páginas - id: 5e4f5c4b570f7e3a4949899f - title: Sea Level Predictor + title: Previsor de nível do mar diff --git a/curriculum/challenges/portuguese/12-certificates/data-visualization-certificate/data-visualization-certificate.yml b/curriculum/challenges/portuguese/12-certificates/data-visualization-certificate/data-visualization-certificate.yml index 589eebe67f..221b7d4056 100644 --- a/curriculum/challenges/portuguese/12-certificates/data-visualization-certificate/data-visualization-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/data-visualization-certificate/data-visualization-certificate.yml @@ -1,21 +1,21 @@ --- id: 5a553ca864b52e1d8bceea14 -title: Data Visualization Certificate +title: Certificado de visualização de dados challengeType: 7 isPrivate: true tests: - id: bd7168d8c242eddfaeb5bd13 - title: Visualize Data with a Bar Chart + title: Visualize dados com um gráfico de barras - id: bd7178d8c242eddfaeb5bd13 - title: Visualize Data with a Scatterplot Graph + title: Visualize dados com um gráfico de dispersão - id: bd7188d8c242eddfaeb5bd13 - title: Visualize Data with a Heat Map + title: Visualize dados com um mapa de calor - id: 587d7fa6367417b2b2512bbf - title: Visualize Data with a Choropleth Map + title: Visualize dados com um mapa coroplético - id: 587d7fa6367417b2b2512bc0 - title: Visualize Data with a Treemap Diagram + title: Visualize dados com um diagrama Treemap diff --git a/curriculum/challenges/portuguese/12-certificates/front-end-libraries-certificate/front-end-libraries-certificate.yml b/curriculum/challenges/portuguese/12-certificates/front-end-libraries-certificate/front-end-libraries-certificate.yml index 1f0a8f2689..0bbf2bdcb3 100644 --- a/curriculum/challenges/portuguese/12-certificates/front-end-libraries-certificate/front-end-libraries-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/front-end-libraries-certificate/front-end-libraries-certificate.yml @@ -1,21 +1,21 @@ --- id: 561acd10cb82ac38a17513bc -title: Front End Libraries Certificate +title: Certificado de bibliotecas de front-end challengeType: 7 isPrivate: true tests: - id: bd7158d8c442eddfaeb5bd13 - title: Build a Random Quote Machine + title: Crie uma máquina de citação aleatória - id: bd7157d8c242eddfaeb5bd13 - title: Build a Markdown Previewer + title: Crie um pré-visualizador de markdown - id: 587d7dbc367417b2b2512bae - title: Build a Drum Machine + title: Crie uma bateria eletrônica - id: bd7158d8c442eddfaeb5bd17 - title: Build a JavaScript Calculator + title: Crie uma calculadora JavaScript - id: bd7158d8c442eddfaeb5bd0f - title: Build a 25 + 5 Clock + title: Crie um Relógio 25 + 5 diff --git a/curriculum/challenges/portuguese/12-certificates/information-security-certificate/information-security-certificate.yml b/curriculum/challenges/portuguese/12-certificates/information-security-certificate/information-security-certificate.yml index a6339cfb86..e1c883522a 100644 --- a/curriculum/challenges/portuguese/12-certificates/information-security-certificate/information-security-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/information-security-certificate/information-security-certificate.yml @@ -1,21 +1,21 @@ --- id: 5e6021435ac9d0ecd8b94b00 -title: Information Security Certificate +title: Certificado de segurança da informação challengeType: 7 isPrivate: true tests: - id: 587d824a367417b2b2512c44 - title: Stock Price Checker + title: Verificador de preço de ações - id: 587d824a367417b2b2512c45 - title: Anonymous Message Board + title: Quadro de mensagens anônimas - id: 5e46f979ac417301a38fb932 - title: Port Scanner + title: Verificador de portas - id: 5e46f983ac417301a38fb933 - title: SHA-1 Password Cracker + title: Quebrador de senhas SHA-1 - id: 5e601c775ac9d0ecd8b94aff - title: Secure Real Time Multiplayer Game + title: Jogo multijogador seguro em tempo real diff --git a/curriculum/challenges/portuguese/12-certificates/javascript-algorithms-and-data-structures-certificate/javascript-algorithms-and-data-structures-certificate.yml b/curriculum/challenges/portuguese/12-certificates/javascript-algorithms-and-data-structures-certificate/javascript-algorithms-and-data-structures-certificate.yml index aebebf678c..583f662558 100644 --- a/curriculum/challenges/portuguese/12-certificates/javascript-algorithms-and-data-structures-certificate/javascript-algorithms-and-data-structures-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/javascript-algorithms-and-data-structures-certificate/javascript-algorithms-and-data-structures-certificate.yml @@ -1,21 +1,21 @@ --- id: 561abd10cb81ac38a17513bc -title: JavaScript Algorithms and Data Structures Certificate +title: Certificado de algoritmos e estruturas de dados em JavaScript challengeType: 7 isPrivate: true tests: - id: aaa48de84e1ecc7c742e1124 - title: Palindrome Checker + title: Verificador de palíndromo - id: a7f4d8f2483413a6ce226cac - title: Roman Numeral Converter + title: Conversor de numerais romanos - id: 56533eb9ac21ba0edf2244e2 - title: Caesars Cipher + title: Cifra de César - id: aff0395860f5d3034dc0bfc9 - title: Telephone Number Validator + title: Validador de número de telefone - id: aa2e6f85cab2ab736c9a9b24 - title: Cash Register + title: Caixa registradora diff --git a/curriculum/challenges/portuguese/12-certificates/legacy-back-end-certificate/legacy-back-end-certificate.yml b/curriculum/challenges/portuguese/12-certificates/legacy-back-end-certificate/legacy-back-end-certificate.yml index d48ecd7921..22b80752cc 100644 --- a/curriculum/challenges/portuguese/12-certificates/legacy-back-end-certificate/legacy-back-end-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/legacy-back-end-certificate/legacy-back-end-certificate.yml @@ -1,36 +1,36 @@ --- id: 660add10cb82ac38a17513be -title: Legacy Back End Certificate +title: Certificado de back-end legado challengeType: 7 isPrivate: true tests: - id: bd7158d8c443edefaeb5bdef - title: Timestamp Microservice + title: Microsserviço de timestamp - id: bd7158d8c443edefaeb5bdff - title: Request Header Parser Microservice + title: Microsserviço parseador de cabeçalho de requisição - id: bd7158d8c443edefaeb5bd0e - title: URL Shortener Microservice + title: Microsserviço redutor de URL - id: bd7158d8c443edefaeb5bdee - title: Image Search Abstraction Layer + title: Camada de abstração de pesquisa de imagens - id: bd7158d8c443edefaeb5bd0f - title: File Metadata Microservice + title: Microserviço de metadados de arquivos - id: bd7158d8c443eddfaeb5bdef - title: Build a Voting App + title: Crie um aplicativo de votação - id: bd7158d8c443eddfaeb5bdff - title: Build a Nightlife Coordination App + title: Crie um aplicativo de coordenação da vida noturna - id: bd7158d8c443eddfaeb5bd0e - title: Chart the Stock Market + title: Faça um gráfico do mercado de ações - id: bd7158d8c443eddfaeb5bd0f - title: Manage a Book Trading Club + title: Gerencie um clube de negociações de livros - id: bd7158d8c443eddfaeb5bdee - title: Build a Pinterest Clone + title: Crie um clone do Pinterest diff --git a/curriculum/challenges/portuguese/12-certificates/legacy-data-visualization-certificate/legacy-data-visualization-certificate.yml b/curriculum/challenges/portuguese/12-certificates/legacy-data-visualization-certificate/legacy-data-visualization-certificate.yml index 1508cf30d8..4c5e8dfa3b 100644 --- a/curriculum/challenges/portuguese/12-certificates/legacy-data-visualization-certificate/legacy-data-visualization-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/legacy-data-visualization-certificate/legacy-data-visualization-certificate.yml @@ -1,36 +1,36 @@ --- id: 561add10cb82ac39a17513bc -title: Legacy Data Visualization Certificate +title: Certificado de visualização de dados legado challengeType: 7 isPrivate: true tests: - id: bd7157d8c242eddfaeb5bd13 - title: Build a Markdown Previewer + title: Crie um pré-visualizador de markdown - id: bd7156d8c242eddfaeb5bd13 - title: Build a Camper Leaderboard + title: Crie um painel de estatísticas dos campers - id: bd7155d8c242eddfaeb5bd13 - title: Build a Recipe Box + title: Crie uma caixa de receitas - id: bd7154d8c242eddfaeb5bd13 - title: Build the Game of Life + title: Crie o Jogo da Vida - id: bd7153d8c242eddfaeb5bd13 - title: Build a Roguelike Dungeon Crawler Game + title: Crie um jogo de RPG do tipo Dungeon Crawler - id: bd7168d8c242eddfaeb5bd13 - title: Visualize Data with a Bar Chart + title: Visualize dados com um gráfico de barras - id: bd7178d8c242eddfaeb5bd13 - title: Visualize Data with a Scatterplot Graph + title: Visualize dados com um gráfico de dispersão - id: bd7188d8c242eddfaeb5bd13 - title: Visualize Data with a Heat Map + title: Visualize dados com um mapa de calor - id: bd7198d8c242eddfaeb5bd13 - title: Show National Contiguity with a Force Directed Graph + title: Mostrar contiguidade nacional com um gráfico direcionado de força - id: bd7108d8c242eddfaeb5bd13 - title: Map Data Across the Globe + title: Mapeamento de dados através do mundo diff --git a/curriculum/challenges/portuguese/12-certificates/legacy-front-end-certificate/legacy-front-end-certificate.yml b/curriculum/challenges/portuguese/12-certificates/legacy-front-end-certificate/legacy-front-end-certificate.yml index 93d72c9b7f..3c62956368 100644 --- a/curriculum/challenges/portuguese/12-certificates/legacy-front-end-certificate/legacy-front-end-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/legacy-front-end-certificate/legacy-front-end-certificate.yml @@ -1,36 +1,36 @@ --- id: 561add10cb82ac38a17513be -title: Legacy Front End Certificate +title: Certificado de back-end legado challengeType: 7 isPrivate: true tests: - id: bd7158d8c242eddfaeb5bd13 - title: Build a Personal Portfolio Webpage + title: Crie uma página de portfólio pessoal - id: bd7158d8c442eddfaeb5bd13 - title: Build a Random Quote Machine + title: Crie uma máquina de citação aleatória - id: bd7158d8c442eddfaeb5bd0f - title: Build a 25 + 5 Clock + title: Construa um relógio de 25 + 5 - id: bd7158d8c442eddfaeb5bd17 - title: Build a JavaScript Calculator + title: Crie uma calculadora JavaScript - id: bd7158d8c442eddfaeb5bd10 - title: Show the Local Weather + title: Exibir o clima local - id: bd7158d8c442eddfaeb5bd1f - title: Use the Twitch JSON API + title: Use a API de JSON do TwitchTV - id: bd7158d8c442eddfaeb5bd18 - title: Stylize Stories on Camper News + title: Estilize stories do Camper News - id: bd7158d8c442eddfaeb5bd19 - title: Build a Wikipedia Viewer + title: Crie um visualizador da Wikipédia - id: bd7158d8c442eedfaeb5bd1c - title: Build a Tic Tac Toe Game + title: Crie um jogo da velha - id: bd7158d8c442eddfaeb5bd1c - title: Build a Simon Game + title: Crie um Genius diff --git a/curriculum/challenges/portuguese/12-certificates/legacy-full-stack-certificate/legacy-full-stack-certificate.yml b/curriculum/challenges/portuguese/12-certificates/legacy-full-stack-certificate/legacy-full-stack-certificate.yml index 97e2fcfc9d..f830f01eed 100644 --- a/curriculum/challenges/portuguese/12-certificates/legacy-full-stack-certificate/legacy-full-stack-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/legacy-full-stack-certificate/legacy-full-stack-certificate.yml @@ -1,24 +1,24 @@ --- id: 561add10cb82ac38a17213bd -title: Legacy Full Stack Certificate +title: Certificado de full stack legado challengeType: 7 isPrivate: true tests: - id: 561add10cb82ac38a17513bc - title: Responsive Web Design Certificate + title: Certificado de design responsivo para a web - id: 561abd10cb81ac38a17513bc - title: JavaScript Algorithms and Data Structures Certificate + title: Certificado de algoritmos e estruturas de dados em JavaScript - id: 561acd10cb82ac38a17513bc - title: Front End Libraries Certificate + title: Certificado de bibliotecas de front-end - id: 5a553ca864b52e1d8bceea14 - title: Data Visualization Certificate + title: Certificado de visualização de dados - id: 561add10cb82ac38a17523bc - title: API's and Microservices Certificate + title: Certificado de APIs e microsserviços - id: 561add10cb82ac38a17213bc - title: Legacy Information Security and Quality Assurance Certificate + title: Certificado de garantia da qualidade e segurança da informação legado diff --git a/curriculum/challenges/portuguese/12-certificates/legacy-information-security-and-quality-assurance-certificate/legacy-information-security-and-quality-assurance-certificate.yml b/curriculum/challenges/portuguese/12-certificates/legacy-information-security-and-quality-assurance-certificate/legacy-information-security-and-quality-assurance-certificate.yml index 1990a343ed..aa74ecb3ca 100644 --- a/curriculum/challenges/portuguese/12-certificates/legacy-information-security-and-quality-assurance-certificate/legacy-information-security-and-quality-assurance-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/legacy-information-security-and-quality-assurance-certificate/legacy-information-security-and-quality-assurance-certificate.yml @@ -1,21 +1,21 @@ --- id: 561add10cb82ac38a17213bc -title: Legacy Information Security and Quality Assurance Certificate +title: Certificado de garantia da qualidade e segurança da informação legado challengeType: 7 isPrivate: true tests: - id: 587d8249367417b2b2512c41 - title: Metric-Imperial Converter + title: Conversor de medidas dos sistemas métrico e imperial - id: 587d8249367417b2b2512c42 - title: Issue Tracker + title: Rastreador de problemas - id: 587d824a367417b2b2512c43 - title: Personal Library + title: Biblioteca pessoal - id: 587d824a367417b2b2512c44 - title: Stock Price Checker + title: Verificador de preço de ações - id: 587d824a367417b2b2512c45 - title: Anonymous Message Board + title: Quadro de mensagens anônimas diff --git a/curriculum/challenges/portuguese/12-certificates/machine-learning-with-python-certificate/machine-learning-with-python-certificate.yml b/curriculum/challenges/portuguese/12-certificates/machine-learning-with-python-certificate/machine-learning-with-python-certificate.yml index 266eb63948..8c26520b42 100644 --- a/curriculum/challenges/portuguese/12-certificates/machine-learning-with-python-certificate/machine-learning-with-python-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/machine-learning-with-python-certificate/machine-learning-with-python-certificate.yml @@ -1,22 +1,22 @@ --- id: 5e46fc95ac417301a38fb935 -title: Machine Learning with Python Certificate +title: Certificado de aprendizagem de máquina com Python challengeType: 7 isPrivate: true tests: - id: 5e46f8d6ac417301a38fb92d - title: Rock Paper Scissors + title: Pedra, papel ou tesoura - id: 5e46f8dcac417301a38fb92e - title: Cat and Dog Image Classifier + title: Classificador de imagens de gatos e cachorros - id: 5e46f8e3ac417301a38fb92f - title: Book Recommendation Engine using KNN + title: Mecanismo de recomendação de livros usando KNN - id: 5e46f8edac417301a38fb930 - title: Linear Regression Health Costs Calculator + title: Calculadora de custos de saúde de regressão linear - id: 5e46f8edac417301a38fb931 - title: Neural Network SMS Text Classifier + title: Classificador de texto SMS baseado em rede neural diff --git a/curriculum/challenges/portuguese/12-certificates/quality-assurance-certificate/quality-assurance-certificate.yml b/curriculum/challenges/portuguese/12-certificates/quality-assurance-certificate/quality-assurance-certificate.yml index 5e229ba55c..b98a6db8ee 100644 --- a/curriculum/challenges/portuguese/12-certificates/quality-assurance-certificate/quality-assurance-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/quality-assurance-certificate/quality-assurance-certificate.yml @@ -1,22 +1,22 @@ --- id: 5e611829481575a52dc59c0e -title: Quality Assurance Certificate +title: Certificado de garantia de qualidade challengeType: 7 isPrivate: true tests: - id: 587d8249367417b2b2512c41 - title: Metric-Imperial Converter + title: Conversor de medidas dos sistemas métrico e imperial - id: 587d8249367417b2b2512c42 - title: Issue Tracker + title: Rastreador de problemas - id: 587d824a367417b2b2512c43 - title: Personal Library + title: Biblioteca pessoal - id: 5e601bf95ac9d0ecd8b94afd - title: Sudoku Solver + title: Solucionador de Sudoku - id: 5e601c0d5ac9d0ecd8b94afe - title: American British Translator + title: Tradutor americano britânico diff --git a/curriculum/challenges/portuguese/12-certificates/relational-databases-certificate/relational-databases-certificate.yml b/curriculum/challenges/portuguese/12-certificates/relational-databases-certificate/relational-databases-certificate.yml index 1d01bf91d9..1144708c25 100644 --- a/curriculum/challenges/portuguese/12-certificates/relational-databases-certificate/relational-databases-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/relational-databases-certificate/relational-databases-certificate.yml @@ -1,21 +1,21 @@ --- id: 606243f50267e718b1e755f4 -title: Relational Databases Certificate +title: Certificado de banco de dados relacional challengeType: 7 isPrivate: true tests: - id: 5f1a4ef5d5d6b5ab580fc6ae - title: Celestial Bodies Database + title: Banco de dados de corpos celestiais - id: 5f9771307d4d22b9d2b75a94 - title: World Cup Database + title: Banco de dados da Copa do Mundo - id: 5f87ac112ae598023a42df1a - title: Salon Appointment Scheduler + title: Agendador de compromissos do salão de beleza - id: 602d9ff222201c65d2a019f2 - title: Periodic Table Database + title: Banco de dados da tabela periódica - id: 602da04c22201c65d2a019f4 - title: Final Boss + title: Chefe final diff --git a/curriculum/challenges/portuguese/12-certificates/responsive-web-design-certificate/responsive-web-design-certificate.yml b/curriculum/challenges/portuguese/12-certificates/responsive-web-design-certificate/responsive-web-design-certificate.yml index 0148e6c39f..ccd2e55ee5 100644 --- a/curriculum/challenges/portuguese/12-certificates/responsive-web-design-certificate/responsive-web-design-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/responsive-web-design-certificate/responsive-web-design-certificate.yml @@ -1,21 +1,21 @@ --- id: 561add10cb82ac38a17513bc -title: Responsive Web Design Certificate +title: Certificado de design responsivo para a web challengeType: 7 isPrivate: true tests: - id: bd7158d8c442eddfaeb5bd18 - title: Build a Tribute Page + title: Crie uma página de homenagem - id: 587d78af367417b2b2512b03 - title: Build a Survey Form + title: Crie um formulário de pesquisa - id: 587d78af367417b2b2512b04 - title: Build a Product Landing Page + title: Crie uma página inicial para um produto - id: 587d78b0367417b2b2512b05 - title: Build a Technical Documentation Page + title: Crie uma página de documentação técnica - id: bd7158d8c242eddfaeb5bd13 - title: Build a Personal Portfolio Webpage + title: Crie uma página de portfólio pessoal diff --git a/curriculum/challenges/portuguese/12-certificates/scientific-computing-with-python-certificate/scientific-computing-with-python-certificate.yml b/curriculum/challenges/portuguese/12-certificates/scientific-computing-with-python-certificate/scientific-computing-with-python-certificate.yml index 1f2f103e94..a39dc47d3b 100644 --- a/curriculum/challenges/portuguese/12-certificates/scientific-computing-with-python-certificate/scientific-computing-with-python-certificate.yml +++ b/curriculum/challenges/portuguese/12-certificates/scientific-computing-with-python-certificate/scientific-computing-with-python-certificate.yml @@ -1,21 +1,21 @@ --- id: 5e44431b903586ffb414c951 -title: Scientific Computing with Python Certificate +title: Certificado de computação científica em Python challengeType: 7 isPrivate: true tests: - id: 5e44412c903586ffb414c94c - title: Arithmetic Formatter + title: Formatador aritmético - id: 5e444136903586ffb414c94d - title: Time Calculator + title: Calculadora de tempo - id: 5e44413e903586ffb414c94e - title: Budget App + title: Aplicativo de orçamento - id: 5e444147903586ffb414c94f - title: Polygon Area Calculator + title: Calculadora de área de polígono - id: 5e44414f903586ffb414c950 - title: Probability Calculator + title: Calculadora de probabilidade diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/celestial-bodies-database.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/celestial-bodies-database.md index 3dd7c343d3..f2629a55f0 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/celestial-bodies-database.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/celestial-bodies-database.md @@ -1,6 +1,6 @@ --- id: 5f1a4ef5d5d6b5ab580fc6ae -title: Celestial Bodies Database +title: Banco de dados de corpos celestiais challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.celestial-bodies-database diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/final-boss.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/final-boss.md index 2ba55685f4..35679dc2d3 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/final-boss.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/final-boss.md @@ -1,6 +1,6 @@ --- id: 602da04c22201c65d2a019f4 -title: Final Boss +title: Chefe final challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.final-boss diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-advanced-bash-by-building.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-advanced-bash-by-building.md index 9fd49d4f15..bd747e54ce 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-advanced-bash-by-building.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-advanced-bash-by-building.md @@ -1,6 +1,6 @@ --- id: 602da0de22201c65d2a019f6 -title: Learn Advanced Bash by Building +title: Aprenda Bash avançado construindo challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.learn-advanced-bash-by-building diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-bash-and-sql-by-building-a-bike-rental-shop.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-bash-and-sql-by-building-a-bike-rental-shop.md index 76f6ff4eea..1307267056 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-bash-and-sql-by-building-a-bike-rental-shop.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-bash-and-sql-by-building-a-bike-rental-shop.md @@ -1,6 +1,6 @@ --- id: 5f5b969a05380d2179fe6e18 -title: Learn Bash and SQL by Building a Bike Rental Shop +title: Aprenda Bash e SQL criando uma loja de aluguel de bicicletas challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.learn-bash-and-sql-by-building-a-bike-rental-shop diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-bash-by-building-a-boilerplate.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-bash-by-building-a-boilerplate.md index e1d2873609..c92c36fd42 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-bash-by-building-a-boilerplate.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-bash-by-building-a-boilerplate.md @@ -1,6 +1,6 @@ --- id: 5ea8adfab628f68d805bfc5e -title: Learn Bash by Building a Boilerplate +title: Aprenda Bash criando um boilerplate challengeType: 12 helpCategory: Relational Databases url: https://github.com/freeCodeCamp/.learn-bash-by-building-a-boilerplate diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-bash-scripting-by-building-five-programs.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-bash-scripting-by-building-five-programs.md index af55d50738..17030fdbf4 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-bash-scripting-by-building-five-programs.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-bash-scripting-by-building-five-programs.md @@ -1,6 +1,6 @@ --- id: 5f5904ac738bc2fa9efecf5a -title: Learn Bash Scripting by Building Five Programs +title: Aprenda Bash Scripting desenvolvendo cinco programas challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.learn-bash-scripting-by-building-five-programs diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-git-by-building-an-sql-reference-object.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-git-by-building-an-sql-reference-object.md index c2b735a923..bf9cc4bb10 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-git-by-building-an-sql-reference-object.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-git-by-building-an-sql-reference-object.md @@ -1,6 +1,6 @@ --- id: 5fa323cdaf6a73463d590659 -title: Learn Git by Building an SQL Reference Object +title: Aprenda Git criando um objeto de referência SQL challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.learn-git-by-building-an-sql-reference-object diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-github-by-building-a-list-of-inspirational-quotes.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-github-by-building-a-list-of-inspirational-quotes.md index f98a0b9293..009ca61b91 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-github-by-building-a-list-of-inspirational-quotes.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-github-by-building-a-list-of-inspirational-quotes.md @@ -1,6 +1,6 @@ --- id: 602da04222201c65d2a019f3 -title: Learn GitHub by Building a List of Inspirational Quotes +title: Aprenda GitHub criando uma lista de citações inspiradoras challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.learn-github-by-building-a-list-of-inspirational-quotes diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-nano-by-building-a-castle.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-nano-by-building-a-castle.md index b6f9e4ad71..e8ca3fec73 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-nano-by-building-a-castle.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-nano-by-building-a-castle.md @@ -1,6 +1,6 @@ --- id: 5f32db63eb37f7e17323f459 -title: Learn Nano by Building a Castle +title: Aprenda Nano criando um castelo challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.learn-nano-by-building-a-castle diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-relational-databases-by-building-a-mario-database.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-relational-databases-by-building-a-mario-database.md index 189dcc68b7..e80e4a7688 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-relational-databases-by-building-a-mario-database.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-relational-databases-by-building-a-mario-database.md @@ -1,6 +1,6 @@ --- id: 5f2c289f164c29556da632fd -title: Learn Relational Databases by Building a Mario Database +title: Aprenda bancos de dados relacionais criando um banco de dados sobre Mario challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.learn-relational-databases-by-building-a-mario-database diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-sql-by-building-a-student-database.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-sql-by-building-a-student-database.md index 7b95cbca4b..353150bd32 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-sql-by-building-a-student-database.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/learn-sql-by-building-a-student-database.md @@ -1,6 +1,6 @@ --- id: 602da0c222201c65d2a019f5 -title: Learn SQL by Building a Student Database +title: Aprenda SQL criando um banco de dados de alunos challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.learn-sql-by-building-a-student-database diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/periodic-table-database.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/periodic-table-database.md index 05c18517d1..024c51ca10 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/periodic-table-database.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/periodic-table-database.md @@ -1,6 +1,6 @@ --- id: 602d9ff222201c65d2a019f2 -title: Periodic Table Database +title: Banco de dados da tabela periódica challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.periodic-table-database diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/salon-appointment-scheduler.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/salon-appointment-scheduler.md index 26fdda731e..080e889a95 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/salon-appointment-scheduler.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/salon-appointment-scheduler.md @@ -1,6 +1,6 @@ --- id: 5f87ac112ae598023a42df1a -title: Salon Appointment Scheduler +title: Agendador de compromissos do salão de beleza challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.salon-appointment-scheduler diff --git a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/world-cup-database.md b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/world-cup-database.md index 196a965de7..904374485a 100644 --- a/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/world-cup-database.md +++ b/curriculum/challenges/portuguese/13-relational-databases/learn-relational-databases/world-cup-database.md @@ -1,6 +1,6 @@ --- id: 5f9771307d4d22b9d2b75a94 -title: World Cup Database +title: Banco de dados da Copa do Mundo challengeType: 12 helpCategory: Relational Databases url: https://github.com/moT01/.world-cup-database diff --git a/curriculum/dictionaries/portuguese/comments.json b/curriculum/dictionaries/portuguese/comments.json index 4330bb636c..f2f4c88b8b 100644 --- a/curriculum/dictionaries/portuguese/comments.json +++ b/curriculum/dictionaries/portuguese/comments.json @@ -1,110 +1,110 @@ { - "hyek8f": "24.44 in Celsius", - "rscjup": "26 in Celsius", - "am2xch": "A list of strings representing tasks to do:", - "6rztdg": "Add a record here", - "to1vwe": "Add handleChange() and submitMessage() methods here", - "31b7ey": "Add your code above this line", - "c24by8": "Add your code below this line", - "jbrt8k": "Adds the m-th row into newArray", - "zkh12d": "After passing the challenge experiment with myString and see how the grouping works", - "mobihi": "Assign 5 to oopsGlobal Here", - "v3ups9": "Call scale with an argument here", - "iw4a3a": "Case 1: Target has no children", - "463xp8": "Case 2: Target has one child", - "u3inrm": "Case 3: Target has two children", - "axnbgg": "Change code above this line", - "i2kck7": "Change code below this line", - "dlbobn": "Change this line", - "v127zb": "Check the two consoles to see the difference. The freeCodeCamp console should have printed the variable twice, once for each test of this challenge. The browser console should only print the variable once because you cleared it first.", - "ejm0ql": "Close third tab in video window, and join", - "iwch6t": "Complete the method below and implement the others similarly", - "hihhyz": "Complete the return statement:", - "sdxti5": "Count the children of the target to delete", - "wfw6sc": "Create an x and y scale", - "sjw6f4": "Create the scale here", - "nupsh2": "Creates a 2-D array with m rows and n columns of zeroes", - "xfjb3s": "Declare the myGlobal variable below this line", - "htpjk7": "Define a constant for decrement action types", - "tfzdsp": "Define a constant for increment action types", - "zh20mi": "Define ADD, addMessage(), messageReducer(), and store here:", - "43qs4c": "Define an action creator for decrementing", - "nen3qo": "Define an action creator for incrementing", - "0cwyam": "Define an action creator here:", - "fq0wsg": "Define an action here:", - "tegkqa": "Define the Container component here:", - "b5oihn": "Define the counter reducer which will increment or decrement the state based on the action it receives", - "91y4pd": "Define the Redux store here, passing in your reducers", - "eie1vk": "Define the root reducer here", - "5s7nnl": "Define the store here:", - "34qe2q": "Dictionary will hold the items of our set", - "2c1wra": "Dispatch received data action here", - "923cpg": "Dispatch request action here", - "picsyf": "Dispatch the action here:", - "ysjr1s": "Display code", - "kjd1am": "Don't mutate state here or the tests will fail", - "5tx4ow": "Entertainment sites", - "9yu58b": "Example inventory lists", - "ciddtb": "Find the target value and its parent", - "ixx548": "Fix the code below so that it evaluates to true", - "6mbhjj": "For example: Redux.createStore()", - "jshtzq": "Function that returns a string representing a cup of black tea", - "cw1ghf": "Function that returns a string representing a cup of green tea", - "iuccln": "Generate a randomly filled array", - "bm2mop": "Get the tabs after the tab", - "kchz5k": "Get the tabs before the tab", - "bfd23c": "Given a function (representing the tea type) and number of cups needed, the\nfollowing function returns an array of strings (each representing a cup of\na specific type of tea).", - "ead98i": "Global count variable:", - "7zf0i2": "Join them together", - "5j2l88": "Let's create three browser windows", - "e843r9": "Let's open a new tab for now", - "5fvehh": "myVar is not defined outside of myLocalScope", - "qn720a": "Now, add console.clear() before your console.log() to clear the browser console, and pass the tests.", - "j86mef": "Now perform the tab opening, closing, and other operations", - "mk7rvy": "Now remove the console log line to pass the test", - "n7vm1s": "Only change code above this line", - "cvh4x7": "Only change code below this line", - "lvmnm7": "Open a new tab for cat memes", - "avpx79": "Open your browser console.", - "0b5ps6": "Padding between the SVG canvas boundary and the plot", - "uemoej": "Pushes n zeroes into the current row to create the columns", - "lm86nf": "Pushes the current row, which now has n zeroes in it, to the array", - "qscelx": "Redux methods are available from a Redux object", - "atqiig": "Render an input, button, and ul below this line", - "yq81wg": "Render the Provider below this line", - "kxio9j": "responseFromServer is set to false to represent an unsuccessful response from a server", - "alh6pw": "responseFromServer is set to true to represent a successful response from a server", - "1cfidd": "responseFromServer represents a response from a server", - "96tntk": "Returns 30", - "58a5g7": "Run and check the console", - "71bus9": "Run the tests to see the difference between the two consoles.", - "7wp46n": "Setting in Fahrenheit scale", - "oefvg5": "Setup", - "mnt4d3": "Should display 'carrot'", - "fhe9m4": "Social sites", - "za434b": "Stacked bar chart of weekly training", - "7c1fv9": "Stacked bar chart will go here", - "r44ovx": "tabs is an array of titles of each site open within the window", - "cl8peb": "test array:", - "1xi3cv": "The global variable", - "3gc01a": "The main.scss file", - "14kfog": "This is our intersection method", - "d1shtt": "This is our union method", - "pqq6sy": "This method will add an element to the set", - "nd2oxy": "This method will check for the presence of an element and return true or false", - "ocm81t": "This method will remove an element from a set", - "or9p5p": "This method will return all the values in the set", - "g1608f": "This method will return the size of the set", - "bheu99": "This will hold the set", - "x1djjr": "Use console.clear() on the next line to clear the browser console.", - "22ta95": "Use console.log() to print the output variable.", - "w43c7l": "Using s = [2, 5, 7] would be invalid", - "pgckoj": "Variable assignments", - "2xiqvv": "Variable declarations", - "2sx8zg": "We keep a record of the array inside the object", - "xmjfd8": "When you close a tab", - "es69h6": "When you join two windows into one window", - "fho5t5": "When you open a new tab at the end", - "00kcrm": "yields true", - "sxpg2a": "Your mailbox, drive, and other work sites" + "hyek8f": "24,44 em Celsius", + "rscjup": "26 em Celsius", + "am2xch": "Uma lista de frases que representam as tarefas a fazer:", + "6rztdg": "Adicione um registro aqui", + "to1vwe": "Adicione os métodos handleChange() e submitMessage() aqui", + "31b7ey": "Adicione o código acima desta linha", + "c24by8": "Adicione o código abaixo desta linha", + "jbrt8k": "Adicione a m-ésima linha em newArray", + "zkh12d": "Depois de passar no experimento do desafio com myString e ver como o agrupamento funciona", + "mobihi": "Atribua 5 para oopsGlobal aqui", + "v3ups9": "Chame scale com um argumento aqui", + "iw4a3a": "Caso 1: o destino não tem filhos", + "463xp8": "Caso 2: o destino tem um filho", + "u3inrm": "Caso 3: o destino tem dois filhos", + "axnbgg": "Altere o código acima desta linha", + "i2kck7": "Altere o código abaixo desta linha", + "dlbobn": "Altere esta linha", + "v127zb": "Verifique os dois consoles para ver a diferença. O console do freeCodeCamp deve ter impresso a variável duas vezes, uma vez para cada teste deste desafio. O console do navegador só deve imprimir a variável uma vez porque você a limpou primeiro.", + "ejm0ql": "Fechar a terceira aba na janela de vídeo e entrar", + "iwch6t": "Complete o método abaixo e implemente os outros da mesma forma", + "hihhyz": "Complete a declaração de retorno:", + "sdxti5": "Contar os filhos do destino a serem excluídos", + "wfw6sc": "Criar uma escala x e y", + "sjw6f4": "Criar a escala aqui", + "nupsh2": "Cria um array 2-D com m linhas e n colunas de zeros", + "xfjb3s": "Declare a variável myGlobal abaixo desta linha", + "htpjk7": "Defina uma constante para os tipos de ação de decremento", + "tfzdsp": "Defina uma constante para os tipos de ação de incremento", + "zh20mi": "Defina ADD, addMessage(), messageReducer() e a store aqui:", + "43qs4c": "Defina um criador de ação para decrementar", + "nen3qo": "Defina um criador de ação para incrementar", + "0cwyam": "Defina um criador de ação aqui:", + "fq0wsg": "Defina uma ação aqui:", + "tegkqa": "Defina o componente do Container aqui:", + "b5oihn": "Defina o redutor do contador que incrementará ou decrementará o estado com base na ação que ele recebe", + "91y4pd": "Defina a store do Redux aqui, passando para ela os redutores", + "eie1vk": "Defina o redutor raiz aqui", + "5s7nnl": "Defina a store aqui:", + "34qe2q": "O dicionário terá os itens do nosso conjunto", + "2c1wra": "Despache a ação dos dados recebidos aqui", + "923cpg": "Despache a ação de solicitação aqui", + "picsyf": "Despache a ação aqui:", + "ysjr1s": "Exibir o código", + "kjd1am": "Não mude o estado aqui ou os testes vão falhar", + "5tx4ow": "Sites de entretenimento", + "9yu58b": "Exemplo de listas de inventário", + "ciddtb": "Encontre o valor de destino e seu pai", + "ixx548": "Corrija o código abaixo para que ele seja avaliado como verdadeiro", + "6mbhjj": "Exemplo: Redux.createStore()", + "jshtzq": "Função que retorna uma string representando uma xícara de chá preto", + "cw1ghf": "Função que retorna uma string representando uma xícara de chá verde", + "iuccln": "Gera um array preenchido aleatoriamente", + "bm2mop": "Obtém as abas após a aba", + "kchz5k": "Obtém as abas antes da aba", + "bfd23c": "Dada uma função (representando o tipo de chá) e o número de xícaras necessárias, a função\na seguir retorna um array de strings (cada uma representa uma xícara de\nde um tipo específico de chá).", + "ead98i": "Variável global de contagem:", + "7zf0i2": "Junte-as", + "5j2l88": "Vamos criar três janelas no navegador", + "e843r9": "Vamos abrir uma nova aba por enquanto", + "5fvehh": "myVar não está definida fora do myLocalScope", + "qn720a": "Agora, adicione console.clear() antes de seu console.log() para limpar o console do navegador e passar nos testes.", + "j86mef": "Agora, realize a abertura e o fechamento da aba, assim como outras operações", + "mk7rvy": "Agora, remova a linha de log do console para passar no teste", + "n7vm1s": "Altere apenas o código acima desta linha", + "cvh4x7": "Altere apenas o código abaixo desta linha", + "lvmnm7": "Abra uma nova aba para memes de gato", + "avpx79": "Abra o console do navegador.", + "0b5ps6": "Espaçamento entre o limite do canvas SVG e o gráfico", + "uemoej": "Coloca um número n de zeros na linha atual para criar as colunas", + "lm86nf": "Coloca a linha atual, que agora contém n zeros, no array", + "qscelx": "Os métodos do Redux estão disponíveis a partir de um objeto do Redux", + "atqiig": "Exiba um elemento input, um button e um ul a partir desta linha", + "yq81wg": "Exiba um Provedor abaixo desta linha", + "kxio9j": "responseFromServer está definido como falso para representar uma resposta sem sucesso de um servidor", + "alh6pw": "responseFromServer está definido como verdadeiro para representar uma resposta de sucesso de um servidor", + "1cfidd": "responseFromServer representa uma resposta de um servidor", + "96tntk": "Retorna 30", + "58a5g7": "Executar e verificar o console", + "71bus9": "Execute os testes para ver a diferença entre os dois consoles.", + "7wp46n": "Definição na escala Fahrenheit", + "oefvg5": "Configuração", + "mnt4d3": "Deve exibir 'carrot'", + "fhe9m4": "Sites sociais", + "za434b": "Gráfico de barras empilhadas de treinamento semanal", + "7c1fv9": "O gráfico de barras empilhadas vai ficar aqui", + "r44ovx": "tabs é um array de títulos de cada site aberto na janela", + "cl8peb": "array de teste:", + "1xi3cv": "A variável global", + "3gc01a": "O arquivo main.scss", + "14kfog": "Este é o nosso método de interseção", + "d1shtt": "Este é o nosso método de união", + "pqq6sy": "Este método vai adicionar um elemento ao conjunto", + "nd2oxy": "Este método vai verificar a presença de um elemento e retornar verdadeiro ou falso", + "ocm81t": "Este método vai remover um elemento de um conjunto", + "or9p5p": "Este método vai retornar todos os valores no conjunto", + "g1608f": "Este método vai retornar o tamanho do conjunto", + "bheu99": "Isto vai manter o conjunto", + "x1djjr": "Use console.clear() na próxima linha para limpar o console do navegador.", + "22ta95": "Use console.log() para imprimir a variável de saída.", + "w43c7l": "Usar s = [2, 5, 7] seria inválido", + "pgckoj": "Atribuições de variável", + "2xiqvv": "Declarações de variável", + "2sx8zg": "Mantemos um registro do array dentro do objeto", + "xmjfd8": "Quando você fecha uma aba", + "es69h6": "Quando você junta duas janelas em apenas uma", + "fho5t5": "Quando você abre uma nova aba no final", + "00kcrm": "retorna verdadeiro", + "sxpg2a": "Sua caixa de correio, unidade e outros locais de trabalho" }