govuk_publishing_components 35.15.2 → 35.15.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@
2
2
  "lang": "pl",
3
3
  "rules": {
4
4
  "accesskeys": {
5
- "description": "Każdy atrybut accessskey jest unikalny.",
5
+ "description": "Wartość każdego atrybutu accessskey jest unikalna.",
6
6
  "help": "Wartość atrybutu accessskey musi być unikalna."
7
7
  },
8
8
  "area-alt": {
@@ -10,95 +10,111 @@
10
10
  "help": "Elementy aktywne <area> muszą mieć tekst alternatywny."
11
11
  },
12
12
  "aria-allowed-attr": {
13
- "description": "Użyte atrybuty ARIA są dozwolone dla roli elementu.",
13
+ "description": "Użyte atrybuty ARIA są dozwolone dla elementu z określoną rolą.",
14
14
  "help": "Elementy mogą używać tylko dozwolonych atrybutów ARIA."
15
15
  },
16
16
  "aria-allowed-role": {
17
17
  "description": "Atrybut role ma odpowiednią wartość dla danego elementu.",
18
18
  "help": "Rola ARIA musi być odpowiednia dla danego elementu."
19
19
  },
20
+ "aria-braille-equivalent": {
21
+ "description": "Upewnij się, że aria-braillelabel i aria-brailleroledescription mają odpowiednik niebrajlowski",
22
+ "help": "Atrybuty aria-braille muszą mieć odpowiednik niebrajlowski."
23
+ },
20
24
  "aria-command-name": {
21
- "description": "Każdy przycisk, łącze i pozycja menu (menuitem) ARIA ma dostępną nazwę.",
22
- "help": "Polecenia ARIA muszą mieć dostępną nazwę."
25
+ "description": "Każdy element button, link i menuitem ARIA ma dostępną nazwę.",
26
+ "help": "Przyciski, łącza, pozycje menu ARIA muszą mieć dostępną nazwę."
27
+ },
28
+ "aria-conditional-attr": {
29
+ "description": "Upewnij się, że atrybuty ARIA są używane zgodnie ze specyfikacją roli elementu.",
30
+ "help": "Atrybuty ARIA muszą być używane w sposób określony dla roli elementu"
31
+ },
32
+ "aria-deprecated-role": {
33
+ "description": "Upewnij się, że elementy nie używają przestarzałych ról.",
34
+ "help": "Przestarzałe role ARIA nie mogą być używane."
23
35
  },
24
36
  "aria-dialog-name": {
25
37
  "description": "Każde okno dialogowe ARIA i węzeł alertdialog ma dostępną nazwę.",
26
38
  "help": "Okno dialogowe ARIA i węzły alertdialog muszą mieć dostępną nazwę."
27
39
  },
28
40
  "aria-hidden-body": {
29
- "description": "Element <body> nie ma atrybutu aria-hidden='true'.",
30
- "help": "Element <body> nie może mieć atrybutu aria-hidden='true'."
41
+ "description": "Element body nie ma atrybutu aria-hidden='true'.",
42
+ "help": "Element body nie może mieć atrybutu aria-hidden='true'."
31
43
  },
32
44
  "aria-hidden-focus": {
33
- "description": "Elementy z aria-hidden nie mogą obejmować elementów przyjmujących fokus.",
45
+ "description": "Elementy z aria-hidden=true nie mogą obejmować elementów przyjmujących fokus.",
34
46
  "help": "Ukryty element ARIA nie może zawierać elementów przyjmujących fokus."
35
47
  },
36
48
  "aria-input-field-name": {
37
- "description": "Każde pole wejściowe ARIA ma dostępną nazwę.",
38
- "help": "Pola wejściowe ARIA muszą mieć dostępną nazwę."
49
+ "description": "Każde pole ARIA do wprowadzania danych ma dostępną nazwę.",
50
+ "help": "Pola ARIA do wprowadzania danych muszą mieć dostępną nazwę."
39
51
  },
40
52
  "aria-meter-name": {
41
- "description": "Każdy licznik (meter) oparty na ARIA ma dostępną nazwę.",
42
- "help": "Liczniki (meter) ARIA muszą mieć dostępną nazwę."
53
+ "description": "Każdy element ARIA meter (licznik) ma dostępną nazwę.",
54
+ "help": "Liczniki ARIA (meter) muszą mieć dostępne nazwy."
43
55
  },
44
56
  "aria-progressbar-name": {
45
- "description": "Każdy pasek postępu (progressbar) ARIA ma dostępną nazwę.",
46
- "help": "Paski postępu (progressbar) ARIA muszą mieć dostępną nazwę."
57
+ "description": "Każdy element ARIA progressbar (pasek postępu) ma dostępną nazwę.",
58
+ "help": "Paski postępu ARIA (progressbar) muszą mieć dostępne nazwy."
59
+ },
60
+ "aria-prohibited-attr": {
61
+ "description": "Upewnij się, że atrybuty ARIA nie są zabronione dla roli elementu.",
62
+ "help": "Elementy mogą używać tylko dozwolonych atrybutów ARIA."
47
63
  },
48
64
  "aria-required-attr": {
49
- "description": "Elementy z rolami ARIA mają wszystkie wymagane atrybuty ARIA.",
65
+ "description": "Elementy z rolą ARIA mają wszystkie wymagane atrybuty aria-*",
50
66
  "help": "Wymagane atrybuty ARIA muszą istnieć."
51
67
  },
52
68
  "aria-required-children": {
53
- "description": "Elementy z rolą ARIA, które wymagają ról potomnych, zawierają je.",
69
+ "description": "Elementy z atrybutem ARIA role, które muszą zawierać elementy potomne z wymaganym atrybutem role, zawierają je.",
54
70
  "help": "Niektóre role ARIA muszą obejmować określone dzieci."
55
71
  },
56
72
  "aria-required-parent": {
57
- "description": "Elementy z rolą ARIA, które wymagają ról nadrzędnych, są zawarte w elementach z takimi rolami.",
58
- "help": "Niektóre role ARIA muszą być wewnątrz określonych elementów rodziców."
73
+ "description": "Elementy z atrybutem ARIA role, które wymagają elementu rodzica z atrybutem role, są zawarte w elementach z takimi rolami.",
74
+ "help": "Elementy z niektórymi atrybutami role ARIA muszą znajdować się wewnątrz nadrzędnego elementu rodzica z wymaganym atrybutem role."
59
75
  },
60
76
  "aria-roledescription": {
61
77
  "description": "Atrybut aria-roledescription jest używany tylko w elementach, które mają rolę określoną domyślnie lub jawnie.",
62
78
  "help": "Użyj aria-roledescription w elementach o roli semantycznej."
63
79
  },
64
80
  "aria-roles": {
65
- "description": "Wszystkie elementy z atrybutem roli używają prawidłowej wartości tego atrybutu.",
66
- "help": "Stosowane role ARIA muszą być zgodne z obowiązującymi wartościami."
81
+ "description": "Wartości atrybutu role poprawne.",
82
+ "help": "Stosowane role ARIA muszą mieć poprawne wartości."
67
83
  },
68
84
  "aria-text": {
69
- "description": "Atrybut \"role=text\" jest używany dla elementów, które nie mają potomków przyjmujących fokus",
70
- "help": "\"role=text\" nie powinien mieć potomków przyjmujących fokus."
85
+ "description": "Atrybut role=\"text\" jest używany dla elementów, które nie mają potomków przyjmujących fokus",
86
+ "help": "Element z atrybutem role=\"text\" nie może mieć potomków przyjmujących fokus."
71
87
  },
72
88
  "aria-toggle-field-name": {
73
- "description": "Każdy przełącznik (toggle) ARIA ma dostępną nazwę.",
74
- "help": "Przełączniki (toggle) ARIA muszą mieć dostępną nazwę."
89
+ "description": "Każdy element ARIA toggle (przełącznik) ma dostępną nazwę.",
90
+ "help": "Przełączniki ARIA (toggle) muszą mieć dostępną nazwę."
75
91
  },
76
92
  "aria-tooltip-name": {
77
- "description": "Każda podpowiedź (tooltip) ARIA ma dostępną nazwę.",
78
- "help": "Podpowiedzi (tooltip) ARIA muszą mieć dostępną nazwę."
93
+ "description": "Każdy element ARIA tooltip (podpowiedź) ma dostępną nazwę.",
94
+ "help": "Podpowiedzi ARIA (tooltip) muszą mieć dostępną nazwę."
79
95
  },
80
96
  "aria-treeitem-name": {
81
- "description": "Każdy węzeł drzewa elementów (treeitem) ARIA ma dostępną nazwę.",
82
- "help": "Węzły drzewa elementów ARIA muszą mieć dostępną nazwę."
97
+ "description": "Każdy element ARIA treeitem (węzeł drzewa) ma dostępną nazwę.",
98
+ "help": "Węzły drzewa elementów ARIA (treeitem) muszą mieć dostępną nazwę."
83
99
  },
84
100
  "aria-valid-attr-value": {
85
101
  "description": "Wszystkie atrybuty ARIA mają poprawne wartości.",
86
102
  "help": "Atrybuty ARIA muszą mieć poprawne wartości."
87
103
  },
88
104
  "aria-valid-attr": {
89
- "description": "Atrybuty, które rozpoczynają się od aria-, poprawnymi atrybutami ARIA.",
90
- "help": "Atrybuty ARIA muszą być mieć poprawne nazwy."
105
+ "description": "Wszystkie atrybuty aria-* mają poprawne nazwy.",
106
+ "help": "Atrybuty ARIA muszą mieć poprawne nazwy."
91
107
  },
92
108
  "audio-caption": {
93
109
  "description": "Elementy <audio> mają napisy rozszerzone.",
94
110
  "help": "Elementy <audio> muszą mieć ścieżkę z napisami."
95
111
  },
96
112
  "autocomplete-valid": {
97
- "description": "Atrybut autocomplete jest poprawny i odpowiedni dla pola formularza.",
113
+ "description": "Pola formularza, które zbierają dane osobowe, mają poprawne atrybuty autocomplete",
98
114
  "help": "Atrybut autocomplete musi być użyty poprawnie."
99
115
  },
100
116
  "avoid-inline-spacing": {
101
- "description": "Odstępy w tekście ustawione za pomocą atrybutów stylu mogą być regulowane za pomocą własnych arkuszy stylów.",
117
+ "description": "Odstępy w tekście można regulować za pomocą własnych arkuszy stylów.",
102
118
  "help": "Odstępy w tekście muszą być regulowane za pomocą własnych arkuszy stylów."
103
119
  },
104
120
  "blink": {
@@ -106,21 +122,21 @@
106
122
  "help": "Elementy <blink> są przestarzałe i nie mogą być używane."
107
123
  },
108
124
  "button-name": {
109
- "description": "Przyciski mają odróżniający je tekst.",
110
- "help": "Przyciski muszą mieć odróżniający je tekst."
125
+ "description": "Każdy przycisk ma odróżniającą go dostępną nazwę.",
126
+ "help": "Przyciski muszą mieć odróżniający je tekst nazwy."
111
127
  },
112
128
  "bypass": {
113
129
  "description": "Każda strona ma co najmniej jeden mechanizm, który pozwala ominąć nawigację i przejść od razu do treści.",
114
- "help": "Strona musi mieć środki do ominięcia powtarzających się bloków treści."
130
+ "help": "Strona musi mieć środki do ominięcia powtarzających bloków treści."
131
+ },
132
+ "color-contrast-enhanced": {
133
+ "description": "Kontrast między kolorami pierwszego planu i tła spełnia wyższe progi współczynnika kontrastu WCAG 2 AAA.",
134
+ "help": "Elementy muszą spełniać wyższe progi współczynnika kontrastu kolorów"
115
135
  },
116
136
  "color-contrast": {
117
137
  "description": "Kontrast między kolorami pierwszego planu i tła spełnia progi kontrastu WCAG 2 AA.",
118
138
  "help": "Elementy muszą mieć wystarczający kontrast kolorów."
119
139
  },
120
- "color-contrast-enhanced": {
121
- "description": "Kontrast między kolorami pierwszego planu i tła spełnia progi kontrastu WCAG 2 AAA.",
122
- "help": "Elementy muszą mieć wystarczający kontrast kolorów."
123
- },
124
140
  "css-orientation-lock": {
125
141
  "description": "Treść nie jest przypisana do żadnej konkretnej orientacji wyświetlacza i można ją obsługiwać we wszystkich orientacjach wyświetlacza.",
126
142
  "help": "Zapytania medialne nie są wykorzystywane do blokowania orientacji wyświetlacza."
@@ -139,7 +155,7 @@
139
155
  },
140
156
  "duplicate-id-active": {
141
157
  "description": "Wartość każdego atrybutu id aktywnych elementów jest unikalna.",
142
- "help": "ID aktywnych elementów muszą być unikalne."
158
+ "help": "ID aktywnych elementów, które otrzymują fokus, muszą być unikalne."
143
159
  },
144
160
  "duplicate-id-aria": {
145
161
  "description": "Każdy atrybut id używany w ARIA i w etykietach jest unikalny.",
@@ -162,31 +178,31 @@
162
178
  "help": "Elementy w porządku otrzymywania fokusu muszą mieć rolę odpowiednią dla treści interaktywnych."
163
179
  },
164
180
  "form-field-multiple-labels": {
165
- "description": "Pole formularza nie ma wielu etykiet (elementów label).",
166
- "help": "Pole formularza nie powinno zawierać wielu elementów label."
181
+ "description": "Żadne pole formularza nie ma wielu etykiet (elementów label).",
182
+ "help": "Pole formularza nie może mieć wielu elementów label."
167
183
  },
168
184
  "frame-focusable-content": {
169
- "description": "Elementy <frame> i <iframe> z treścią przyjmującą fokus nie mają tabindex=-1",
170
- "help": "Ramki z treścią przyjmującą fokus nie mogą mieć tabindex=-1"
185
+ "description": "Elementy <frame> i <iframe> z treścią przyjmującą fokus nie mają tabindex=-1.",
186
+ "help": "Ramki z treścią przyjmującą fokus nie mogą mieć tabindex=-1."
171
187
  },
172
188
  "frame-tested": {
173
189
  "description": "Elementy <iframe> i <frame> muszą być testowane ze skryptem axe-core.",
174
190
  "help": "Ramki muszą być testowane ze skryptem axe-core."
175
191
  },
176
192
  "frame-title-unique": {
177
- "description": "Elementy <frame> i <frame> mają unikalny atrybut title.",
178
- "help": "Ramki (frame) muszą mieć unikalny atrybut title."
193
+ "description": "Elementy <iframe> i <frame> mają unikalny atrybut title.",
194
+ "help": "Ramki muszą mieć unikalny atrybut title."
179
195
  },
180
196
  "frame-title": {
181
197
  "description": "Elementy <iframe> i <frame> mają niepusty atrybut title.",
182
- "help": "Ramki muszą mieć atrybut title."
198
+ "help": "Ramki muszą mieć niepusty atrybut title."
183
199
  },
184
200
  "heading-order": {
185
201
  "description": "Kolejność nagłówków jest semantycznie poprawna.",
186
202
  "help": "Poziomy nagłówków powinny wzrastać tylko o jeden."
187
203
  },
188
204
  "hidden-content": {
189
- "description": "Informuje użytkowników o ukrytych treściach.",
205
+ "description": "Na stronie ukryte treści.",
190
206
  "help": "Ukrytych treści na stronie nie można analizować."
191
207
  },
192
208
  "html-has-lang": {
@@ -211,7 +227,7 @@
211
227
  },
212
228
  "image-redundant-alt": {
213
229
  "description": "Tekst alternatywny obrazu nie jest powtarzany w tekście.",
214
- "help": "Alternatywny tekst obrazów nie powinien być powtarzany w tekście."
230
+ "help": "Tekst alternatywny obrazów nie powinien być powtarzany w tekście."
215
231
  },
216
232
  "input-button-name": {
217
233
  "description": "Przyciski input type=button mają odróżniający je tekst.",
@@ -238,7 +254,7 @@
238
254
  "help": "Punkt orientacyjny banner nie może być zawarty wewnątrz innego obszaru kluczowego."
239
255
  },
240
256
  "landmark-complementary-is-top-level": {
241
- "description": "Obszar aside lub obszar z role=complementary są obszarami kluczowymi najwyższego poziomu.",
257
+ "description": "Obszary aside lub z role=complementary są obszarami kluczowymi najwyższego poziomu.",
242
258
  "help": "Punkt orientacyjny complementary nie może być zawarty wewnątrz innego obszaru kluczowego."
243
259
  },
244
260
  "landmark-contentinfo-is-top-level": {
@@ -266,12 +282,12 @@
266
282
  "help": "Dokument może mieć tylko jeden obszar kluczowy main."
267
283
  },
268
284
  "landmark-unique": {
269
- "help": "Punkty orientacyjne mają unikalną rolę lub kombinację roli/etykiety/tytułu (tj. dostępną nazwę).",
270
- "description": "Punkty orientacyjne (obszary kluczowe) unikalne."
285
+ "help": "Punkty orientacyjne unikalne",
286
+ "description": "Punkty orientacyjne (obszary kluczowe) mają unikalną rolę lub kombinację roli/etykiety/tytułu (tj. dostępną nazwę)."
271
287
  },
272
288
  "link-in-text-block": {
273
289
  "description": "Łącza można rozróżniać bez opierania się na kolorze.",
274
- "help": "Łącza muszą być odróżnialne od otaczającego je tekstu w sposób, który nie opiera się na kolorze."
290
+ "help": "Łącza muszą być odróżnialne od sąsiadującego tekstu w sposób, który nie opiera się na kolorze."
275
291
  },
276
292
  "link-name": {
277
293
  "description": "Łącza mają odróżniający je tekst.",
@@ -289,9 +305,13 @@
289
305
  "description": "Elementy <marquee> nie są używane.",
290
306
  "help": "Elementy <marquee> są przestarzałe i nie mogą być używane."
291
307
  },
308
+ "meta-refresh-no-exceptions": {
309
+ "description": "Upewnij się, że <meta http-equiv=\"refresh\"> nie jest używany do opóźnionego odświeżania",
310
+ "help": "Nie wolno stosować opóźnionego odświeżania"
311
+ },
292
312
  "meta-refresh": {
293
- "description": "<meta http-equiv=\"refresh\"> nie jest stosowane.",
294
- "help": "Automatyczne odświeżenie strony nie może być stosowane."
313
+ "description": "Znacznik <meta http-equiv=\"refresh\"> nie jest używany do opóźnionego odświeżania.",
314
+ "help": "Opóźnione odświeżanie poniżej 20 godzin nie może być stosowane."
295
315
  },
296
316
  "meta-viewport-large": {
297
317
  "description": "Element <meta name=\"viewport\"> umożliwia znaczne powiększanie.",
@@ -302,36 +322,36 @@
302
322
  "help": "Powiększanie i skalowanie nie może być wyłączone."
303
323
  },
304
324
  "nested-interactive": {
305
- "description": "Zagnieżdżone interaktywne kontrolki nie są ogłaszane przez czytniki ekranu",
306
- "help": "Upewnij się, że kontrolki interaktywne nie zagnieżdżone"
325
+ "description": "Upewnij się, że kontrolki interaktywne nie są zagnieżdżone, ponieważ nie zawsze są ogłaszane przez czytniki ekranu lub mogą powodować problemy technologii wspomagających z fokusem.",
326
+ "help": "Kontrolki interaktywne nie mogą być zagnieżdżone"
307
327
  },
308
328
  "no-autoplay-audio": {
309
- "description": "Elementy <video> lub <audio> nie odtwarzają automatycznie przez dłużej niż 3 sekundy dźwięku bez mechanizmu, który go zatrzymuje lub wycisza.",
329
+ "description": "Elementy <video> lub <audio> nie odtwarzają automatycznie dźwięku przez dłużej niż 3 sekundy bez mechanizmu, który go zatrzymuje lub wycisza.",
310
330
  "help": "Elementy <video> lub <audio> nie odtwarzają dźwięku automatycznie."
311
331
  },
312
332
  "object-alt": {
313
- "description": "Elementy <object> mają tekst alternatywny.",
314
- "help": "Elementy <object> muszą mieć tekst zastępczy."
333
+ "description": "Elementy <object> mają tekst zastępczy.",
334
+ "help": "Elementy <object> muszą mieć alternatywę tekstową."
315
335
  },
316
336
  "p-as-heading": {
317
- "description": "Elementy p nie są stylizowane jako nagłówki.",
318
- "help": "Pogrubienie, kursywa i rozmiar czcionki nie używane do stylizacji elementów p jako nagłówków."
337
+ "description": "Pogrubienie, kursywa i rozmiar czcionki nie są używane do stylizacji elementów <p> jako nagłówków.",
338
+ "help": "Stylizowane elementy <p> nie mogą być używane jako nagłówki."
319
339
  },
320
340
  "page-has-heading-one": {
321
- "description": "Strona, lub co najmniej jedna z jej ramek, zawiera nagłówek pierwszego poziomu.",
341
+ "description": "Strona lub co najmniej jedna z jej ramek, zawiera nagłówek pierwszego poziomu.",
322
342
  "help": "Strona musi zawierać nagłówek poziomu 1."
323
343
  },
324
344
  "presentation-role-conflict": {
325
- "description": "Elementy z role=none lub role=presentation nie mogą kolidować z innymi rolami.",
326
- "help": "Elementy, które mają role=none lub role=presentation, nie mogą kolidować z innymi rolami."
345
+ "description": "Elementy oznaczone jako prezentacyjne nie powinny mieć globalnego ARIA ani tabindex, aby zapewnić, że wszystkie czytniki ekranu je zignorują.",
346
+ "help": "Upewnij się, że elementy oznaczone jako prezentacyjne konsekwentnie ignorowane."
327
347
  },
328
348
  "region": {
329
349
  "description": "Cała treść strony jest objęta przez punkty orientacyjne.",
330
350
  "help": "Cała treść strony musi być zawarta w obszarach kluczowych."
331
351
  },
332
352
  "role-img-alt": {
333
- "description": "Elementy z [role=\"img\"] mają tekst alternatywny.",
334
- "help": "Elementy z [role=\"img\"] muszą mieć tekst alternatywny."
353
+ "description": "Elementy z [role='img'] mają tekst alternatywny.",
354
+ "help": "Elementy z [role='img'] muszą mieć tekst alternatywny."
335
355
  },
336
356
  "scope-attr-valid": {
337
357
  "description": "Atrybut scope w tabelach jest stosowany poprawnie.",
@@ -354,32 +374,36 @@
354
374
  "help": "Cel łącza pomijającego powinien istnieć i przyjmować fokus."
355
375
  },
356
376
  "svg-img-alt": {
357
- "description": "Elementy svg z rolami img, graphics-document lub graphics-symbol mają dostępny tekst.",
358
- "help": "Elementy svg z rolą img mają tekst alternatywny."
377
+ "description": "Elementy <svg> z rolą img, graphics-document lub graphics-symbol mają dostępny tekst.",
378
+ "help": "Elementy svg z rolą img muszą mieć tekst alternatywny."
359
379
  },
360
380
  "tabindex": {
361
381
  "description": "Wartości atrybutów tabindex nie są większe niż 0.",
362
382
  "help": "Elementy nie powinny mieć wartości tabindex większej niż zero."
363
383
  },
364
384
  "table-duplicate-name": {
365
- "description": "Tabele nie mają takiego samego streszczenia (summary) i podpisu (caption).",
385
+ "description": "Podpis tabeli (element <caption>) nie może zawierać takiego samego tekstu co atrybut summary.",
366
386
  "help": "Atrybut summary w tabeli ma inny tekst niż element caption."
367
387
  },
368
388
  "table-fake-caption": {
369
389
  "description": "Tabele używają jako podpisu elementu <caption>.",
370
- "help": "Komórki danych i nagłówkowe w tabeli danych nie są używane do umieszczania podpisów."
390
+ "help": "Komórki danych i nagłówkowe w tabeli danych nie są używane do umieszczania podpisu tabeli."
391
+ },
392
+ "target-size": {
393
+ "description": "Sprawdź, czy cel dotykowy ma wystarczający rozmiar i przestrzeń wokół.",
394
+ "help": "Wszystkie cele dotykowe muszą mieć rozmiar 24px lub pozostawiać wystarczającą ilość miejsca wokół."
371
395
  },
372
396
  "td-has-header": {
373
- "description": "Każda niepusta komórka danych w dużej tabeli ma jeden lub więcej nagłówków tabeli.",
374
- "help": "Wszystkie niepuste elementy td w tabelach danych większych niż 3 na 3 mają skojarzony nagłówek tabeli."
397
+ "description": "Wszystkie niepuste komórki danych w tabelach danych większych niż 3 na 3 mają jeden lub więcej nagłówków tabeli.",
398
+ "help": "Każdy niepusty element <td> w dużej tabeli musi mieć powiązany nagłówek tabeli"
375
399
  },
376
400
  "td-headers-attr": {
377
401
  "description": "Każda komórka tabeli używająca atrybutu headers odwołuje się do innej komórki w tej tabeli.",
378
402
  "help": "Wszystkie komórki z atrybutem headers odnoszą się tylko do innych komórek tej samej tabeli."
379
403
  },
380
404
  "th-has-data-cells": {
381
- "description": "Każdy nagłówek tabeli w tabeli danych odnosi się do komórek danych.",
382
- "help": "Wszystkie elementy th i elementy z role=columnheader/rowheader mają komórki danych, które opisują."
405
+ "description": "Wszystkie elementy th i elementy z role=columnheader/rowheader mają komórki danych, które opisują.",
406
+ "help": "Każdy nagłówek tabeli w tabeli danych musi odnosić się do komórek danych."
383
407
  },
384
408
  "valid-lang": {
385
409
  "description": "Atrybuty lang mają poprawne wartości.",
@@ -403,7 +427,8 @@
403
427
  "fail": {
404
428
  "singular": "Atrybut ARIA nie jest dozwolony: ${data.values}.",
405
429
  "plural": ": Atrybuty ARIA nie są dozwolone: ${data.values}."
406
- }
430
+ },
431
+ "incomplete": "Sprawdź, czy nie ma problemu, jeśli atrybut ARIA jest ignorowany w tym elemencie: ${data.values}"
407
432
  },
408
433
  "aria-allowed-role": {
409
434
  "pass": "Rola ARIA jest dozwolona dla danego elementu.",
@@ -416,25 +441,53 @@
416
441
  "plural": ": Role ARIA ${data.values} muszą być usunięte, gdy element jest widoczny, ponieważ nie są one dozwolone dla elementu."
417
442
  }
418
443
  },
444
+ "aria-busy": {
445
+ "pass": "Element ma atrybut aria-busy",
446
+ "fail": "Element używa aria-busy=\"true\" podczas pokazywania ładowania"
447
+ },
448
+ "aria-conditional-attr": {
449
+ "pass": "Atrybut ARIA jest dozwolony",
450
+ "fail": {
451
+ "checkbox": "Usuń aria-checked lub ustaw jego wartość na \"${data.checkState}\", aby dopasować ją do rzeczywistego stanu pola wyboru.",
452
+ "rowSingular": "Ten atrybut jest obsługiwany przez wiersze siatki, ale nie przez ${data.ownerRole}: ${data.invalidAttrs}",
453
+ "rowPlural": "Te atrybuty są obsługiwane przez wiersze siatki, ale nie przez ${data.ownerRole}: ${data.invalidAttrs}"
454
+ }
455
+ },
419
456
  "aria-errormessage": {
420
457
  "pass": "Istnieje aria-errormessage oraz elementy referencyjne widoczne dla czytników ekranowych, które wykorzystują wspieraną technikę aria-errormessage.",
421
458
  "fail": {
422
- "singular": "Wartość aria-errormessage `${data.values}` musi używać techniki ogłoszenia wiadomości (np. aria-live, aria-describedby, role=alert, etc.).",
423
- "plural": "Wartości aria-errormessage `${data.values}` muszą używać techniki ogłoszenia wiadomości (np. aria-live, aria-describedby, role=alert, etc.)."
459
+ "singular": "Wartość aria-errormessage ${data.values} musi używać techniki ogłoszenia wiadomości (np. aria-live, aria-describedby, role=alert, etc.).",
460
+ "plural": "Wartości aria-errormessage ${data.values} muszą używać techniki ogłoszenia wiadomości (np. aria-live, aria-describedby, role=alert, etc.).",
461
+ "hidden": "Wartość aria-errormessage ${data.values} nie może odwoływać się do ukrytego elementu."
424
462
  },
425
463
  "incomplete": {
426
- "singular": "Upewnij się, że wartość aria-errormessage `${data.values}` odnosi się do istniejącego elementu.",
427
- "plural": "Upewnij się, że wartości aria-errormessage `${data.values}` odnoszą się do istniejących elementów."
464
+ "singular": "Upewnij się, że wartość aria-errormessage ${data.values} odnosi się do istniejącego elementu.",
465
+ "plural": "Upewnij się, że wartości aria-errormessage ${data.values} odnoszą się do istniejących elementów.",
466
+ "idrefs": "Nie można określić, czy na stronie istnieje element aria-errormessage: ${data.values}"
428
467
  }
429
468
  },
430
469
  "aria-hidden-body": {
431
- "pass": "Nie ma żadnego atrybutu aria-hidden w elemencie <body> dokumentu.",
432
- "fail": "Atrybutu aria-hidden=true nie może być w elemencie <body> dokumentu."
470
+ "pass": "Nie ma żadnego atrybutu aria-hidden w elemencie body dokumentu.",
471
+ "fail": "Atrybut aria-hidden=true nie może być użyty w elemencie body dokumentu."
472
+ },
473
+ "aria-level": {
474
+ "pass": "Wartość aria-level jest poprawna",
475
+ "incomplete": "Wartości aria-level większe niż 6 nie są obsługiwane we wszystkich kombinacjach czytników ekranu i przeglądarek"
433
476
  },
434
477
  "aria-prohibited-attr": {
435
478
  "pass": "Atrybut ARIA jest dozwolony",
436
- "fail": "Atrybut ARIA nie może być użyty, dodaj atrybut role lub użyj innego elementu: ${data.values}",
437
- "incomplete": "Atrybut ARIA nie jest dobrze obsługiwany w elemencie i zamiast niego zostanie użyta treść tekstowa: ${data.values}"
479
+ "fail": {
480
+ "hasRolePlural": "Atrybuty ${data.prohibited} nie mogą być używane z rolą \"${data.role}\".",
481
+ "hasRoleSingular": "Atrybut ${data.prohibited} nie może być użyty z rolą \"${data.role}\".",
482
+ "noRolePlural": "Atrybuty ${data.prohibited} nie mogą być używane w ${data.nodeName} bez poprawnego atrybutu roli.",
483
+ "noRoleSingular": "Atrybut ${data.prohibited} nie może być użyty w ${data.nodeName} bez poprawnego atrybutu roli."
484
+ },
485
+ "incomplete": {
486
+ "hasRoleSingular": "Atrybut ${data.prohibited} nie jest dobrze obsługiwany przez rolę \"${data.role}\".",
487
+ "hasRolePlural": "Atrybuty ${data.prohibited} nie są dobrze obsługiwane przez role \"${data.role}\".",
488
+ "noRoleSingular": "Atrybut ${data.prohibited} nie jest dobrze obsługiwany przez ${data.nodeName} bez poprawnego atrybutu roli.",
489
+ "noRolePlural": "Atrybuty ${data.prohibited} nie są dobrze obsługiwane przez ${data.nodeName} bez poprawnego atrybutu roli."
490
+ }
438
491
  },
439
492
  "aria-required-attr": {
440
493
  "pass": "Wszystkie wymagane atrybuty ARIA istnieją.",
@@ -447,7 +500,8 @@
447
500
  "pass": "Wymagane dzieci ARIA istnieją.",
448
501
  "fail": {
449
502
  "singular": "Wymagana rola dziecka ARIA nie istnieje: ${data.values}.",
450
- "plural": "Wymagane role dzieci ARIA nie istnieją: ${data.values}."
503
+ "plural": "Wymagane role dzieci ARIA nie istnieją: ${data.values",
504
+ "unallowed": "Element ma dzieci, które nie są dozwolone: ${data.values}"
451
505
  },
452
506
  "incomplete": {
453
507
  "singular": "Należy dodać oczekiwaną rolę dziecka ARIA: ${data.values}.",
@@ -473,12 +527,15 @@
473
527
  "aria-valid-attr-value": {
474
528
  "pass": "Wartości atrybutu ARIA są poprawne.",
475
529
  "fail": {
476
- "singular": "Niepoprawna wartość atrybutu ARIA: ${data.values}.",
477
- "plural": "Niepoprawne wartości atrybutu ARIA: ${data.values}."
530
+ "singular": "Niepoprawna wartość atrybutu ARIA: ${data.values}",
531
+ "plural": "Niepoprawne wartości atrybutu ARIA: ${data.values}"
478
532
  },
479
533
  "incomplete": {
480
- "noId": "Identyfikator elementu atrybutu ARIA nie istnieje na stronie: ${data.needsReview}.",
481
- "ariaCurrent": "Wartość atrybutu ARIA jest niepoprawna i będzie traktowana jako aria-current=true: ${data.needsReview}."
534
+ "noId": "Identyfikator elementu atrybutu ARIA nie istnieje na stronie: ${data.needsReview}",
535
+ "noIdShadow": "ID elementu atrybutu ARIA nie istnieje na stronie lub jest potomkiem innego drzewa shadow DOM: ${data.needsReview}",
536
+ "ariaCurrent": "Wartość atrybutu ARIA jest niepoprawna i będzie traktowana jako \"aria-current=true\": ${data.needsReview}",
537
+ "idrefs": "Nie można określić, czy atrybut ARIA element ID istnieje na stronie: ${data.needsReview}",
538
+ "empty": "Wartość atrybutu ARIA jest ignorowana, gdy jest pusty: ${data.needsReview}"
482
539
  }
483
540
  },
484
541
  "aria-valid-attr": {
@@ -488,9 +545,26 @@
488
545
  "plural": "Niepoprawne nazwy atrybutów ARIA: ${data.values}."
489
546
  }
490
547
  },
548
+ "braille-label-equivalent": {
549
+ "pass": "Atrybut aria-braillelabel jest użyty w elemencie z dostępnym tekstem.",
550
+ "fail": "Atrybut aria-braillelabel jest użyty w elemencie, który nie ma dostępnego tekstu.",
551
+ "incomplete": "Nie można wyliczyć dostępnego tekstu."
552
+ },
553
+ "braille-roledescription-equivalent": {
554
+ "pass": "Atrybut aria-brailleroledescription nie jest używany w elemencie, który nie ma dostępnego tekstu.",
555
+ "fail": {
556
+ "noRoleDescription": "Atrybut aria-brailleroledescription jest użyty w elemencie bez atrybutu aria-roledescription.",
557
+ "emptyRoleDescription": "Atrybut aria-brailleroledescription jest użyty w elemencie z pustym atrybutem aria-roledescription."
558
+ }
559
+ },
560
+ "deprecatedrole": {
561
+ "pass": "Rola ARIA nie jest przestarzała",
562
+ "fail": "Użyta rola jest przestarzała: ${data}"
563
+ },
491
564
  "fallbackrole": {
492
565
  "pass": "Użyto tylko jednej wartości roli.",
493
- "fail": "Użyj tylko jednej wartości roli, ponieważ role rezerwowe nie są obsługiwane w starszych przeglądarkach."
566
+ "fail": "Użyj tylko jednej wartości roli, ponieważ role rezerwowe nie są obsługiwane w starszych przeglądarkach.",
567
+ "incomplete": "Używaj tylko roli 'presentation' lub 'none', ponieważ są one synonimami."
494
568
  },
495
569
  "has-global-aria-attribute": {
496
570
  "pass": {
@@ -515,8 +589,8 @@
515
589
  "fail": "Element nie przyjmuje fokusu."
516
590
  },
517
591
  "no-implicit-explicit-label": {
518
- "pass": "Nie ma rozbieżności między <label> a dostępną nazwą.",
519
- "incomplete": "Sprawdź, czy <label> nie musi być częścią nazwy pola ARIA ${data}."
592
+ "pass": "Nie ma rozbieżności między label a dostępną nazwą.",
593
+ "incomplete": "Sprawdź, czy label nie musi być częścią nazwy pola ARIA ${data}."
520
594
  },
521
595
  "unsupportedrole": {
522
596
  "pass": "Rola ARIA jest obsługiwana.",
@@ -526,9 +600,13 @@
526
600
  "pass": "Element w porządku otrzymywania fokusu ma poprawną semantykę.",
527
601
  "fail": "Element w porządku otrzymywania fokusu ma niepoprawną semantykę."
528
602
  },
529
- "color-contrast": {
530
- "pass": "Element ma wystarczający kontrast kolorów ${data.contrastRatio}.",
531
- "fail": "Element ma niewystarczający kontrast kolorów: ${data.contrastRatio} (foreground color: ${data.fgColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Oczekiwany współczynnik kontrastu: ${data.expectedContrastRatio}.",
603
+ "color-contrast-enhanced": {
604
+ "pass": "Element ma wystarczający kontrast kolorów ${data.contrastRatio}",
605
+ "fail": {
606
+ "default": "Element ma niewystarczający kontrast kolorów ${data.contrastRatio} (kolor pierwszego planu: ${data.fgColor}, kolor tła: ${data.bgColor}, rozmiar czcionki: ${data.fontSize}, waga czcionki: ${data.fontWeight}). Oczekiwany współczynnik kontrastu: ${data.expectedContrastRatio}",
607
+ "fgOnShadowColor": "Element ma niewystarczający kontrast kolorów ${data.contrastRatio} pomiędzy kolorem pierwszego planu a kolorem cienia tekstu (kolor pierwszego planu: ${data.fgColor}, kolor cienia tekstu: ${data.shadowColor}, rozmiar czcionki: ${data.fontSize}, waga czcionki: ${data.fontWeight}). Oczekiwany współczynnik kontrastu: ${data.expectedContrastRatio}",
608
+ "shadowOnBgColor": "Element ma niewystarczający kontrast kolorów ${data.contrastRatio} pomiędzy kolorem cienia tekstu a kolorem tła (kolor cienia tekstu: ${data.shadowColor}, kolor tła: ${data.bgColor}, rozmiar czcionki: ${data.fontSize}, waga czcionki: ${data.fontWeight}). Oczekiwany współczynnik kontrastu: ${data.expectedContrastRatio}"
609
+ },
532
610
  "incomplete": {
533
611
  "default": "Nie można określić współczynnika kontrastu.",
534
612
  "bgImage": "Nie można określić koloru tła elementu, ponieważ element ma obraz tła.",
@@ -545,9 +623,16 @@
545
623
  "pseudoContent": "Nie można określić koloru tła elementu, ponieważ jest to pseudoelement."
546
624
  }
547
625
  },
548
- "color-contrast-enhanced": {
549
- "pass": "Element ma wystarczający kontrast kolorów ${data.contrastRatio}.",
550
- "fail": "Element ma niewystarczający kontrast kolorów: ${data.contrastRatio} (foreground color: ${data.fgColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Oczekiwany współczynnik kontrastu: ${data.expectedContrastRatio}.",
626
+ "color-contrast": {
627
+ "pass": {
628
+ "default": "Element ma wystarczający kontrast kolorów ${data.contrastRatio}",
629
+ "hidden": "Element jest ukryty"
630
+ },
631
+ "fail": {
632
+ "default": "Element ma niewystarczający kontrast kolorów ${data.contrastRatio} (kolor pierwszego planu: ${data.fgColor}, kolor tła: ${data.bgColor}, rozmiar czcionki: ${data.fontSize}, waga czcionki: ${data.fontWeight}). Oczekiwany współczynnik kontrastu: ${data.expectedContrastRatio}",
633
+ "fgOnShadowColor": "Element ma niewystarczający kontrast kolorów ${data.contrastRatio} pomiędzy kolorem pierwszego planu a kolorem cienia tekstu (kolor pierwszego planu: ${data.fgColor}, kolor cienia tekstu: ${data.shadowColor}, rozmiar czcionki: ${data.fontSize}, waga czcionki: ${data.fontWeight}). Oczekiwany współczynnik kontrastu: ${data.expectedContrastRatio}",
634
+ "shadowOnBgColor": "Element ma niewystarczający kontrast kolorów ${data.contrastRatio} pomiędzy kolorem cienia tekstu a kolorem tła (kolor cienia tekstu: ${data.shadowColor}, kolor tła: ${data.bgColor}, rozmiar czcionki: ${data.fontSize}, waga czcionki: ${data.fontWeight}). Oczekiwany współczynnik kontrastu: ${data.expectedContrastRatio}"
635
+ },
551
636
  "incomplete": {
552
637
  "default": "Nie można określić współczynnika kontrastu.",
553
638
  "bgImage": "Nie można określić koloru tła elementu, ponieważ element ma obraz tła.",
@@ -564,9 +649,20 @@
564
649
  "pseudoContent": "Nie można określić koloru tła elementu, ponieważ jest to pseudoelement."
565
650
  }
566
651
  },
652
+ "link-in-text-block-style": {
653
+ "pass": "Łącza mogą być odróżnione od sąsiadującego tekstu poprzez wizualną stylizację",
654
+ "incomplete": {
655
+ "default": "Sprawdź, czy łącze wymaga stylizacji, aby odróżnić je od sąsiadującego tekstu.",
656
+ "pseudoContent": "Sprawdź, czy pseudostyl łącza jest wystarczający, aby odróżnić je od sąsiadującego tekstu."
657
+ },
658
+ "fail": "Łącze nie ma żadnej stylizacji (np. podkreślenia), która odróżniałaby je od sąsiadującego tekstu"
659
+ },
567
660
  "link-in-text-block": {
568
- "pass": "Łącza można odróżnić od otaczającego je tekstu w inny sposób niż za pomocą koloru.",
569
- "fail": "Łącza muszą być odróżnione od otaczającego je tekstu w inny sposób niż za pomocą koloru.",
661
+ "pass": "Łącza można odróżnić od sąsiadującego tekstu w inny sposób niż za pomocą koloru.",
662
+ "fail": {
663
+ "fgContrast": "Łącze ma niewystarczający kontrast kolorów ${data.contrastRatio}:1 z sąsiadującym tekstem. (Minimalny kontrast to: ${data.requiredContrastRatio}:1, kolor tekstu łącza: ${data.nodeColor}, kolor sąsiadującego tekstu: ${data.parentColor})",
664
+ "bgContrast": "Tło łącza ma niewystarczający kontrast kolorów ${data.contrastRatio} (Minimalny kontrast to: ${data.requiredContrastRatio}:1, kolor tła łącza: ${data.nodeBackgroundColor}, sąsiadujący kolor tła: ${data.parentBackgroundColor})"
665
+ },
570
666
  "incomplete": {
571
667
  "default": "Nie można określić współczynnika kontrastu.",
572
668
  "bgContrast": "Nie można określić współczynnika kontrastu elementu. Sprawdź, czy nie ma odrębnego stylu stanów hover/fokus.",
@@ -577,8 +673,8 @@
577
673
  }
578
674
  },
579
675
  "autocomplete-appropriate": {
580
- "pass": "Wartość autocomplete jest odpowiednia dla tego typu pola wejściowego.",
581
- "fail": "Wartość autocomplete jest niewłaściwa dla tego typu pola wejściowego."
676
+ "pass": "Wartość autocomplete jest odpowiednia dla tego typu pola formularza.",
677
+ "fail": "Wartość autocomplete jest niewłaściwa dla tego typu pola formularza."
582
678
  },
583
679
  "autocomplete-valid": {
584
680
  "pass": "Atrybut autocomplete jest sformatowany poprawnie.",
@@ -594,6 +690,7 @@
594
690
  },
595
691
  "focusable-disabled": {
596
692
  "pass": "W elemencie nie ma elementów przyjmujących fokus.",
693
+ "incomplete": "Sprawdź, czy elementy, na których można ustawić fokus, natychmiast otrzymują wskaźnik fokusu",
597
694
  "fail": "Treść z możliwością ustawiania fokusu powinna być wyłączona lub usunięta z DOM."
598
695
  },
599
696
  "focusable-element": {
@@ -611,6 +708,7 @@
611
708
  },
612
709
  "focusable-not-tabbable": {
613
710
  "pass": "Nie ma elementów przyjmujących fokus wewnątrz elementu.",
711
+ "incomplete": "Sprawdź, czy elementy, na których można ustawić fokus, natychmiast otrzymują wskaźnik fokusu",
614
712
  "fail": "Treść przyjmująca fokus powinna mieć tabindex=-1 lub być usunięta z DOM."
615
713
  },
616
714
  "frame-focusable-content": {
@@ -624,7 +722,10 @@
624
722
  },
625
723
  "no-focusable-content": {
626
724
  "pass": "Element nie ma potomków przyjmujących fokus",
627
- "fail": "Element ma elementy potomne przyjmujące fokus",
725
+ "fail": {
726
+ "default": "Element ma elementy potomne przyjmujące fokus",
727
+ "notHidden": "Użycie ujemnej wartości tabindex elementu wewnątrz interaktywnej kontrolki nie zapobiega ustawianiu na elemencie fokusu przez technologie wspomagające (nawet z 'aria-hidden=true')"
728
+ },
628
729
  "incomplete": "Nie można ustalić, czy element ma elementy potomne"
629
730
  },
630
731
  "page-has-heading-one": {
@@ -656,35 +757,35 @@
656
757
  "fail": "Element ma atrybut alt zawierający tylko znak spacji, który nie przez wszystkie czytniki ekranu jest ignorowany ."
657
758
  },
658
759
  "duplicate-img-label": {
659
- "pass": "Element nie powiela tekstu istniejącego w atrybucie alt elementu <img>.",
660
- "fail": "Element powiela tekst istniejący w atrybucie alt elementu <img>."
760
+ "pass": "Element nie powiela tekstu istniejącego w atrybucie alt elementu img.",
761
+ "fail": "Element powiela tekst istniejący w atrybucie alt elementu img."
661
762
  },
662
763
  "explicit-label": {
663
- "pass": "Element formularza ma jawnie określoną <label>.",
664
- "fail": "Element formularza nie ma jawnie określonej <label>.",
665
- "incomplete": "Nie można określić, czy element formularza ma jawnie określoną <label>."
764
+ "pass": "Element formularza ma jawnie określoną label.",
765
+ "fail": "Element formularza nie ma jawnie określonej label.",
766
+ "incomplete": "Nie można określić, czy element formularza ma jawnie określoną label."
666
767
  },
667
768
  "help-same-as-label": {
668
769
  "pass": "Tekst pomocy (title lub aria-describedby) nie powiela tekstu etykiety.",
669
770
  "fail": "Tekst pomocy (title lub aria-describedby) jest taki sam jak tekst etykiety."
670
771
  },
671
772
  "hidden-explicit-label": {
672
- "pass": "Element formularza ma widoczną jednoznaczną <label>.",
673
- "fail": "Element formularza ma jednoznaczną <label>, która jest ukryta.",
674
- "incomplete": "Nie można określić, czy element formularza ma jednoznaczną ukrytą etykietę (<label>)."
773
+ "pass": "Element formularza ma widoczną jednoznaczną etykietę label.",
774
+ "fail": "Element formularza ma jednoznaczną etykietę label, która jest ukryta.",
775
+ "incomplete": "Nie można określić, czy element formularza ma jawną etykietę (label), gdy jest ukryta."
675
776
  },
676
777
  "implicit-label": {
677
- "pass": "Element formularza ma dorozumianą etykietę (jest owinięty w <label>).",
678
- "fail": "Element formularza nie ma dorozumianej etykiety (nie jest owinięty w <label>).",
679
- "incomplete": "Nie można określić, czy element formularza ma dorozumianą etykietę (jest owinięty w <label>)."
778
+ "pass": "Element formularza ma dorozumianą etykietę (jest owinięty w label).",
779
+ "fail": "Element formularza nie ma dorozumianej etykiety (nie jest owinięty w label).",
780
+ "incomplete": "Nie można określić, czy element formularza ma dorozumianą etykietę (jest owinięty w label)."
680
781
  },
681
782
  "label-content-name-mismatch": {
682
783
  "pass": "Widoczny tekst elementu jest częścią dostępnej nazwy elementu.",
683
- "fail": "Tekst wewnątrz elementu nie jest częścią dostępnej nazwy."
784
+ "fail": "Widoczny tekst wewnątrz elementu nie jest częścią dostępnej nazwy."
684
785
  },
685
786
  "multiple-label": {
686
- "pass": "Pole formularza nie ma wielu <label>.",
687
- "incomplete": "Technologie wspomagające nie obsługują wystarczająco dobrze wielu elementów <label>. Upewnij się, że pierwsza etykieta zawiera wszystkie niezbędne informacje."
787
+ "pass": "Pole formularza nie ma wielu label.",
788
+ "incomplete": "Technologie wspomagające nie obsługują wystarczająco dobrze wielu elementów label. Upewnij się, że pierwsza etykieta zawiera wszystkie niezbędne informacje."
688
789
  },
689
790
  "title-only": {
690
791
  "pass": "Element formularza nie używa wyłącznie atrybutu title jako swojej etykiety.",
@@ -702,7 +803,7 @@
702
803
  }
703
804
  },
704
805
  "valid-lang": {
705
- "pass": "Wartość atrybutu lang znajduje się na liście poprawnych kodów języków.",
806
+ "pass": "Wartość atrybutu lang jest na liście poprawnych kodów języków.",
706
807
  "fail": "Wartości atrybutu lang nie ma na liście poprawnych kodów języków."
707
808
  },
708
809
  "xml-lang-mismatch": {
@@ -710,30 +811,27 @@
710
811
  "fail": "Atrybuty lang i xml:lang nie mają tego samego języka podstawowego."
711
812
  },
712
813
  "dlitem": {
713
- "pass": "Element listy opisowej ma element nadrzędny <dl>.",
714
- "fail": "Pozycja listy opisowej nie ma elementu nadrzędnego <dl>."
814
+ "pass": "Element listy opisowej ma element nadrzędny dl.",
815
+ "fail": "Pozycja listy opisowej nie ma elementu nadrzędnego dl."
715
816
  },
716
817
  "listitem": {
717
- "pass": "Element listy ma <ul>, <ol> lub role=\"list\" jako bezpośredni element rodzicielski.",
818
+ "pass": "Element listy ma ul, ol lub role=\"list\" jako bezpośredni element rodzicielski.",
718
819
  "fail": {
719
- "default": "Element listy nie ma nadrzędnego elementu <ul> lub <ol>.",
720
- "roleNotValid": "Element listy nie ma nadrzędnego elementu <ul>, <ol>, ani nadrzędnego elementu z role=\"list\"."
820
+ "default": "Element listy nie ma nadrzędnego elementu ul lub ol.",
821
+ "roleNotValid": "Element listy nie ma nadrzędnego elementu ul, ol, ani nadrzędnego elementu z role=\"list\"."
721
822
  }
722
823
  },
723
824
  "only-dlitems": {
724
- "pass": "Element <dl> ma wewnątrz tylko dozwolone jako bezpośrednie elementy potomne (dzieci) elementy <dt> lub <dd> .",
825
+ "pass": "Element dl ma wewnątrz tylko dozwolone jako bezpośrednie elementy potomne (dzieci) elementy dt lub dd.",
725
826
  "fail": "Element listy ma wewnątrz bezpośrednie elementy dzieci, które nie są dozwolone wewnątrz listy opisowej."
726
827
  },
727
828
  "only-listitems": {
728
- "pass": "Element lista ma wewnątrz tylko dozwolone jako bezpośrednie elementy potomne (dzieci) elementy <li>.",
729
- "fail": {
730
- "default": "Element lista ma niedozwolone bezpośrednie elementy potomne (dzieci), poza elementami <li>.",
731
- "roleNotValid": "Element lista ma bezpośrednie elementy potomne (dzieci) z rolą, która nie jest dozwolona: ${data.role}."
732
- }
829
+ "pass": "Element lista ma wewnątrz tylko dozwolone jako bezpośrednie elementy potomne (dzieci) elementy li.",
830
+ "fail": "Element listy ma bezpośrednie elementy potomne, które nie są dozwolone: ${data.values}"
733
831
  },
734
832
  "structured-dlitems": {
735
- "pass": "Gdy elemet <dl> nie jest pusty, ma zarówno elementy <dt>, jak i <dd>.",
736
- "fail": "Element nie jest pusty, ale nie ma co najmniej jednego elementu <dt>, po którym następuje co najmniej jeden element <dd>."
833
+ "pass": "Gdy elemet dl nie jest pusty, ma zarówno elementy dt, jak i dd.",
834
+ "fail": "Element nie jest pusty, ale nie ma co najmniej jednego elementu dt, po którym następuje co najmniej jeden element dd."
737
835
  },
738
836
  "caption": {
739
837
  "pass": "Element multimedialny ma ścieżkę z napisami rozszerzonymi.",
@@ -762,13 +860,38 @@
762
860
  "pass": "Znacznik <meta> nie wyłącza powiększania na urządzeniach przenośnych.",
763
861
  "fail": "${data} w znaczniku <meta> wyłącza powiększanie na urządzeniach przenośnych."
764
862
  },
863
+ "target-offset": {
864
+ "pass": "Cel ma wystarczające odsunięcie od swojego najbliższego sąsiada: (${data.closestOffset}px, które powinno wynosić co najmniej ${data.minOffset}px)",
865
+ "fail": "Cel ma niewystarczające odsunięcie od najbliższego sąsiada: (${data.closestOffset}px, które powinno wynosić co najmniej ${data.minOffset}px)",
866
+ "incomplete": {
867
+ "default": "Element z ujemnym tabindeksem ma niewystarczające odsunięcie od najbliższego sąsiada: (${data.closestOffset}px, które powinno wynosić co najmniej${data.minOffset}px). Czy to jest cel?",
868
+ "nonTabbableNeighbor": "Cel ma niewystarczające odsunięcie od sąsiada z ujemnym tabindeksem: (${data.closestOffset}px, które powinno wynosić co najmniej ${data.minOffset}px). Czy sąsiad jest celem?"
869
+ }
870
+ },
871
+ "target-size": {
872
+ "pass": {
873
+ "default": "Kontrolka ma wystarczający rozmiar (${data.width}px na ${data.height}px, który powinnien wynosić co najmniej ${data.minSize}px na ${data.minSize}px)",
874
+ "obscured": "Kontrolka jest ignorowana, ponieważ jest całkowicie zasłonięta i nie można jej kliknąć."
875
+ },
876
+ "fail": {
877
+ "default": "Cel ma niewystarczający rozmiar (${data.width}px na ${data.height}px, który powinnien wynosić co najmniej ${data.minSize}px na ${data.minSize}px)",
878
+ "partiallyObscured": "Cel ma niewystarczający rozmiar, ponieważ jest częściowo przesłonięty (najmniejsza przestrzeń to ${data.width}px na ${data.height}px, powinna wynosić ${data.minSize}px na ${data.minSize}px)"
879
+ },
880
+ "incomplete": {
881
+ "default": "Element z ujemnym tabindex ma niewystarczający rozmiar (${data.width}px na ${data.height}px, powinnien wynosić co najmniej ${data.minSize}px na ${data.minSize}px). Czy to jest cel?",
882
+ "contentOverflow": "Rozmiar elementu nie mógł być dokładnie określony z powodu przepełnienia zawartości",
883
+ "partiallyObscured": "Element z ujemnym tabindex ma niewystarczający rozmiar, ponieważ jest częściowo przesłonięty (najmniejsza przestrzeń to ${data.width}px na ${data.height}px, powinna wynosić co najmniej ${data.minSize}px na ${data.minSize}px). Czy to jest cel?",
884
+ "partiallyObscuredNonTabbable": "Cel ma niewystarczający rozmiar, ponieważ jest częściowo przesłonięty przez sąsiada o ujemnym tabindeksie (najmniejsza przestrzeń to ${data.width}px na ${data.height}px, powinna wynosić co najmniej ${data.minSize}px na ${data.minSize}px). Czy sąsiad jest celem?"
885
+ }
886
+ },
765
887
  "header-present": {
766
888
  "pass": "Strona ma nagłówek.",
767
889
  "fail": "Strona nie ma nagłówka."
768
890
  },
769
891
  "heading-order": {
770
892
  "pass": "Kolejność nagłówków jest poprawna.",
771
- "fail": "Kolejność nagłówków jest niepoprawna."
893
+ "fail": "Kolejność nagłówków jest niepoprawna.",
894
+ "incomplete": "Nie można określić poprzedniego nagłówka"
772
895
  },
773
896
  "identical-links-same-purpose": {
774
897
  "pass": "Nie ma żadnych innych łączy o tej samej nazwie, które kierują na inny adres URL.",
@@ -782,13 +905,18 @@
782
905
  "pass": "Strona ma punkt orientacyjny (obszar kluczowy).",
783
906
  "fail": "Strona nie ma żadnego punktu orientacyjnego (obszaru kluczowego)."
784
907
  },
908
+ "meta-refresh-no-exceptions": {
909
+ "pass": "Znacznik <meta> nie powoduje natychmiastowego odświeżenia strony",
910
+ "fail": "Znacznik <meta> tag wymusza czasowe odświeżenie strony"
911
+ },
785
912
  "meta-refresh": {
786
913
  "pass": "Znacznik <meta> nie odświeża od razu strony.",
787
914
  "fail": "Znacznik <meta> wymusza odświeżenie strony."
788
915
  },
789
916
  "p-as-heading": {
790
917
  "pass": "Elementy <p> nie są stylizowane na nagłówki.",
791
- "fail": "Zamiast stylizowanych na nagłówki elementów p muszą być używane nagłówki semantyczne."
918
+ "fail": "Zamiast stylizowanych na nagłówki elementów <p> muszą być użyte nagłówki semantyczne.",
919
+ "incomplete": "Nie można określić, czy elementy <p> są stylizowane na nagłówki"
792
920
  },
793
921
  "region": {
794
922
  "pass": "Cała treść strony jest zawarta w obszarach kluczowych.",
@@ -825,16 +953,16 @@
825
953
  "incomplete": "Spowoduj, aby istniał element, do którego istnieje odwołanie w atrybucie aria-labelldeby."
826
954
  },
827
955
  "avoid-inline-spacing": {
828
- "pass": "Nie określono żadnych stylów inline z '!important', które wpływają na odstępy w tekście.",
956
+ "pass": "Nie określono żadnych stylów wewnętrznych (inline) z '!important', które wpływają na odstępy w tekście.",
829
957
  "fail": {
830
958
  "singular": "Usuń dyrektywę '!important' ze stylu inline ${data.values}, ponieważ nadpisywanie tego nie jest obsługiwane przez większość przeglądarek.",
831
959
  "plural": "Usuń dyrektywy '!important' ze stylów inline ${data.values}, ponieważ nadpisywanie tego nie jest obsługiwane przez większość przeglądarek."
832
960
  }
833
961
  },
834
962
  "button-has-visible-text": {
835
- "pass": "Element ma tekst wewnętrzny widoczny dla czytników ekranu.",
963
+ "pass": "Element ma tekst wewnętrzny widoczny dla czytników ekranu.",
836
964
  "fail": "Element nie ma wewnętrznego tekstu, który jest widoczny dla czytników ekranu.",
837
- "incomplete": "Nie można określić, czy element ma elementy dzieci."
965
+ "incomplete": "Nie można określić, czy element ma elementy potomne."
838
966
  },
839
967
  "doc-has-title": {
840
968
  "pass": "Dokument ma niepusty element <title>.",
@@ -853,6 +981,18 @@
853
981
  "fail": "Element nie ma tekstu, który jest widoczny dla czytników ekranu.",
854
982
  "incomplete": "Nie można określić, czy element ma elementy dzieci."
855
983
  },
984
+ "important-letter-spacing": {
985
+ "pass": "Odstępy między literami (letter-spacing) w atrybucie style nie są ustawione na !important lub spełniają minimum",
986
+ "fail": "Odstępy między literami w atrybucie style nie mogą używać !important lub muszą mieć ${data.minValue}em (aktualnie: ${data.value}em)"
987
+ },
988
+ "important-line-height": {
989
+ "pass": "Właściwość line-height w atrybucie style nie jest ustawiona na !important lub spełnia minimum.",
990
+ "fail": "Właściwość line-height w atrybucie style nie może używać !important lub musi mieć ${data.minValue}em (aktualnie: ${data.value}em)."
991
+ },
992
+ "important-word-spacing": {
993
+ "pass": "Odstępy miedzy wyrazami (word-spacing) w atrybucie style nie są ustawione na !important lub spełniają minimum",
994
+ "fail": "Odstępy miedzy wyrazami (word-spacing) w atrybucie style nie mogą używać !important lub muszą mieć ${data.minValue}em (aktualnie: ${data.value}em)"
995
+ },
856
996
  "is-on-screen": {
857
997
  "pass": "Element nie jest widoczny.",
858
998
  "fail": "Element jest widoczny."
@@ -898,7 +1038,8 @@
898
1038
  "default": "Domyślna semantyka elementu nie została nadpisana przez role=\"none\" ani role=\"presentation\".",
899
1039
  "globalAria": "Rola elementu nie jest prezentacyjna, ponieważ ma on ogólny atrybut ARIA.",
900
1040
  "focusable": "Rola elementu nie jest prezentacyjna, ponieważ może on przyjmować fokus.",
901
- "both": "Rola elementu nie jest prezentacyjna, ponieważ ma on ogólny atrybut ARIA i może przyjmować fokus."
1041
+ "both": "Rola elementu nie jest prezentacyjna, ponieważ ma on ogólny atrybut ARIA i może przyjmować fokus.",
1042
+ "iframe": "Użycie atrybutu \"title\" na elemencie ${data.nodeName} z rolą prezentacyjną zachowuje się niespójnie pomiędzy czytnikami ekranu."
902
1043
  }
903
1044
  },
904
1045
  "role-none": {
@@ -913,7 +1054,7 @@
913
1054
  "pass": "Element ma dziecko, które jest tytułem.",
914
1055
  "fail": {
915
1056
  "noTitle": "Element nie ma dziecka, które jest tytułem.",
916
- "emptyTitle": "Tytuł elementu dziecka jest pusty."
1057
+ "emptyTitle": "Element title dziecka jest pusty."
917
1058
  },
918
1059
  "incomplete": "Nie można ustalić, czy element ma dziecko, które jest tytułem."
919
1060
  },
@@ -927,7 +1068,8 @@
927
1068
  },
928
1069
  "same-caption-summary": {
929
1070
  "pass": "Treści atrybutu summary i elementu <caption> nie są powielane.",
930
- "fail": "Treści atrybutu summary i elementu <caption> są identyczne."
1071
+ "fail": "Treści atrybutu summary i elementu <caption> są identyczne.",
1072
+ "incomplete": "Nie można określić, czy element <table> ma caption"
931
1073
  },
932
1074
  "scope-value": {
933
1075
  "pass": "Atrybut scope ma poprawną wartość.",