fr.json 55.6 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984
{
  "lang": "fr",
  "rules": {
    "accesskeys": {
      "description": "Vérifier que chaque valeur de l’attribut accesskey est unique",
      "help": "La valeur de l’attribut accesskey doit être unique"
    },
    "area-alt": {
      "description": "Vérifier que les éléments <area> d’une image réactive ont une alternative textuelle",
      "help": "Les éléments <area> actifs doivent avoir une alternative textuelle"
    },
    "aria-allowed-attr": {
      "description": "Vérifier que les attributs ARIA sont autorisés pour le rôle d’un élément",
      "help": "Les éléments doivent seulement utiliser les attributs ARIA autorisés"
    },
    "aria-allowed-role": {
      "description": "Vérifier que l’attribut role a une valeur valide pour cet élément",
      "help": "Le rôle ARIA doit être valide pour cet élément"
    },
    "aria-command-name": {
      "description": "Vérifier que chaque \"button\", \"link\" et \"menuitem\" ARIA a un nom accessible",
      "help": "Les commandes ARIA doivent avoir un nom accessible"
    },
    "aria-dialog-name": {
      "description": "Vérifier que chaque nœud ARIA \"dialog\" et \"alertdialog\" a un nom accessible",
      "help": "Les nœuds ARIA \"dialog\" and \"alertdialog\" doivent avoir un nom accessible"
    },
    "aria-hidden-body": {
      "description": "Vérifier qu’aria-hidden='true' n’est pas présent sur le corps du document (élément body)",
      "help": "aria-hidden='true' ne doit pas être présent sur <body>"
    },
    "aria-hidden-focus": {
      "description": "Vérifier qu’aria-hidden n’est pas assigné aux éléments qui reçoivent le focus au clavier",
      "help": "aria-hidden n’est pas assigné aux éléments qui reçoivent le focus au clavier"
    },
    "aria-input-field-name": {
      "description": "Vérifier que chaque champ de formulaire avec ARIA est doté d’un intitulé accessible",
      "help": "Les champs de formulaire ARIA ont un intitulé accessible"
    },
    "aria-meter-name": {
      "description": "Vérifier que chaque nœud ARIA \"meter\" a un nom accessible",
      "help": "Les nœuds ARIA \"meter\" doivent avoir un nom accessible"
    },
    "aria-progressbar-name": {
      "description": "Vérifier que chaque nœud ARIA \"progressbar\" a un nom accessible",
      "help": "Les nœuds ARIA \"progressbar\" doivent avoir un nom accessible"
    },
    "aria-required-attr": {
      "description": "Vérifier que les éléments avec des rôles ARIA ont les attributs ARIA requis",
      "help": "Les attributs ARIA requis doivent être présents"
    },
    "aria-required-children": {
      "description": "Vérifier que les éléments avec un rôle ARIA comportent aussi des rôles pour les descendants directs",
      "help": "Certains rôles ARIA doivent comporter des descendants directs spécifiques"
    },
    "aria-required-parent": {
      "description": "Vérifier que les éléments avec un rôle ARIA requérant des rôles parents y sont contenus",
      "help": "Certains rôles ARIA doivent être contenus par des parents spécifiques"
    },
    "aria-roledescription": {
      "description": "Vérifier qu’aria-roledescription n’est utilisé que sur des éléments qui ont un rôle implicite ou explicite",
      "help": "Utiliser aria-roledescription sur les éléments dont le rôle a une valeur sémantique"
    },
    "aria-roles": {
      "description": "Vérifier que les éléments avec un attribut role utilisent une valeur valide",
      "help": "Les rôles ARIA doivent se conformer aux valeurs valides"
    },
    "aria-text": {
      "description": "Vérifier que \"role=text\" est uniquement utilisé sur des éléments sans descendants focalisables",
      "help": "\"role=text\" ne doit pas avoir de descendant focalisable"
    },
    "aria-toggle-field-name": {
      "description": "Vérifier que chaque champ de basculement ARIA a un libellé accessible",
      "help": "Les champs de basculement ARIA ont un libellé accessible"
    },
    "aria-tooltip-name": {
      "description": "Vérifier que chaque nœud ARIA \"tooltip\" a un nom accessible",
      "help": "Les nœuds ARIA \"tooltip\" doivent avoir un nom accessible"
    },
    "aria-treeitem-name": {
      "description": "Vérifier que chaque nœud ARIA \"treeitem\" a un nom accessible",
      "help": "Les nœuds ARIA \"treeitem\" doivent avoir un nom accessible"
    },
    "aria-valid-attr-value": {
      "description": "Vérifier que tous les attributs ARIA comportent des valeurs valides",
      "help": "Les attributs ARIA doivent comporter des valeurs valides"
    },
    "aria-valid-attr": {
      "description": "Vérifier que les attributs commençant par aria- sont des attributs ARIA valides",
      "help": "Les attributs ARIA doivent se conformer aux noms valides"
    },
    "audio-caption": {
      "description": "Vérifier que les éléments <audio> ont des sous-titres",
      "help": "Les éléments <audio> doivent avoir une piste de sous-titres"
    },
    "autocomplete-valid": {
      "description": "Vérifier que l’attribut autocomplete est correctement adapté au champ de formulaire",
      "help": "L’attribut autocomplete doit être utilisé correctement"
    },
    "avoid-inline-spacing": {
      "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",
      "help": "L’espacement du texte inline peut être ajusté avec des feuilles de style personnalisées"
    },
    "blink": {
      "description": "Vérifier que l’élément <blink> n’est pas utilisé",
      "help": "L’élément <blink> est déprécié et ne doit pas être utilisé"
    },
    "button-name": {
      "description": "Vérifier que les boutons ont un texte perceptible",
      "help": "Les boutons doivent avoir un texte perceptible"
    },
    "bypass": {
      "description": "Vérifier que chaque page dispose au minimum d’un mécanisme de contournement de la navigation pour accéder directement au contenu",
      "help": "Chaque page doit fournir des moyens de contourner les contenus répétés"
    },
    "color-contrast": {
      "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",
      "help": "Les éléments doivent avoir un contraste de couleurs suffisant"
    },
    "color-contrast-enhanced": {
      "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 AAA",
      "help": "Les éléments doivent avoir un contraste de couleurs suffisant"
    },
    "css-orientation-lock": {
      "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",
      "help": "Les CSS Media queries ne sont pas utilisées pour verrouiller l’orientation de l’écran"
    },
    "definition-list": {
      "description": "Vérifier que les éléments <dl> sont correctement structurés",
      "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>"
    },
    "dlitem": {
      "description": "Vérifier que les éléments <dt> et <dd> sont contenus dans un élément <dl>",
      "help": "Les éléments <dt> et <dd> doivent être contenus dans un élément <dl>"
    },
    "document-title": {
      "description": "Vérifier que chaque document HTML contient un élément <title> non vide",
      "help": "Chaque document doit avoir un élément <title> pour aider à la navigation"
    },
    "duplicate-id-active": {
      "description": "Vérifier que la valeur d’attribut id de chaque élément actif est unique",
      "help": "Les IDs des éléments actifs doivent être uniques"
    },
    "duplicate-id-aria": {
      "description": "Vérifier que chaque valeur d’attribut id utilisée avec ARIA et dans les étiquettes est unique",
      "help": "Les IDs utilisés avec ARIA et dans les étiquettes doivent être uniques"
    },
    "duplicate-id": {
      "description": "Vérifier que la valeur de chaque attribut id est unique",
      "help": "La valeur de l’attribut id doit être unique"
    },
    "empty-heading": {
      "description": "Vérifier que les niveaux de titre ont un texte perceptible",
      "help": "Les niveaux de titre ne doivent pas être vides"
    },
    "empty-table-header": {
      "description": "Vérifier que les entêtes de tableaux ont un texte perceptible",
      "help": "Les textes d’entêtes de tableaux ne doivent pas être vides"
    },
    "focus-order-semantics": {
      "description": "Vérifier que les éléments dans le parcours du focus ont un rôle approprié",
      "help": "Les éléments dans le parcours du focus doivent avoir un rôle approprié pour le contenu interactif"
    },
    "form-field-multiple-labels": {
      "description": "Vérifier que le champ de formulaire n’a pas plusieurs éléments d’étiquettes",
      "help": "Le champ de formulaire ne devrait pas comporter plusieurs éléments d’étiquettes"
    },
    "frame-focusable-content": {
      "description": "Vérifier que les éléments <frame> et <iframe> avec du contenu focalisable n’ont pas de tabindex=-1",
      "help": "Les cadres avec du contenu focalisable ne doivent pas avoir tabindex=-1"
    },
    "frame-tested": {
      "description": "Vérifier que les éléments <iframe> et <frame> contiennent le script axe-core",
      "help": "Les cadres doivent être testés avec axe-core"
    },
    "frame-title-unique": {
      "description": "Vérifier que les éléments <iframe> et <frame> ont un attribut title unique",
      "help": "Chaque cadre doit avoir un attribut title unique"
    },
    "frame-title": {
      "description": "Vérifier que les éléments <iframe> et <frame> ont un attribut title non vide",
      "help": "Chaque cadre doit avoir un attribut title"
    },
    "heading-order": {
      "description": "Vérifier que la hiérarchie des niveaux de titre est sémantiquement correcte",
      "help": "Les niveaux de titre doivent s’incrémenter d’un seul niveau à la fois"
    },
    "hidden-content": {
      "description": "Informer les utilisateurs sur les contenus cachés",
      "help": "Le contenu caché sur la page ne peut pas être analysé"
    },
    "html-has-lang": {
      "description": "Vérifier que chaque document HTML a un attribut lang",
      "help": "L’élément <html> doit avoir un attribut lang"
    },
    "html-lang-valid": {
      "description": "Vérifier que l’attribut lang sur l’élément <html> a une valeur valide",
      "help": "L’élément <html> doit avoir une valeur valide pour l’attribut lang"
    },
    "html-xml-lang-mismatch": {
      "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",
      "help": "Les éléments HTML avec les attributs lang et xml:lang doivent avoir la même langue de base"
    },
    "identical-links-same-purpose": {
      "description": "Vérifier que les liens qui ont le même nom accessible ont la même finalité",
      "help": "Les liens avec le même nom ont la même finalité"
    },
    "image-alt": {
      "description": "Vérifier que les éléments <img> ont une alternative textuelle, ou un rôle de type 'none' ou 'presentation'",
      "help": "Les images doivent avoir une alternative textuelle"
    },
    "image-redundant-alt": {
      "description": "Vérifier que l’intitulé des liens et boutons n’est pas répété dans l’alternative de l’image",
      "help": "L’intitulé des liens et boutons ne doit pas être répété dans l’alternative de l’image"
    },
    "input-button-name": {
      "description": "Vérifier que la valeur textuelle des contrôles de boutons est perceptible",
      "help": "La valeur textuelle des contrôles de boutons doit être perceptible"
    },
    "input-image-alt": {
      "description": "Vérifier que les éléments <input type=\"image\"> ont une alternative textuelle",
      "help": "Les boutons images doivent avoir une alternative textuelle"
    },
    "label-content-name-mismatch": {
      "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",
      "help": "Le contenu textuel des éléments doit aussi se retrouver dans leur intitulé accessible"
    },
    "label-title-only": {
      "description": "Vérifier que chaque élément de formulaire n’est pas labellisé uniquement par les attributs title ou aria-describedby",
      "help": "Chaque élément de formulaire doit avoir un label visible"
    },
    "label": {
      "description": "Vérifier que chaque élément de formulaire a une étiquette",
      "help": "Chaque élément de formulaire doit avoir une étiquette"
    },
    "landmark-banner-is-top-level": {
      "description": "La région banner ne devrait pas être contenue dans une autre région",
      "help": "La région banner doit être au niveau le plus haut"
    },
    "landmark-complementary-is-top-level": {
      "description": "Vérifier que les landmarks complementary ou aside se retrouvent au plus haut niveau",
      "help": "Aside ne doit pas être contenu dans un autre landmark"
    },
    "landmark-contentinfo-is-top-level": {
      "description": "La région contentinfo ne devrait pas être contenue dans une autre région",
      "help": "La région contentinfo doit être au niveau le plus haut"
    },
    "landmark-main-is-top-level": {
      "description": "La région main ne devrait pas être contenue dans une autre région",
      "help": "La région main doit être au niveau le plus haut"
    },
    "landmark-no-duplicate-banner": {
      "description": "Vérifier que le document n’a pas plus d’une région banner",
      "help": "Le document contient au plus une région banner"
    },
    "landmark-no-duplicate-contentinfo": {
      "description": "Vérifier que le document n’a pas plus d’une région contentinfo",
      "help": "Le document contient au plus une région contentinfo"
    },
    "landmark-no-duplicate-main": {
      "description": "Vérifier que le document a tout au plus, un seul landmark main",
      "help": "Le document ne doit pas contenir plus d’un landmark main"
    },
    "landmark-one-main": {
      "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",
      "help": "La page doit contenir une région main"
    },
    "landmark-unique": {
      "help": "Vérifier que chaque landmark est unique",
      "description": "Les landmarks doivent comporter un rôle unique, ou une étiquette accessible par la combinaison de role/label/title"
    },
    "link-in-text-block": {
      "description": "Les liens doivent pouvoir être distingués autrement que par la couleur",
      "help": "Les liens doivent pouvoir être distingués du texte environnant d’une façon qui ne repose pas sur la couleur"
    },
    "link-name": {
      "description": "Vérifier que les liens ont un texte perceptible",
      "help": "Les liens doivent avoir un texte perceptible"
    },
    "list": {
      "description": "Vérifier que les listes sont structurées correctement",
      "help": "<ul> et <ol> ne doivent contenir directement que des éléments <li>, <script> ou <template>"
    },
    "listitem": {
      "description": "Vérifier que les éléments <li> sont utilisés sémantiquement",
      "help": "Les éléments <li> doivent être contenus dans un élément <ul> ou <ol>"
    },
    "marquee": {
      "description": "Vérifier que l’élément <marquee> n’est pas utilisé",
      "help": "L’élément <marquee> est déprécié et ne doit pas être utilisé"
    },
    "meta-refresh": {
      "description": "Vérifier que <meta http-equiv=\"refresh\"> n’est pas utilisé",
      "help": "La page HTML ne doit pas être actualisée automatiquement"
    },
    "meta-viewport-large": {
      "description": "Vérifier que <meta name=\"viewport\"> permet un agrandissement significatif",
      "help": "Les utilisateurs devraient pouvoir zoomer et agrandir le texte jusqu’à 500%"
    },
    "meta-viewport": {
      "description": "Vérifier que <meta name=\"viewport\"> ne désactive pas le zoom ni l’agrandissement",
      "help": "Le zoom et l’agrandissement ne doivent pas être désactivés"
    },
    "nested-interactive": {
      "description": "Les éléments interactifs imbriqués ne sont pas annoncés par les lecteurs d’écrans",
      "help": "Verifier que les éléments interactifs ne sont pas imbriqués"
    },
    "no-autoplay-audio": {
      "description": "Vérifier que les éléments <video> ou <audio> ne jouent pas de son automatiquement pendant plus de 3 secondes sans mécanisme de contrôle pour stopper la lecture ou couper le son.",
      "help": "Les éléments <video> ou <audio> ne jouent pas de son automatiquement"
    },
    "object-alt": {
      "description": "Vérifier que les éléments <object> ont une alternative textuelle",
      "help": "Les éléments <object> doivent avoir une alternative textuelle"
    },
    "p-as-heading": {
      "description": "Vérifier que les éléments p ne sont pas utilisés pour styler des niveaux de titres",
      "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"
    },
    "page-has-heading-one": {
      "description": "Vérifier que la page, ou au moins une de ses iframes, contient un titre de niveau 1",
      "help": "La page doit contenir un titre de niveau 1"
    },
    "presentation-role-conflict": {
      "description": "Signaler les éléments dont le rôle est 'none' ou 'presentation' et qui déclenchent la résolution de conflits de rôles.",
      "help": "Les éléments avec un rôle 'none' ou 'presentation' doivent être signalés"
    },
    "region": {
      "description": "Vérifier que tout le contenu est localisé dans une région",
      "help": "Le contenu doit être localisé dans une région"
    },
    "role-img-alt": {
      "description": "Vérifier que les éléments avec [role='img'] ont une équivalence textuelle",
      "help": "Les éléments avec [role='img'] ont une équivalence textuelle"
    },
    "scope-attr-valid": {
      "description": "Vérifier que l’attribut scope est utilisé correctement dans les tableaux",
      "help": "L’attribut scope doit être utilisé correctement"
    },
    "scrollable-region-focusable": {
      "description": "Les éléments dont le contenu défile devraient être accessibles au clavier",
      "help": "Vérifier que les régions défilantes sont accessibles au clavier"
    },
    "select-name": {
      "description": "Vérifier que l’élément 'select' a un nom accessible",
      "help": "L’élément 'select' doit avoir un nom accessible"
    },
    "server-side-image-map": {
      "description": "Vérifier que les images réactives côté serveur ne sont pas utilisées",
      "help": "Les images réactives côté serveur ne devraient pas être utilisées"
    },
    "skip-link": {
      "description": "Vérifier que tous les liens d’évitement ont une cible pouvant recevoir le focus",
      "help": "La cible d’un lien d’évitement doit exister et pouvoir recevoir le focus"
    },
    "svg-img-alt": {
      "description": "Vérifier que les éléments svg avec un rôle 'img', 'graphics-document', ou 'graphics-symbol' ont un texte accessible",
      "help": "Les éléments svg avec un rôle 'img' ont un texte alternatif"
    },
    "tabindex": {
      "description": "Vérifier que les valeurs de l’attribut tabindex ne sont pas supérieures à 0",
      "help": "Aucun élément ne devrait avoir un tabindex avec une valeur supérieure à zéro"
    },
    "table-duplicate-name": {
      "description": "Vérifier que chaque tableau n’ait pas un summary et un caption identiques",
      "help": "L’élément <caption> ne devrait pas contenir le même texte que l’attribut summary"
    },
    "table-fake-caption": {
      "description": "Vérifier que les tableaux avec une légende utilisent l’élément <caption>",
      "help": "Les données ou les cellules d’entête ne devraient pas être utilisées pour légender un tableau de données"
    },
    "td-has-header": {
      "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",
      "help": "Chaque élément td non vide dans un tableau plus grand que 3 × 3 doit avoir une cellule d’entête associée"
    },
    "td-headers-attr": {
      "description": "Vérifier que chaque cellule utilisant l’attribut headers fait référence à une autre cellule du même tableau",
      "help": "Les cellules utilisant l’attribut headers ne doivent faire référence qu’à d’autres cellules du même tableau"
    },
    "th-has-data-cells": {
      "description": "Vérifier que chaque cellule d’entête dans un tableau de données fait référence à des cellules de données",
      "help": "Tous les éléments th et ceux avec role=columnheader/rowheader doivent décrire des cellules de données"
    },
    "valid-lang": {
      "description": "Vérifier que les attributs lang ont des valeurs valides",
      "help": "L’attribut lang doit avoir une valeur valide"
    },
    "video-caption": {
      "description": "Vérifier que les éléments <video> ont des sous-titres",
      "help": "Les éléments <video> doivent avoir des sous-titres"
    }
  },
  "checks": {
    "abstractrole": {
      "pass": "Les rôles abstraits ne sont pas utilisés",
      "fail": {
        "singular": "Le rôle abstrait ne peut pas être utilisé directement : ${data.values}",
        "plural": "Les rôles abstraits ne peuvent pas être utilisés directement : ${data.values}"
      }
    },
    "aria-allowed-attr": {
      "pass": "Les attributs ARIA sont utilisés correctement pour le rôle défini",
      "fail": {
        "singular": "L’attribut ARIA n’est pas autorisé : ${data.values}",
        "plural": "Les attributs ARIA ne sont pas autorisés : ${data.values}"
      }
    },
    "aria-allowed-role": {
      "pass": "Le rôle ARIA est autorisé pour l’élément donné",
      "fail": {
        "singular": "Le rôle ARIA ${data.values} n’est pas autorisé pour l’élément donné",
        "plural": "Les rôles ARIA ${data.values} ne sont pas autorisés pour l’élément donné"
      },
      "incomplete": {
        "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",
        "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"
      }
    },
    "aria-errormessage": {
      "pass": "Utiliser une technique prise en charge pour aria-errormessage",
      "fail": {
        "singular": "La valeur d’aria-errormessage `${data.values}` doit recourir à une technique pour annoncer le message (aria-live, aria-describedby, role=alert, etc.)",
        "plural": "Les valeurs aria-errormessage `${data.values}` doivent recourir à une technique pour annoncer le message (aria-live, aria-describedby, role=alert, etc.)"
      },
      "incomplete": {
        "singular": "Vérifier que la valeur de l’attribut 'aria-errormessage' `${data.values}` se réfère à un élément existant",
        "plural": "Vérifier que les valeurs de l’attribut 'aria-errormessage' `${data.values}` se réfèrent à des éléments existants",
        "idrefs": "Impossible de déterminer si l’élément référencé par 'aria-errormessage' existe dans la page : ${data.values}"
      }
    },
    "aria-hidden-body": {
      "pass": "Aucun attribut aria-hidden n’est présent sur body",
      "fail": "aria-hidden=true ne devrait pas être présent sur body"
    },
    "aria-level": {
      "pass": "Les valeurs d’aria-level sont valides",
      "incomplete": "Les valeurs d’aria-level supérieures à 6 ne sont pas supportées par toutes les combinaisons de navigateurs et de lecteurs d’écrans"
    },
    "aria-prohibited-attr": {
      "pass": "L’attribut ARIA est autorisé",
      "fail": "L’attribut ARIA ne peut pas être utilisé, ajoutez un attribut role ou utilisez un élément différent : ${data.values}",
      "incomplete": "L’attribut ARIA n’est pas bien supporté sur l’élément et le contenu texte sera utilisé à la place : ${data.values}"
    },
    "aria-required-attr": {
      "pass": "Tous les attributs ARIA requis sont présents",
      "fail": {
        "singular": "L’attribut ARIA requis est manquant : ${data.values}",
        "plural": "Les attributs ARIA requis sont manquants : ${data.values}"
      }
    },
    "aria-required-children": {
      "pass": "Les descendants ARIA requis sont présents",
      "fail": {
        "singular": "Le descendant ARIA requis est manquant : ${data.values}",
        "plural": "Les descendants ARIA requis sont manquants : ${data.values}"
      },
      "incomplete": {
        "singular": "Le rôle du descendant ARIA attendu doit être ajouté : ${data.values}",
        "plural": "Les rôles des descendants ARIA attendus doivent être ajoutés : ${data.values}"
      }
    },
    "aria-required-parent": {
      "pass": "Les rôles parents ARIA requis sont présents",
      "fail": {
        "singular": "Le rôle parent ARIA requis est manquant : ${data.values}",
        "plural": "Les rôles parents ARIA requis sont manquants : ${data.values}"
      }
    },
    "aria-roledescription": {
      "pass": "aria-roledescription utilisé sur un élément sémantique supporté",
      "incomplete": "Vérifier que la valeur d’aria-roledescription est annoncée par les lecteurs d’écran supportés",
      "fail": "Attribuer à l’élément un rôle qui supporte aria-roledescription"
    },
    "aria-unsupported-attr": {
      "pass": "L’attribut ARIA est supporté",
      "fail": "L’attribut ARIA n’est pas suffisamment supporté par les lecteurs d’écran et autres technologies d’assistance : ${data.values}"
    },
    "aria-valid-attr-value": {
      "pass": "Les valeurs d’attribut ARIA sont valides",
      "fail": {
        "singular": "La valeur d’attribut ARIA est invalide : ${data.values}",
        "plural": "Les valeurs d’attribut ARIA sont invalides : ${data.values}"
      },
      "incomplete": {
        "noId": "L’ID d’élément référencé par l’attribut ARIA n’existe pas dans la page : ${data.needsReview}",
        "ariaCurrent": "La valeur de l’attribut ARIA est invalide et sera traitée comme \"aria-current=true\" : ${data.needsReview}",
        "idrefs": "Impossible de vérifier si l’ID d’élément référencé par l’attribut ARIA existe dans la page : ${data.needsReview}"
      }
    },
    "aria-valid-attr": {
      "pass": {
        "singular": "Les noms d’attributs ARIA sont valides",
        "plural": "Le nom d’attribut ARIA est valide"
      },
      "fail": {
        "singular": "Le nom d’attribut ARIA est invalide : ${data.values}",
        "plural": "Les noms d’attributs ARIA sont invalides : ${data.values}"
      }
    },
    "fallbackrole": {
      "pass": "Une seule valeur de rôle utilisée",
      "fail": "Utiliser une seule valeur de rôle, dans la mesure où les rôles de secours ne sont pas supportés par les navigateurs anciens",
      "incomplete": "Utiliser seulement les rôles 'presentation' ou 'none' puisqu’ils sont synonymes."
    },
    "has-global-aria-attribute": {
      "pass": {
        "singular": "L’élément a un attribut ARIA global : ${data.values}",
        "plural": "L’élément a des attributs ARIA globaux : ${data.values}"
      },
      "fail": "L’élément n’a pas d’attribut ARIA global"
    },
    "has-widget-role": {
      "pass": "L’élément a un rôle widget.",
      "fail": "L’élément n’a pas de rôle widget."
    },
    "invalidrole": {
      "pass": "Le rôle ARIA est valide",
      "fail": {
        "singular": "Le rôle doit être un rôle ARIA valide : ${data.values}",
        "plural": "Les rôles doivent être des rôles ARIA valides : ${data.values}"
      }
    },
    "is-element-focusable": {
      "pass": "L’élément est focalisable.",
      "fail": "L’élément n’est pas focalisable."
    },
    "no-implicit-explicit-label": {
      "pass": "Il n’y a pas de décalage entre le <label> et l’intitulé accessible",
      "incomplete": "Vérifier que le <label> n’a pas à faire partie du nom du champ de formulaire ARIA ${data}"
    },
    "unsupportedrole": {
      "pass": "Le rôle ARIA est supporté",
      "fail": "Le rôle utilisé n’est pas suffisamment supporté par les technologies d’assistance"
    },
    "valid-scrollable-semantics": {
      "pass": "L’élément a une sémantique valide pour un élément dans l’ordre de tabulation.",
      "fail": "L’élément n’a pas une sémantique valide pour un élément dans l’ordre de tabulation."
    },
    "color-contrast": {
      "pass": "L’élément a un contraste de couleurs suffisant de ${data.contrastRatio}",
      "fail": {
        "default": "L’élément a un contraste de couleurs insuffisant de ${data.contrastRatio} (couleur d’avant plan : ${data.fgColor}, couleur d’arrière plan : ${data.bgColor}, taille de police : ${data.fontSize}, graisse : ${data.fontWeight}). Contraste de couleur attendu : ${data.expectedContrastRatio}",
        "fgOnShadowColor": "L’élément a un contraste de couleurs insuffisant de ${data.contrastRatio} entre l’avant plan et la couleur de l’ombre de texte (couleur d’avant plan : ${data.fgColor}, couleur de l’ombre de texte : ${data.shadowColor}, taille de police : ${data.fontSize}, graisse: ${data.fontWeight}). Contraste de couleurs attendu : ${data.expectedContrastRatio}",
        "shadowOnBgColor": "L’élément a un contraste de couleurs insuffisant de ${data.contrastRatio} entre la couleur de l’ombre de texte et l’arrière plan (couleur de l’ombre de texte : ${data.shadowColor}, couleur d’arrière plan : ${data.bgColor}, taille de police : ${data.fontSize}, graisse: ${data.fontWeight}). Contraste de couleurs attendu : ${data.expectedContrastRatio}"
      },
      "incomplete": {
        "default": "Impossible de déterminer le rapport de contraste",
        "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",
        "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",
        "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",
        "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",
        "fgAlpha": "La couleur du texte de l’élément n’a pu être déterminée à cause d’une opacité réduite",
        "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",
        "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",
        "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",
        "equalRatio": "L’élément a un rapport de contraste de 1:1 avec son arrière-plan",
        "shortTextContent": "Le contenu de l’élément est trop court pour déterminer s’il s’agit réellement d’un contenu textuel",
        "nonBmp": "Le contenu de l’élément contient seulement des caractères non textuels",
        "pseudoContent": "La couleur d’arrière plan de l’élément n’a pu être déterminée à cause d’un pseudo-élément"
      }
    },
    "color-contrast-enhanced": {
      "pass": "L’élément a un contraste de couleurs suffisant de ${data.contrastRatio}",
      "fail": {
        "default": "L’élément a un contraste de couleurs insuffisant de ${data.contrastRatio} (couleur d’avant plan : ${data.fgColor}, couleur d’arrière plan : ${data.bgColor}, taille de police : ${data.fontSize}, graisse : ${data.fontWeight}). Contraste de couleur attendu : ${data.expectedContrastRatio}",
        "fgOnShadowColor": "L’élément a un contraste de couleurs insuffisant de ${data.contrastRatio} entre l’avant plan et la couleur de l’ombre de texte (couleur d’avant plan : ${data.fgColor}, couleur de l’ombre de texte : ${data.shadowColor}, taille de police : ${data.fontSize}, graisse: ${data.fontWeight}). Contraste de couleurs attendu : ${data.expectedContrastRatio}",
        "shadowOnBgColor": "L’élément a un contraste de couleurs insuffisant de ${data.contrastRatio} entre la couleur de l’ombre de texte et l’arrière plan (couleur de l’ombre de texte : ${data.shadowColor}, couleur d’arrière plan : ${data.bgColor}, taille de police : ${data.fontSize}, graisse: ${data.fontWeight}). Contraste de couleurs attendu : ${data.expectedContrastRatio}"
      },
      "incomplete": {
        "default": "Impossible de déterminer le rapport de contraste",
        "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",
        "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",
        "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",
        "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",
        "fgAlpha": "La couleur du texte de l’élément n’a pu être déterminée à cause d’une opacité réduite",
        "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",
        "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",
        "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",
        "equalRatio": "L’élément a un rapport de contraste de 1:1 avec son arrière-plan",
        "shortTextContent": "Le contenu de l’élément est trop court pour déterminer s’il s’agit réellement d’un contenu textuel",
        "nonBmp": "Le contenu de l’élément contient seulement des caractères non textuels",
        "pseudoContent": "La couleur d’arrière plan de l’élément n’a pu être déterminée à cause d’un pseudo-élément"
      }
    },
    "link-in-text-block": {
      "pass": "Les liens peuvent être distingués du texte environnant par un autre moyen que la couleur",
      "fail": "Les liens doivent se distinguer du texte environnant par un autre moyen que la couleur",
      "incomplete": {
        "default": "Impossible de déterminer le rapport de contraste",
        "bgContrast": "Le rapport de contraste de l’élément n’a pu être déterminé. Recherchez un style différent pour le hover/focus.",
        "bgImage": "Le rapport de contraste de l’élément n’a pu être déterminé à cause d’une image d’arrière-plan",
        "bgGradient": "Le rapport de contraste de l’élément n’a pu être déterminé à cause d’un dégradé d’arrière-plan",
        "imgNode": "Le rapport de contraste de l’élément n’a pu être déterminé, car l’élément contient une balise image",
        "bgOverlap": "Le rapport de contraste de l’élément n’a pu être déterminé à cause d’un chevauchement"
      }
    },
    "autocomplete-appropriate": {
      "pass": "La valeur autocomplete est sur un élément approprié",
      "fail": "La valeur autocomplete est inappropriée sur ce type de champ de formulaire"
    },
    "autocomplete-valid": {
      "pass": "L’attribut autocomplete est formaté correctement",
      "fail": "L’attribut autocomplete n’est pas formaté correctement"
    },
    "accesskeys": {
      "pass": "La valeur de l’attribut accesskey est unique",
      "fail": "Plusieurs éléments ont le même accesskey au sein du document"
    },
    "focusable-content": {
      "pass": "L’élément contient des éléments focalisables",
      "fail": "L’élément devrait avoir du contenu focalisable"
    },
    "focusable-disabled": {
      "pass": "Aucun élément focalisable contenu dans l’élément",
      "fail": "Le contenu focalisable devrait être désactivé ou retiré du DOM"
    },
    "focusable-element": {
      "pass": "L’élément est focalisable",
      "fail": "L’élément devrait être focalisable"
    },
    "focusable-modal-open": {
      "pass": "Pas d’élément focalisable quand une modale est ouverte",
      "incomplete": "Vérifiez que les éléments focalisables ne sont pas atteignables via la tabulation dans l’état actuel"
    },
    "focusable-no-name": {
      "pass": "L’élément n’est pas dans l’ordre de tabulation ou a un intitulé accessible",
      "fail": "L’élément est dans l’ordre de tabulation et n’a pas d’intitulé accessible",
      "incomplete": "Impossible de déterminer si l’élément a un nom accessible"
    },
    "focusable-not-tabbable": {
      "pass": "Aucun élément focalisable contenu dans l’élément",
      "fail": "Le contenu focalisable devrait se voir assigné un tabindex='-1' ou être retiré du DOM"
    },
    "frame-focusable-content": {
      "pass": "L’élément n’a pas de descendants focalisables",
      "fail": "L’élément a des descendants focalisables",
      "incomplete": "Impossible de déterminer si l’élément a des descendants"
    },
    "landmark-is-top-level": {
      "pass": "La région ${data.role} est au niveau le plus haut.",
      "fail": "La région ${data.role} est contenue dans une autre région."
    },
    "no-focusable-content": {
      "pass": "L’élément n’a pas de descendants focalisables",
      "fail": "L’élément a des descendants focalisables",
      "incomplete": "Impossible de déterminer si l’élément a des descendants"
    },
    "page-has-heading-one": {
      "pass": "La page a au moins un titre de niveau un",
      "fail": "La page doit avoir un titre de niveau un"
    },
    "page-has-main": {
      "pass": "La page a au moins une région main",
      "fail": "La page doit avoir une région main"
    },
    "page-no-duplicate-banner": {
      "pass": "Le document n’a pas plus d’une région banner",
      "fail": "Le document a plus d’une région banner"
    },
    "page-no-duplicate-contentinfo": {
      "pass": "Le document n’a pas plus d’une région contentinfo",
      "fail": "Le document a plus d’une région contentinfo"
    },
    "page-no-duplicate-main": {
      "pass": "Le document n’a pas plus d’une région main",
      "fail": "Le document a plus d’une région banner"
    },
    "tabindex": {
      "pass": "L’élément n’a pas de tabindex supérieur à 0",
      "fail": "L’élément a un tabindex supérieur à 0"
    },
    "alt-space-value": {
      "pass": "L’élément a une valeur d’attribut alt valide",
      "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"
    },
    "duplicate-img-label": {
      "pass": "L’élément ne duplique pas un texte existant dans l’alternative textuelle de l’élément <img>",
      "fail": "L’élément contient un élément <img> dont l’alternative textuelle duplique un texte existant"
    },
    "explicit-label": {
      "pass": "L’élément de formulaire a un <label> explicite",
      "fail": "L’élément de formulaire n’a pas de <label> explicite",
      "incomplete": "Impossible de déterminer si l’élément de formulaire a un <label> explicite"
    },
    "help-same-as-label": {
      "pass": "L’aide à la saisie (title ou aria-describedby) ne duplique pas le contenu du label",
      "fail": "L’aide à la saisie (title ou aria-describedby) est identique au contenu du label"
    },
    "hidden-explicit-label": {
      "pass": "L’élément de formulaire a un <label> visible et explicite",
      "fail": "L’élément de formulaire a un <label> explicite qui est masqué",
      "incomplete": "Impossible de déterminer si l’élément de formulaire a un <label> explicite qui est masqué"
    },
    "implicit-label": {
      "pass": "L’élément de formulaire a un <label> implicite (imbriqué)",
      "fail": "L’élément de formulaire n’a pas de <label> implicite (imbriqué)",
      "incomplete": "Impossible de déterminer si l’élément de formulaire a un <label> implicite (imbriqué)"
    },
    "label-content-name-mismatch": {
      "pass": "L’élément contient du texte visible qui n’est pas inclus dans l’intitulé accessible",
      "fail": "Le texte contenu dans l’élément n’est pas inclus dans l’intitulé accessible"
    },
    "multiple-label": {
      "pass": "L’élément de formulaire n’a pas plusieurs éléments <label>",
      "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."
    },
    "title-only": {
      "pass": "L’élément de formulaire n’a pas uniquement l’attribut title comme étiquette",
      "fail": "Seul l’attribut title est utilisé comme étiquette pour l’élément de formulaire"
    },
    "landmark-is-unique": {
      "pass": "Les landmarks doivent comporter un rôle unique, ou une étiquette accessible par la combinaison de role/label/title",
      "fail": "L’attribut landmark doit comporter une valeur d’attribut aria-label, aria-labelledby, ou title unique pour rendre le landmark distinct"
    },
    "has-lang": {
      "pass": "L’élément <html> a un attribut lang",
      "fail": {
        "noXHTML": "L’attribut xml:lang n’est pas valide sur les pages HTML, utiliser l’attribut lang.",
        "noLang": "L’élément <html> n’a pas d’attribut lang"
      }
    },
    "valid-lang": {
      "pass": "La valeur de l’attribut lang fait partie des codes de langues valides",
      "fail": "La valeur de l’attribut lang ne fait pas partie des codes de langues valides"
    },
    "xml-lang-mismatch": {
      "pass": "Les attributs lang et xml:lang indiquent la même langue de base",
      "fail": "Les attributs lang et xml:lang indiquent des langues de base différentes"
    },
    "dlitem": {
      "pass": "L’item de liste de description a un élément <dl> parent",
      "fail": "L’item de liste de description n’a pas d’élément <dl> parent"
    },
    "listitem": {
      "pass": "L’item de liste a un élément <ul>, <ol> ou role=\"list\" parent",
      "fail": {
        "default": "L’item de liste n’a pas d’élément <ul> ou <ol> parent",
        "roleNotValid": "L’item de liste n’a pas d’élément <ul> ou <ol> parent sans un role ou un role=\"list\""
      }
    },
    "only-dlitems": {
      "pass": "L’élément de liste n’a que des descendants directs qui sont autorisés dans les éléments <dt> ou <dd>",
      "fail": "L’élément de liste a des descendants directs qui ne sont pas autorisés dans les éléments <dt> ou <dd>"
    },
    "only-listitems": {
      "pass": "L’élément de liste n’a que des descendants directs qui sont autorisés dans les éléments <li>",
      "fail": {
        "default": "L’élément de liste comporte des descendants directs qui ne sont pas autorisés à l’intérieur de l’élément <li>",
        "roleNotValid": "L’élément de liste comporte des descendants directs avec un rôle qui n’est pas autorisé : ${data.roles}"
      }
    },
    "structured-dlitems": {
      "pass": "S’il n’est pas vide, l’élément contient au moins un élément <dt> et un élément <dd>",
      "fail": "S’il n’est pas vide, l’élément doit contenir au moins un élément <dt> et un élément <dd>"
    },
    "caption": {
      "pass": "L’élément multimédia a une piste de sous-titres",
      "incomplete": "Aucune piste de sous-titres n’a pu être trouvée pour cet élément"
    },
    "frame-tested": {
      "pass": "L’iframe a été testée avec axe-core",
      "fail": "L’iframe n’a pu être testée avec axe-core",
      "incomplete": "L’iframe doit encore être testée avec axe-core"
    },
    "no-autoplay-audio": {
      "pass": "<video> ou <audio> ne produit pas de son pour une durée plus grande que celle permise ou a un mécanisme de contrôle",
      "fail": "<video> ou <audio> produisent du son pour une durée plus grande que celle permise et n’ont pas de mécanisme de contrôle",
      "incomplete": "Verifier que l’élément <video> ou <audio> ne produit pas de son pour une durée plus grande que celle permise ou a un mécanisme de contrôle"
    },
    "css-orientation-lock": {
      "pass": "L’utilisation de l’écran est indépendante de l’orientation et n’est pas limitée à un mode d’affichage donné",
      "fail": "L’utilisation de l’écran est limitée à une orientation donnée par CSS, rendant l’affichage inutilisable",
      "incomplete": "Le verrouillage de l’orientation d’affichage par CSS ne peut être déterminé"
    },
    "meta-viewport-large": {
      "pass": "La balise <meta> ne limite pas l’agrandissement sur les appareils mobiles",
      "fail": "La balise <meta> limite l’agrandissement sur les appareils mobiles"
    },
    "meta-viewport": {
      "pass": "La balise <meta> n’empêche pas l’agrandissement sur les appareils mobiles",
      "fail": "La balise <meta> empêche l’agrandissement sur les appareils mobiles"
    },
    "header-present": {
      "pass": "La page a un entête",
      "fail": "La page n’a pas d’entête"
    },
    "heading-order": {
      "pass": "Hiérarchie entre les titres valide",
      "fail": "Hiérarchie entre les titres invalide",
      "incomplete": "Impossible de déterminer le titre précédent"
    },
    "identical-links-same-purpose": {
      "pass": "Il n’y a pas d’autre lien avec le même nom qui a pour destination une URL différente",
      "incomplete": "Vérifier que les liens ont la même finalité ou sont volontairement ambigus."
    },
    "internal-link-present": {
      "pass": "Lien d’évitement valide trouvé",
      "fail": "Aucun lien d’évitement valide trouvé"
    },
    "landmark": {
      "pass": "La page a une région",
      "fail": "La page n’a pas de région"
    },
    "meta-refresh": {
      "pass": "Aucune balise <meta> ne rafraîchit immédiatement la page",
      "fail": "La balise <meta> force le rafraîchissement minuté de la page"
    },
    "p-as-heading": {
      "pass": "Les éléments <p> ne sont pas stylés comme des titres",
      "fail": "Des titres doivent être utilisés au lieu de styler des éléments <p>"
    },
    "region": {
      "pass": "Contenu imbriqué dans une région ARIA",
      "fail": "Contenu non imbriqué dans une région ARIA"
    },
    "skip-link": {
      "pass": "La cible du lien d’évitement existe",
      "incomplete": "La cible du lien d’évitement devrait devenir visible lors de l’activation",
      "fail": "Lien d’évitement sans cible"
    },
    "unique-frame-title": {
      "pass": "L’attribut title de l’élément est unique",
      "fail": "L’attribut title de l’élément n’est pas unique"
    },
    "duplicate-id-active": {
      "pass": "Le document ne comporte aucun élément actif partageant la même valeur d’attribut id",
      "fail": "Le document comporte ou un plusieurs éléments actifs partageant la même valeur d’attribut id : ${data}"
    },
    "duplicate-id-aria": {
      "pass": "Le document ne comporte aucun élément référencé par ARIA ou étiquettes partageant la même valeur d’attribut id",
      "fail": "Le document comporte un ou plusieurs éléments référencés par ARIA partageant la même valeur d’attribut id : ${data}"
    },
    "duplicate-id": {
      "pass": "Le document n’a pas d’éléments qui partagent le même attribut id",
      "fail": "Le document a plusieurs éléments avec le même attribut id : ${data}"
    },
    "aria-label": {
      "pass": "L’attribut aria-label existe et n’est pas vide",
      "fail": "L’attribut aria-label n’existe pas ou est vide"
    },
    "aria-labelledby": {
      "pass": "L’attribut aria-labelledby existe et fait référence à des éléments visibles par les lecteurs d’écran",
      "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",
      "incomplete": "S’assurer que l’attribut aria-labelledby fait référence à un élément existant"
    },
    "avoid-inline-spacing": {
      "pass": "Aucun style inline affectant l’espacement du texte avec '!important' n’a été spécifié",
      "fail": {
        "singular": "Retirer '!important' du style inline ${data.values}, car le remplacement n’est pas pris en charge par la plupart des navigateurs",
        "plural": "Retirer '!important' des styles inline ${data.values}, car le remplacement n’est pas pris en charge par la plupart des navigateurs"
      }
    },
    "button-has-visible-text": {
      "pass": "L’élément a un contenu textuel visible par les lecteurs d’écran",
      "fail": "L’élément n’a aucun contenu textuel visible par les lecteurs d’écran",
      "incomplete": "Impossible de vérifier si l’élément a des enfants"
    },
    "doc-has-title": {
      "pass": "Le document a un élément <title> non vide",
      "fail": "Le document n’a pas d’élément <title> non vide"
    },
    "exists": {
      "pass": "L’élément n’existe pas",
      "incomplete": "L’élément existe"
    },
    "has-alt": {
      "pass": "L’élément a un attribut alt",
      "fail": "L’élément n’a pas d’attribut alt"
    },
    "has-visible-text": {
      "pass": "L’élément a un contenu textuel visible par les lecteurs d’écran",
      "fail": "L’élément n’a aucun contenu textuel visible par les lecteurs d’écran",
      "incomplete": "Impossible de vérifier si l’élément a des enfants"
    },
    "is-on-screen": {
      "pass": "L’élément n’est pas visible",
      "fail": "L’élément est visible"
    },
    "non-empty-alt": {
      "pass": "L’élément a un attribut alt non vide",
      "fail": {
        "noAttr": "L’élément n’a pas d’attribut alt",
        "emptyAttr": "L’élément a un attribut alt vide"
      }
    },
    "non-empty-if-present": {
      "pass": {
        "default": "L’élément n’a pas d’attribut value",
        "has-label": "L’élément a un attribut value non-vide"
      },
      "fail": "L’élément a un attribut value, et cet attribut est vide"
    },
    "non-empty-placeholder": {
      "pass": "L’élément a un attribut placeholder",
      "fail": {
        "noAttr": "L’élément n’a pas d’attribut placeholder",
        "emptyAttr": "L’élément a un attribut placeholder vide"
      }
    },
    "non-empty-title": {
      "pass": "L’élément a un attribut title",
      "fail": {
        "noAttr": "L’élément n’a pas d’attribut title",
        "emptyAttr": "L’élément a un attribut title vide"
      }
    },
    "non-empty-value": {
      "pass": "L’élément a un attribut value non vide",
      "fail": {
        "noAttr": "L’élément n’a pas d’attribut value",
        "emptyAttr": "L’élément a un attribut value vide"
      }
    },
    "presentational-role": {
      "pass": "La sémantique par défaut de l’élément a été remplacée par role=\"${data.role}\"",
      "fail": {
        "default": "La sémantique par défaut de l’élément n’a pas été remplacée par role=\"none\" ou role=\"presentation\"",
        "globalAria": "Le rôle de l’élément n’est pas un rôle de présentation car il a un attribut ARIA global",
        "focusable": "Le rôle de l’élément n’est pas un rôle de présentation car il est focalisable",
        "both": "Le rôle de l’élément n’est pas un rôle de présentation car il a un attribut ARIA global et est focalisable"
      }
    },
    "role-none": {
      "pass": "La sémantique par défaut de l’élément est annulée avec role=\"none\"",
      "fail": "La sémantique par défaut de l’élément n’est pas annulée avec role=\"none\""
    },
    "role-presentation": {
      "pass": "La sémantique par défaut de l’élément est annulée avec role=\"presentation\"",
      "fail": "La sémantique par défaut de l’élément n’est pas annulée avec role=\"presentation\""
    },
    "svg-non-empty-title": {
      "pass": "L’élément a un enfant qui est un titre",
      "fail": {
        "noTitle": "L’élément n’a pas d’enfant qui est un titre",
        "emptyTitle": "Le titre qui est enfant de cet élément est vide"
      },
      "incomplete": "Impossible de déterminer si l’élément a un enfant qui est un titre"
    },
    "caption-faked": {
      "pass": "La première ligne d’un tableau n’est pas utilisée en guise de légende",
      "fail": "La première ligne d’un tableau devrait être un caption et non des cellules de tableau"
    },
    "html5-scope": {
      "pass": "L’attribut scope est utilisé uniquement sur des cellules d’entête de tableau",
      "fail": "En HTML 5, l’attribut scope ne peut être utilisé que sur des cellules d’entête de tableau"
    },
    "same-caption-summary": {
      "pass": "Les contenus de l’attribut summary et de <caption> ne sont pas identiques",
      "fail": "Les contenus de l’attribut summary et de <caption> sont identiques"
    },
    "scope-value": {
      "pass": "L’attribut scope est utilisé correctement",
      "fail": "La valeur de l’attribut scope ne peut être que 'row' ou 'col'"
    },
    "td-has-header": {
      "pass": "Toutes les cellules de données non vides ont un entête de tableau",
      "fail": "Certaines cellules de données non vides n’ont pas d’entête de tableau"
    },
    "td-headers-attr": {
      "pass": "L’attribut headers est utilisé exclusivement pour faire référence à d’autres cellules dans le tableau",
      "incomplete": "L’attribut headers est vide",
      "fail": "L’attribut headers n’est pas utilisé exclusivement pour faire référence à d’autres cellules dans le tableau"
    },
    "th-has-data-cells": {
      "pass": "Toutes les cellules d’entête de tableau font référence à des cellules de données",
      "fail": "Toutes les cellules d’entête de tableau ne font pas référence à des cellules de données",
      "incomplete": "Les cellules de données sont absentes ou vides"
    },
    "hidden-content": {
      "pass": "Tout le contenu de la page a été analysé.",
      "fail": "Il y a eu des problèmes pour analyser le contenu de cette page.",
      "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."
    }
  },
  "failureSummaries": {
    "any": {
      "failureMessage": "Corriger l’un des éléments suivants : {{~it:value}}\n  {{=value.split('\\n').join('\\n  ')}}{{~}}"
    },
    "none": {
      "failureMessage": "Corriger tous les éléments suivants : {{~it:value}}\n  {{=value.split('\\n').join('\\n  ')}}{{~}}"
    }
  },
  "incompleteFallbackMessage": "axe n’a pu en déterminer la raison. Il est temps de sortir l’inspecteur d’éléments !"
}