Open MachinisteWeb opened 7 years ago
Il faut établir une liste des anglicismes admis. Certains mots anglais sont très répandus parmi les professionnels français, tels que "templates" ou "callback". Je mettrais aussi "fork" dans le lot, car j'entends très souvent le verbe "forker" http://christopheducamp.com/2013/12/16/forker-un-repo-github/ https://fr.wikipedia.org/wiki/Fork_(d%C3%A9veloppement_logiciel)
Je partage cette avis pour fork
et template
.
Pour callback, même si ça me parle bien, je suis plutôt de l'avis d'utiliser « fonction de retour ».
En ce qui concerne watchers
je sais pas réellement quoi en faire. Quand on a des listeners on dit des écouteurs aussi pour watchers j'ai pensé à surveillants sans grandes convictions...
Sur Riot j'avais utilisé "écouteurs" pour "listeners" et "observateurs" pour "watchers". Concernant les callbacks, je laissais "callback" en nom de variable mais décrivait verbalement le rôle de cette fonction: http://riotjs.com/v2/fr/api/observable/
Mais oui ! « observateurs », je l'ai déjà vu plusieurs fois ailleurs.
J'ai déporté le pan comparison.md sur cette Pull request (https://github.com/vuejs-fr/vuejs.org/pull/6) ou vous pouvez me relire et ou l'on peut décider de ce que l'on garde/change pour le mettre à jour sur la liste de cette issue.
Un très bon site pour aider dans les traductions : http://www.linguee.fr/
Celui-ci cherche une expression ou un groupe de mots dans des textes publics traduits par des traducteurs professionnels. Vous avez ainsi une traduction qui tient compte du contexte, et vous pouvez choisir parmi les traductions proposées laquelle est la plus adaptée. C'est le jour et la nuit comparé aux médiocres traductions de Google Translate.
Pour le vocabulaire spécifique à Vue, voilà mes propositions:
concernant "props", ça me semble sujet à confusion d'utiliser attributs qui a un sens large à la fois en français et en anglais. Exemple avec cette phrase tiré de la doc anglais par exemple :
A prop is a custom attribute for passing information from parent components (https://vuejs.org/v2/guide/components.html)
Du coup j'aurais tendance à conserver le mot props par souci de précision.
Pour "données"; je proposerai plutôt "données réactives" (le mot reactive se retrouve plusieurs fois dans la doc anglaise) pour indiquer que ce sont les données à l'origine du "re-rendu" du html d'un composant. Ca me semble plus pédagogique pour un débutant (que je suis) par rapport aux mots "données"
Les deux mots "data" et "reactive" sont présents dans la doc anglaise et sont utilisés quand les auteurs l'estiment approprié. Je ne pense que ce soit à nous de rajouter des mots même si ça te paraît plus pédagogique. On peut débattre de la marge de liberté qu'on s'accorde mais je pense que l'équipe Vue voudrait qu'on reste le plus proche possible du texte initial.
Tu as raison, ce qui me gêne un peu c'est qu'en anglais c'est facile de faire le lien entre la propriété "data" et le mot "Data"; mais en français on se retrouve avec "données", c'est moins clair d'autant que le mot est très vague
PS : ceci dit ça me va aussi, c'est juste une question en passant
On réétudiera la question au cas par cas. "data" est un mot latin, pluriel de datum et utilisé dans la plupart des langues y compris le français, donc on peut aussi le laisser tel quel là où ça fait sens.
hook => on peut laisser comme tel: https://fr.wikipedia.org/wiki/Hook_(informatique)
j'ai appliqué les traductions suivantes sur ces mots là, à discuter
aucun doute sur logique personnalisée pour "custom logic", c'est couramment employé: http://www.linguee.fr/francais-anglais/search?source=auto&query=custom+logic
à discuter pour les autres
Proxifier, proxifie, etc., bon pour moi. OK
custom elements => éléments personnalisés OK
Je veux bien également conserver props
, je peux changer cela dans comparaison.md
ou nous utilisons actuellement « attribut ».
Logique personnalisé pour Custom logic ça semble correcte mais j'ai pas le contexte sous les yeux.
Pour ma part concernant Hook(s) : j'ai longtemps eu du mal à comprendre le terme quand il était énoncé au détour d'une phrase jusqu'à ce que je me penche sur le concept (somme toute simple finalement). Je trouve que « points d'accroche » explique sa notion. Je reste sur cela pour ma part, on s'en remets à l'avis de @nyl-auster pour trancher :)
Je trouve ça très joli point d'accroche par contre je ne l'ai jamais rencontré et une recherche google sur "point d'accroche developpement" ou "point d'ancrage informatique" ne me renvoie pas à des résultats pertinents par rapport au sens qu'on veut donner.
Tandis que "hook développement" par exemple me renvoie en premier à la page wikipedia qui donnes les bonnes informations : https://fr.wikipedia.org/wiki/Hook_(informatique)
Pour cette raison je suis plus favorable à la conservation de "hook"
Je propose d'indiquer point d'accroche entre parenthèses après la première occurence de "hook", puis d'utiliser hook par la suite.
On valide donc hook sans traduction. Mettre hook entre parenthèse puis utiliser points d'ancrage aurait du sens, mais pas l'inverse du coup.
Je change ça rétroactivement dans comparison.md
.
Proposition : toggle => permuter
Je sèche sur la traduction de "pattern", dans le contexte "code pattern" : un schéma, une figure, une organisation du code à bas niveau, une manière de concevoir qui se répète à travers le code de l'application.
La meilleure traduction que j'ai jusqu'ici est "Patron de conception": https://fr.wikipedia.org/wiki/Patron_de_conception ; mais je doute qu'elle parle à beaucoup de monde. Faut-il garder "pattern" d'après vous ?
J'ai déjà utilisé "patron de conception" dans la doc française, je l'avais déjà lu plusieurs fois ailleurs et il a une page wikipedia dédiée donc pour moi c'est ok.
PS : ha tiens non, j'avais utilisé "patron d'architecture" et c'était ici : https://fr.vuejs.org/v2/guide/instance.html .
oui patron d'architecture paraît plus approprié pour un cas haut niveau comme l'approche MVVM. Mais je ne pense pas que ça soit approprié pour parler de quelques lignes de code seulement.
Oui tout à fait. Sinon "motif de conception" ça ne se dit pas ?
j'ai trouvé des traces de "motif" comme traduction alternative avec "patron", ex: https://eilgin.github.io/php-the-right-way/pages/Design-Patterns.html
Les sources plus techniques traduisent le plus souvent "code pattern" par "pattern de code" : http://www.linguee.fr/francais-anglais/search?source=auto&query=code+pattern
Bah, utilisons ça, ça me semble clair et on changera si on trouve mieux plus tard (pattern de code)
Pour ma part, je traduirais selon cette règle :
Genre grossomodo le « inline » c'est du motif et le « block » c'est du patron.
Ex :
Dans
arr.map(x => x * 2)
=>
peut être considéré comme un motif.
Dans
var Exemple = function () {
var privates = {},
publics = this;
publics.name = function (name) {
return (name) ? (privates.name = name) && publics : privates.name;
}
};
var test = Exemple();
test.name("bruno").name(); // "bruno"
l'utilisation de publics
, privates
, etc. forme un patron.
J'ai lancé un brainstorm auprès des collègues, j'ai eu comme suggestions "squelette", "code type" et "modèle de code", "schéma", "patron" et enfin "motif" après un moment de réflexion.
Si le but est d'exprimer l'idée d'un "petit bout de code récurrent", pattern et motif (respectivement) sont ceux qui m'évoquent le plus cette idée. Et vous ? Patron m'évoque quelque chose de plus gros (genre MVC)
@sylvainpolletvillard tu peux donner un exemple de phrase qui te fait galérer ?
regarde dans cette PR, on l'a plusieurs fois : https://github.com/vuejs-fr/vuejs.org/pull/22
Perso je comprends l'idée uniquement si on rajoute "de code", "motif de code", "patron de code". Tout seul les termes font très bizarre. C'est encore "pattern" qui parle au plus de monde parmi mes collègues.
Dans mon open space ça se bat entre motifs et patterns, mais globalement une fois immergé dans la phrase ça semble pencher plutôt pour "pattern"
Je suis toujours plus favorable à laisser le mot original quand il y a un doute sur une traduction. Cela laisse la possibilité au lecteur de se renseigner sur le mot tandis qu'une traduction approximative pose un risque de mauvaise compréhension et oblige le lecteur à comparer lui-même avec la version originale.
Quelqu'un a une traduction pour "flow control" ? Contexte :
<!-- flow control won't work either, use ternary expressions -->
{{ if (ok) { return message } }}
(je suis sur syntax.md )
Contrôle de flux littéralement, mais je ne comprends ni la version anglaise ni la version française :smile:
Comme l'a dit @sylvainpolletvillard il parle de « contrôle de flux » https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Contr%C3%B4le_du_flux_Gestion_des_erreurs également appelé « structure de contrôle » https://developer.mozilla.org/fr/docs/Glossaire/Structure_de_contr%C3%B4le
C'est tout ce qui est if, else, for, while, etc. qui ne sont pas des expressions qui retourne un opérande ou qui ne sont pas des expressions de déclaration (var, function). Dans ce sens il ne peuvent pas être utiliser dans un contexte qui attends une expression.
Cependant, comme l'opérateur ternaire (condition) ? "a" : "b"
est une expression qui retourne un opérande (soit "a" ou "b") il peut être évaluer dans un contexte d'expression.
Plus de détails ici sur la différence entre instruction, déclaration, contrôle de flux, expression, condition, opérande, opérateur, etc. : https://blog.lesieur.name/difference-entre-type-null-et-type-undefined-en-javascript/#comment-a-marche-
Mais du coup je traduis par "controle de flux" dans le doc ?
Oui. Les traductions appropriées selon moi sont :
<!-- ceci est une déclaration, non une expression : -->
{{ var a = 1 }}
<!-- (le contrôle de flux | les structures de contrôle) ne fonctionnerai(t | ent) pas non plus, utilisez plutôt des expressions ternaires -->
{{ if (ok) { return message } }}
Car le « flux » est l'ensemble des « if, else, switch, etc. » et chaque élément indépendamment est une structure de contrôle.
Comment on traduit "statement" ? Instruction ?
déclaration
okay merci (en train de faire la review de events.md)
Si tu fais référence à « Instead of binding directly to a method name, we can also use methods in an inline JavaScript statement » je pense qu'il faut ouvrir une PR à l'original car le mot « statement » doit être remplacé par « expression » ou au pire « instruction » car comme il a clairement été défini dans la doc syntax.md
les déclarations et les contrôles de flux ne peuvent pas être mis dans Vue.
<!-- this is a statement, not an expression: -->
{{ var a = 1 }}
Une déclaration commence par function
ou var
. Si function
est à droite d'un =
alors c'est une affectation (expression) et non une déclaration. Donc ce ne sont pas des « statement » les expressions say('hi')
et say('what')
.
Cependant dans la déclaration var test1 = "1", test2 = 2;
, la partie test1 = "1", test2 = 2
est bien une expression.
EDIT :
Je vois que sur http://www.w3schools.com/js/js_statements.asp
il utilise « statement » pour faire référence à des instructions qui sont parfois des expressions.
Il disent que ceci est un statement
document.getElementById("demo").innerHTML = "Hello Dolly.";
ce qui est faux. Il n'y a aucune déclaration ici, juste une affectation. C'est simplement une expression et ça peut être évalué par Vue dans un v-
.
exemple <div v-if="(test = "Hello Dolly.") === "Hello Dolly.">Coucou</div>
sera affiché.
À moins qu'il y est truc que j'ai fondamentalement pas compris ?
EDIT 2 :
J'ai demandé sur Vue.org pour bien comprendre la signification réel de « statement » https://github.com/vuejs/vuejs.org/issues/754
C'est validé : statement = déclaration https://github.com/vuejs/vuejs.org/issues/754
Cela signifie que dans event l'original va devenir :
Instead of binding directly to a method name, we can also use methods in an inline JavaScript expression:
Sometimes we also need to access the original DOM event in an inline expression handler
À traduire en conséquence
UPDATE :
En réalité statement
ne veut pas seulement dire déclaration
. Voici l'explication FR tirée de https://github.com/vuejs/vuejs.org/issues/754
Instruction = Une Instruction est soit un Statement soit une Expression.
Expression
L'expression est composée uniquement d'opérandes (primitive, objets, variable) et d'opérateurs qui retourne une valeur d'opérande (ou une référence vers une valeur d'opérande). Parce que void 0
retourne une valeur undefined
qui peut-être affecté avec =
, c'est une expression.
> void 0
<· undefined
est une expression car dans le statement suivant, il est affectable.
> var test = void 0;
<· undefined
Statement
Le Statement est composé de sous Statement ou/et d' Expression.
undefined
mais qui ne peut pas être affectée.> if (test) { true; } else { false; }
<· undefined
est un statement car dans le statement suivant, il n'est pas affectable.
> var test = (if (test) { true; } else { false; }); // if n'est pas un opérateur ou un opérande.
<· Uncaught SyntaxError: Unexpected token if
> var test = (var test); // var n'est pas un opérateur ou un opérande.
<· Uncaught SyntaxError: Unexpected token var
On a donc en EN la description suivante :
┌──────────────────────────────────────────────────┬───────────────────────────────┬───────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Instruction │ Instruction │ Instruction │ Instruction │
├──────────────────────────────────────────────────┼──────────────────────────┬────┼──────────────┬────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │ │ │ │ │ Control Flow │
│ │ │ │ │ ├────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────┤
│ (Declaration) Statement │ │ │ │ │ Block statement │ Block statement │
├─────┬───────────────────────────────────────┬────┤ │ │ │ ├──────┬────────────────┬─────┬──────────────────────┬───┼────────┬───────────────────────┬─────────────────────┬───┤
│ │ Expression │ │ Expression │ │ Expression │ │ │ Expression │ │ Instruction │ │ │ Instruction │ Instruction │ │
│ ├─────┬────┬────┬────┬──────┬────┬──────┤ ├─────┬────┬───────────────┤ ├────────┬─────┤ │ ├─────┬─────┬────┤ ├─────────────────┬────┤ │ ├──────────────────┬────┼────────────────┬────┤ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Expression │ │ │ │ Expression │ │ Expression │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─────┬────┬──────┤ │ │ ├──────┬────┬──────┤ ├─────┬────┬─────┤ │ │
│ │ var │ op │ od │ op │ od │ op │ var │ sc │ prp │ op │ operand │ sc │ op │ var │ sc │ │ od │ op │ od │ │ var │ op │ od │ sc │ │ │ var │ op │ od │ sc │ var │ op │ od │ sc │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ var num = 20 + true , bool ; str = "Hello World" ; delete str ; if ( num === 21 ) { bool = true ; } else { bool = true ; num = 0 ; } │
└─────┴─────┴────┴────┴────┴──────┴────┴──────┴────┴─────┴────┴───────────────┴────┴────────┴─────┴────┴──────┴─────┴─────┴────┴─────┴─────────────────┴────┴───┴────────┴──────────────────┴────┴────────────────┴────┴───┘
qui devient en FR la description suivante :
┌──────────────────────────────────────────────────┬───────────────────────────────┬───────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Instruction │ Instruction │ Instruction │ Instruction │
├──────────────────────────────────────────────────┼──────────────────────────┬────┼──────────────┬────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │ │ │ │ │ Contrôle de flux │
│ │ │ │ │ ├────────────────────────────────────────────────────────┬──────────────────────────────────────────────────────────┤
│ Déclaration │ │ │ │ │ Structure de contrôle │ Structure de contrôle │
├─────┬───────────────────────────────────────┬────┤ │ │ │ ├──────┬────────────────┬─────┬──────────────────────┬───┼────────┬───────────────────────┬─────────────────────┬───┤
│ │ Expression │ │ Expression │ │ Expression │ │ │ Expression │ │ Instruction │ │ │ Instruction │ Instruction │ │
│ ├─────┬────┬────┬────┬──────┬────┬──────┤ ├─────┬────┬───────────────┤ ├────────┬─────┤ │ ├─────┬─────┬────┤ ├─────────────────┬────┤ │ ├──────────────────┬────┼────────────────┬────┤ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Expression │ │ │ │ Expression │ │ Expression │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─────┬────┬──────┤ │ │ ├──────┬────┬──────┤ ├─────┬────┬─────┤ │ │
│ │ var │ op │ od │ op │ od │ op │ var │ sc │ prp │ op │ opérande │ sc │ op │ var │ sc │ │ od │ op │ od │ │ var │ op │ od │ sc │ │ │ var │ op │ od │ sc │ var │ op │ od │ sc │ │
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
│ var num = 20 + true , bool ; str = "Hello World" ; delete str ; if ( num === 21 ) { bool = true ; } else { bool = true ; num = 0 ; } │
└─────┴─────┴────┴────┴────┴──────┴────┴──────┴────┴─────┴────┴───────────────┴────┴────────┴─────┴────┴──────┴─────┴─────┴────┴─────┴─────────────────┴────┴───┴────────┴──────────────────┴────┴────────────────┴────┴───┘
On voit que le mot « Statement » disparaît en français. « Statement » peut donc vouloir dire plusieurs chose en fonction du contexte.
D'après vous, les mots "getter" et "setter" doivent-t-ils rester en anglais ou être traduits ?
Mon avis personnel : getter et setter sont des termes courants dans le monde informatique français. Je serai donc partisan de les laisser ainsi.
Votre avis ?
tl;dr => partisant de la traduction accésseur/mutateur.
Pour ma part, comme proposer à @sylvainpolletvillard dans l'API je pense que accésseur et mutateur méritent d'être promu en français.
La référence MDN nous encourage en ce sens. Je la trouve toujours très clair, accessible et traduite. Aussi les accesseurs et mutateurs y sont correctement décrit. Préciser entre parenthèse getter/setter le terme anglais une fois dans un article n'est pas dénuer de sens.
Voici mon raisonnement avec Jean. Jean est français, Jean n'est pas encore assez au point/à l'aise en anglais pour parcourir les documentations officiels de manière productive. Jean se tourne donc vers les documentations française. En ce sens, il y a de forte chance que Jean se réfère à la documentation MDN qui est, en français, la mieux fournit selon moi. Dans ce cas, ce qui parlera à Jean dans la littérature française sera l'accesseur et le mutateur. Étant convaincu que pour un développeur du niveau de Jean, Vue est la librairie de liaison de données la plus abordable et qui pourra le suivre tout au long de ses projets et de sa montés en puissance, je souhaite qu'il s'y retrouve dans son apprentissage jusqu'au jour où il nagera plus facilement dans les documentations anglaise et ou il y aura appris que accesseur et mutateur se disent getter et setter.
Ayant moi même appris le JavaScript par de la littérature anglaise, les termes getter et setter me parle plus mais je préfère utiliser leur équivalent français dans un texte français.
Un bon indicateur pour savoir si l'on garde ou non un terme en anglais est de se demander si ils respectent deux conditions : 1) il existe une traduction dans notre langue 2) il n'y a pas d'ambuïguité quand à la nature de la traduction (trop de traduction possible).
Ce qui est là clairement le cas avec accesseur et mutateur.
Ce qui n'est par exemple pas le cas pour template (doute sur la nature), fork (pas de consensus de traduction), build (doute sur la nature), etc.).
@Haeresis je m'incline, tu as raison et merci d'avoir rajouter getter et setter dans l'entête de cette issue.
OK par contre pas d'accent aigu sur accesseur. Aussi en cas de doute, ajouter le terme original entre parenthèses derrière ne coûte pas cher et ne fait jamais de mal selon moi.
@Haeresis @sylvainpolletvillard et mettre mutateur au singulier
Pour assets
je propose ressources
, il me semble que "ressource graphique" est le plus répandu en français. Qu'en pensez-vous ?
Je vais essayer de tenir une liste de décisions prises en ce qui concerne la traduction des termes pour nous aider à rester consistant. Ceci n'est pas figé et peut être rediscuté à souhait.
Anglicismes admis
Vue
Vuex
Global
Liberté de traduction
Outils externes
Tous les noms des outils doivent être utilisé avec la casse fournie par la documentation officielle :
Vue
Vue Router
Vue Server Renderer
Vuex
Global