pl.json 61 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109
  1. {
  2. "lang": "pl",
  3. "rules": {
  4. "accesskeys": {
  5. "description": "Wartość każdego atrybutu accessskey jest unikalna.",
  6. "help": "Wartość atrybutu accessskey musi być unikalna."
  7. },
  8. "area-alt": {
  9. "description": "Elementy <area> w graficznych mapach odnośników mają tekst zastępczy.",
  10. "help": "Elementy aktywne <area> muszą mieć tekst alternatywny."
  11. },
  12. "aria-allowed-attr": {
  13. "description": "Użyte atrybuty ARIA są dozwolone dla elementu z określoną rolą.",
  14. "help": "Elementy mogą używać tylko dozwolonych atrybutów ARIA."
  15. },
  16. "aria-allowed-role": {
  17. "description": "Atrybut role ma odpowiednią wartość dla danego elementu.",
  18. "help": "Rola ARIA musi być odpowiednia dla danego elementu."
  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. },
  24. "aria-command-name": {
  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."
  35. },
  36. "aria-dialog-name": {
  37. "description": "Każde okno dialogowe ARIA i węzeł alertdialog ma dostępną nazwę.",
  38. "help": "Okno dialogowe ARIA i węzły alertdialog muszą mieć dostępną nazwę."
  39. },
  40. "aria-hidden-body": {
  41. "description": "Element body nie ma atrybutu aria-hidden='true'.",
  42. "help": "Element body nie może mieć atrybutu aria-hidden='true'."
  43. },
  44. "aria-hidden-focus": {
  45. "description": "Elementy z aria-hidden=true nie mogą obejmować elementów przyjmujących fokus.",
  46. "help": "Ukryty element ARIA nie może zawierać elementów przyjmujących fokus."
  47. },
  48. "aria-input-field-name": {
  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ę."
  51. },
  52. "aria-meter-name": {
  53. "description": "Każdy element ARIA meter (licznik) ma dostępną nazwę.",
  54. "help": "Liczniki ARIA (meter) muszą mieć dostępne nazwy."
  55. },
  56. "aria-progressbar-name": {
  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."
  63. },
  64. "aria-required-attr": {
  65. "description": "Elementy z rolą ARIA mają wszystkie wymagane atrybuty aria-*",
  66. "help": "Wymagane atrybuty ARIA muszą istnieć."
  67. },
  68. "aria-required-children": {
  69. "description": "Elementy z atrybutem ARIA role, które muszą zawierać elementy potomne z wymaganym atrybutem role, zawierają je.",
  70. "help": "Niektóre role ARIA muszą obejmować określone dzieci."
  71. },
  72. "aria-required-parent": {
  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."
  75. },
  76. "aria-roledescription": {
  77. "description": "Atrybut aria-roledescription jest używany tylko w elementach, które mają rolę określoną domyślnie lub jawnie.",
  78. "help": "Użyj aria-roledescription w elementach o roli semantycznej."
  79. },
  80. "aria-roles": {
  81. "description": "Wartości atrybutu role są poprawne.",
  82. "help": "Stosowane role ARIA muszą mieć poprawne wartości."
  83. },
  84. "aria-text": {
  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."
  87. },
  88. "aria-toggle-field-name": {
  89. "description": "Każdy element ARIA toggle (przełącznik) ma dostępną nazwę.",
  90. "help": "Przełączniki ARIA (toggle) muszą mieć dostępną nazwę."
  91. },
  92. "aria-tooltip-name": {
  93. "description": "Każdy element ARIA tooltip (podpowiedź) ma dostępną nazwę.",
  94. "help": "Podpowiedzi ARIA (tooltip) muszą mieć dostępną nazwę."
  95. },
  96. "aria-treeitem-name": {
  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ę."
  99. },
  100. "aria-valid-attr-value": {
  101. "description": "Wszystkie atrybuty ARIA mają poprawne wartości.",
  102. "help": "Atrybuty ARIA muszą mieć poprawne wartości."
  103. },
  104. "aria-valid-attr": {
  105. "description": "Wszystkie atrybuty aria-* mają poprawne nazwy.",
  106. "help": "Atrybuty ARIA muszą mieć poprawne nazwy."
  107. },
  108. "audio-caption": {
  109. "description": "Elementy <audio> mają napisy rozszerzone.",
  110. "help": "Elementy <audio> muszą mieć ścieżkę z napisami."
  111. },
  112. "autocomplete-valid": {
  113. "description": "Pola formularza, które zbierają dane osobowe, mają poprawne atrybuty autocomplete",
  114. "help": "Atrybut autocomplete musi być użyty poprawnie."
  115. },
  116. "avoid-inline-spacing": {
  117. "description": "Odstępy w tekście można regulować za pomocą własnych arkuszy stylów.",
  118. "help": "Odstępy w tekście muszą być regulowane za pomocą własnych arkuszy stylów."
  119. },
  120. "blink": {
  121. "description": "Elementy <blink> nie są używane.",
  122. "help": "Elementy <blink> są przestarzałe i nie mogą być używane."
  123. },
  124. "button-name": {
  125. "description": "Każdy przycisk ma odróżniającą go dostępną nazwę.",
  126. "help": "Przyciski muszą mieć odróżniający je tekst nazwy."
  127. },
  128. "bypass": {
  129. "description": "Każda strona ma co najmniej jeden mechanizm, który pozwala ominąć nawigację i przejść od razu do 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"
  135. },
  136. "color-contrast": {
  137. "description": "Kontrast między kolorami pierwszego planu i tła spełnia progi kontrastu WCAG 2 AA.",
  138. "help": "Elementy muszą mieć wystarczający kontrast kolorów."
  139. },
  140. "css-orientation-lock": {
  141. "description": "Treść nie jest przypisana do żadnej konkretnej orientacji wyświetlacza i można ją obsługiwać we wszystkich orientacjach wyświetlacza.",
  142. "help": "Zapytania medialne nie są wykorzystywane do blokowania orientacji wyświetlacza."
  143. },
  144. "definition-list": {
  145. "description": "Elementy <dl> mają poprawną strukturę.",
  146. "help": "Elementy <dl> mogą bezpośrednio zawierać tylko odpowiednio uporządkowane grupy <dt> i <dd> oraz elementy <script>, <template> lub <div>."
  147. },
  148. "dlitem": {
  149. "description": "Elementy <dt> i <dd> znajdują się bezpośrednio w <dl>.",
  150. "help": "Elementy <dt> i <dd> są wewnątrz elementu <dl>."
  151. },
  152. "document-title": {
  153. "description": "Każdy dokument HTML ma niepusty element <title>.",
  154. "help": "Dokumenty muszą mieć element <title> pomagający w nawigacji."
  155. },
  156. "duplicate-id-active": {
  157. "description": "Wartość każdego atrybutu id aktywnych elementów jest unikalna.",
  158. "help": "ID aktywnych elementów, które otrzymują fokus, muszą być unikalne."
  159. },
  160. "duplicate-id-aria": {
  161. "description": "Każdy atrybut id używany w ARIA i w etykietach jest unikalny.",
  162. "help": "Identyfikatory stosowane w ARIA i etykietach muszą być unikalne."
  163. },
  164. "duplicate-id": {
  165. "description": "Wartość każdego atrybutu id jest unikalna.",
  166. "help": "Wartość atrybutu id musi być unikalna."
  167. },
  168. "empty-heading": {
  169. "description": "Nagłówki mają odróżniający je tekst.",
  170. "help": "Nagłówki nie mogą być puste."
  171. },
  172. "empty-table-header": {
  173. "description": "Upewnij się, że nagłówki tabel mają opisowy tekst.",
  174. "help": "Tekst nagłówka tabeli nie może być pusty."
  175. },
  176. "focus-order-semantics": {
  177. "description": "Elementy w porządku otrzymywania fokusu mają odpowiednią rolę.",
  178. "help": "Elementy w porządku otrzymywania fokusu muszą mieć rolę odpowiednią dla treści interaktywnych."
  179. },
  180. "form-field-multiple-labels": {
  181. "description": "Żadne pole formularza nie ma wielu etykiet (elementów label).",
  182. "help": "Pole formularza nie może mieć wielu elementów label."
  183. },
  184. "frame-focusable-content": {
  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."
  187. },
  188. "frame-tested": {
  189. "description": "Elementy <iframe> i <frame> muszą być testowane ze skryptem axe-core.",
  190. "help": "Ramki muszą być testowane ze skryptem axe-core."
  191. },
  192. "frame-title-unique": {
  193. "description": "Elementy <iframe> i <frame> mają unikalny atrybut title.",
  194. "help": "Ramki muszą mieć unikalny atrybut title."
  195. },
  196. "frame-title": {
  197. "description": "Elementy <iframe> i <frame> mają niepusty atrybut title.",
  198. "help": "Ramki muszą mieć niepusty atrybut title."
  199. },
  200. "heading-order": {
  201. "description": "Kolejność nagłówków jest semantycznie poprawna.",
  202. "help": "Poziomy nagłówków powinny wzrastać tylko o jeden."
  203. },
  204. "hidden-content": {
  205. "description": "Na stronie są ukryte treści.",
  206. "help": "Ukrytych treści na stronie nie można analizować."
  207. },
  208. "html-has-lang": {
  209. "description": "Każdy dokument HTML ma atrybut lang.",
  210. "help": "Element <html> musi mieć atrybut lang."
  211. },
  212. "html-lang-valid": {
  213. "description": "Atrybut lang elementu <html> ma poprawną wartość.",
  214. "help": "Element <html> musi mieć poprawną wartość atrybutu lang."
  215. },
  216. "html-xml-lang-mismatch": {
  217. "description": "Element HTML z poprawnym atrybutem lang xml:lang ma ten sam podstawowy język strony.",
  218. "help": "Element HTML z lang i xml:lang musi mieć ten sam język podstawowy."
  219. },
  220. "identical-links-same-purpose": {
  221. "description": "Łącza o tej samej dostępnej nazwie służą temu samemu celowi.",
  222. "help": "Łącza o tej samej nazwie mają ten sam cel."
  223. },
  224. "image-alt": {
  225. "description": "Elementy <img> mają atrybut alt lub rolę none albo presentation.",
  226. "help": "Obrazy muszą mieć tekst alternatywny."
  227. },
  228. "image-redundant-alt": {
  229. "description": "Tekst alternatywny obrazu nie jest powtarzany w tekście.",
  230. "help": "Tekst alternatywny obrazów nie powinien być powtarzany w tekście."
  231. },
  232. "input-button-name": {
  233. "description": "Przyciski input type=button mają odróżniający je tekst.",
  234. "help": "Przyciski input type=button muszą mieć odróżniający je tekst."
  235. },
  236. "input-image-alt": {
  237. "description": "Elementy <input type=\"image\"> mają tekst alternatywny.",
  238. "help": "Przyciski graficzne muszą mieć tekst alternatywny."
  239. },
  240. "label-content-name-mismatch": {
  241. "description": "Elementy oznakowane swoją treścią mają swój widoczny tekst jako część ich dostępnej nazwy",
  242. "help": "Elementy muszą mieć swój widoczny tekst jako część ich dostępnej nazwy."
  243. },
  244. "label-title-only": {
  245. "description": "Żaden element formularza nie jest oznaczony wyłącznie za pomocą atrybutu title lub aria-describedby.",
  246. "help": "Element formularza powinien mieć widoczną etykietę."
  247. },
  248. "label": {
  249. "description": "Każdy element formularza ma etykietę.",
  250. "help": "Element formularza musi mieć etykietę."
  251. },
  252. "landmark-banner-is-top-level": {
  253. "description": "Obszar banner jest obszarem kluczowym najwyższego poziomu.",
  254. "help": "Punkt orientacyjny banner nie może być zawarty wewnątrz innego obszaru kluczowego."
  255. },
  256. "landmark-complementary-is-top-level": {
  257. "description": "Obszary aside lub z role=complementary są obszarami kluczowymi najwyższego poziomu.",
  258. "help": "Punkt orientacyjny complementary nie może być zawarty wewnątrz innego obszaru kluczowego."
  259. },
  260. "landmark-contentinfo-is-top-level": {
  261. "description": "Obszar kluczowy z role=contentinfo jest obszarem kluczowym najwyższego poziomu.",
  262. "help": "Punkt orientacyjny contentinfo nie może być zawarty wewnątrz innego obszaru kluczowego."
  263. },
  264. "landmark-main-is-top-level": {
  265. "description": "Obszar main jest obszarem kluczowym najwyższego poziomu.",
  266. "help": "Punkt orientacyjny main nie może być zawarty wewnątrz innego obszaru kluczowego."
  267. },
  268. "landmark-no-duplicate-banner": {
  269. "description": "Dokument ma co najwyżej jeden punkt orientacyjny banner.",
  270. "help": "Dokument nie może mieć więcej niż jednego obszaru kluczowego banner."
  271. },
  272. "landmark-no-duplicate-contentinfo": {
  273. "description": "Dokument ma co najwyżej jeden punkt orientacyjny contentinfo.",
  274. "help": "Dokument nie może mieć więcej niż jednego obszaru kluczowego contentinfo."
  275. },
  276. "landmark-no-duplicate-main": {
  277. "description": "Dokument ma co najwyżej jeden punkt orientacyjny main.",
  278. "help": "Dokument nie może mieć więcej niż jednego obszaru kluczowego main."
  279. },
  280. "landmark-one-main": {
  281. "description": "Dokument ma punkt orientacyjny main.",
  282. "help": "Dokument może mieć tylko jeden obszar kluczowy main."
  283. },
  284. "landmark-unique": {
  285. "help": "Punkty orientacyjne są unikalne",
  286. "description": "Punkty orientacyjne (obszary kluczowe) mają unikalną rolę lub kombinację roli/etykiety/tytułu (tj. dostępną nazwę)."
  287. },
  288. "link-in-text-block": {
  289. "description": "Łącza można rozróżniać bez opierania 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."
  291. },
  292. "link-name": {
  293. "description": "Łącza mają odróżniający je tekst.",
  294. "help": "Łącza muszą mieć odróżniający je tekst."
  295. },
  296. "list": {
  297. "description": "Listy mają poprawną strukturę.",
  298. "help": "Elementy <ul> i <ol> mogą bezpośrednio zawierać tylko elementy <li>, <script> lub <template>."
  299. },
  300. "listitem": {
  301. "description": "Elementy <li> są używane semantycznie.",
  302. "help": " Elementy <li> muszą być zawarte bezpośrednio w <ul> lub <ol>."
  303. },
  304. "marquee": {
  305. "description": "Elementy <marquee> nie są używane.",
  306. "help": "Elementy <marquee> są przestarzałe i nie mogą być używane."
  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. },
  312. "meta-refresh": {
  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."
  315. },
  316. "meta-viewport-large": {
  317. "description": "Element <meta name=\"viewport\"> umożliwia znaczne powiększanie.",
  318. "help": "Użytkownicy mogą powiększać i skalować tekst do 500%."
  319. },
  320. "meta-viewport": {
  321. "description": "Element <meta name=\"viewport\"> nie wyłącza skalowania i powiększania tekstu.",
  322. "help": "Powiększanie i skalowanie nie może być wyłączone."
  323. },
  324. "nested-interactive": {
  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"
  327. },
  328. "no-autoplay-audio": {
  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.",
  330. "help": "Elementy <video> lub <audio> nie odtwarzają dźwięku automatycznie."
  331. },
  332. "object-alt": {
  333. "description": "Elementy <object> mają tekst zastępczy.",
  334. "help": "Elementy <object> muszą mieć alternatywę tekstową."
  335. },
  336. "p-as-heading": {
  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."
  339. },
  340. "page-has-heading-one": {
  341. "description": "Strona lub co najmniej jedna z jej ramek, zawiera nagłówek pierwszego poziomu.",
  342. "help": "Strona musi zawierać nagłówek poziomu 1."
  343. },
  344. "presentation-role-conflict": {
  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 są konsekwentnie ignorowane."
  347. },
  348. "region": {
  349. "description": "Cała treść strony jest objęta przez punkty orientacyjne.",
  350. "help": "Cała treść strony musi być zawarta w obszarach kluczowych."
  351. },
  352. "role-img-alt": {
  353. "description": "Elementy z [role='img'] mają tekst alternatywny.",
  354. "help": "Elementy z [role='img'] muszą mieć tekst alternatywny."
  355. },
  356. "scope-attr-valid": {
  357. "description": "Atrybut scope w tabelach jest stosowany poprawnie.",
  358. "help": "Atrybut scope ma poprawną wartość."
  359. },
  360. "scrollable-region-focusable": {
  361. "description": "Elementy, których treść można przewijać, są osiągalne za pomocą klawiatury.",
  362. "help": "Obszary przewijane muszą być osiągalne z klawiatury."
  363. },
  364. "select-name": {
  365. "description": "Element select ma dostępną nazwę.",
  366. "help": "Element select musi mieć dostępną nazwę."
  367. },
  368. "server-side-image-map": {
  369. "description": "Graficzne mapy odnośników (mapy obrazkowe) obsługiwane po stronie serwera nie są używane.",
  370. "help": "Nie wolno używać map odnośników po stronie serwera."
  371. },
  372. "skip-link": {
  373. "description": "Wszystkie łącza pomijania mają cel przyjmujący fokus.",
  374. "help": "Cel łącza pomijającego powinien istnieć i przyjmować fokus."
  375. },
  376. "svg-img-alt": {
  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."
  379. },
  380. "tabindex": {
  381. "description": "Wartości atrybutów tabindex nie są większe niż 0.",
  382. "help": "Elementy nie powinny mieć wartości tabindex większej niż zero."
  383. },
  384. "table-duplicate-name": {
  385. "description": "Podpis tabeli (element <caption>) nie może zawierać takiego samego tekstu co atrybut summary.",
  386. "help": "Atrybut summary w tabeli ma inny tekst niż element caption."
  387. },
  388. "table-fake-caption": {
  389. "description": "Tabele używają jako podpisu elementu <caption>.",
  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ół."
  395. },
  396. "td-has-header": {
  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"
  399. },
  400. "td-headers-attr": {
  401. "description": "Każda komórka tabeli używająca atrybutu headers odwołuje się do innej komórki w tej tabeli.",
  402. "help": "Wszystkie komórki z atrybutem headers odnoszą się tylko do innych komórek tej samej tabeli."
  403. },
  404. "th-has-data-cells": {
  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."
  407. },
  408. "valid-lang": {
  409. "description": "Atrybuty lang mają poprawne wartości.",
  410. "help": "Atrybuty lang muszą mieć poprawną wartość."
  411. },
  412. "video-caption": {
  413. "description": "Elementy <video> mają napisy rozszerzone.",
  414. "help": "Elementy <video> muszą mieć napisy rozszerzone."
  415. }
  416. },
  417. "checks": {
  418. "abstractrole": {
  419. "pass": "Role abstrakcyjne nie są wykorzystywane.",
  420. "fail": {
  421. "singular": "Rola abstrakcyjna nie może być użyta bezpośrednio: ${data.values}.",
  422. "plural": ": Role abstrakcyjne nie mogą być używane bezpośrednio: ${data.values}."
  423. }
  424. },
  425. "aria-allowed-attr": {
  426. "pass": "Atrybuty ARIA są używane poprawnie dla zdefiniowanej roli.",
  427. "fail": {
  428. "singular": "Atrybut ARIA nie jest dozwolony: ${data.values}.",
  429. "plural": ": Atrybuty ARIA nie są dozwolone: ${data.values}."
  430. },
  431. "incomplete": "Sprawdź, czy nie ma problemu, jeśli atrybut ARIA jest ignorowany w tym elemencie: ${data.values}"
  432. },
  433. "aria-allowed-role": {
  434. "pass": "Rola ARIA jest dozwolona dla danego elementu.",
  435. "fail": {
  436. "singular": "Rola ARIA ${data.values} nie jest dozwolona dla tego elementu.",
  437. "plural": ": Role ARIA ${data.values} nie są dozwolone dla tego elementu."
  438. },
  439. "incomplete": {
  440. "singular": "Rola ARIA ${data.values} musi być usunięta, gdy element jest widoczny, ponieważ nie jest to dozwolone dla elementu.",
  441. "plural": ": Role ARIA ${data.values} muszą być usunięte, gdy element jest widoczny, ponieważ nie są one dozwolone dla elementu."
  442. }
  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. },
  456. "aria-errormessage": {
  457. "pass": "Istnieje aria-errormessage oraz elementy referencyjne widoczne dla czytników ekranowych, które wykorzystują wspieraną technikę aria-errormessage.",
  458. "fail": {
  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."
  462. },
  463. "incomplete": {
  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}"
  467. }
  468. },
  469. "aria-hidden-body": {
  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"
  476. },
  477. "aria-prohibited-attr": {
  478. "pass": "Atrybut ARIA jest dozwolony",
  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. }
  491. },
  492. "aria-required-attr": {
  493. "pass": "Wszystkie wymagane atrybuty ARIA istnieją.",
  494. "fail": {
  495. "singular": "Wymagany atrybut ARIA nie istnieje: ${data.values}.",
  496. "plural": "Wymagane atrybuty ARIA nie istnieją: ${data.values}."
  497. }
  498. },
  499. "aria-required-children": {
  500. "pass": {
  501. "default": "Wymagane dzieci ARIA istnieją."
  502. },
  503. "fail": {
  504. "singular": "Wymagana rola dziecka ARIA nie istnieje: ${data.values}.",
  505. "plural": "Wymagane role dzieci ARIA nie istnieją: ${data.values",
  506. "unallowed": "Element ma dzieci, które nie są dozwolone: ${data.values}"
  507. },
  508. "incomplete": {
  509. "singular": "Należy dodać oczekiwaną rolę dziecka ARIA: ${data.values}.",
  510. "plural": "Należy dodać oczekiwane role dzieci ARIA: ${data.values}."
  511. }
  512. },
  513. "aria-required-parent": {
  514. "pass": "Wymagana rola rodzica ARIA istnieje.",
  515. "fail": {
  516. "singular": "Wymagana rola rodzica ARIA nie istnieje: ${data.values}.",
  517. "plural": "Wymagane role rodziców ARIA nie istnieją: ${data.values}."
  518. }
  519. },
  520. "aria-roledescription": {
  521. "pass": "Atrybut aria-roledescription jest używany z obsługiwaną rolą semantyczną.",
  522. "incomplete": "Sprawdź, czy aria-roledescription jest ogłaszany przez obsługiwane czytniki ekranu.",
  523. "fail": "Nadaj temu elementowi rolę, która obsługuje aria-roledescription."
  524. },
  525. "aria-unsupported-attr": {
  526. "pass": "Atrybut ARIA jest obsługiwany.",
  527. "fail": "Atrybut ARIA nie jest dostatecznie obsługiwany przez czytniki ekranu i inne technologie wspomagające: ${data.values}."
  528. },
  529. "aria-valid-attr-value": {
  530. "pass": "Wartości atrybutu ARIA są poprawne.",
  531. "fail": {
  532. "singular": "Niepoprawna wartość atrybutu ARIA: ${data.values}",
  533. "plural": "Niepoprawne wartości atrybutu ARIA: ${data.values}"
  534. },
  535. "incomplete": {
  536. "noId": "Identyfikator elementu atrybutu ARIA nie istnieje na stronie: ${data.needsReview}",
  537. "noIdShadow": "ID elementu atrybutu ARIA nie istnieje na stronie lub jest potomkiem innego drzewa shadow DOM: ${data.needsReview}",
  538. "ariaCurrent": "Wartość atrybutu ARIA jest niepoprawna i będzie traktowana jako \"aria-current=true\": ${data.needsReview}",
  539. "idrefs": "Nie można określić, czy atrybut ARIA element ID istnieje na stronie: ${data.needsReview}",
  540. "empty": "Wartość atrybutu ARIA jest ignorowana, gdy jest pusty: ${data.needsReview}"
  541. }
  542. },
  543. "aria-valid-attr": {
  544. "pass": "Nazwa atrybutu ARIA jest poprawna.",
  545. "fail": {
  546. "singular": "Niepoprawna nazwa atrybutu ARIA: ${data.values}.",
  547. "plural": "Niepoprawne nazwy atrybutów ARIA: ${data.values}."
  548. }
  549. },
  550. "braille-label-equivalent": {
  551. "pass": "Atrybut aria-braillelabel jest użyty w elemencie z dostępnym tekstem.",
  552. "fail": "Atrybut aria-braillelabel jest użyty w elemencie, który nie ma dostępnego tekstu.",
  553. "incomplete": "Nie można wyliczyć dostępnego tekstu."
  554. },
  555. "braille-roledescription-equivalent": {
  556. "pass": "Atrybut aria-brailleroledescription nie jest używany w elemencie, który nie ma dostępnego tekstu.",
  557. "fail": {
  558. "noRoleDescription": "Atrybut aria-brailleroledescription jest użyty w elemencie bez atrybutu aria-roledescription.",
  559. "emptyRoleDescription": "Atrybut aria-brailleroledescription jest użyty w elemencie z pustym atrybutem aria-roledescription."
  560. }
  561. },
  562. "deprecatedrole": {
  563. "pass": "Rola ARIA nie jest przestarzała",
  564. "fail": "Użyta rola jest przestarzała: ${data}"
  565. },
  566. "fallbackrole": {
  567. "pass": "Użyto tylko jednej wartości roli.",
  568. "fail": "Użyj tylko jednej wartości roli, ponieważ role rezerwowe nie są obsługiwane w starszych przeglądarkach.",
  569. "incomplete": "Używaj tylko roli 'presentation' lub 'none', ponieważ są one synonimami."
  570. },
  571. "has-global-aria-attribute": {
  572. "pass": {
  573. "singular": "Element ma ogólny atrybut ARIA: ${data.values}.",
  574. "plural": ": Element ma ogólne atrybuty ARIA: ${data.values}."
  575. },
  576. "fail": "Element nie ma ogólnego atrybutu ARIA"
  577. },
  578. "has-widget-role": {
  579. "pass": "Element ma rolę widżetu.",
  580. "fail": "Element nie ma roli widżetu."
  581. },
  582. "invalidrole": {
  583. "pass": "Rola ARIA jest poprawna.",
  584. "fail": {
  585. "singular": "Rola musi być jedną z poprawnych ról ARIA: ${data.values}.",
  586. "plural": ": Role muszą być jedną z poprawnych ról ARIA: ${data.values}."
  587. }
  588. },
  589. "is-element-focusable": {
  590. "pass": "Element przyjmuje fokus.",
  591. "fail": "Element nie przyjmuje fokusu."
  592. },
  593. "no-implicit-explicit-label": {
  594. "pass": "Nie ma rozbieżności między label a dostępną nazwą.",
  595. "incomplete": "Sprawdź, czy label nie musi być częścią nazwy pola ARIA ${data}."
  596. },
  597. "unsupportedrole": {
  598. "pass": "Rola ARIA jest obsługiwana.",
  599. "fail": "Zastosowana rola nie jest szeroko obsługiwana w czytnikach ekranu i technologiach wspomagających: ${data.values}."
  600. },
  601. "valid-scrollable-semantics": {
  602. "pass": "Element w porządku otrzymywania fokusu ma poprawną semantykę.",
  603. "fail": "Element w porządku otrzymywania fokusu ma niepoprawną semantykę."
  604. },
  605. "color-contrast-enhanced": {
  606. "pass": "Element ma wystarczający kontrast kolorów ${data.contrastRatio}",
  607. "fail": {
  608. "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}",
  609. "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}",
  610. "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}"
  611. },
  612. "incomplete": {
  613. "default": "Nie można określić współczynnika kontrastu.",
  614. "bgImage": "Nie można określić koloru tła elementu, ponieważ element ma obraz tła.",
  615. "bgGradient": "Nie można określić koloru tła elementu, ponieważ element ma gradientowe tło.",
  616. "imgNode": "Nie można określić koloru tła elementu, ponieważ element zawiera węzeł obrazu.",
  617. "bgOverlap": "Nie można określić koloru tła elementu, ponieważ nakłada się na niego inny element.",
  618. "fgAlpha": "Nie można określić koloru pierwszego planu elementu z powodu przezroczystości alfa.",
  619. "elmPartiallyObscured": "Nie można określić koloru tła elementu, ponieważ jest on częściowo zasłonięty przez inny element.",
  620. "elmPartiallyObscuring": "Nie można określić koloru tła elementu, ponieważ częściowo nakłada się on na inne elementy.",
  621. "outsideViewport": "Nie można określić koloru tła elementu, ponieważ znajduje się on poza obszarem operacyjnym.",
  622. "equalRatio": "Element ma współczynnik kontrastu 1:1 z tłem.",
  623. "shortTextContent": "Treść elementu jest zbyt krótka, aby określić, czy jest to rzeczywista treść tekstowa.",
  624. "nonBmp": "Treść elementu zawiera tylko znaki nietekstowe.",
  625. "pseudoContent": "Nie można określić koloru tła elementu, ponieważ jest to pseudoelement."
  626. }
  627. },
  628. "color-contrast": {
  629. "pass": {
  630. "default": "Element ma wystarczający kontrast kolorów ${data.contrastRatio}",
  631. "hidden": "Element jest ukryty"
  632. },
  633. "fail": {
  634. "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}",
  635. "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}",
  636. "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}"
  637. },
  638. "incomplete": {
  639. "default": "Nie można określić współczynnika kontrastu.",
  640. "bgImage": "Nie można określić koloru tła elementu, ponieważ element ma obraz tła.",
  641. "bgGradient": "Nie można określić koloru tła elementu, ponieważ element ma gradientowe tło.",
  642. "imgNode": "Nie można określić koloru tła elementu, ponieważ element zawiera węzeł obrazu.",
  643. "bgOverlap": "Nie można określić koloru tła elementu, ponieważ nakłada się na niego inny element.",
  644. "fgAlpha": "Nie można określić koloru pierwszego planu elementu z powodu przezroczystości alfa.",
  645. "elmPartiallyObscured": "Nie można określić koloru tła elementu, ponieważ jest on częściowo zasłonięty przez inny element.",
  646. "elmPartiallyObscuring": "Nie można określić koloru tła elementu, ponieważ częściowo nakłada się on na inne elementy.",
  647. "outsideViewport": "Nie można określić koloru tła elementu, ponieważ znajduje się on poza obszarem operacyjnym.",
  648. "equalRatio": "Element ma współczynnik kontrastu 1:1 z tłem.",
  649. "shortTextContent": "Treść elementu jest zbyt krótka, aby określić, czy jest to rzeczywista treść tekstowa.",
  650. "nonBmp": "Treść elementu zawiera tylko znaki nietekstowe.",
  651. "pseudoContent": "Nie można określić koloru tła elementu, ponieważ jest to pseudoelement."
  652. }
  653. },
  654. "link-in-text-block-style": {
  655. "pass": "Łącza mogą być odróżnione od sąsiadującego tekstu poprzez wizualną stylizację",
  656. "incomplete": {
  657. "default": "Sprawdź, czy łącze wymaga stylizacji, aby odróżnić je od sąsiadującego tekstu.",
  658. "pseudoContent": "Sprawdź, czy pseudostyl łącza jest wystarczający, aby odróżnić je od sąsiadującego tekstu."
  659. },
  660. "fail": "Łącze nie ma żadnej stylizacji (np. podkreślenia), która odróżniałaby je od sąsiadującego tekstu"
  661. },
  662. "link-in-text-block": {
  663. "pass": "Łącza można odróżnić od sąsiadującego tekstu w inny sposób niż za pomocą koloru.",
  664. "fail": {
  665. "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})",
  666. "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})"
  667. },
  668. "incomplete": {
  669. "default": "Nie można określić współczynnika kontrastu.",
  670. "bgContrast": "Nie można określić współczynnika kontrastu elementu. Sprawdź, czy nie ma odrębnego stylu stanów hover/fokus.",
  671. "bgImage": "Nie można określić współczynnika kontrastu elementu ze względu na obraz tła.",
  672. "bgGradient": "Nie można określić współczynnika kontrastu elementu ze względu na gradient tła.",
  673. "imgNode": "Nie można określić współczynnika kontrastu elementu, ponieważ element zawiera węzeł obrazu.",
  674. "bgOverlap": "Nie można określić współczynnika kontrastu elementu ze względu na nakładanie się elementów."
  675. }
  676. },
  677. "autocomplete-appropriate": {
  678. "pass": "Wartość autocomplete jest odpowiednia dla tego typu pola formularza.",
  679. "fail": "Wartość autocomplete jest niewłaściwa dla tego typu pola formularza."
  680. },
  681. "autocomplete-valid": {
  682. "pass": "Atrybut autocomplete jest sformatowany poprawnie.",
  683. "fail": "Atrybut autocomplete jest sformatowany niepoprawnie."
  684. },
  685. "accesskeys": {
  686. "pass": "Wartość atrybutu accesskey jest unikalna.",
  687. "fail": "Dokument ma wiele elementów z tym samym klawiszem dostępu."
  688. },
  689. "focusable-content": {
  690. "pass": "Element zawiera elementy przyjmujące fokus.",
  691. "fail": "Element powinien przyjmować fokus."
  692. },
  693. "focusable-disabled": {
  694. "pass": "W elemencie nie ma elementów przyjmujących fokus.",
  695. "incomplete": "Sprawdź, czy elementy, na których można ustawić fokus, natychmiast otrzymują wskaźnik fokusu",
  696. "fail": "Treść z możliwością ustawiania fokusu powinna być wyłączona lub usunięta z DOM."
  697. },
  698. "focusable-element": {
  699. "pass": "Element może przyjmować fokus.",
  700. "fail": "Element powinien przyjmować fokus."
  701. },
  702. "focusable-modal-open": {
  703. "pass": "Nie ma elementów przyjmujących fokus, gdy otwarte jest okno modalne.",
  704. "incomplete": "Sprawdź, czy elementy, które mogą przyjmować fokus, nie są tabulowane w aktualnym stanie."
  705. },
  706. "focusable-no-name": {
  707. "pass": "Element nie znajduje się w porządku tabulacji lub ma dostępny tekst.",
  708. "fail": "Element znajduje się w porządku tabulacji i nie ma dostępnego tekstu.",
  709. "incomplete": "Nie można ustalić, czy element ma dostępną nazwę."
  710. },
  711. "focusable-not-tabbable": {
  712. "pass": "Nie ma elementów przyjmujących fokus wewnątrz elementu.",
  713. "incomplete": "Sprawdź, czy elementy, na których można ustawić fokus, natychmiast otrzymują wskaźnik fokusu",
  714. "fail": "Treść przyjmująca fokus powinna mieć tabindex=-1 lub być usunięta z DOM."
  715. },
  716. "frame-focusable-content": {
  717. "pass": "Element nie ma potomków przyjmujących fokus",
  718. "fail": "Element ma elementy potomne przyjmujące fokus",
  719. "incomplete": "Nie można ustalić, czy element ma elementy potomne"
  720. },
  721. "landmark-is-top-level": {
  722. "pass": "Punkt orientacyjny ${data.role} jest na najwyższym poziomie.",
  723. "fail": "Punkt orientacyjny {data.role} jest wewnątrz innego obszaru kluczowego."
  724. },
  725. "no-focusable-content": {
  726. "pass": "Element nie ma potomków przyjmujących fokus",
  727. "fail": {
  728. "default": "Element ma elementy potomne przyjmujące fokus",
  729. "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')"
  730. },
  731. "incomplete": "Nie można ustalić, czy element ma elementy potomne"
  732. },
  733. "page-has-heading-one": {
  734. "pass": "Strona ma co najmniej jeden nagłówek 1. poziomu.",
  735. "fail": "Strona musi mieć nagłówek 1. poziomu."
  736. },
  737. "page-has-main": {
  738. "pass": "Dokument ma co najmniej jeden główny punkt orientacyjny.",
  739. "fail": "Dokument nie ma głównego punktu orientacyjnego."
  740. },
  741. "page-no-duplicate-banner": {
  742. "pass": "W dokumencie nie ma więcej niż jeden obszar kluczowy banner.",
  743. "fail": "W dokumencie jest więcej niż jeden obszar kluczowy banner."
  744. },
  745. "page-no-duplicate-contentinfo": {
  746. "pass": "W dokumencie nie ma więcej niż jeden obszar kluczowy contentinfo.",
  747. "fail": "W dokumencie jest więcej niż jeden obszar kluczowy contentinfo."
  748. },
  749. "page-no-duplicate-main": {
  750. "pass": "W dokumencie nie ma więcej niż jeden obszar kluczowy main.",
  751. "fail": "W dokumencie jest więcej niż jeden obszar kluczowy main."
  752. },
  753. "tabindex": {
  754. "pass": "Element nie ma wartości tabindex większej niż 0.",
  755. "fail": "Element nie ma wartości tabindex większą od 0."
  756. },
  757. "alt-space-value": {
  758. "pass": "Element ma poprawną wartość atrybutu alt.",
  759. "fail": "Element ma atrybut alt zawierający tylko znak spacji, który nie przez wszystkie czytniki ekranu jest ignorowany ."
  760. },
  761. "duplicate-img-label": {
  762. "pass": "Element nie powiela tekstu istniejącego w atrybucie alt elementu img.",
  763. "fail": "Element powiela tekst istniejący w atrybucie alt elementu img."
  764. },
  765. "explicit-label": {
  766. "pass": "Element formularza ma jawnie określoną label.",
  767. "fail": "Element formularza nie ma jawnie określonej label.",
  768. "incomplete": "Nie można określić, czy element formularza ma jawnie określoną label."
  769. },
  770. "help-same-as-label": {
  771. "pass": "Tekst pomocy (title lub aria-describedby) nie powiela tekstu etykiety.",
  772. "fail": "Tekst pomocy (title lub aria-describedby) jest taki sam jak tekst etykiety."
  773. },
  774. "hidden-explicit-label": {
  775. "pass": "Element formularza ma widoczną jednoznaczną etykietę label.",
  776. "fail": "Element formularza ma jednoznaczną etykietę label, która jest ukryta.",
  777. "incomplete": "Nie można określić, czy element formularza ma jawną etykietę (label), gdy jest ukryta."
  778. },
  779. "implicit-label": {
  780. "pass": "Element formularza ma dorozumianą etykietę (jest owinięty w label).",
  781. "fail": "Element formularza nie ma dorozumianej etykiety (nie jest owinięty w label).",
  782. "incomplete": "Nie można określić, czy element formularza ma dorozumianą etykietę (jest owinięty w label)."
  783. },
  784. "label-content-name-mismatch": {
  785. "pass": "Widoczny tekst elementu jest częścią dostępnej nazwy elementu.",
  786. "fail": "Widoczny tekst wewnątrz elementu nie jest częścią dostępnej nazwy."
  787. },
  788. "multiple-label": {
  789. "pass": "Pole formularza nie ma wielu label.",
  790. "incomplete": "Technologie wspomagające nie obsługują wystarczająco dobrze wielu elementów label. Upewnij się, że pierwsza etykieta zawiera wszystkie niezbędne informacje."
  791. },
  792. "title-only": {
  793. "pass": "Element formularza nie używa wyłącznie atrybutu title jako swojej etykiety.",
  794. "fail": "Tylko atrybut title jest używany do wygenerowania etykiety dla elementu formularza."
  795. },
  796. "landmark-is-unique": {
  797. "pass": "Punkty orientacyjne muszą mieć unikalną kombinację roli lub roli etykiety i tytułu (tj. dostępną nazwę).",
  798. "fail": "Punkt orientacyjny musi mieć unikalną aria-label, aria-labelledby lub title, aby był rozpoznawalny."
  799. },
  800. "has-lang": {
  801. "pass": "Element <html> ma atrybut lang.",
  802. "fail": {
  803. "noXHTML": "Atrybut xml:lang nie jest poprawny na stronach HTML, użyj atrybutu lang.",
  804. "noLang": "Element <html> nie ma atrybutu lang."
  805. }
  806. },
  807. "valid-lang": {
  808. "pass": "Wartość atrybutu lang jest na liście poprawnych kodów języków.",
  809. "fail": "Wartości atrybutu lang nie ma na liście poprawnych kodów języków."
  810. },
  811. "xml-lang-mismatch": {
  812. "pass": "Atrybuty lang i xml:lang mają ten sam język podstawowy.",
  813. "fail": "Atrybuty lang i xml:lang nie mają tego samego języka podstawowego."
  814. },
  815. "dlitem": {
  816. "pass": "Element listy opisowej ma element nadrzędny dl.",
  817. "fail": "Pozycja listy opisowej nie ma elementu nadrzędnego dl."
  818. },
  819. "listitem": {
  820. "pass": "Element listy ma ul, ol lub role=\"list\" jako bezpośredni element rodzicielski.",
  821. "fail": {
  822. "default": "Element listy nie ma nadrzędnego elementu ul lub ol.",
  823. "roleNotValid": "Element listy nie ma nadrzędnego elementu ul, ol, ani nadrzędnego elementu z role=\"list\"."
  824. }
  825. },
  826. "only-dlitems": {
  827. "pass": "Element dl ma wewnątrz tylko dozwolone jako bezpośrednie elementy potomne (dzieci) elementy dt lub dd.",
  828. "fail": "Element listy ma wewnątrz bezpośrednie elementy dzieci, które nie są dozwolone wewnątrz listy opisowej."
  829. },
  830. "only-listitems": {
  831. "pass": "Element lista ma wewnątrz tylko dozwolone jako bezpośrednie elementy potomne (dzieci) elementy li.",
  832. "fail": "Element listy ma bezpośrednie elementy potomne, które nie są dozwolone: ${data.values}"
  833. },
  834. "structured-dlitems": {
  835. "pass": "Gdy elemet dl nie jest pusty, ma zarówno elementy dt, jak i dd.",
  836. "fail": "Element nie jest pusty, ale nie ma co najmniej jednego elementu dt, po którym następuje co najmniej jeden element dd."
  837. },
  838. "caption": {
  839. "pass": "Element multimedialny ma ścieżkę z napisami rozszerzonymi.",
  840. "incomplete": "Sprawdź, czy istnieją napisy rozszerzone dla tego elementu."
  841. },
  842. "frame-tested": {
  843. "pass": "Ramka iframe została przetestowana z axe-core.",
  844. "fail": "Ramka iframe nie mogła być przetestowana z axe-core.",
  845. "incomplete": "Nadal wymagane jest przetestowanie ramki iframe z axe-core."
  846. },
  847. "no-autoplay-audio": {
  848. "pass": "Element <video> lub <audio> nie emituje dźwięku przez czas dłuższy niż dozwolony lub posiada mechanizm sterujący.",
  849. "fail": "Element <video> lub <audio> emituje dźwięk przez czas dłuższy niż dozwolony i nie posiada mechanizmu sterowania.",
  850. "incomplete": "Sprawdź, czy <video> lub <audio> nie emituje dźwięku dłuższej niż przez dozwolony czas lub czy ma mechanizm sterujący."
  851. },
  852. "css-orientation-lock": {
  853. "pass": "Wyświetlacz działa sprawnie, orientacja nie jest blokowana.",
  854. "fail": "Zastosowano blokadę orientacji wyświetlacza, w rezultacie wyświetlacz nie działa sprawnie.",
  855. "incomplete": "Nie można blokować orientacji wyświetlacza za pomocą ustawień CSS."
  856. },
  857. "meta-viewport-large": {
  858. "pass": "Znacznik <meta> nie ogranicza znacznego powiększenia na urządzeniach przenośnych.",
  859. "fail": "Znacznik <meta> znacznik ogranicza powiększanie na urządzeniach przenośnych."
  860. },
  861. "meta-viewport": {
  862. "pass": "Znacznik <meta> nie wyłącza powiększania na urządzeniach przenośnych.",
  863. "fail": "${data} w znaczniku <meta> wyłącza powiększanie na urządzeniach przenośnych."
  864. },
  865. "target-offset": {
  866. "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)",
  867. "fail": "Cel ma niewystarczające odsunięcie od najbliższego sąsiada: (${data.closestOffset}px, które powinno wynosić co najmniej ${data.minOffset}px)",
  868. "incomplete": {
  869. "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?",
  870. "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?"
  871. }
  872. },
  873. "target-size": {
  874. "pass": {
  875. "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)",
  876. "obscured": "Kontrolka jest ignorowana, ponieważ jest całkowicie zasłonięta i nie można jej kliknąć."
  877. },
  878. "fail": {
  879. "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)",
  880. "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)"
  881. },
  882. "incomplete": {
  883. "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?",
  884. "contentOverflow": "Rozmiar elementu nie mógł być dokładnie określony z powodu przepełnienia zawartości",
  885. "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?",
  886. "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?"
  887. }
  888. },
  889. "header-present": {
  890. "pass": "Strona ma nagłówek.",
  891. "fail": "Strona nie ma nagłówka."
  892. },
  893. "heading-order": {
  894. "pass": "Kolejność nagłówków jest poprawna.",
  895. "fail": "Kolejność nagłówków jest niepoprawna.",
  896. "incomplete": "Nie można określić poprzedniego nagłówka"
  897. },
  898. "identical-links-same-purpose": {
  899. "pass": "Nie ma żadnych innych łączy o tej samej nazwie, które kierują na inny adres URL.",
  900. "incomplete": "Sprawdź, czy łącza mają ten sam cel lub są celowo niejednoznaczne."
  901. },
  902. "internal-link-present": {
  903. "pass": "Znaleziono poprawne łącze pomijające.",
  904. "fail": "Nie znaleziono poprawnych łączy pomijających."
  905. },
  906. "landmark": {
  907. "pass": "Strona ma punkt orientacyjny (obszar kluczowy).",
  908. "fail": "Strona nie ma żadnego punktu orientacyjnego (obszaru kluczowego)."
  909. },
  910. "meta-refresh-no-exceptions": {
  911. "pass": "Znacznik <meta> nie powoduje natychmiastowego odświeżenia strony",
  912. "fail": "Znacznik <meta> tag wymusza czasowe odświeżenie strony"
  913. },
  914. "meta-refresh": {
  915. "pass": "Znacznik <meta> nie odświeża od razu strony.",
  916. "fail": "Znacznik <meta> wymusza odświeżenie strony."
  917. },
  918. "p-as-heading": {
  919. "pass": "Elementy <p> nie są stylizowane na nagłówki.",
  920. "fail": "Zamiast stylizowanych na nagłówki elementów <p> muszą być użyte nagłówki semantyczne.",
  921. "incomplete": "Nie można określić, czy elementy <p> są stylizowane na nagłówki"
  922. },
  923. "region": {
  924. "pass": "Cała treść strony jest zawarta w obszarach kluczowych.",
  925. "fail": "Pewna część strony znajduje się poza punktami orientacyjnymi."
  926. },
  927. "skip-link": {
  928. "pass": "Cel łącza pomijajacego istnieje.",
  929. "incomplete": "Cel łącza pomijania powinien być widoczny po aktywacji.",
  930. "fail": "Nie istnieje cel łącza pomijającego."
  931. },
  932. "unique-frame-title": {
  933. "pass": "Atrybut title elementu jest unikalny.",
  934. "fail": "Atrybut title elementu nie jest unikalny."
  935. },
  936. "duplicate-id-active": {
  937. "pass": "W dokumencie nie ma aktywnych elementów z takim samym atrybutem id.",
  938. "fail": "W dokumencie są aktywne elementy z tą samą wartością atrybutu id: ${data}."
  939. },
  940. "duplicate-id-aria": {
  941. "pass": "W dokumencie nie ma żadnych elementów, do których odwołuje się ARIA lub <label>, które mają ten sam atrybut id.",
  942. "fail": "W dokumencie jest wiele elementów, do których odnosi się ARIA z tym samym atrybutem id: ${data}."
  943. },
  944. "duplicate-id": {
  945. "pass": "W dokumencie nie ma wielu elementów statycznych z takim samym atrybutem id.",
  946. "fail": "W dokumencie jest wiele elementów statycznych z takim samym atrybutem id: ${data}."
  947. },
  948. "aria-label": {
  949. "pass": "Atrybut aria-label istnieje i nie jest pusty.",
  950. "fail": "Atrybut aria-label nie istnieje lub jest pusty."
  951. },
  952. "aria-labelledby": {
  953. "pass": "Atrybut aria-labelledby oraz elementy, do których się odwołuje, istnieją i są widoczne dla czytników ekranu.",
  954. "fail": "Atrybut aria-labelledby nie istnieje albo elementy, do których odwołuje atrybut aria-labelledby, nie istnieją lub są puste.",
  955. "incomplete": "Spowoduj, aby istniał element, do którego istnieje odwołanie w atrybucie aria-labelldeby."
  956. },
  957. "avoid-inline-spacing": {
  958. "pass": "Nie określono żadnych stylów wewnętrznych (inline) z '!important', które wpływają na odstępy w tekście.",
  959. "fail": {
  960. "singular": "Usuń dyrektywę '!important' ze stylu inline ${data.values}, ponieważ nadpisywanie tego nie jest obsługiwane przez większość przeglądarek.",
  961. "plural": "Usuń dyrektywy '!important' ze stylów inline ${data.values}, ponieważ nadpisywanie tego nie jest obsługiwane przez większość przeglądarek."
  962. }
  963. },
  964. "button-has-visible-text": {
  965. "pass": "Element ma tekst wewnętrzny widoczny dla czytników ekranu.",
  966. "fail": "Element nie ma wewnętrznego tekstu, który jest widoczny dla czytników ekranu.",
  967. "incomplete": "Nie można określić, czy element ma elementy potomne."
  968. },
  969. "doc-has-title": {
  970. "pass": "Dokument ma niepusty element <title>.",
  971. "fail": "Dokument nie ma niepustego elementu <title>."
  972. },
  973. "exists": {
  974. "pass": "Element nie istnieje.",
  975. "incomplete": "Element istnieje."
  976. },
  977. "has-alt": {
  978. "pass": "Element ma atrybut alt.",
  979. "fail": "Element nie ma atrybutu alt."
  980. },
  981. "has-visible-text": {
  982. "pass": "Element ma tekst, który jest widoczny dla czytników ekranu.",
  983. "fail": "Element nie ma tekstu, który jest widoczny dla czytników ekranu.",
  984. "incomplete": "Nie można określić, czy element ma elementy dzieci."
  985. },
  986. "important-letter-spacing": {
  987. "pass": "Odstępy między literami (letter-spacing) w atrybucie style nie są ustawione na !important lub spełniają minimum",
  988. "fail": "Odstępy między literami w atrybucie style nie mogą używać !important lub muszą mieć ${data.minValue}em (aktualnie: ${data.value}em)"
  989. },
  990. "important-line-height": {
  991. "pass": "Właściwość line-height w atrybucie style nie jest ustawiona na !important lub spełnia minimum.",
  992. "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)."
  993. },
  994. "important-word-spacing": {
  995. "pass": "Odstępy miedzy wyrazami (word-spacing) w atrybucie style nie są ustawione na !important lub spełniają minimum",
  996. "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)"
  997. },
  998. "is-on-screen": {
  999. "pass": "Element nie jest widoczny.",
  1000. "fail": "Element jest widoczny."
  1001. },
  1002. "non-empty-alt": {
  1003. "pass": "Element ma niepusty atrybut alt.",
  1004. "fail": {
  1005. "noAttr": "Element nie ma atrybutu alt.",
  1006. "emptyAttr": "Element ma pusty atrybut alt."
  1007. }
  1008. },
  1009. "non-empty-if-present": {
  1010. "pass": {
  1011. "default": "Element nie posiada atrybutu bez określonej wartości.",
  1012. "has-label": "Element ma atrybuty bez określonej wartości."
  1013. },
  1014. "fail": "Element ma atrybut wartości, a atrybut wartości jest pusty."
  1015. },
  1016. "non-empty-placeholder": {
  1017. "pass": "Element ma atrybut placeholder.",
  1018. "fail": {
  1019. "noAttr": "Element nie ma atrybutu placeholder.",
  1020. "emptyAttr": "Element ma pusty atrybut placeholder."
  1021. }
  1022. },
  1023. "non-empty-title": {
  1024. "pass": "Element ma atrybut title.",
  1025. "fail": {
  1026. "noAttr": "Element nie ma atrybutu title.",
  1027. "emptyAttr": "Element ma pusty atrybut title."
  1028. }
  1029. },
  1030. "non-empty-value": {
  1031. "pass": "Element ma atrybut z niepustą wartością.",
  1032. "fail": {
  1033. "noAttr": "Element nie ma atrybutu z wartością.",
  1034. "emptyAttr": "Element ma atrybut z pustą wartością."
  1035. }
  1036. },
  1037. "presentational-role": {
  1038. "pass": "Domyślna semantyka elementu została zastąpiona przez role=\"${data.role}\".",
  1039. "fail": {
  1040. "default": "Domyślna semantyka elementu nie została nadpisana przez role=\"none\" ani role=\"presentation\".",
  1041. "globalAria": "Rola elementu nie jest prezentacyjna, ponieważ ma on ogólny atrybut ARIA.",
  1042. "focusable": "Rola elementu nie jest prezentacyjna, ponieważ może on przyjmować fokus.",
  1043. "both": "Rola elementu nie jest prezentacyjna, ponieważ ma on ogólny atrybut ARIA i może przyjmować fokus.",
  1044. "iframe": "Użycie atrybutu \"title\" na elemencie ${data.nodeName} z rolą prezentacyjną zachowuje się niespójnie pomiędzy czytnikami ekranu."
  1045. }
  1046. },
  1047. "role-none": {
  1048. "pass": "Domyślna semantyka elementu została zastąpiona przez role=\"none\".",
  1049. "fail": "Domyślna semantyka elementu nie została nadpisana przez role=\"none\"."
  1050. },
  1051. "role-presentation": {
  1052. "pass": "Domyślna semantyka elementu została zastąpiona przez role=\"presentation\".",
  1053. "fail": "Domyślna semantyka elementu nie została nadpisana przez role=\"presentation\"."
  1054. },
  1055. "svg-non-empty-title": {
  1056. "pass": "Element ma dziecko, które jest tytułem.",
  1057. "fail": {
  1058. "noTitle": "Element nie ma dziecka, które jest tytułem.",
  1059. "emptyTitle": "Element title dziecka jest pusty."
  1060. },
  1061. "incomplete": "Nie można ustalić, czy element ma dziecko, które jest tytułem."
  1062. },
  1063. "caption-faked": {
  1064. "pass": "Pierwszy wiersz tabeli nie jest używany jako podpis.",
  1065. "fail": "Pierwszym elementem potomnym (dzieckiem) w tabeli powinien być caption zamiast komórki tabeli."
  1066. },
  1067. "html5-scope": {
  1068. "pass": "Atrybut scope jest używany tylko w elementach nagłówków tabeli (<th>).",
  1069. "fail": "W HTML 5, atrybuty scope mogą być używane tylko w elementach nagłówkowych tabeli (<th>)."
  1070. },
  1071. "same-caption-summary": {
  1072. "pass": "Treści atrybutu summary i elementu <caption> nie są powielane.",
  1073. "fail": "Treści atrybutu summary i elementu <caption> są identyczne.",
  1074. "incomplete": "Nie można określić, czy element <table> ma caption"
  1075. },
  1076. "scope-value": {
  1077. "pass": "Atrybut scope ma poprawną wartość.",
  1078. "fail": "Wartością atrybutu scope może być tylko 'row' lub 'col'."
  1079. },
  1080. "td-has-header": {
  1081. "pass": "Wszystkie niepuste komórki danych mają nagłówki tabeli.",
  1082. "fail": "Niektóre niepuste komórki danych nie mają nagłówków tabeli."
  1083. },
  1084. "td-headers-attr": {
  1085. "pass": "Atrybut headers jest używany wyłącznie w odniesieniu do innych komórek w tabeli.",
  1086. "incomplete": "Atrybut headers jest pusty.",
  1087. "fail": "Atrybut headers nie jest używany wyłącznie w odniesieniu do innych komórek w tabeli."
  1088. },
  1089. "th-has-data-cells": {
  1090. "pass": "Wszystkie komórki nagłówkowe tabeli odnoszą się do komórek danych.",
  1091. "fail": "Nie wszystkie komórki nagłówkowe tabeli odnoszą się do komórek danych.",
  1092. "incomplete": "Komórki danych tabeli są puste lub nie istnieją."
  1093. },
  1094. "hidden-content": {
  1095. "pass": "Wszystkie treści na stronie zostały przeanalizowane.",
  1096. "fail": "Były problemy z analizą treści na tej stronie.",
  1097. "incomplete": "Na tej stronie jest ukryta treść, która nie została przeanalizowana. Musisz uruchomić wyświetlanie tej treści, aby ją przeanalizować."
  1098. }
  1099. },
  1100. "failureSummaries": {
  1101. "any": {
  1102. "failureMessage": "Napraw następujące elementy: {{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
  1103. },
  1104. "none": {
  1105. "failureMessage": "Napraw wszystkie poniższe: {{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
  1106. }
  1107. },
  1108. "incompleteFallbackMessage": "AXE nie potrafił określić powodu. Czas użyć inspektora elementów!"
  1109. }