fr.json 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786
  1. {
  2. "lang": "fr",
  3. "rules": {
  4. "accesskeys": {
  5. "description": "Vérifier que chaque valeur de l’attribut accesskey est unique",
  6. "help": "La valeur de l’attribut accesskey doit être unique"
  7. },
  8. "area-alt": {
  9. "description": "Vérifier que les éléments <area> d’une image réactive ont une alternative textuelle",
  10. "help": "Les éléments <area> actifs doivent avoir une alternative textuelle"
  11. },
  12. "aria-allowed-attr": {
  13. "description": "Vérifier que les attributs ARIA sont autorisés pour le rôle d’un élément",
  14. "help": "Les éléments doivent seulement utiliser les attributs ARIA autorisés"
  15. },
  16. "aria-allowed-role": {
  17. "description": "Vérifier que l’attribut role a une valeur valide pour cet élément",
  18. "help": "Le rôle ARIA doit être valide pour cet élément"
  19. },
  20. "aria-hidden-body": {
  21. "description": "Vérifier qu’aria-hidden='true' n’est pas présent sur le corps du document (élément body)",
  22. "help": "aria-hidden='true' ne doit pas être présent sur <body>"
  23. },
  24. "aria-hidden-focus": {
  25. "description": "Vérifier qu’aria-hidden n’est pas assigné aux éléments qui reçoivent le focus au clavier",
  26. "help": "aria-hidden n’est pas assigné aux éléments qui reçoivent le focus au clavier"
  27. },
  28. "aria-input-field-name": {
  29. "description": "Vérifier que chaque champ de formulaire avec ARIA est doté d’un intitulé accessible",
  30. "help": "Les champs de formulaire ARIA ont un intitulé accessible"
  31. },
  32. "aria-required-attr": {
  33. "description": "Vérifier que les éléments avec des rôles ARIA ont les attributs ARIA requis",
  34. "help": "Les attributs ARIA requis doivent être présents"
  35. },
  36. "aria-required-children": {
  37. "description": "Vérifier que les éléments avec un rôle ARIA comportent aussi des rôles pour les descendants directs",
  38. "help": "Certains rôles ARIA doivent comporter des descendants directs spécifiques"
  39. },
  40. "aria-required-parent": {
  41. "description": "Vérifier que les éléments avec un rôle ARIA requérant des rôles parents y sont contenus",
  42. "help": "Certains rôles ARIA doivent être contenus par des parents spécifiques"
  43. },
  44. "aria-roledescription": {
  45. "description": "Vérifier qu’aria-roledescription n’est utilisé que sur des éléments qui ont un rôle implicite ou explicite",
  46. "help": "Utiliser aria-roledescription sur les éléments dont le rôle a une valeur sémantique"
  47. },
  48. "aria-roles": {
  49. "description": "Vérifier que les éléments avec un attribut role utilisent une valeur valide",
  50. "help": "Les rôles ARIA doivent se conformer aux valeurs valides"
  51. },
  52. "aria-toggle-field-name": {
  53. "description": "Vérifier que chaque champ de basculement ARIA a un libellé accessible",
  54. "help": "Les champs de basculement ARIA ont un libellé accessible"
  55. },
  56. "aria-valid-attr-value": {
  57. "description": "Vérifier que tous les attributs ARIA comportent des valeurs valides",
  58. "help": "Les attributs ARIA doivent comporter des valeurs valides"
  59. },
  60. "aria-valid-attr": {
  61. "description": "Vérifier que les attributs commençant par aria- sont des attributs ARIA valides",
  62. "help": "Les attributs ARIA doivent se conformer aux noms valides"
  63. },
  64. "audio-caption": {
  65. "description": "Vérifier que les éléments <audio> ont des sous-titres",
  66. "help": "Les éléments <audio> doivent avoir une piste de sous-titres"
  67. },
  68. "autocomplete-valid": {
  69. "description": "Vérifier que l’attribut autocomplete est correctement adapté au champ de formulaire",
  70. "help": "L’attribut autocomplete doit être utilisé correctement"
  71. },
  72. "avoid-inline-spacing": {
  73. "description": "Vérifier que l’espacement du texte défini à travers une attribution de styles peut être ajusté via une feuille de style personnalisée",
  74. "help": "L’espacement du texte inline peut être ajusté avec des feuilles de style personnalisées"
  75. },
  76. "blink": {
  77. "description": "Vérifier que l’élément <blink> n’est pas utilisé",
  78. "help": "L’élément <blink> est déprécié et ne doit pas être utilisé"
  79. },
  80. "button-name": {
  81. "description": "Vérifier que les boutons ont un texte perceptible",
  82. "help": "Les boutons doivent avoir un texte perceptible"
  83. },
  84. "bypass": {
  85. "description": "Vérifier que chaque page dispose au minimum d’un mécanisme de contournement de la navigation pour accéder directement au contenu",
  86. "help": "Chaque page doit fournir des moyens de contourner les contenus répétés"
  87. },
  88. "color-contrast": {
  89. "description": "Vérifier que les contrastes entre le premier plan et l’arrière-plan rencontrent les seuils de contrastes exigés par les WCAG 2 AA",
  90. "help": "Les éléments doivent avoir un contraste de couleurs suffisant"
  91. },
  92. "css-orientation-lock": {
  93. "description": "Vérifier que les contenus ne sont pas limités à une orientation spécifique de l’écran, et que le contenu est utilisable sous toutes les orientations de l’écran",
  94. "help": "Les CSS Media queries ne sont pas utilisées pour verrouiller l’orientation de l’écran"
  95. },
  96. "definition-list": {
  97. "description": "Vérifier que les éléments <dl> sont correctement structurés",
  98. "help": "Les éléments <dl> ne doivent contenir directement que des groupes d’éléments <dt> et <dd> correctement ordonnés, ou des éléments <script> ou <template>"
  99. },
  100. "dlitem": {
  101. "description": "Vérifier que les éléments <dt> et <dd> sont contenus dans un élément <dl>",
  102. "help": "Les éléments <dt> et <dd> doivent être contenus dans un élément <dl>"
  103. },
  104. "document-title": {
  105. "description": "Vérifier que chaque document HTML contient un élément <title> non vide",
  106. "help": "Chaque document doit avoir un élément <title> pour aider à la navigation"
  107. },
  108. "duplicate-id-active": {
  109. "description": "Vérifier que la valeur d’attribut id de chaque élément actif est unique",
  110. "help": "Les IDs des éléments actifs doivent être uniques"
  111. },
  112. "duplicate-id-aria": {
  113. "description": "Vérifier que chaque valeur d’attribut id utilisée avec ARIA et dans les étiquettes est unique",
  114. "help": "Les IDs utilisés avec ARIA et dans les étiquettes doivent être uniques"
  115. },
  116. "duplicate-id": {
  117. "description": "Vérifier que la valeur de chaque attribut id est unique",
  118. "help": "La valeur de l’attribut id doit être unique"
  119. },
  120. "empty-heading": {
  121. "description": "Vérifier que les niveaux de titre ont un texte perceptible",
  122. "help": "Les niveaux de titre ne doivent pas être vides"
  123. },
  124. "focus-order-semantics": {
  125. "description": "Vérifier que les éléments dans le parcours du focus ont un rôle approprié",
  126. "help": "Les éléments dans le parcours du focus doivent avoir un rôle approprié pour le contenu interactif"
  127. },
  128. "form-field-multiple-labels": {
  129. "description": "Vérifier que le champ de formulaire n’a pas plusieurs éléments d’étiquettes",
  130. "help": "Le champ de formulaire ne devrait pas comporter plusieurs éléments d’étiquettes"
  131. },
  132. "frame-tested": {
  133. "description": "Vérifier que les éléments <iframe> et <frame> contiennent le script axe-core",
  134. "help": "Les cadres doivent être testés avec axe-core"
  135. },
  136. "frame-title-unique": {
  137. "description": "Vérifier que les éléments <iframe> et <frame> ont un attribut title unique",
  138. "help": "Chaque cadre doit avoir un attribut title unique"
  139. },
  140. "frame-title": {
  141. "description": "Vérifier que les éléments <iframe> et <frame> ont un attribut title non vide",
  142. "help": "Chaque cadre doit avoir un attribut title"
  143. },
  144. "heading-order": {
  145. "description": "Vérifier que la hiérarchie des niveaux de titre est sémantiquement correcte",
  146. "help": "Les niveaux de titre doivent s’incrémenter d’un seul niveau à la fois"
  147. },
  148. "hidden-content": {
  149. "description": "Informer les utilisateurs sur les contenus cachés",
  150. "help": "Le contenu caché sur la page ne peut pas être analysé"
  151. },
  152. "html-has-lang": {
  153. "description": "Vérifier que chaque document HTML a un attribut lang",
  154. "help": "L’élément <html> doit avoir un attribut lang"
  155. },
  156. "html-lang-valid": {
  157. "description": "Vérifier que l’attribut lang sur l’élément <html> a une valeur valide",
  158. "help": "L’élément <html> doit avoir une valeur valide pour l’attribut lang"
  159. },
  160. "html-xml-lang-mismatch": {
  161. "description": "Vérifier que les éléments HTML avec les attributs lang et xml:lang valides indiquent la même langue de base pour la page",
  162. "help": "Les éléments HTML avec les attributs lang et xml:lang doivent avoir la même langue de base"
  163. },
  164. "image-alt": {
  165. "description": "Vérifier que les éléments <img> ont une alternative textuelle, ou un rôle de type 'none' ou 'presentation'",
  166. "help": "Les images doivent avoir une alternative textuelle"
  167. },
  168. "image-redundant-alt": {
  169. "description": "Vérifier que l’intitulé des liens et boutons n’est pas répété dans l’alternative de l’image",
  170. "help": "L’intitulé des liens et boutons ne doit pas être répété dans l’alternative de l’image"
  171. },
  172. "input-button-name": {
  173. "description": "Vérifier que la valeur textuelle des contrôles de boutons est perceptible",
  174. "help": "La valeur textuelle des contrôles de boutons doit être perceptible"
  175. },
  176. "input-image-alt": {
  177. "description": "Vérifier que les éléments <input type=\"image\"> ont une alternative textuelle",
  178. "help": "Les boutons images doivent avoir une alternative textuelle"
  179. },
  180. "label-content-name-mismatch": {
  181. "description": "Vérifier que dans le cas d’éléments identifiés par leur contenu textuel, le texte visible fait partie de l’intitulé accessible",
  182. "help": "Le contenu textuel des éléments doit aussi se retrouver dans leur intitulé accessible"
  183. },
  184. "label-title-only": {
  185. "description": "Vérifier que chaque élément de formulaire n’est pas labellisé uniquement par les attributs title ou aria-describedby",
  186. "help": "Chaque élément de formulaire doit avoir un label visible"
  187. },
  188. "label": {
  189. "description": "Vérifier que chaque élément de formulaire a une étiquette",
  190. "help": "Chaque élément de formulaire doit avoir une étiquette"
  191. },
  192. "landmark-banner-is-top-level": {
  193. "description": "La région banner ne devrait pas être contenue dans une autre région",
  194. "help": "La région banner doit être au niveau le plus haut"
  195. },
  196. "landmark-complementary-is-top-level": {
  197. "description": "Vérifier que les landmarks complementary ou aside se retrouvent au plus haut niveau",
  198. "help": "Aside ne doit pas être contenu dans un autre landmark"
  199. },
  200. "landmark-contentinfo-is-top-level": {
  201. "description": "La région contentinfo ne devrait pas être contenue dans une autre région",
  202. "help": "La région contentinfo doit être au niveau le plus haut"
  203. },
  204. "landmark-main-is-top-level": {
  205. "description": "La région main ne devrait pas être contenue dans une autre région",
  206. "help": "La région main doit être au niveau le plus haut"
  207. },
  208. "landmark-no-duplicate-banner": {
  209. "description": "Vérifier que le document n’a pas plus d’une région banner",
  210. "help": "Le document contient au plus une région banner"
  211. },
  212. "landmark-no-duplicate-contentinfo": {
  213. "description": "Vérifier que le document n’a pas plus d’une région contentinfo",
  214. "help": "Le document contient au plus une région contentinfo"
  215. },
  216. "landmark-no-duplicate-main": {
  217. "description": "Vérifier que le document a tout au plus, un seul landmark main",
  218. "help": "Le document ne doit pas contenir plus d’un landmark main"
  219. },
  220. "landmark-one-main": {
  221. "description": "Vérifier qu’une navigation pointe vers le contenu principal de la page. Si la page contient des iframes, chaque iframe ne doit contenir au plus qu’une région main",
  222. "help": "La page doit contenir une région main"
  223. },
  224. "landmark-unique": {
  225. "help": "Vérifier que chaque landmark est unique",
  226. "description": "Les landmarks doivent comporter un rôle unique, ou une étiquette accessible par la combinaison de role/label/title"
  227. },
  228. "link-in-text-block": {
  229. "description": "Les liens doivent pouvoir être distingués autrement que par la couleur",
  230. "help": "Les liens doivent pouvoir être distingués du texte environnant d’une façon qui ne repose pas sur la couleur"
  231. },
  232. "link-name": {
  233. "description": "Vérifier que les liens ont un texte perceptible",
  234. "help": "Les liens doivent avoir un texte perceptible"
  235. },
  236. "list": {
  237. "description": "Vérifier que les listes sont structurées correctement",
  238. "help": "<ul> et <ol> ne doivent contenir directement que des éléments <li>, <script> ou <template>"
  239. },
  240. "listitem": {
  241. "description": "Vérifier que les éléments <li> sont utilisés sémantiquement",
  242. "help": "Les éléments <li> doivent être contenus dans un élément <ul> ou <ol>"
  243. },
  244. "marquee": {
  245. "description": "Vérifier que l’élément <marquee> n’est pas utilisé",
  246. "help": "L’élément <marquee> est déprécié et ne doit pas être utilisé"
  247. },
  248. "meta-refresh": {
  249. "description": "Vérifier que <meta http-equiv=\"refresh\"> n’est pas utilisé",
  250. "help": "La page HTML ne doit pas être actualisée automatiquement"
  251. },
  252. "meta-viewport-large": {
  253. "description": "Vérifier que <meta name=\"viewport\"> permet un agrandissement significatif",
  254. "help": "Les utilisateurs devraient pouvoir zoomer et agrandir le texte jusqu’à 500%"
  255. },
  256. "meta-viewport": {
  257. "description": "Vérifier que <meta name=\"viewport\"> ne désactive pas le zoom ni l’agrandissement",
  258. "help": "Le zoom et l’agrandissement ne doivent pas être désactivés"
  259. },
  260. "object-alt": {
  261. "description": "Vérifier que les éléments <object> ont une alternative textuelle",
  262. "help": "Les éléments <object> doivent avoir une alternative textuelle"
  263. },
  264. "p-as-heading": {
  265. "description": "Vérifier que les éléments p ne sont pas utilisés pour styler des niveaux de titres",
  266. "help": "La graisse, le style et le corps du texte ne doivent pas être utilisés pour styler les éléments p comme des niveaux de titres"
  267. },
  268. "page-has-heading-one": {
  269. "description": "Vérifier que la page, ou au moins une de ses iframes, contient un titre de niveau 1",
  270. "help": "La page doit contenir un titre de niveau 1"
  271. },
  272. "region": {
  273. "description": "Vérifier que tout le contenu est localisé dans une région",
  274. "help": "Le contenu doit être localisé dans une région"
  275. },
  276. "role-img-alt": {
  277. "description": "Vérifier que les éléments avec [role='img'] ont une équivalence textuelle",
  278. "help": "Les éléments avec [role='img'] ont une équivalence textuelle"
  279. },
  280. "scope-attr-valid": {
  281. "description": "Vérifier que l’attribut scope est utilisé correctement dans les tableaux",
  282. "help": "L’attribut scope doit être utilisé correctement"
  283. },
  284. "scrollable-region-focusable": {
  285. "description": "Les éléments dont le contenu défile devraient être accessibles au clavier",
  286. "help": "Vérifier que les régions défilantes sont accessibles au clavier"
  287. },
  288. "server-side-image-map": {
  289. "description": "Vérifier que les images réactives côté serveur ne sont pas utilisées",
  290. "help": "Les images réactives côté serveur ne devraient pas être utilisées"
  291. },
  292. "skip-link": {
  293. "description": "Vérifier que tous les liens d’évitement ont une cible pouvant recevoir le focus",
  294. "help": "La cible d’un lien d’évitement doit exister et pouvoir recevoir le focus"
  295. },
  296. "tabindex": {
  297. "description": "Vérifier que les valeurs de l’attribut tabindex ne sont pas supérieures à 0",
  298. "help": "Aucun élément ne devrait avoir un tabindex avec une valeur supérieure à zéro"
  299. },
  300. "table-duplicate-name": {
  301. "description": "Vérifier que chaque tableau n’ait pas un summary et un caption identiques",
  302. "help": "L’élément <caption> ne devrait pas contenir le même texte que l’attribut summary"
  303. },
  304. "table-fake-caption": {
  305. "description": "Vérifier que les tableaux avec une légende utilisent l’élément <caption>",
  306. "help": "Les données ou les cellules d’entête ne devraient pas être utilisées pour légender un tableau de données"
  307. },
  308. "td-has-header": {
  309. "description": "Vérifier que chaque cellule de données non vide dans un tableau de données a une ou plusieurs cellules d’entête",
  310. "help": "Chaque élément td non vide dans un tableau plus grand que 3 × 3 doit avoir une cellule d’entête associée"
  311. },
  312. "td-headers-attr": {
  313. "description": "Vérifier que chaque cellule utilisant l’attribut headers fait référence à une autre cellule du même tableau",
  314. "help": "Les cellules utilisant l’attribut headers ne doivent faire référence qu’à d’autres cellules du même tableau"
  315. },
  316. "th-has-data-cells": {
  317. "description": "Vérifier que chaque cellule d’entête dans un tableau de données fait référence à des cellules de données",
  318. "help": "Tous les éléments th et ceux avec role=columnheader/rowheader doivent décrire des cellules de données"
  319. },
  320. "valid-lang": {
  321. "description": "Vérifier que les attributs lang ont des valeurs valides",
  322. "help": "L’attribut lang doit avoir une valeur valide"
  323. },
  324. "video-caption": {
  325. "description": "Vérifier que les éléments <video> ont des sous-titres",
  326. "help": "Les éléments <video> doivent avoir des sous-titres"
  327. }
  328. },
  329. "checks": {
  330. "abstractrole": {
  331. "pass": "Les rôles abstraits ne sont pas utilisés",
  332. "fail": "Les rôles abstraits ne peuvent pas être utilisés directement"
  333. },
  334. "aria-allowed-attr": {
  335. "pass": "Les attributs ARIA sont utilisés correctement pour le rôle défini",
  336. "fail": {
  337. "singular": "L’attribut ARIA n’est pas autorisé : ${data.values}",
  338. "plural": "Les attributs ARIA ne sont pas autorisés : ${data.values}"
  339. }
  340. },
  341. "aria-allowed-role": {
  342. "pass": "Le rôle ARIA est autorisé pour l’élément donné",
  343. "fail": {
  344. "singular": "Le rôle ARIA ${data.values} n’est pas autorisé pour l’élément donné",
  345. "plural": "Les rôles ARIA ${data.values} ne sont pas autorisés pour l’élément donné"
  346. },
  347. "incomplete": {
  348. "singular": "Le rôle ARIA ${data.values} doit être retiré lorsque l’élément est rendu visible, car il n’est pas autorisé pour cet élément",
  349. "plural": "Les rôles ARIA ${data.values} doivent être retirés lorsque l’élément est rendu visible, car ils ne sont pas autorisés pour cet élément"
  350. }
  351. },
  352. "aria-hidden-body": {
  353. "pass": "Aucun attribut aria-hidden n’est présent sur body",
  354. "fail": "aria-hidden=true ne devrait pas être présent sur body"
  355. },
  356. "aria-roledescription": {
  357. "pass": "aria-roledescription utilisé sur un élément sémantique supporté",
  358. "incomplete": "Vérifier que la valeur d’aria-roledescription est annoncée par les lecteurs d’écran supportés",
  359. "fail": "Attribuer à l’élément un role qui supporte aria-roledescription"
  360. },
  361. "aria-errormessage": {
  362. "pass": "Utiliser une technique prise en charge pour aria-errormessage",
  363. "fail": {
  364. "singular": "La valeur d’aria-errormessage `${data.values}` doit recourir à une technique pour annoncer le message (aria-live, aria-describedby, role=alert, etc.)",
  365. "plural": "Les valeurs aria-errormessage `${data.values}` doivent recourir à une technique pour annoncer le message (aria-live, aria-describedby, role=alert, etc.)"
  366. }
  367. },
  368. "has-widget-role": {
  369. "pass": "L’élément a un rôle widget.",
  370. "fail": "L’élément n’a pas de rôle widget."
  371. },
  372. "invalidrole": {
  373. "pass": "Le rôle ARIA est valide",
  374. "fail": "Le rôle doit être un des rôles ARIA valides"
  375. },
  376. "no-implicit-explicit-label": {
  377. "pass": "Il n’y a pas de décalage entre le <label> et l’intitulé accessible",
  378. "incomplete": "Vérifier que le <label> n’a pas à faire partie du nom du champ de formulaire ARIA ${data}"
  379. },
  380. "aria-required-attr": {
  381. "pass": "Tous les attributs ARIA requis sont présents",
  382. "fail": {
  383. "singular": "L’attribut ARIA requis est manquant : ${data.values}",
  384. "plural": "Les attributs ARIA requis sont manquants : ${data.values}"
  385. }
  386. },
  387. "aria-required-children": {
  388. "pass": "Les descendants ARIA requis sont présents",
  389. "fail": {
  390. "singular": "Le descendant ARIA requis est manquant : ${data.values}",
  391. "plural": "Les descendants ARIA requis sont manquants : ${data.values}"
  392. },
  393. "incomplete": {
  394. "singular": "Le rôle du descendant ARIA attendu doit être ajouté : ${data.values}",
  395. "plural": "Les rôles des descendants ARIA attendus doivent être ajoutés : ${data.values}"
  396. }
  397. },
  398. "aria-required-parent": {
  399. "pass": "Les rôles parents ARIA requis sont présents",
  400. "fail": {
  401. "singular": "Le rôle parent ARIA requis est manquant : ${data.values}",
  402. "plural": "Les rôles parents ARIA requis sont manquants : ${data.values}"
  403. }
  404. },
  405. "aria-unsupported-attr": {
  406. "pass": "L’attribut ARIA est supporté",
  407. "fail": "L’attribut ARIA n’est pas suffisamment supporté par les lecteurs d’écran et autres technologies d’assistance : ${data.values}"
  408. },
  409. "unsupportedrole": {
  410. "pass": "Le rôle ARIA est supporté",
  411. "fail": "Le rôle utilisé n’est pas suffisamment supporté par les technologies d’assistance"
  412. },
  413. "aria-valid-attr-value": {
  414. "pass": "Les valeurs d’attribut ARIA sont valides",
  415. "fail": {
  416. "singular": "La valeur d’attribut ARIA est invalide : ${data.values}",
  417. "plural": "Les valeurs d’attribut ARIA sont invalides : ${data.values}"
  418. },
  419. "incomplete": {
  420. "singular": "L’id de l’attribut ARIA de l’élément n’existe pas dans cette page : ${data.values}",
  421. "plural": "L’id de l’attribut ARIA des éléments n’existent pas dans cette page : ${data.values}"
  422. }
  423. },
  424. "aria-valid-attr": {
  425. "pass": {
  426. "singular": "Les noms d’attributs ARIA sont valides",
  427. "plural": "Le nom d’attribut ARIA est valide"
  428. },
  429. "fail": {
  430. "singular": "Le nom d’attribut ARIA est invalide : ${data.values}",
  431. "plural": "Les noms d’attributs ARIA sont invalides : ${data.values}"
  432. }
  433. },
  434. "valid-scrollable-semantics": {
  435. "pass": "L’élément a une sémantique valide pour un élément dans l’ordre de tabulation.",
  436. "fail": "L’élément n’a pas une sémantique valide pour un élément dans l’ordre de tabulation."
  437. },
  438. "color-contrast": {
  439. "pass": "L’élément a un contraste de couleurs suffisant de ${data.contrastRatio}",
  440. "fail": "L’élément a un contraste de couleurs insuffisant de ${data.contrastRatio} (couleur du texte : ${data.fgColor}, couleur d’arrière-plan : ${data.bgColor}, corps : ${data.fontSize}, graisse : ${data.fontWeight}). Le rapport de contraste attendu est ${data.expectedContrastRatio}",
  441. "incomplete": {
  442. "default": "Impossible de déterminer le rapport de contraste",
  443. "bgImage": "La couleur d’arrière-plan de l’élément n’a pu être déterminée à cause d’une image d’arrière-plan",
  444. "bgGradient": "La couleur d’arrière-plan de l’élément n’a pu être déterminée à cause d’un dégradé d’arrière-plan",
  445. "imgNode": "La couleur d’arrière-plan de l’élément n’a pu être déterminée, car l’élément contient une balise image",
  446. "bgOverlap": "La couleur d’arrière-plan de l’élément n’a pu être déterminée, car un autre élément le chevauche",
  447. "fgAlpha": "La couleur du texte de l’élément n’a pu être déterminée à cause d’une opacité réduite",
  448. "elmPartiallyObscured": "La couleur d’arrière-plan de l’élément n’a pu être déterminée, car l’élément est partiellement masqué par un autre élément",
  449. "elmPartiallyObscuring": "La couleur d’arrière-plan de l’élément n’a pu être déterminée, car il chevauche partiellement un autre élément",
  450. "outsideViewport": "La couleur d’arrière-plan de l’élément n’a pu être déterminée, car il est à l’extérieur du viewport",
  451. "equalRatio": "L’élément a un rapport de contraste de 1:1 avec son arrière-plan",
  452. "shortTextContent": "Le contenu de l’élément est trop court pour déterminer s’il s’agit réellement d’un contenu textuel"
  453. }
  454. },
  455. "link-in-text-block": {
  456. "pass": "Les liens peuvent être distingués du texte environnant par un autre moyen que la couleur",
  457. "fail": "Les liens doivent se distinguer du texte environnant par un autre moyen que la couleur",
  458. "incomplete": {
  459. "default": "Impossible de déterminer le rapport de contraste",
  460. "bgContrast": "Le rapport de contraste de l’élément n’a pu être déterminé. Recherchez un style différent pour le hover/focus.",
  461. "bgImage": "Le rapport de contraste de l’élément n’a pu être déterminé à cause d’une image d’arrière-plan",
  462. "bgGradient": "Le rapport de contraste de l’élément n’a pu être déterminé à cause d’un dégradé d’arrière-plan",
  463. "imgNode": "Le rapport de contraste de l’élément n’a pu être déterminé, car l’élément contient une balise image",
  464. "bgOverlap": "Le rapport de contraste de l’élément n’a pu être déterminé à cause d’un chevauchement"
  465. }
  466. },
  467. "autocomplete-appropriate": {
  468. "pass": "La valeur autocomplete est sur un élément approprié",
  469. "fail": "La valeur autocomplete est inappropriée sur ce type de champ de formulaire"
  470. },
  471. "autocomplete-valid": {
  472. "pass": "L’attribut autocomplete est formaté correctement",
  473. "fail": "L’attribut autocomplete n’est pas formaté correctement"
  474. },
  475. "accesskeys": {
  476. "pass": "La valeur de l’attribut accesskey est unique",
  477. "fail": "Plusieurs éléments ont le même accesskey au sein du document"
  478. },
  479. "focusable-content": {
  480. "pass": "L’élément contient des éléments focalisables",
  481. "fail": "L’élément devrait avoir du contenu focalisable"
  482. },
  483. "focusable-disabled": {
  484. "pass": "Aucun élément focalisable contenu dans l’élément",
  485. "fail": "Le contenu focalisable devrait être désactivé ou retiré du DOM"
  486. },
  487. "focusable-element": {
  488. "pass": "L’élément est focalisable",
  489. "fail": "L’élément devrait être focalisable"
  490. },
  491. "focusable-no-name": {
  492. "pass": "L’élément n’est pas dans l’ordre de tabulation ou a un intitulé accessible",
  493. "fail": "L’élément est dans l’ordre de tabulation et n’a pas d’intitulé accessible"
  494. },
  495. "focusable-not-tabbable": {
  496. "pass": "Aucun élément focalisable contenu dans l’élément",
  497. "fail": "Le contenu focalisable devrait se voir assigné un tabindex='-1' ou être retiré du DOM"
  498. },
  499. "landmark-is-top-level": {
  500. "pass": "La région ${data.role} est au niveau le plus haut.",
  501. "fail": "La région ${data.role} est contenue dans une autre région."
  502. },
  503. "page-has-heading-one": {
  504. "pass": "La page a au moins un titre de niveau un",
  505. "fail": "La page doit avoir un titre de niveau un"
  506. },
  507. "page-has-main": {
  508. "pass": "La page a au moins une région main",
  509. "fail": "La page doit avoir une région main"
  510. },
  511. "page-no-duplicate-banner": {
  512. "pass": "Le document n’a pas plus d’une région banner",
  513. "fail": "Le document a plus d’une région banner"
  514. },
  515. "page-no-duplicate-contentinfo": {
  516. "pass": "Le document n’a pas plus d’une région contentinfo",
  517. "fail": "Le document a plus d’une région contentinfo"
  518. },
  519. "page-no-duplicate-main": {
  520. "pass": "Le document n’a pas plus d’une région main",
  521. "fail": "Le document a plus d’une région banner"
  522. },
  523. "tabindex": {
  524. "pass": "L’élément n’a pas de tabindex supérieur à 0",
  525. "fail": "L’élément a un tabindex supérieur à 0"
  526. },
  527. "alt-space-value": {
  528. "pass": "L’élément a une valeur d’attribut alt valide",
  529. "fail": "L’élément a un attribut alt qui contient un caractère d’espacement qui n’est pas ignoré par les lecteurs d’écran"
  530. },
  531. "duplicate-img-label": {
  532. "pass": "L’élément ne duplique pas un texte existant dans l’alternative textuelle de l’élément <img>",
  533. "fail": "L’élément contient un élément <img> dont l’alternative textuelle duplique un texte existant"
  534. },
  535. "explicit-label": {
  536. "pass": "L’élément de formulaire a un <label> explicite",
  537. "fail": "L’élément de formulaire n’a pas de <label> explicite"
  538. },
  539. "help-same-as-label": {
  540. "pass": "L’aide à la saisie (title ou aria-describedby) ne duplique pas le contenu du label",
  541. "fail": "L’aide à la saisie (title ou aria-describedby) est identique au contenu du label"
  542. },
  543. "hidden-explicit-label": {
  544. "pass": "L’élément de formulaire a un <label> visible et explicite",
  545. "fail": "L’élément de formulaire a un <label> explicite qui est masqué"
  546. },
  547. "implicit-label": {
  548. "pass": "L’élément de formulaire a un <label> implicite (imbriqué)",
  549. "fail": "L’élément de formulaire n’a pas de <label> implicite (imbriqué)"
  550. },
  551. "label-content-name-mismatch": {
  552. "pass": "L’élément contient du texte visible qui n’est pas inclus dans l’intitulé accessible",
  553. "fail": "Le texte contenu dans l’élément n’est pas inclus dans l’intitulé accessible"
  554. },
  555. "multiple-label": {
  556. "pass": "L’élément de formulaire n’a pas plusieurs éléments <label>",
  557. "incomplete": "Des éléments associés à plusieurs étiquettes ne sont pas suffisamment supportés par les technologies d’assistance. Vérifier que la première étiquette contient toute l’information nécessaire."
  558. },
  559. "title-only": {
  560. "pass": "L’élément de formulaire n’a pas uniquement l’attribut title comme étiquette",
  561. "fail": "Seul l’attribut title est utilisé comme étiquette pour l’élément de formulaire"
  562. },
  563. "landmark-is-unique": {
  564. "pass": "Les landmarks doivent comporter un rôle unique, ou une étiquette accessible par la combinaison de role/label/title",
  565. "fail": "L’attribut landmark doit comporter une valeur d’attribut aria-label, aria-labelledby, ou title unique pour rendre le landmark distinct"
  566. },
  567. "has-lang": {
  568. "pass": "L’élément <html> a un attribut lang",
  569. "fail": "L’élément <html> n’a pas d’attribut lang"
  570. },
  571. "valid-lang": {
  572. "pass": "La valeur de l’attribut lang fait partie des codes de langues valides",
  573. "fail": "La valeur de l’attribut lang ne fait pas partie des codes de langues valides"
  574. },
  575. "xml-lang-mismatch": {
  576. "pass": "Les attributs lang et xml:lang indiquent la même langue de base",
  577. "fail": "Les attributs lang et xml:lang indiquent des langues de base différentes"
  578. },
  579. "dlitem": {
  580. "pass": "L’item de liste de description a un élément <dl> parent",
  581. "fail": "L’item de liste de description n’a pas d’élément <dl> parent"
  582. },
  583. "listitem": {
  584. "pass": "L’item de liste a un élément <ul>, <ol> ou role=\"list\" parent",
  585. "fail": {
  586. "default": "L’item de liste n’a pas d’élément <ul> ou <ol> parent",
  587. "roleNotValid": "L’item de liste n’a pas d’élément <ul> ou <ol> parent sans un role ou un role=\"list\""
  588. }
  589. },
  590. "only-dlitems": {
  591. "pass": "L’élément de liste n’a que des descendants directs qui sont autorisés dans les éléments <dt> ou <dd>",
  592. "fail": "L’élément de liste a des descendants directs qui ne sont pas autorisés dans les éléments <dt> ou <dd>"
  593. },
  594. "only-listitems": {
  595. "pass": "L’élément de liste n’a que des descendants directs qui sont autorisés dans les éléments <li>",
  596. "fail": {
  597. "default": "L’élément de liste comporte des descendants directs qui ne sont pas autorisés à l’intérieur de l’élément <li>",
  598. "roleNotValid": "L’élément de liste comporte des descendants directs avec un rôle qui n’est pas autorisé : ${data.roles}"
  599. }
  600. },
  601. "structured-dlitems": {
  602. "pass": "S’il n’est pas vide, l’élément contient au moins un élément <dt> et un élément <dd>",
  603. "fail": "S’il n’est pas vide, l’élément doit contenir au moins un élément <dt> et un élément <dd>"
  604. },
  605. "caption": {
  606. "pass": "L’élément multimédia a une piste de sous-titres",
  607. "incomplete": "Aucune piste de sous-titres n’a pu être trouvée pour cet élément"
  608. },
  609. "frame-tested": {
  610. "pass": "L’iframe a été testée avec axe-core",
  611. "fail": "L’iframe n’a pu être testée avec axe-core",
  612. "incomplete": "L’iframe doit encore être testée avec axe-core"
  613. },
  614. "css-orientation-lock": {
  615. "pass": "L’utilisation de l’écran est indépendante de l’orientation et n’est pas limitée à un mode d’affichage donné",
  616. "fail": "L’utilisation de l’écran est limitée à une orientation donnée par CSS, rendant l’affichage inutilisable",
  617. "incomplete": "Le verrouillage de l’orientation d’affichage par CSS ne peut être déterminé"
  618. },
  619. "meta-viewport-large": {
  620. "pass": "La balise <meta> ne limite pas l’agrandissement sur les appareils mobiles",
  621. "fail": "La balise <meta> limite l’agrandissement sur les appareils mobiles"
  622. },
  623. "meta-viewport": {
  624. "pass": "La balise <meta> n’empêche pas l’agrandissement sur les appareils mobiles",
  625. "fail": "La balise <meta> empêche l’agrandissement sur les appareils mobiles"
  626. },
  627. "header-present": {
  628. "pass": "La page a un entête",
  629. "fail": "La page n’a pas d’entête"
  630. },
  631. "heading-order": {
  632. "pass": "Hiérarchie entre les titres valide",
  633. "fail": "Hiérarchie entre les titres invalide"
  634. },
  635. "internal-link-present": {
  636. "pass": "Lien d’évitement valide trouvé",
  637. "fail": "Aucun lien d’évitement valide trouvé"
  638. },
  639. "landmark": {
  640. "pass": "La page a une région",
  641. "fail": "La page n’a pas de région"
  642. },
  643. "meta-refresh": {
  644. "pass": "Aucune balise <meta> ne rafraîchit immédiatement la page",
  645. "fail": "La balise <meta> force le rafraîchissement minuté de la page"
  646. },
  647. "p-as-heading": {
  648. "pass": "Les éléments <p> ne sont pas stylés comme des titres",
  649. "fail": "Des titres doivent être utilisés au lieu de styler des éléments <p>"
  650. },
  651. "region": {
  652. "pass": "Contenu imbriqué dans une région ARIA",
  653. "fail": "Contenu non imbriqué dans une région ARIA"
  654. },
  655. "skip-link": {
  656. "pass": "La cible du lien d’évitement existe",
  657. "incomplete": "La cible du lien d’évitement devrait devenir visible lors de l’activation",
  658. "fail": "Lien d’évitement sans cible"
  659. },
  660. "unique-frame-title": {
  661. "pass": "L’attribut title de l’élément est unique",
  662. "fail": "L’attribut title de l’élément n’est pas unique"
  663. },
  664. "duplicate-id-active": {
  665. "pass": "Le document ne comporte aucun élément actif partageant la même valeur d’attribut id",
  666. "fail": "Le document comporte ou un plusieurs éléments actifs partageant la même valeur d’attribut id : ${data}"
  667. },
  668. "duplicate-id-aria": {
  669. "pass": "Le document ne comporte aucun élément référencé par ARIA ou étiquettes partageant la même valeur d’attribut id",
  670. "fail": "Le document comporte un ou plusieurs éléments référencés par ARIA partageant la même valeur d’attribut id : ${data}"
  671. },
  672. "duplicate-id": {
  673. "pass": "Le document n’a pas d’éléments qui partagent le même attribut id",
  674. "fail": "Le document a plusieurs éléments avec le même attribut id : ${data}"
  675. },
  676. "aria-label": {
  677. "pass": "L’attribut aria-label existe et n’est pas vide",
  678. "fail": "L’attribut aria-label n’existe pas ou est vide"
  679. },
  680. "aria-labelledby": {
  681. "pass": "L’attribut aria-labelledby existe et fait référence à des éléments visibles par les lecteurs d’écran",
  682. "fail": "L’attribut aria-labelledby n’existe pas, fait référence à des éléments qui n’existent pas ou à des éléments vides ou non visibles"
  683. },
  684. "avoid-inline-spacing": {
  685. "pass": "Aucun style inline affectant l’espacement du texte avec '!important' n’a été spécifié",
  686. "fail": {
  687. "singular": "Retirer '!important' du style inline ${data.values}, car le remplacement n’est pas pris en charge par la plupart des navigateurs",
  688. "plural": "Retirer '!important' des styles inline ${data.values}, car le remplacement n’est pas pris en charge par la plupart des navigateurs"
  689. }
  690. },
  691. "button-has-visible-text": {
  692. "pass": "L’élément a un contenu textuel visible par les lecteurs d’écran",
  693. "fail": "L’élément n’a aucun contenu textuel visible par les lecteurs d’écran"
  694. },
  695. "doc-has-title": {
  696. "pass": "Le document a un élément <title> non vide",
  697. "fail": "Le document n’a pas d’élément <title> non vide"
  698. },
  699. "exists": {
  700. "pass": "L’élément n’existe pas",
  701. "incomplete": "L’élément existe"
  702. },
  703. "has-alt": {
  704. "pass": "L’élément a un attribut alt",
  705. "fail": "L’élément n’a pas d’attribut alt"
  706. },
  707. "has-visible-text": {
  708. "pass": "L’élément a un contenu textuel visible par les lecteurs d’écran",
  709. "fail": "L’élément n’a aucun contenu textuel visible par les lecteurs d’écran"
  710. },
  711. "is-on-screen": {
  712. "pass": "L’élément n’est pas visible",
  713. "fail": "L’élément est visible"
  714. },
  715. "non-empty-alt": {
  716. "pass": "L’élément a un attribut alt non vide",
  717. "fail": "L’élément n’a pas d’attribut alt ou l’attribut alt est vide"
  718. },
  719. "non-empty-if-present": {
  720. "pass": {
  721. "default": "L’élément n’a pas d’attribut value",
  722. "has-label": "L’élément a un attribut value non-vide"
  723. },
  724. "fail": "L’élément a un attribut value, et cet attribut est vide"
  725. },
  726. "non-empty-title": {
  727. "pass": "L’élément a un attribut title",
  728. "fail": "L’élément n’a pas d’attribut title ou l’attribut title est vide."
  729. },
  730. "non-empty-value": {
  731. "pass": "L’élément a un attribut value non vide",
  732. "fail": "L’élément n’a pas d’attribut value, ou a un attribut value vide"
  733. },
  734. "role-none": {
  735. "pass": "La sémantique par défaut de l’élément est annulée avec role=\"none\"",
  736. "fail": "La sémantique par défaut de l’élément n’est pas annulée avec role=\"none\""
  737. },
  738. "role-presentation": {
  739. "pass": "La sémantique par défaut de l’élément est annulée avec role=\"presentation\"",
  740. "fail": "La sémantique par défaut de l’élément n’est pas annulée avec role=\"presentation\""
  741. },
  742. "caption-faked": {
  743. "pass": "La première ligne d’un tableau n’est pas utilisée en guise de légende",
  744. "fail": "La première ligne d’un tableau devrait être un caption et non des cellules de tableau"
  745. },
  746. "html5-scope": {
  747. "pass": "L’attribut scope est utilisé uniquement sur des cellules d’entête de tableau",
  748. "fail": "En HTML 5, l’attribut scope ne peut être utilisé que sur des cellules d’entête de tableau"
  749. },
  750. "same-caption-summary": {
  751. "pass": "Les contenus de l’attribut summary et de <caption> ne sont pas identiques",
  752. "fail": "Les contenus de l’attribut summary et de <caption> sont identiques"
  753. },
  754. "scope-value": {
  755. "pass": "L’attribut scope est utilisé correctement",
  756. "fail": "La valeur de l’attribut scope ne peut être que 'row' ou 'col'"
  757. },
  758. "td-has-header": {
  759. "pass": "Toutes les cellules de données non vides ont un entête de tableau",
  760. "fail": "Certaines cellules de données non vides n’ont pas d’entête de tableau"
  761. },
  762. "td-headers-attr": {
  763. "pass": "L’attribut headers est utilisé exclusivement pour faire référence à d’autres cellules dans le tableau",
  764. "fail": "L’attribut headers n’est pas utilisé exclusivement pour faire référence à d’autres cellules dans le tableau"
  765. },
  766. "th-has-data-cells": {
  767. "pass": "Toutes les cellules d’entête de tableau font référence à des cellules de données",
  768. "fail": "Toutes les cellules d’entête de tableau ne font pas référence à des cellules de données",
  769. "incomplete": "Les cellules de données sont absentes ou vides"
  770. },
  771. "hidden-content": {
  772. "pass": "Tout le contenu de la page a été analysé.",
  773. "fail": "Il y a eu des problèmes pour analyser le contenu de cette page.",
  774. "incomplete": "Il y a du contenu caché sur la page qui n’a pas été analysé. Vous allez devoir modifier l’affichage de ce contenu afin de l’analyser."
  775. }
  776. },
  777. "failureSummaries": {
  778. "any": {
  779. "failureMessage": "Corriger l’un des éléments suivants : {{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
  780. },
  781. "none": {
  782. "failureMessage": "Corriger tous les éléments suivants : {{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
  783. }
  784. },
  785. "incompleteFallbackMessage": "axe n’a pu en déterminer la raison. Il est temps de sortir l’inspecteur d’éléments !"
  786. }