axe-core 4.8.2 → 4.8.3-canary.b63cd83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/locales/de.json CHANGED
@@ -17,10 +17,22 @@
17
17
  "description": "Stellt sicher, dass der Wert des role-Attributes für dieses Element geeignet ist.",
18
18
  "help": "Der Wert des role-Attributes muss für dieses Element geeignet sein."
19
19
  },
20
+ "aria-braille-equivalent": {
21
+ "description": "Stellt sicher, dass aria-braillelabel und aria-brailleroledescription ein non-braille Äquivalent haben.",
22
+ "help": "aria-braille Attribute müssen ein non-braille Äquivalent haben."
23
+ },
20
24
  "aria-command-name": {
21
25
  "description": "Stellt sicher, dass jeder ARIA-button, -link und jedes -menuitem einen zugänglichen Namen (accessible name) hat.",
22
26
  "help": "ARIA Befehle müssen einen zugänglichen Namen (accessible name) besitzen."
23
27
  },
28
+ "aria-conditional-attr": {
29
+ "description": "Stellt sicher, dass ARIA-Attribute wie in der Spezifikation der Rolle des Elements beschrieben verwendet werden.",
30
+ "help": "ARIA-Attribute müssen entsprechend der Rolle des Elements verwendet werden."
31
+ },
32
+ "aria-deprecated-role": {
33
+ "description": "Stellt sicher, dass die Elemente keine veralteten Rollen verwenden.",
34
+ "help": "Veraltete ARIA-Rollen dürfen nicht verwendet werden."
35
+ },
24
36
  "aria-dialog-name": {
25
37
  "description": "Stellt sicher, dass jeder ARIA-dialog und -alertdialog Knoten einen zugänglichen Namen (accessible name) hat.",
26
38
  "help": "ARIA-dialog und -alertdialog Knoten müssen einen zugänglichen Namen (accessible name) besitzen."
@@ -45,6 +57,10 @@
45
57
  "description": "Stellt sicher, dass jeder ARIA-progressbar Knoten einen zugänglichen Namen (accessible name) besitzt.",
46
58
  "help": "ARIA-progressbar Knoten müssen einen zugänglichen Namen (accessible name) besitzen."
47
59
  },
60
+ "aria-prohibited-attr": {
61
+ "description": "Stellt sicher, dass ARIA-Attribute für die Rolle eines Elements nicht verboten sind.",
62
+ "help": "Elemente dürfen nur erlaubte ARIA-Attribute verwenden."
63
+ },
48
64
  "aria-required-attr": {
49
65
  "description": "Stellt sicher, dass Elemente mit ARIA-Rollen alle erforderlichen ARIA-Attribute besitzen.",
50
66
  "help": "Erforderliche ARIA-Attribute müssen bereitgestellt werden."
@@ -65,6 +81,10 @@
65
81
  "description": "Stellt sicher, dass alle Elemente mit einer ARIA-Rolle auch einen gültigen Wert verwenden.",
66
82
  "help": "Verwendete ARIA-Rollen müssen gültigen Werten entsprechen."
67
83
  },
84
+ "aria-text": {
85
+ "description": "Stellt sicher, dass role=\"text\" für Elemente verwendet wird, die keine fokussierbaren Nachkommen (descendants) haben.",
86
+ "help": "\"role=text\" sollte keine fokussierbaren Nachkommen (descendants) haben."
87
+ },
68
88
  "aria-toggle-field-name": {
69
89
  "description": "Stellt sicher, dass jedes ARIA-toggle-Feld ein zugänglichen Namen (accessible name) besitzt.",
70
90
  "help": "ARIA-toggle-Felder benötigen einen zugänglichen Namen (accessible name)."
@@ -109,14 +129,14 @@
109
129
  "description": "Stellt sicher, dass jede Seite mindestens ein Mittel bereitstellt, welches dem Nutzer erlaubt direkt zum Inhalt der Seite zu springen.",
110
130
  "help": "Wiederholende Blöcke müssen vom Nutzer mit Hilfe von der Seite bereitgestellten Mitteln übersprungen werden können."
111
131
  },
112
- "color-contrast": {
113
- "description": "Stellt sicher, dass der Kontrast zwischen Vorder- und Hintergrundfarbe den in der WCAG 2 als AA ausgewiesenen Kontrastgrenzwerten entspricht.",
114
- "help": "Elemente müssen einen ausreichenden Farbkontrast haben."
115
- },
116
132
  "color-contrast-enhanced": {
117
133
  "description": "Stellt sicher, dass der Kontrast zwischen Vorder- und Hintergrundfarbe den in der WCAG 2 als AAA ausgewiesenen Kontrastgrenzwerten entspricht.",
118
134
  "help": "Elemente müssen einen ausreichenden Farbkontrast haben."
119
135
  },
136
+ "color-contrast": {
137
+ "description": "Stellt sicher, dass der Kontrast zwischen Vorder- und Hintergrundfarbe den in der WCAG 2 als AA ausgewiesenen Kontrastgrenzwerten entspricht.",
138
+ "help": "Elemente müssen einen ausreichenden Farbkontrast haben."
139
+ },
120
140
  "css-orientation-lock": {
121
141
  "description": "Stellt sicher, dass der Inhalt nicht nur auf einer sondern auf allen spezifischen Bildschirmausrichtungen angezeigt werden kann.",
122
142
  "help": "CSS Media Queries dürfen nicht genutzt werden um die Bildschirmausrichtung zu sperren."
@@ -149,6 +169,10 @@
149
169
  "description": "Stellt sicher, dass Überschriften einen wahrnehmbaren Text beinhalten.",
150
170
  "help": "Überschriften dürfen nichtleer sein."
151
171
  },
172
+ "empty-table-header": {
173
+ "description": "Stellt sicher, dass Tabellenkopfzeilen einen wahrnehmbaren Text beinhalten.",
174
+ "help": "Tabellenkopfzeilen sollten nicht leer sein."
175
+ },
152
176
  "focus-order-semantics": {
153
177
  "description": "Stellt sicher, dass Elemente in der Fokusreihenfolge eine geeignete Rolle besitzen.",
154
178
  "help": "Elemente in der Fokusreihenfolge benötigen eine Rolle, die für interaktive Elemente geeignet ist."
@@ -157,6 +181,10 @@
157
181
  "description": "Stellt sicher, dass ein form-Feld nur ein label-Element besitzt.",
158
182
  "help": "form-Felder sollten nur ein label-Element besitzen."
159
183
  },
184
+ "frame-focusable-content": {
185
+ "description": "Stellt sicher, dass <frame>- und <iframe>-Elemente mit fokussierbarem Inhalt keinen tabindex=-1 haben.",
186
+ "help": "Frames mit fokussierbarem Inhalt dürfen keinen tabindex=-1 haben."
187
+ },
160
188
  "frame-tested": {
161
189
  "description": "Stellt sicher, dass <iframe> und <frame>-Elemente das axe-core Script beinhalten.",
162
190
  "help": "Frames müssen mit axe-core getestet werden."
@@ -202,8 +230,8 @@
202
230
  "help": "Der Alternativtext von Bildern sollte nicht als Text wiederholt werden."
203
231
  },
204
232
  "input-button-name": {
205
- "description": "Stellt sicher, dass Eingabeschaltflächen sichtbaren Text beinhalten.",
206
- "help": "Eingabeschaltflächen müssen sichtbaren Text beinhalten."
233
+ "description": "Stellt sicher, dass Eingabeschaltflächen wahrnehmbaren Text beinhalten.",
234
+ "help": "Eingabeschaltflächen müssen wahrnehmbaren Text beinhalten."
207
235
  },
208
236
  "input-image-alt": {
209
237
  "description": "Stellt sicher, dass <input type=\"image\">-Elemente einen Alternativtext besitzen.",
@@ -254,16 +282,16 @@
254
282
  "help": "Seite muss eine main landmark enthalten."
255
283
  },
256
284
  "landmark-unique": {
257
- "description": "Stellt sicher, dass landmarks einzigartig sind.",
258
- "help": "Landmarks müssen eine einzigartige role oder role/label/title Kombination (bzw. zugänglicher Name / accessible name) besitzen."
285
+ "help": "Stellt sicher, dass landmarks einzigartig sind.",
286
+ "description": "Landmarks müssen eine einzigartige role oder role/label/title Kombination (bzw. zugänglicher Name / accessible name) besitzen."
259
287
  },
260
288
  "link-in-text-block": {
261
289
  "description": "Stellt sicher, dass Links vom umgebenden Text nicht allein durch die Farbe unterschieden werden können.",
262
290
  "help": "Links müssen vom umgebenden Text auf eine Weise unterschieden werden können, die nicht allein auf Farbe beruht."
263
291
  },
264
292
  "link-name": {
265
- "description": "Stellt sicher, dass Links wahrnehmbaren Text enthalten.",
266
- "help": "Links müssen wahrnehmbaren Text enthalten."
293
+ "description": "Stellt sicher, dass Links wahrnehmbaren Text beinhalten.",
294
+ "help": "Links müssen wahrnehmbaren Text beinhalten."
267
295
  },
268
296
  "list": {
269
297
  "description": "Stellt sicher, dass Listen korrekt strukturiert sind.",
@@ -277,6 +305,10 @@
277
305
  "description": "Stellt sicher, dass <marquee>-Elemente nicht verwendet werden.",
278
306
  "help": "<marquee>-Elemente sind veraltet und dürfen nicht verwendet werden."
279
307
  },
308
+ "meta-refresh-no-exceptions": {
309
+ "description": "Stellt sicher, dass <meta http-equiv=\"refresh\"> nicht für die verzögerte Aktualisierung verwendet wird.",
310
+ "help": "Die verzögerte Aktualisierung darf nicht verwendet werden."
311
+ },
280
312
  "meta-refresh": {
281
313
  "description": "Stellt sicher, dass <meta http-equiv=\"refresh\"> nicht verwendet werden.",
282
314
  "help": "Eine zeitgesteuerte Aktualisierung (refresh) sollte nicht verwendet werden."
@@ -289,6 +321,10 @@
289
321
  "description": "Stellt sicher, dass <meta name=\"viewport\"> Textskalierung und -zoom nicht verhindert werden.",
290
322
  "help": "Zoomen und Skalieren darf nicht deaktiviert werden."
291
323
  },
324
+ "nested-interactive": {
325
+ "description": "Stellt sicher, dass interaktive Steuerelemente nicht verschachtelt (nested) sind, da sie nicht immer von Bildschirmlesegeräten angezeigt werden oder Probleme bei der Fokussierung von Hilfstechnologien verursachen können.",
326
+ "help": "Interaktive Steuerelemente dürfen nicht verschachtelt (nested) werden."
327
+ },
292
328
  "no-autoplay-audio": {
293
329
  "description": "Stellt sicher, dass <video> oder <audio> Elemente keine Töne automatisch abspielen für mehr als 3 Sekunden (autoplay) ohne eine Möglichkeit dies zu stoppen.",
294
330
  "help": "<video> oder <audio> Elemente geben keine Töne automatisch aus."
@@ -353,6 +389,10 @@
353
389
  "description": "Stellt sicher, dass Tabellen mit einer Beschriftung auch das <caption>-Element verwenden.",
354
390
  "help": "Daten- oder Kopfzellen sollten nicht verwendet werden, um einer Datentabelle eine Überschrift zu geben."
355
391
  },
392
+ "target-size": {
393
+ "description": "Stellt sicher, dass Berührungsobjekte (touch targets) ausreichend groß sind und genügend Platz bieteen.",
394
+ "help": "Alle Berührungsobjekte (touch targets) müssen 24 Pixel groß sein oder ausreichend Platz lassen."
395
+ },
356
396
  "td-has-header": {
357
397
  "description": "Stellt sicher, dass jede nichtleere Zelle einer Tabelle ein oder mehrere Tabellenköpfe haben.",
358
398
  "help": "In Tabellen, die größer als 3 mal 3 sind, müssen alle nichtleeren <td>-Elemente einen zugehörigen Tabellenkopf haben."
@@ -387,7 +427,8 @@
387
427
  "fail": {
388
428
  "singular": "Folgendes ARIA Attribut ist nicht erlaubt: ${data.values}",
389
429
  "plural": "Folgende ARIA Attribute sind nicht erlaubt: ${data.values}"
390
- }
430
+ },
431
+ "incomplete": "Prüfe, dass es kein Problem gibt, wenn das ARIA-Attribut bei diesem Element ignoriert wird: ${data.values}"
391
432
  },
392
433
  "aria-allowed-role": {
393
434
  "pass": "ARIA Rolle ist für dieses Element erlaubt.",
@@ -400,21 +441,54 @@
400
441
  "plural": "ARIA Rollen ${data.values} müssen entfernt werden, wenn das Element sichtbar wird, da sie nicht für dieses Element erlaubt sind."
401
442
  }
402
443
  },
444
+ "aria-busy": {
445
+ "pass": "Element hat ein aria-busy-Attribut.",
446
+ "fail": "Element verwendet aria-busy=\"true\" bei der Anzeige eines Ladevorgangs (loader)."
447
+ },
448
+ "aria-conditional-attr": {
449
+ "pass": "ARIA-Attribut ist erlaubt.",
450
+ "fail": {
451
+ "checkbox": "Entferne aria-checked, oder setze es auf \"${data.checkState}\", damit es dem tatsächlichen Zustand des Kontrollkästchens entspricht.",
452
+ "rowSingular": "Dieses Attribut wird bei treegrid-Zeilen unterstützt, aber nicht bei ${data.ownerRole}: ${data.invalidAttrs}.",
453
+ "rowPlural": "Diese Attribute werden von treegrid-Zeilen unterstützt, aber nicht von ${data.ownerRole}: ${data.invalidAttrs}"
454
+ }
455
+ },
403
456
  "aria-errormessage": {
404
457
  "pass": "aria-errormessage Attribut existiert und referenziert Elemente, die sichtbar für Screen Reader sind, welche die entsprechende Technologie unterstützen.",
405
458
  "fail": {
406
459
  "singular": "aria-errormessage Wert `${data.values}` benötigt eine Möglichkeit um entsprechend vorgeschlagen zu werden (z.B. aria-live, aria-describedby, role=alert, usw.).",
407
- "plural": "aria-errormessage Werte `${data.values}` benötigen eine Möglichkeit um entsprechend vorgeschlagen zu werden (z.B. aria-live, aria-describedby, role=alert, usw.)."
460
+ "plural": "aria-errormessage Werte `${data.values}` benötigen eine Möglichkeit um entsprechend vorgeschlagen zu werden (z.B. aria-live, aria-describedby, role=alert, usw.).",
461
+ "hidden": "aria-errormessage Wert `${data.values}` kann nicht auf ein verstecktes Element verweisen."
408
462
  },
409
463
  "incomplete": {
410
464
  "singular": "Stellt sicher, dass aria-errormessage Wert `${data.values}` zu einem existierendem Element verweist.",
411
- "plural": "Stellt sicher, dass aria-errormessage Werte `${data.values}` zu existierenden Elementen verweisen."
465
+ "plural": "Stellt sicher, dass aria-errormessage Werte `${data.values}` zu existierenden Elementen verweisen.",
466
+ "idrefs": "Es konnte nicht festgestellt werden, ob das Element aria-errormessage auf der Seite existiert: ${data.values}"
412
467
  }
413
468
  },
414
469
  "aria-hidden-body": {
415
470
  "pass": "Kein aria-hidden Attribut ist im <body>-Element des Dokuments vorhanden.",
416
471
  "fail": "Das <body>-Element des Dokumentes darf nicht das Attribut aria-hidden=\"true\" besitzen."
417
472
  },
473
+ "aria-level": {
474
+ "pass": "aria-level Werte sind gültig.",
475
+ "incomplete": "Aria-Level Werte größer als 6 werden nicht von allen Screenreader- und Browser-Kombinationen unterstützt."
476
+ },
477
+ "aria-prohibited-attr": {
478
+ "pass": "ARIA-Attribut ist erlaubt",
479
+ "fail": {
480
+ "hasRolePlural": "${data.prohibited} Attribute können nicht mit der Rolle \"${data.role}\" verwendet werden.",
481
+ "hasRoleSingular": "${data.prohibited} Attribut kann nicht mit der Rolle \"${data.role}\" verwendet werden.",
482
+ "noRolePlural": "${data.prohibited} Attribute können nicht auf ${data.nodeName} ohne gültiges role Attribut verwendet werden.",
483
+ "noRoleSingular": "${data.prohibited} Attribut kann nicht auf ${data.nodeName} ohne gültiges role Attribut verwendet werden."
484
+ },
485
+ "incomplete": {
486
+ "hasRoleSingular": "${data.prohibited} Attribut wird von der Rolle \"${data.role}\" nicht gut unterstützt.",
487
+ "hasRolePlural": "${data.prohibited} Attribute werden von der Rolle \"${data.role}\" nicht gut unterstützt.",
488
+ "noRoleSingular": "${data.prohibited} Attribut wird bei ${data.nodeName} ohne gültiges role Attribute nicht gut unterstützt.",
489
+ "noRolePlural": "${data.prohibited} Attribute werdeb bei ${data.nodeName} ohne gültiges role Attribute nicht gut unterstützt."
490
+ }
491
+ },
418
492
  "aria-required-attr": {
419
493
  "pass": "Alle benötigten ARIA-Attribute sind vorhanden.",
420
494
  "fail": {
@@ -426,7 +500,8 @@
426
500
  "pass": "Alle benötigten ARIA Kinder sind vorhanden.",
427
501
  "fail": {
428
502
  "singular": "Benötigte ARIA Kindrolle nicht vorhanden: ${data.values}",
429
- "plural": "Benötigte ARIA Kindrollen nicht vorhanden: ${data.values}"
503
+ "plural": "Benötigte ARIA Kindrollen nicht vorhanden: ${data.values}",
504
+ "unallowed": "Element hat Kinder, die nicht erlaubt sind: ${data.values}"
430
505
  },
431
506
  "incomplete": {
432
507
  "singular": "Entsprechende ARIA Kindrolle muss hinzugefügt werden: ${data.values}",
@@ -457,7 +532,10 @@
457
532
  },
458
533
  "incomplete": {
459
534
  "noId": "Verwendete ID im ARIA Attribut existiert nicht auf der Seite: ${data.needsReview}",
460
- "ariaCurrent": "Folgendes ARIA Attributwert ist ungültig und wird wie \"aria-current=true\" gesehen: ${data.needsReview}"
535
+ "noIdShadow": "ARIA-Attribut Element-ID existiert nicht auf der Seite oder ist ein Nachkomme (descendant) eines anderen Schatten-DOM-tree: ${data.needsReview}",
536
+ "ariaCurrent": "Folgendes ARIA Attributwert ist ungültig und wird wie \"aria-current=true\" gesehen: ${data.needsReview}",
537
+ "idrefs": "Es konnte nicht festgestellt werden, ob das ARIA-Attribut element ID auf der Seite existiert: ${data.needsReview}",
538
+ "empty": "ARIA-Attributwert wird ignoriert, wenn leer: ${data.needsReview}"
461
539
  }
462
540
  },
463
541
  "aria-valid-attr": {
@@ -467,9 +545,26 @@
467
545
  "plural": "Ungültige ARIA Attribut Namen: ${data.values}"
468
546
  }
469
547
  },
548
+ "braille-label-equivalent": {
549
+ "pass": "aria-braillelabel wird für ein Element mit zugänglichem Text verwendet.",
550
+ "fail": "aria-braillelabel wird für ein Element ohne zugänglichen Text verwendet.",
551
+ "incomplete": "Zugänglicher Text kann nicht berechnet werden."
552
+ },
553
+ "braille-roledescription-equivalent": {
554
+ "pass": "aria-brailleroledescription wird für ein Element mit aria-roledescription verwendet.",
555
+ "fail": {
556
+ "noRoleDescription": "aria-brailleroledescription wird für ein Element ohne aria-roledescription verwendet.",
557
+ "emptyRoleDescription": "aria-brailleroledescription wird für ein Element mit einer leeren aria-roledescription verwendet."
558
+ }
559
+ },
560
+ "deprecatedrole": {
561
+ "pass": "ARIA Rolle ist nicht veraltet.",
562
+ "fail": "Die verwendete Rolle ist veraltet: ${data}"
563
+ },
470
564
  "fallbackrole": {
471
565
  "pass": "Nur ein Wert für role genutzt.",
472
- "fail": "Es sollte nur ein Wert für role benutzt werden, da Fallback-Werte in älteren Browsern nicht unterstützt werden."
566
+ "fail": "Es sollte nur ein Wert für role benutzt werden, da Fallback-Werte in älteren Browsern nicht unterstützt werden.",
567
+ "incomplete": "Verwende nur die Rolle 'presentation' oder 'none', da sie synonym sind."
473
568
  },
474
569
  "has-global-aria-attribute": {
475
570
  "pass": {
@@ -505,9 +600,13 @@
505
600
  "pass": "Das Element hat eine gültige Semantik für ein Element in der Fokusreihenfolge.",
506
601
  "fail": "Das Element hat eine ungültige Semantik für ein Element in der Fokusreihenfolge."
507
602
  },
508
- "color-contrast": {
603
+ "color-contrast-enhanced": {
509
604
  "pass": "Das Element hat einen ausreichenden Kontrast von ${data.contrastRatio}.",
510
- "fail": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} (Vordergrundfarbe: ${data.fgColor}, Hintergrundfarbe: ${data.bgColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}).",
605
+ "fail": {
606
+ "default": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} (Vordergrundfarbe: ${data.fgColor}, Hintergrundfarbe: ${data.bgColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}). Erwartetes Kontrastverhältnis von ${data.expectedContrastRatio}",
607
+ "fgOnShadowColor": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} zwischen der Vordergrund- und der Schattenfarbe (Vordergrundfarbe: ${data.fgColor}, Textschattenfarbe: ${data.shadowColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}). Erwartetes Kontrastverhältnis von ${data.expectedContrastRatio}",
608
+ "shadowOnBgColor": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} zwischen der Schattenfarbe und der Hintergrundfarbe (Textschattenfarbe: ${data.shadowColor}, Hintergrundfarbe: ${data.bgColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}). Erwartetes Kontrastverhältnis von ${data.expectedContrastRatio}"
609
+ },
511
610
  "incomplete": {
512
611
  "default": "Das Kontrastverhältnis konnte nicht ermittelt werden.",
513
612
  "bgImage": "Die Hintergrundfarbe des Elementes konnte aufgrund eines Hintergrundbildes nicht bestimmt werden.",
@@ -524,15 +623,23 @@
524
623
  "pseudoContent": "Die Hintergrundfarbe konnte aufgrund eines pseudo Elementes nicht bestimmt werden."
525
624
  }
526
625
  },
527
- "color-contrast-enhanced": {
528
- "pass": "Das Element hat einen ausreichenden Kontrast von ${data.contrastRatio}.",
529
- "fail": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} (Vordergrundfarbe: ${data.fgColor}, Hintergrundfarbe: ${data.bgColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}).",
626
+ "color-contrast": {
627
+ "pass": {
628
+ "default": "Das Element hat einen ausreichenden Kontrast von ${data.contrastRatio}.",
629
+ "hidden": "Das Element ist verstec"
630
+ },
631
+ "fail": {
632
+ "default": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} (Vordergrundfarbe: ${data.fgColor}, Hintergrundfarbe: ${data.bgColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}). Erwartetes Kontrastverhältnis von ${data.expectedContrastRatio}",
633
+ "fgOnShadowColor": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} zwischen der Vordergrund- und der Schattenfarbe (Vordergrundfarbe: ${data.fgColor}, Textschattenfarbe: ${data.shadowColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}). Erwartetes Kontrastverhältnis von ${data.expectedContrastRatio}",
634
+ "shadowOnBgColor": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} zwischen der Schattenfarbe und der Hintergrundfarbe (Textschattenfarbe: ${data.shadowColor}, Hintergrundfarbe: ${data.bgColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}). Erwartetes Kontrastverhältnis von ${data.expectedContrastRatio}"
635
+ },
530
636
  "incomplete": {
531
637
  "default": "Das Kontrastverhältnis konnte nicht ermittelt werden.",
532
638
  "bgImage": "Die Hintergrundfarbe des Elementes konnte aufgrund eines Hintergrundbildes nicht bestimmt werden.",
533
639
  "bgGradient": "Die Hintergrundfarbe des Elementes konnte aufgrund eines Hintergrundfarbverlaufes nicht bestimmt werden.",
534
640
  "imgNode": "Die Hintergrundfarbe des Elementes konnte nicht bestimmt werden, da das Element einen Image Node enthält.",
535
641
  "bgOverlap": "Die Hintergrundfarbe des Elementes konnte nicht bestimmt werden, da es von einem anderen Element überlagert wird.",
642
+ "complexTextShadows": "Der Kontrast des Elements konnte nicht bestimmt werden, da es komplexe Textschatten verwendet.",
536
643
  "fgAlpha": "Die Vordergrundfarbe des Elementes konnte aufgrund der Alpha-Transparenz nicht ermittelt werden.",
537
644
  "elmPartiallyObscured": "Die Hintergrundfarbe des Elements konnte nicht bestimmt werden, da es teilweise von anderen Elementen überdeckt wird.",
538
645
  "elmPartiallyObscuring": "Die Hintergrundfarbe des Elements konnte nicht bestimmt werden, da es teilweise andere Elemente überdeckt.",
@@ -543,9 +650,20 @@
543
650
  "pseudoContent": "Die Hintergrundfarbe konnte aufgrund eines pseudo Elementes nicht bestimmt werden."
544
651
  }
545
652
  },
653
+ "link-in-text-block-style": {
654
+ "pass": "Links können durch visuelle Gestaltung vom umgebenden Text unterschieden werden.",
655
+ "incomplete": {
656
+ "default": "Prüfe, ob der Link ein Styling benötigt, um sich vom umgebenden Text zu unterscheiden.",
657
+ "pseudoContent": "Prüfe, ob der Pseudostil des Links ausreicht, um ihn vom umgebenden Text zu unterscheiden."
658
+ },
659
+ "fail": "Der Link hat kein Styling (z.B. Unterstreichung), um ihn vom umgebenden Text zu unterscheiden."
660
+ },
546
661
  "link-in-text-block": {
547
662
  "pass": "Links können vom umgebenenden Text auf unterschiedliche Art und Weise unterschieden werden.",
548
- "fail": "Links können (abgesehen von einer farblichen Kennzeichnung) nicht vom umgebenden Text unterschieden werden.",
663
+ "fail": {
664
+ "fgContrast": "Der Link hat einen unzureichenden Kontrast von ${data.contrastRatio}:1 mit dem umgebenden Text (Mindestkontrast ist ${data.requiredContrastRatio}:1, Linktext: ${data.nodeColor}, umgebender Text: ${data.parentColor}).",
665
+ "bgContrast": "Der Link-Hintergrund hat einen unzureichenden Kontrast von ${data.contrastRatio} (Mindestkontrast ist ${data.requiredContrastRatio}:1, Link-Hintergrundfarbe: ${data.nodeBackgroundColor}, umgebende Hintergrundfarbe: ${data.parentBackgroundColor})."
666
+ },
549
667
  "incomplete": {
550
668
  "default": "Das Kontrastverhältnis konnte nicht ermittelt werden.",
551
669
  "bgContrast": "Das Kontrastverhältnis des Elements konnte nicht bestimmt werden. Suchen Sie nach einem bestimmten Hover/Fokus-Stil.",
@@ -573,6 +691,7 @@
573
691
  },
574
692
  "focusable-disabled": {
575
693
  "pass": "Das Element beeinhaltet keinen fokussierbaren Inhalt.",
694
+ "incomplete": "Prüfe, ob die fokussierbaren Elemente den Fokusindikator sofort bewegen.",
576
695
  "fail": "Fokussierbarer Inhalt sollte deaktiviert oder vom DOM entfernt werden."
577
696
  },
578
697
  "focusable-element": {
@@ -590,12 +709,26 @@
590
709
  },
591
710
  "focusable-not-tabbable": {
592
711
  "pass": "Keine fokussierbaren Elemente innerhalb des Elements.",
712
+ "incomplete": "Prüfe, ob die fokussierbaren Elemente den Fokusindikator sofort bewegen.",
593
713
  "fail": "Fokussierbare Elemente sollten mit tabindex='-1' versehen oder vom DOM entfernt werden."
594
714
  },
715
+ "frame-focusable-content": {
716
+ "pass": "Element hat keine fokussierbaren Nachkommen (descendants).",
717
+ "fail": "Element hat fokussierbare Nachkommen (descendants).",
718
+ "incomplete": "Es konnte nicht festgestellt werden, ob das Element Nachkommen (descendants) hat."
719
+ },
595
720
  "landmark-is-top-level": {
596
721
  "pass": "Die ${data.role} landmark befindet sich auf höchster Ebene.",
597
722
  "fail": "Die ${data.role} landmark befindet sich innerhalb einer anderen landmark."
598
723
  },
724
+ "no-focusable-content": {
725
+ "pass": "Element hat keine fokussierbaren Nachkommen (descendants).",
726
+ "fail": {
727
+ "default": "Element hat fokussierbare Nachkommen (descendants).",
728
+ "notHidden": "Die Verwendung eines negativen Tabindex für ein Element innerhalb eines interaktiven Steuerelements verhindert nicht, dass assistive Technologien das Element fokussieren (selbst bei aria-hidden=\"true\")"
729
+ },
730
+ "incomplete": "Es konnte nicht festgestellt werden, ob das Element Nachkommen (descendants) hat."
731
+ },
599
732
  "page-has-heading-one": {
600
733
  "pass": "Die Seite besitzt mindestens eine Überschrift der ersten Ebene.",
601
734
  "fail": "Die Seite muss eine Überschrift erster Ebene besitzen."
@@ -695,10 +828,7 @@
695
828
  },
696
829
  "only-listitems": {
697
830
  "pass": "Das Aufzählungselement besitzt Kinder, welche innerhalb eines <li>-Elements erlaubt sind.",
698
- "fail": {
699
- "default": "Aufzählungselement besitzt Kinder, welche innerhalb eines <li>-Elements nicht erlaubt sind.",
700
- "roleNotValid": "Aufzählungselement besitzt Kinder, welche folgende nicht erlaubte Rollen besitzen: ${data.roles}"
701
- }
831
+ "fail": "Das Aufzählungselement besitzt Kinder, die nicht erlaubt sind: ${data.values}"
702
832
  },
703
833
  "structured-dlitems": {
704
834
  "pass": "Das Definitionslisten-Element enthält sowohl <dt> als auch <dd>-Elemente, falls es nichtleer sein sollte.",
@@ -731,13 +861,38 @@
731
861
  "pass": "Der <meta>-Tag blockiert das Zoomen auf mobilen Geräten nicht.",
732
862
  "fail": "Die viewport-Einstellungen im <meta>-Tag blockieren das Zoomen auf mobilen Geräten."
733
863
  },
864
+ "target-offset": {
865
+ "pass": "Das Ziel hat genügend Abstand zu seinen nächsten Nachbarn. Der sichere klickbare Bereich hat einen Durchmesser von ${data.closestOffset}px, der mindestens ${data.minOffset}px beträgt.",
866
+ "fail": "Das Ziel hat nicht genügend Abstand zu seinen nächsten Nachbarn. Der sichere klickbare Bereich hat einen Durchmesser von ${data.closestOffset}px statt mindestens ${data.minOffset}px.",
867
+ "incomplete": {
868
+ "default": "Element mit negativem Tabindex hat nicht genügend Abstand zu seinen nächsten Nachbarn. Der sichere klickbare Bereich hat einen Durchmesser von ${data.closestOffset}px statt mindestens ${data.minOffset}px. Ist dies ein Ziel?",
869
+ "nonTabbableNeighbor": "Das Ziel hat nicht genügend Abstand zu seinen nächsten Nachbarn. Der sichere klickbare Bereich hat einen Durchmesser von ${data.closestOffset}px statt mindestens ${data.minOffset}px. Ist der Nachbar ein Ziel?"
870
+ }
871
+ },
872
+ "target-size": {
873
+ "pass": {
874
+ "default": "Das Steuerelement hat eine ausreichende Größe (${data.width}px x ${data.height}px, sollte mindestens ${data.minSize}px x ${data.minSize}px sein).",
875
+ "obscured": "Das Steuerelement wird ignoriert, da es vollständig verdeckt ist und daher nicht angeklickt werden kann."
876
+ },
877
+ "fail": {
878
+ "default": "Das Ziel hat eine unzureichende Größe (${data.width}px x ${data.height}px, sollte mindestens ${data.minSize}px x ${data.minSize}px sein).",
879
+ "partiallyObscured": "Das Ziel hat eine unzureichende Größe, weil es teilweise verdeckt ist (der kleinste Platz ist ${data.width}px mal ${data.height}px, sollte mindestens ${data.minSize}px mal ${data.minSize}px sein)."
880
+ },
881
+ "incomplete": {
882
+ "default": "Element mit negativem Tabindex hat unzureichende Größe (${data.width}px mal ${data.height}px, sollte mindestens ${data.minSize}px mal ${data.minSize}px sein). Ist dies ein Ziel?",
883
+ "contentOverflow": "Elementgröße konnte aufgrund von Überlaufinhalten nicht genau bestimmt werden",
884
+ "partiallyObscured": "Element mit negativem Tabindex hat unzureichende Größe, weil es teilweise verdeckt ist (kleinster Platz ist ${data.width}px mal ${data.height}px, sollte mindestens ${data.minSize}px mal ${data.minSize}px sein). Ist dies ein Ziel?",
885
+ "partiallyObscuredNonTabbable": "Das Ziel hat eine unzureichende Größe, weil es teilweise von einem Nachbarn mit negativem Tabindex verdeckt wird (der kleinste Platz ist ${data.width}px mal ${data.height}px, sollte mindestens ${data.minSize}px mal ${data.minSize}px sein). Ist der Nachbar ein Ziel?"
886
+ }
887
+ },
734
888
  "header-present": {
735
889
  "pass": "Die Seite besitzt eine Seitenüberschrift.",
736
890
  "fail": "Die Seite besitzt keine Seitenüberschrift."
737
891
  },
738
892
  "heading-order": {
739
893
  "pass": "Die Überschriftenstruktur ist gültig.",
740
- "fail": "Die Überschriftenstruktur ist nicht valide."
894
+ "fail": "Die Überschriftenstruktur ist nicht valide.",
895
+ "incomplete": "Vorherige Überschrift kann nicht ermittelt werden."
741
896
  },
742
897
  "identical-links-same-purpose": {
743
898
  "pass": "Es befinden sich keine Links auf der Seite, welche mit demselben Namen auf dasselbe Ziel verweisen.",
@@ -751,13 +906,18 @@
751
906
  "pass": "Die Seite besitzt eine landmark region.",
752
907
  "fail": "Die Seite besitzt keine landmark region."
753
908
  },
909
+ "meta-refresh-no-exceptions": {
910
+ "pass": "<meta> Tag aktualisiert die Seite nicht sofort.",
911
+ "fail": "<meta> Tag erzwingt eine zeitgesteuerte Aktualisierung der Seite."
912
+ },
754
913
  "meta-refresh": {
755
914
  "pass": "Der <meta>-Tag erzwingt keine sofortige Aktualisierung der Seite.",
756
915
  "fail": "Der <meta>-Tag erzwingt eine zeitgesteuerte Aktualisierung der Seite."
757
916
  },
758
917
  "p-as-heading": {
759
918
  "pass": "<p>-Elemente werden nicht als Überschriftenelement zweckentfremdet.",
760
- "fail": "Anstelle eines Überschriftenelementes wird lediglich ein durch Formatierungen hervorgehobenes <p>-Element verwendet."
919
+ "fail": "Anstelle eines Überschriftenelementes wird lediglich ein durch Formatierungen hervorgehobenes <p>-Element verwendet.",
920
+ "incomplete": "Es kann nicht festgestellt werden, ob <p>-Elemente als Überschriften gestylt sind."
761
921
  },
762
922
  "region": {
763
923
  "pass": "Jeglicher Inhalt der Seite befindet sich in einer landmark.",
@@ -822,6 +982,18 @@
822
982
  "fail": "Das Element besitzt keinen Text, der für Screenreader sichtbar ist.",
823
983
  "incomplete": "Es ist nicht möglich zu ermitteln, ob das Element Kinder besitzt."
824
984
  },
985
+ "important-letter-spacing": {
986
+ "pass": "letter-spacing im style-Attribut ist nicht auf !important gesetzt oder entspricht dem Minimum.",
987
+ "fail": "letter-spacing im style-Attribut darf nicht !important sein oder muss ${data.minValue}em (aktuell ${data.value}em) entsprechen."
988
+ },
989
+ "important-line-height": {
990
+ "pass": "line-height im style-Attribut ist nicht auf !important gesetzt oder entspricht dem Minimum.",
991
+ "fail": "line-height im style-Attribut darf nicht !important sein oder muss ${data.minValue}em (aktuell ${data.value}em) entsprechen."
992
+ },
993
+ "important-word-spacing": {
994
+ "pass": "word-spacing im style-Attribut ist nicht auf !important gesetzt oder entspricht dem Minimum.",
995
+ "fail": "word-spacing im style-Attribut darf nicht !important sein oder muss ${data.minValue}em (aktuell ${data.value}em) entsprechen."
996
+ },
825
997
  "is-on-screen": {
826
998
  "pass": "Das Element ist nicht sichtbar.",
827
999
  "fail": "Das Element ist sichtbar."
@@ -867,7 +1039,8 @@
867
1039
  "default": "Die Standardsemantik des Elements wurden nicht mit der Rolle role=\"none\" oder role=\"presentation\" überschrieben.",
868
1040
  "globalAria": "Die Rolle des Elements ist nicht präsentativ aufgrund des globalen ARIA Attributs.",
869
1041
  "focusable": "Die Rolle des Elements ist nicht präsentativ aufgrund der Möglichkeit es zu fokussieren.",
870
- "both": "Die Rolle des Elements ist nicht präsentativ aufgrund des zugewiesenen globalen ARIA Attributs und der Möglichkeit es zu fokussieren."
1042
+ "both": "Die Rolle des Elements ist nicht präsentativ aufgrund des zugewiesenen globalen ARIA Attributs und der Möglichkeit es zu fokussieren.",
1043
+ "iframe": "Die Verwendung des \"title\"-Attributs auf einem ${data.nodeName}-Element mit einer Präsentationsrolle verhält sich inkonsistent zwischen Screenreadern."
871
1044
  }
872
1045
  },
873
1046
  "role-none": {
@@ -896,7 +1069,8 @@
896
1069
  },
897
1070
  "same-caption-summary": {
898
1071
  "pass": "Die Inhalte des summary-Attributes und des <caption>-Elementes sind nicht identisch.",
899
- "fail": "Die Inhalte des summary-Attributes und des <caption>-Elementes sind identisch."
1072
+ "fail": "Die Inhalte des summary-Attributes und des <caption>-Elementes sind identisch.",
1073
+ "incomplete": "Es kann nicht festgestellt werden, ob das <table>-Element eine Überschrift hat."
900
1074
  },
901
1075
  "scope-value": {
902
1076
  "pass": "Das scope-Attribut wird korrekt verwendet.",