diff --git a/src/v2/style-guide/index.md b/src/v2/style-guide/index.md
index 3e40a7c0bb..58915d0320 100644
--- a/src/v2/style-guide/index.md
+++ b/src/v2/style-guide/index.md
@@ -2,54 +2,54 @@
type: style-guide
---
-# Style Guide beta
+# Conventions beta
-This is the official style guide for Vue-specific code. If you use Vue in a project, it's a great reference to avoid errors, bikeshedding, and anti-patterns. However, we don't believe that any style guide is ideal for all teams or projects, so mindful deviations are encouraged based on past experience, the surrounding tech stack, and personal values.
+Ceci est le guide des conventions officielles pour du code spécifique à Vue. Si vous utilisez Vue dans vos projets, c'est la référence pour éviter les erreurs, les discussions futiles ou les mauvais usages de code. Nous ne pensons cependant pas qu'un guide de conventions soit pertinent pour toutes les équipes ou tous les projets. Ce que nous encourageons ici est basé sur nos expériences passées, les technologies que nous côtoyons ainsi que nos valeurs personnelles.
-For the most part, we also avoid suggestions about JavaScript or HTML in general. We don't mind whether you use semicolons or trailing commas. We don't mind whether your HTML uses single-quotes or double-quotes for attribute values. Some exceptions will exist however, where we've found that a particular pattern is helpful in the context of Vue.
+Nous allons en grande partie éviter les conventions à propos du JavaScript ou du HTML en eux-mêmes. Nous ne nous soucions pas de votre utilisation des points-virgules ou de la place de la virgule en début de ligne. Nous ne nous soucierons pas non plus de savoir si votre HTML utilise des apostrophes ou des guillemets pour les valeurs des attributs. Quelques exceptions seront faites cependant, quand nous trouvons qu'une utilisation de code spécifique est utile dans le contexte de Vue.
-> **Soon, we'll also provide tips for enforcement.** Sometimes you'll simply have to be disciplined, but wherever possible, we'll try to show you how to use ESLint and other automated processes to make enforcement simpler.
+> **Bientôt, nous fournirons des astuces pour la mise en application.** Même si certains points sont une simple question de discipline, nous essayerons de vous montrer comment utiliser ESLint et d'autres processus automatisés pour mettre simplement en place ces conventions.
-Finally, we've split rules into four categories:
+Nous avons donc divisé les règles en quatre catégories :
-## Rule Categories
+## Catégories de règle
-### Priority A: Essential
+### Priorité A : essentiel
-These rules help prevent errors, so learn and abide by them at all costs. Exceptions may exist, but should be very rare and only be made by those with expert knowledge of both JavaScript and Vue.
+Ces règles aident à éviter les erreurs, donc apprenez-les et respectez-les à tout prix. Des exceptions peuvent exister, mais elles devraient être rares et seulement faites par ceux qui ont une connaissance experte à la fois de JavaScript et de Vue.
-### Priority B: Strongly Recommended
+### Priorité B : fortement recommandé
-These rules have been found to improve readability and/or developer experience in most projects. Your code will still run if you violate them, but violations should be rare and well-justified.
+Ces règles ont été établies pour améliorer la lisibilité et / ou l'expérience des développeurs dans la majorité des projets. Votre code fonctionnera toujours si vous ne les suivez pas, mais ces écarts doivent être rares et justifiés.
-### Priority C: Recommended
+### Priorité C : recommandé
-Where multiple, equally good options exist, an arbitrary choice can be made to ensure consistency. In these rules, we describe each acceptable option and suggest a default choice. That means you can feel free to make a different choice in your own codebase, as long as you're consistent and have a good reason. Please do have a good reason though! By adapting to the community standard, you will:
+Là où de multiples et équivalentes options existent, un choix arbitraire a été fait pour assurer la consistance. Dans ces règles, nous décrivons chaque option acceptable et suggérons un choix par défaut. Cela signifie que vous pouvez faire des choix différents sur votre propre base de code, aussi longtemps que vous êtes cohérent et avez de bonnes raisons. Mais gardez toujours les bonnes raisons à l'esprit ! En vous alignant sur les standards de la communauté vous :
-1. train your brain to more easily parse most of the community code you encounter
-2. be able to copy and paste most community code examples without modification
-3. often find new hires are already accustomed to your preferred coding style, at least in regards to Vue
+1. pourrez améliorer votre cerveau à analyser plus facilement la plupart des codes communautaires rencontrés,
+2. serez capable de copier et coller la plupart des exemples de code sans modifications,
+3. trouverez de nouvelles recrues déjà habituées à votre style de codage préféré, au moins en ce qui concerne Vue.
-### Priority D: Use with Caution
+### Priorité D : faire attention
-Some features of Vue exist to accommodate rare edge cases or smoother migrations from a legacy code base. When overused however, they can make your code more difficult to maintain or even become a source of bugs. These rules shine a light on potentially risky features, describing when and why they should be avoided.
+Certaines fonctionnalités de Vue existent pour régler des cas exceptionnels ou rendre la migration d'une vieille version de code plus simple. Mais utiliser avec excès, elles rendront votre code difficile à maintenir et même deviendront une source de bogues. Ces règles mettent en lumière des fonctionnalités potentiellement risquées, décrivant quand et pourquoi elles doivent être évitées.
-## Priority A Rules: Essential (Error Prevention)
+## Règles de priorité A : essentiel (prévenir les erreurs)
-### Multi-word component names essential
+### Nom de composant à mots multiples essentiel
-**Component names should always be multi-word, except for root `App` components.**
+**Les noms de composant devraient toujours être des mots multiples, à l'exception du composant racine `App`.**
-This [prevents conflicts](http://w3c.github.io/webcomponents/spec/custom/#valid-custom-element-name) with existing and future HTML elements, since all HTML elements are a single word.
+Ceci afin de [prévenir les conflits](http://w3c.github.io/webcomponents/spec/custom/#valid-custom-element-name) avec des éléments HTML futurs ou existant car toutes les balises HTML n'ont qu'un seul mot.
{% raw %}
{% endraw %}
-#### Good
+#### Bon
``` js
Vue.component('todo-item', {
@@ -84,20 +84,20 @@ export default {
-### Component data essential
+### Données du composant essentiel
-**Component `data` must be a function.**
+**La propriété `data` doit être une fonction.**
-When using the `data` property on a component (i.e. anywhere except on `new Vue`), the value must be a function that returns an object.
+Quand vous utilisez la propriété `data` dans un composant (par ex. partout sauf sur `new Vue`), la valeur doit être une fonction qui retourne un objet.
{% raw %}
-
Detailed Explanation
+
Explication détaillée
{% endraw %}
-When the value of `data` is an object, it's shared across all instances of a component. Imagine, for example, a `TodoList` component with this data:
+Quand la valeur de la propriété `data` est un objet, elle est partagée à travers toutes les instances du composant. Imaginez, par exemple, un composant `TodoList` avec ces données :
``` js
data: {
@@ -106,9 +106,9 @@ data: {
}
```
-We might want to reuse this component, allowing users to maintain multiple lists (e.g. for shopping, wishlists, daily chores, etc). There's a problem though. Since every instance of the component references the same data object, changing the title of one list will also change the title of every other list. The same is true for adding/editing/deleting a todo.
+Nous pourrions vouloir réutiliser ce composant pour permettre aux utilisateurs de maintenir plusieurs listes (par ex. une liste de course, une liste de souhait, une liste de tâche, etc.). Il y a cependant un problème. Comme toutes les instances du composant font référence au même objet de donnée, changer le titre de l'une des listes va aussi changer le titre de toutes les autres. Et c'est également vrai pour l'ajout, l'édition ou la suppression dans la liste.
-Instead, we want each component instance to only manage its own data. For that to happen, each instance must generate a unique data object. In JavaScript, this can be accomplished by returning the object in a function:
+À la place, nous voulons que chaque composant instancie ses données pour soi. Pour que cela soit possible, chaque instance doit générer un objet de données unique. En JavaScript, ceci peut être accompli en retournant l'objet depuis une fonction :
``` js
data: function () {
@@ -121,7 +121,7 @@ data: function () {
{% raw %}{% endraw %}
{% raw %}
{% endraw %}
-#### Good
+#### Bon
``` js
Vue.component('some-comp', {
data: function () {
@@ -153,7 +153,7 @@ Vue.component('some-comp', {
```
``` js
-// In a .vue file
+// Dans un fichier `.vue`
export default {
data () {
return {
@@ -164,9 +164,9 @@ export default {
```
``` js
-// It's OK to use an object directly in a root
-// Vue instance, since only a single instance
-// will ever exist.
+// Par contre l'utilisation directe d'un objet est possible dans
+// l'instance racine de Vue, car il n'y a qu'une
+// instance racine qui existe
new Vue({
data: {
foo: 'bar'
@@ -177,37 +177,37 @@ new Vue({
-### Prop definitions essential
+### Définitions de prop essentiel
-**Prop definitions should be as detailed as possible.**
+**Les définitions de prop devraient être aussi détaillées que possible.**
-In committed code, prop definitions should always be as detailed as possible, specifying at least type(s).
+Dans du code acté, les définitions de prop devraient être toujours aussi détaillées que possible, en spécifiant au moins le(s) type(s).
{% raw %}
-
Detailed Explanation
+
Explication détaillée
{% endraw %}
-Detailed [prop definitions](https://vuejs.org/v2/guide/components.html#Prop-Validation) have two advantages:
+Les [définitions de prop](https://vuejs.org/v2/guide/components.html#Prop-Validation) détaillées ont deux avantages :
-- They document the API of the component, so that it's easy to see how the component is meant to be used.
-- In development, Vue will warn you if a component is ever provided incorrectly formatted props, helping you catch potential sources of error.
+- Elles documentent l'API du composant, il est ainsi possible de voir comment le composant est prévu d'être utilisé.
+- En développement, Vue vous avertira si le composant fournit un type de prop incorrectement formaté, vous aidant ainsi à trouver des sources potentielles d'erreur.
{% raw %}{% endraw %}
{% raw %}
{% endraw %}
-#### Bad
+#### Mauvais
``` js
-// This is only OK when prototyping
+// Ceci est uniquement bon pour le prototypage
props: ['status']
```
{% raw %}
{% endraw %}
{% raw %}
{% endraw %}
-#### Good
+#### Bon
``` js
props: {
@@ -216,7 +216,7 @@ props: {
```
``` js
-// Even better!
+// Même mieux !
props: {
status: {
type: String,
@@ -236,20 +236,20 @@ props: {
-### Keyed `v-for` essential
+### Des clés pour `v-for` essentiel
-**Always use `key` with `v-for`.**
+**Toujours utiliser `key` avec `v-for`.**
-`key` with `v-for` is _always_ required on components, in order to maintain internal component state down the subtree. Even for elements though, it's a good practice to maintain predictable behavior, such as [object constancy](https://bost.ocks.org/mike/constancy/) in animations.
+`key` avec `v-for` est _toujours_ requis sur les composants afin de maintenir l'état des composants internes aligné aux sous-arbres. Même pour les éléments, c'est une bonne pratique pour garder un comportement prédictible pour de la [stabilité d'objet](https://bost.ocks.org/mike/constancy/) dans les animations.
{% raw %}
-
Detailed Explanation
+
Explication détaillée
{% endraw %}
-Let's say you have a list of todos:
+Imaginons que nous ayons une liste de tâches :
``` js
data: function () {
@@ -257,27 +257,27 @@ data: function () {
todos: [
{
id: 1,
- text: 'Learn to use v-for'
+ text: 'Apprendre à utiliser `v-for`'
},
{
id: 2,
- text: 'Learn to use key'
+ text: 'Apprendre à utiliser `key`'
}
]
}
}
```
-Then you sort them alphabetically. When updating the DOM, Vue will optimize rendering to perform the cheapest DOM mutations possible. That might mean deleting the first todo element, then adding it again at the end of the list.
+Puis nous les trions par ordre alphabétique. Quand le DOM est mis à jour, Vue optimisera le rendu en exécutant les mutations les moins couteuses possibles dans le DOM. Cela signifie de supprimer le premier élément de la liste, puis de l'ajouter de nouveau à la fin de la liste.
-The problem is, there are cases where it's important not to delete elements that will remain in the DOM. For example, you may want to use `` to animate list sorting, or maintain focus if the rendered element is an ``. In these cases, adding a unique key for each item (e.g. `:key="todo.id"`) will tell Vue how to behave more predictably.
+Le problème est qu'il y a des cas où il est important de ne pas supprimer les éléments qui resteront dans le DOM. Par exemple, vous pourriez utiliser `` pour animer un tri de liste, ou garder le focus si l'élément rendu était un ``. Dans ces cas, ajouter une clé unique pour chaque élément (par ex. `:key="todo.id"`) va dire à Vue comment être plus prédictif.
-In our experience, it's better to _always_ add a unique key, so that you and your team simply never have to worry about these edge cases. Then in the rare, performance-critical scenarios where object constancy isn't necessary, you can make a conscious exception.
+De notre expérience, il est toujours mieux de _toujours_ ajouter une clé unique. De cette manière vous et votre équipe n'aurez jamais à vous soucier des effets de bord. Ensuite, dans les rares scénarios critiques de performances où la stabilité des objets n'est pas nécessaire, vous pourrez faire une exception en connaissance de cause.
{% raw %}{% endraw %}
{% raw %}
{% endraw %}
-#### Bad
+#### Mauvais
``` html
@@ -289,7 +289,7 @@ In our experience, it's better to _always_ add a unique key, so that you and you
{% raw %}
{% endraw %}
{% raw %}
{% endraw %}
-#### Good
+#### Bon
``` html
@@ -305,31 +305,31 @@ In our experience, it's better to _always_ add a unique key, so that you and you
-### Component style scoping essential
+### Style des composants à portée limitée essentiel
-**For applications, styles in a top-level `App` component and in layout components may be global, but all other components should always be scoped.**
+**Pour les applications, le style du niveau `App` au sommet et des composants de mises en page doivent être globaux, mais tous les autres styles des composants devraient être avec une portée limitée au composant.**
-This is only relevant for [single-file components](../guide/single-file-components.html). It does _not_ require that the [`scoped` attribute](https://vue-loader.vuejs.org/en/features/scoped-css.html) be used. Scoping could be through [CSS modules](https://vue-loader.vuejs.org/en/features/css-modules.html), a class-based strategy such as [BEM](http://getbem.com/), or another library/convention.
+Ceci n'est pertinent que pour les [composants monofichiers](../guide/single-file-components.html). Cela _ne_ nécessite _pas_ l'ajout de [l'attribut `scoped`](https://vue-loader.vuejs.org/en/features/scoped-css.html). La portée limitée peut être faite avec les [modules CSS](https://vue-loader.vuejs.org/en/features/css-modules.html), une stratégie basée sur les classes comme [BEM](http://getbem.com/) ou d'autres bibliothèques / conventions du même genre.
-**Component libraries, however, should prefer a class-based strategy instead of using the `scoped` attribute.**
+**Les composants de bibliothèques, cependant, devraient utiliser une stratégie basée sur les classes plutôt que d'utiliser l'attribut `scoped`.**
-This makes overriding internal styles easier, with human-readable class names that don't have too high specificity, but are still very unlikely to result in a conflict.
+Cela permet de surcharger les styles internes facilement, avec des noms de classes lisibles par les humains avec un niveau de spécificité peu élevé qui entre en conflit vraiment très rarement.
{% raw %}
-
Detailed Explanation
+
Explication détaillée
{% endraw %}
-If you are developing a large project, working with other developers, or sometimes include 3rd-party HTML/CSS (e.g. from Auth0), consistent scoping will ensure that your styles only apply to the components they are meant for.
+Si vous développez un grand projet, et travaillez avec d'autres développeurs, ou que parfois vous incluez du HTML / CSS tiers (par ex. de Auth0), une portée limitée consistante assurera une application de vos styles uniquement aux composants souhaités.
-Beyond the `scoped` attribute, using unique class names can help ensure that 3rd-party CSS does not apply to your own HTML. For example, many projects use the `button`, `btn`, or `icon` class names, so even if not using a strategy such as BEM, adding an app-specific and/or component-specific prefix (e.g. `ButtonClose-icon`) can provide some protection.
+Au-delà de l'attribut `scoped`, utiliser des noms de classe uniques vous assure que les CSS des bibliothèques tierces ne soient pas appliquées à votre propre HTML. Par exemple, beaucoup de projets utilisent les classes de nom `button`, `btn` ou `icon` donc même si vous n'utilisez pas de stratégie comme BEM, ajouter un préfixe dédié à l'application ou au composant (par ex. `ButtonClose-icon`) peut vous apporter une certaine protection.
{% raw %}{% endraw %}
{% raw %}
{% endraw %}
-#### Bad
+#### Mauvais
``` html
@@ -345,14 +345,14 @@ Beyond the `scoped` attribute, using unique class names can help ensure that 3rd
{% raw %}
{% endraw %}
{% raw %}
{% endraw %}
-#### Good
+#### Bon
``` html
-
+
@@ -1501,7 +1501,7 @@ computed: {
{% raw %}
{% endraw %}
{% raw %}
{% endraw %}
-#### Good
+#### Bon
``` html
@@ -1530,18 +1530,18 @@ computed: {
-## Priority D Rules: Use with Caution (Potentially Dangerous Patterns)
+## Règles de priorité D : faire attention (potentiellement dangereux)
-### `v-if`/`v-if-else`/`v-else` without `key` use with caution
+### `v-if` / `v-if-else` / `v-else` sans `key` faire attention
-**It's usually best to use `key` with `v-if` + `v-else`, if they are the same element type (e.g. both `
` elements).**
+**Il est généralement préférable d'utiliser `key` avec `v-if` + `v-else`, si les éléments sont de même type (c.-à-d. avec deux éléments `
` par ex.).**
-By default, Vue updates the DOM as efficiently as possible. That means when switching between elements of the same type, it simply patches the existing element, rather than removing it and adding a new one in its place. This can have [unintended side effects](https://jsfiddle.net/chrisvfritz/bh8fLeds/) if these elements should not actually be considered the same.
+Par défaut, Vue met à jour le DOM aussi efficacement que possible. Cela signifie que quand il commute entre deux éléments de même type, il va simplement modifier l'élément existant, plutôt que de l'enlever et d'en ajouter un nouveau à la place. Cela peut avoir des [effets non souhaités](https://jsfiddle.net/chrisvfritz/bh8fLeds/) si ces éléments ne doivent pas être considérés comme les mêmes.
{% raw %}
{% endraw %}
-#### Bad
+#### Mauvais
``` html
@@ -1554,7 +1554,7 @@ By default, Vue updates the DOM as efficiently as possible. That means when swit
{% raw %}
{% endraw %}
{% raw %}
{% endraw %}
-#### Good
+#### Bon
``` html
@@ -1577,27 +1577,27 @@ By default, Vue updates the DOM as efficiently as possible. That means when swit
-### Element selectors with `scoped` use with caution
+### Sélecteurs par nom de balise avec `scoped` faire attention
-**Element selectors should be avoided with `scoped`.**
+**Les sélecteurs par nom de balise devraient être évités avec `scoped`.**
-Prefer class selectors over element selectors in `scoped` styles, because large numbers of element selectors are slow.
+Préférez les sélecteurs de classes plutôt que les sélecteurs de nom dans des styles `scoped` car utiliser un nombre important de sélecteurs par nom de balise est lent.
{% raw %}
-
Detailed Explanation
+
Explication détaillée
{% endraw %}
-To scope styles, Vue adds a unique attribute to component elements, such as `data-v-f3f3eg9`. Then selectors are modified so that only matching elements with this attribute are selected (e.g. `button[data-v-f3f3eg9]`).
+Dans les styles avec portée, Vue ajoute un attribut unique à l'élément du composant, comme `data-v-f3f3eg9`. Les sélecteurs sont ainsi modifiés afin qu'ils ne concordent qu'avec les éléments dont l'attribut est sélectionné (par ex. `button[data-v-f3f3eg9]`).
-The problem is that large numbers of [element-attribute selectors](http://stevesouders.com/efws/css-selectors/csscreate.php?n=1000&sel=a%5Bhref%5D&body=background%3A+%23CFD&ne=1000) (e.g. `button[data-v-f3f3eg9]`) will be considerably slower than [class-attribute selectors](http://stevesouders.com/efws/css-selectors/csscreate.php?n=1000&sel=.class%5Bhref%5D&body=background%3A+%23CFD&ne=1000) (e.g. `.btn-close[data-v-f3f3eg9]`), so class selectors should be preferred whenever possible.
+Le problème est qu'utiliser un grand nombre de [sélecteur par nom]((http://stevesouders.com/efws/css-selectors/csscreate.php?n=1000&sel=a%5Bhref%5D&body=background%3A+%23CFD&ne=1000) (par ex. `button[data-v-f3f3eg9]`) va être considérablement plus lent que [par attribut classe](http://stevesouders.com/efws/css-selectors/csscreate.php?n=1000&sel=.class%5Bhref%5D&body=background%3A+%23CFD&ne=1000) (par ex. `.btn-close[data-v-f3f3eg9]`) et donc les sélecteurs par classes devraient être préférés autant que possible.
{% raw %}{% endraw %}
{% raw %}
{% endraw %}
-#### Bad
+#### Mauvais
``` html
@@ -1613,7 +1613,7 @@ button {
{% raw %}
{% endraw %}
{% raw %}
{% endraw %}
-#### Good
+#### Bon
``` html
@@ -1630,16 +1630,16 @@ button {
-### Implicit parent-child communication use with caution
+### Communication parent-enfant implicite faire attention
-**Props and events should be preferred for parent-child component communication, instead of `this.$parent` or mutating props.**
+**Les évènements et props devraient être préférés pour la communication entre composants parent-enfant, au lieu de l'utilisation de `this.$parent` ou la mutation des props.**
-An ideal Vue application is props down, events up. Sticking to this convention makes your components much easier to understand. However, there are edge cases where prop mutation or `this.$parent` can simplify two components that are already deeply coupled.
+Une application Vue idéale est une application où les props descendent et où les évènements remontent. Rester dans cette convention rend vos composants plus simples à à comprendre. Cependant, il y a quelques cas où la mutation des props ou `this.$parent` peut simplifier l'utilisation de deux composants qui sont fortement couplés.
-The problem is, there are also many _simple_ cases where these patterns may offer convenience. Beware: do not be seduced into trading simplicity (being able to understand the flow of your state) for short-term convenience (writing less code).
+Le problème est qu'il y a beaucoup de _cas simples_ où leur utilisation offre de la facilité. Attention : ne vous laissez pas séduire par une apparente simplicité (être capable de comprendre le flux de votre état) pour une vision court-termiste (écrire moins de code).
{% raw %}
{% endraw %}
-#### Bad
+#### Mauvais
``` js
Vue.component('TodoItem', {
@@ -1682,7 +1682,7 @@ Vue.component('TodoItem', {
{% raw %}
{% endraw %}
{% raw %}
{% endraw %}
-#### Good
+#### Bon
``` js
Vue.component('TodoItem', {
@@ -1723,16 +1723,16 @@ Vue.component('TodoItem', {
-### Non-flux state management use with caution
+### Non-gestion de l'état par flux faire attention
-**[Vuex](https://github.com/vuejs/vuex) should be preferred for global state management, instead of `this.$root` or a global event bus.**
+**[Vuex](https://github.com/vuejs/vuex) devrait être préféré pour une gestion globale d'état à la place de `this.$root` ou d'un canal global d'évènement.**
-Managing state on `this.$root` and/or using a [global event bus](https://vuejs.org/v2/guide/migration.html#dispatch-and-broadcast-replaced) can be convenient for very simple cases, but are not appropriate for most applications. Vuex offers not only a central place to manage state, but also tools for organizing, tracking, and debugging state changes.
+Gérer l'état avec `this.$root` et / ou utiliser un [canal d'évènement global](https://fr.vuejs.org/v2/guide/migration.html#dispatch-et-broadcast-remplaces) peut faciliter la tâche dans des cas vraiment simples. Cependant cela n'est pas approprié pour la plupart des applications. Vuex n'offre pas seulement une place centrale pour gérer l'état mais également des outils pour organiser, tracer et déboguer les changements d'états.
{% raw %}{% endraw %}
{% raw %}
{% endraw %}
-#### Bad
+#### Mauvais
``` js
// main.js
@@ -1756,7 +1756,7 @@ new Vue({
{% raw %}