govuk_publishing_components 35.15.2 → 35.15.3

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.
@@ -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ść.",