ko.json 63 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001
  1. {
  2. "lang": "ko",
  3. "rules": {
  4. "accesskeys": {
  5. "description": "모든 accesskey 어트리뷰트 값이 고유한지 확인하세요.",
  6. "help": "accesskey 어트리뷰트 값은 고유해야 합니다."
  7. },
  8. "area-alt": {
  9. "description": "이미지 맵의 <area> 엘리먼트가 대체텍스트를 가지고 있는지 확인하세요.",
  10. "help": "활성 <area> 엘리먼트는 반드시 대체텍스트를 가져야 합니다."
  11. },
  12. "aria-allowed-attr": {
  13. "description": "ARIA 어트리뷰트가 엘리먼트의 역할(role)에 허용되었는지 확인하세요.",
  14. "help": "엘리먼트는 반드시 허용된 ARIA 어트리뷰트만 사용해야 합니다."
  15. },
  16. "aria-allowed-role": {
  17. "description": "역할(role) 어트리뷰트가 엘리먼트에 적절한 값을 가지고 있는지 확인하세요.",
  18. "help": "ARIA 역할(role)은 엘리먼트에 적절해야 합니다."
  19. },
  20. "aria-command-name": {
  21. "description": "모든 ARIA 버튼, 링크, 메뉴 아이템이 접근 가능한 이름을 가지고 있는지 확인하세요.",
  22. "help": "ARIA 명령 엘리먼트에는 반드시 접근 가능한 이름이 있어야 합니다."
  23. },
  24. "aria-dialog-name": {
  25. "description": "모든 ARIA dialog와 alertdialog 노드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
  26. "help": "ARIA dialog와 alertdialog 노드는 접근 가능한 이름을 가져야 합니다."
  27. },
  28. "aria-hidden-body": {
  29. "description": "문서 body에 aria-hidden='true'가 없게 하세요.",
  30. "help": "aria-hidden='true'는 반드시 문서 body에 없어야 합니다."
  31. },
  32. "aria-hidden-focus": {
  33. "description": "aria-hidden 엘리먼트가 초점을 얻을 수 있는(focusable) 엘리먼트를 포함하지 않도록 하세요.",
  34. "help": "ARIA hidden 엘리먼트는 반드시 초점을 얻을 수 있는(focusable) 엘리먼트를 포함하지 않아야 합니다."
  35. },
  36. "aria-input-field-name": {
  37. "description": "모든 ARIA 입력 필드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
  38. "help": "ARIA 입력 필드에는 반드시 접근 가능한 이름이 있어야 합니다."
  39. },
  40. "aria-meter-name": {
  41. "description": "모든 ARIA meter 노드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
  42. "help": "ARIA meter 노드에는 반드시 접근 가능한 이름이 있어야 합니다."
  43. },
  44. "aria-progressbar-name": {
  45. "description": "모든 ARIA progressbar 노드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
  46. "help": "ARIA progressbar 노드에는 반드시 접근 가능한 이름이 있어야 합니다."
  47. },
  48. "aria-required-attr": {
  49. "description": "ARIA 역할(role)을 가진 엘리먼트가 필수 ARIA 어트리뷰트를 모두 가지고 있는지 확인하세요",
  50. "help": "필수 ARIA 어트리뷰트는 반드시 제공되어야 합니다."
  51. },
  52. "aria-required-children": {
  53. "description": "하위 역할(child role)이 필요한 ARIA 역할(role)을 가진 엘리먼트가 해당 역할(role)을 포함하고 있는지 확인하세요.",
  54. "help": "일부 ARIA 역할(role)은 반드시 특정한 하위 항목들을 포함해야 합니다."
  55. },
  56. "aria-required-parent": {
  57. "description": "상위 역할(parent role)이 필요한 ARIA 역할(role)을 가진 엘리먼트가 해당 역할(role)에 포함되어 있는지 확인하세요.",
  58. "help": "일부 ARIA 역할(role)은 반드시 특정한 상위 항목들에 포함되어야 합니다."
  59. },
  60. "aria-roledescription": {
  61. "description": "aria-roledescription이 암묵적 혹은 명시적 역할(role)을 가진 엘리먼트에만 사용되었는지 확인하세요.",
  62. "help": "aria-roledescription은 의미론적 역할(role)을 가진 엘리먼트에 사용하세요."
  63. },
  64. "aria-roles": {
  65. "description": "역할(role) 어트리뷰트를 가진 모든 엘리먼트가 유효한 값을 가지고 있는지 확인하세요.",
  66. "help": "ARIA 역할(role)은 반드시 유효한 값을 준수해야 합니다."
  67. },
  68. "aria-text": {
  69. "description": "\"role=text\"가 초점을 얻을 수 있는(focusable) 후손을 가지지 않는 엘리먼트에 사용되었는지 확인하세요.",
  70. "help": "\"role=text\"는 초점을 얻을 수 있는(focusable) 후손을 가지지 않아야 합니다."
  71. },
  72. "aria-toggle-field-name": {
  73. "description": "모든 ARIA toggle 필드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
  74. "help": "ARIA toggle 필드는 접근 가능한 이름을 가져야 합니다."
  75. },
  76. "aria-tooltip-name": {
  77. "description": "모든 ARIA tooltip 노드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
  78. "help": "ARIA tooltip 노드는 반드시 접근 가능한 이름을 가져야 합니다."
  79. },
  80. "aria-treeitem-name": {
  81. "description": "모든 ARIA treeitem 노드가 접근 가능한 이름을 가지고 있는지 확인하세요.",
  82. "help": "ARIA treeitem 노드는 접근 가능한 이름을 가져야 합니다."
  83. },
  84. "aria-valid-attr-value": {
  85. "description": "모든 ARIA 어트리뷰트가 유효한 값을 가지고 있는지 확인하세요.",
  86. "help": "ARIA 어트리뷰트는 반드시 유효한 값을 준수해야 합니다."
  87. },
  88. "aria-valid-attr": {
  89. "description": "aria- 로 시작하는 어트리뷰트가 유효한 ARIA 어트리뷰트인지 확인하세요.",
  90. "help": "ARIA 어트리뷰트는 반드시 유효한 이름을 준수해야 합니다."
  91. },
  92. "audio-caption": {
  93. "description": "<audio> 엘리먼트가 캡션(자막)을 가지고 있는지 확인하세요.",
  94. "help": "<audio> 엘리먼트는 반드시 캡션(자막) 트랙을 가져야 합니다."
  95. },
  96. "autocomplete-valid": {
  97. "description": "autocomplete 어트리뷰트가 올바르고 form 필드에 적합한지 확인하세요.",
  98. "help": "autocomplete 어트리뷰트는 반드시 올바르게 사용되어야 합니다."
  99. },
  100. "avoid-inline-spacing": {
  101. "description": "style 어트리뷰트를 통해 설정된 텍스트 간격이 사용자 정의 스타일시트를 통해 조정될 수 있는지 확인하세요.",
  102. "help": "인라인 텍스트 간격은 반드시 사용자 정의 스타일시트로 조정 될 수 있어야 합니다."
  103. },
  104. "blink": {
  105. "description": "<blink> 엘리먼트가 사용되지 않도록 하세요.",
  106. "help": "<blink> 엘리먼트는 더 이상 사용되지 않으며 반드시 사용되지 않아야 합니다."
  107. },
  108. "button-name": {
  109. "description": "버튼이 인식 가능한 텍스트를 가지고 있는지 확인하세요.",
  110. "help": "버튼에 반드시 인식 가능한 텍스트가 있어야 합니다."
  111. },
  112. "bypass": {
  113. "description": "각 페이지에 사용자가 내비게이션을 건너뛰고 콘텐츠로 바로 이동할 수 있는 최소 하나의 메커니즘이 있는지 확인하세요.",
  114. "help": "페이지에는 반드시 반복 되는 블럭을 건너 뛸 수 있는 수단이 있어야 합니다."
  115. },
  116. "color-contrast-enhanced": {
  117. "description": "전경색과 배경색 사이의 대비가 WCAG 2 AAA 명암비 기준치를 충족하는지 확인하세요.",
  118. "help": "엘리먼트는 반드시 충분한 명도 대비를 가져야 합니다."
  119. },
  120. "color-contrast": {
  121. "description": "전경색과 배경색 사이의 대비가 WCAG 2 AA 명암비 기준치를 충족하는지 확인하세요.",
  122. "help": "엘리먼트는 반드시 충분한 명도 대비를 가져야 합니다."
  123. },
  124. "css-orientation-lock": {
  125. "description": "콘텐츠가 특정 디스플레이 방향으로 고정되지 않고, 콘텐츠가 모든 디스플레이 방향에서 사용 가능한지 확인하세요.",
  126. "help": "CSS 미디어쿼리가 디스플레이 방향을 고정하기 위해 사용되지 않아야 합니다."
  127. },
  128. "definition-list": {
  129. "description": "<dl> 엘리먼트가 올바르게 구조화되어 있는지 확인하세요.",
  130. "help": "<dl> 엘리먼트는 반드시 올바르게 정렬된 <dt>와 <dd> 그룹, <script>, <template>, <div> 엘리먼트만 바로 포함해야 합니다."
  131. },
  132. "dlitem": {
  133. "description": "<dt>와 <dd> 엘리먼트가 <dl>에 포함되어 있는지 확인하세요.",
  134. "help": "<dt>와 <dd> 엘리먼트는 반드시 <dl>에 포함되어야 합니다."
  135. },
  136. "document-title": {
  137. "description": "각 HTML 문서가 비어 있지 않은 <title> 엘리먼트를 포함하고 있는지 확인하세요.",
  138. "help": "탐색에 도움이 되도록 문서에는 반드시 <title>이 있어야 합니다."
  139. },
  140. "duplicate-id-active": {
  141. "description": "활성 엘리먼트의 모든 id 어트리뷰트 값이 고유한지 확인하세요.",
  142. "help": "활성 엘리먼트의 ID는 반드시 고유해야 합니다."
  143. },
  144. "duplicate-id-aria": {
  145. "description": "ARIA 및 label에 사용된 모든 id 어트리뷰트 값이 고유한지 확인하세요.",
  146. "help": "ARIA 및 label에 사용된 ID는 반드시 고유해야 합니다."
  147. },
  148. "duplicate-id": {
  149. "description": "모든 id 어트리뷰트 값이 고유한지 확인하세요.",
  150. "help": "id 어트리뷰트 값은 반드시 고유해야 합니다."
  151. },
  152. "empty-heading": {
  153. "description": "제목이 인식 가능한 텍스트를 가지고 있는지 확인하세요.",
  154. "help": "제목은 비어있지 않아야 합니다."
  155. },
  156. "empty-table-header": {
  157. "description": "테이블 헤더가 인식 가능한 텍스트를 가지고 있는지 확인하세요.",
  158. "help": "테이블 헤더 텍스트는 반드시 비어있지 않아야 합니다."
  159. },
  160. "focus-order-semantics": {
  161. "description": "초점 순서(focus order)에 있는 엘리먼트가 적절한 역할(role)을 가지고 있는지 확인하세요.",
  162. "help": "초점 순서(focus order)에 있는 엘리먼트는 대화형 콘텐츠(interactive contents)에 적합한 역할(role)이 필요합니다."
  163. },
  164. "form-field-multiple-labels": {
  165. "description": "form 필드가 여러 개의 레이블 엘리먼트를 가지지 않도록 하세요.",
  166. "help": "form 필드는 반드시 여러 개의 레이블 엘리먼트를 가지지 않아야 합니다."
  167. },
  168. "frame-focusable-content": {
  169. "description": "초점을 얻을 수 있는(focusable) 콘텐츠를 가진 <frame>과 <iframe> 엘리먼트에 tabindex=-1이 없게 하세요",
  170. "help": "초점을 얻을 수 있는(focusable) 콘텐츠를 가진 프레임에는 반드시 tabindex=-1 이 없어야 합니다."
  171. },
  172. "frame-tested": {
  173. "description": "<iframe>과 <frame> 엘리먼트가 axe-core 스크립트를 포함하고 있는지 확인하세요.",
  174. "help": "프레임이 axe-core로 테스트되어야 합니다."
  175. },
  176. "frame-title-unique": {
  177. "description": "<iframe>과 <frame> 엘리먼트가 고유한 title 어트리뷰트를 포함하고 있는지 확인하세요.",
  178. "help": "프레임에는 고유한 title 어트리뷰트가 있어야 합니다."
  179. },
  180. "frame-title": {
  181. "description": "<iframe>과 <frame> 엘리먼트가 접근 가능한 이름을 가지고 있는지 확인하세요.",
  182. "help": "프레임에는 반드시 접근 가능한 이름이 있어야 합니다."
  183. },
  184. "heading-order": {
  185. "description": "제목 순서가 의미론적으로 올바른지 확인하세요.",
  186. "help": "제목 수준은 한 단계씩 증가해야만 합니다."
  187. },
  188. "hidden-content": {
  189. "description": "숨겨진 콘텐츠에 대해 사용자에게 알리세요.",
  190. "help": "페이지의 숨겨진 콘텐츠는 분석 될 수 없습니다."
  191. },
  192. "html-has-lang": {
  193. "description": "모든 HTML 문서가 lang 어트리뷰트를 가지고 있는지 확인하세요.",
  194. "help": "<html> 엘리먼트는 반드시 lang 어트리뷰트를 가져야 합니다."
  195. },
  196. "html-lang-valid": {
  197. "description": "<html> 엘리먼트의 lang 어트리뷰트가 유효한 값을 가지고 있는지 확인하세요.",
  198. "help": "<html> 엘리먼트는 반드시 lang 어트리뷰트에 유효한 값을 가져야 합니다."
  199. },
  200. "html-xml-lang-mismatch": {
  201. "description": "유효한 lang과 xml:lang 어트리뷰트를 가진 HTML 엘리먼트가 페이지의 기본 언어와 일치하는지 확인하세요.",
  202. "help": "lang과 xml:lang을 가진 HTML 엘리먼트는 반드시 동일한 기본 언어를 가져야 합니다."
  203. },
  204. "identical-links-same-purpose": {
  205. "description": "동일한 접근 가능한 이름을 가지는 링크가 비슷한 용도로 제공되고 있는지 확인하세요.",
  206. "help": "동일한 이름을 가진 링크는 비슷한 용도를 가집니다."
  207. },
  208. "image-alt": {
  209. "description": "<img> 엘리먼트가 대체텍스트를 가지고 있거나 none 또는 presentation 역할(role)을 가지고 있는지 확인하세요.",
  210. "help": "이미지는 반드시 대체텍스트를 가져야 합니다."
  211. },
  212. "image-redundant-alt": {
  213. "description": "이미지 대체텍스트가 텍스트와 반복되지 않도록 하세요.",
  214. "help": "이미지의 대체텍스트는 텍스트와 반복되지 않아야 합니다."
  215. },
  216. "input-button-name": {
  217. "description": "입력 버튼이 인식 가능한 텍스트를 가지고 있는지 확인하세요.",
  218. "help": "입력 버튼은 반드시 인식 가능한 텍스트를 가져야 합니다."
  219. },
  220. "input-image-alt": {
  221. "description": "<input type=\"image\"> 엘리먼트가 대체텍스트를 가지고 있는지 확인하세요.",
  222. "help": "이미지 버튼은 반드시 대체텍스트를 가져야 합니다."
  223. },
  224. "label-content-name-mismatch": {
  225. "description": "콘텐츠로부터 레이블이 지정되는 엘리먼트가 접근 가능한 이름의 일부로 눈에 보이는 텍스트를 반드시 가지도록 하세요.",
  226. "help": "엘리먼트는 반드시 접근 가능한 이름의 일부로 눈에 보이는 텍스트를 가져야 합니다."
  227. },
  228. "label-title-only": {
  229. "description": "모든 form 엘리먼트가 title이나 aria-describedby 어트리뷰트를 단독으로 사용하여 레이블이 지정되지 않도록 하세요.",
  230. "help": "form 엘리먼트는 눈에 보이는 레이블을 가져야 합니다."
  231. },
  232. "label": {
  233. "description": "모든 form 엘리먼트가 레이블을 가지고 있는지 확인하세요.",
  234. "help": "form 엘리먼트는 반드시 레이블을 가져야 합니다."
  235. },
  236. "landmark-banner-is-top-level": {
  237. "description": "banner 랜드마크가 최상위 레벨에 있는지 확인하세요.",
  238. "help": "banner 랜드마크는 다른 랜드마크 안에 포함되지 않아야 합니다."
  239. },
  240. "landmark-complementary-is-top-level": {
  241. "description": "complementary나 aside 랜드마크가 최상위 레벨에 있는지 확인하세요.",
  242. "help": "aside는 다른 랜드마크 안에 포함되지 않아야 합니다."
  243. },
  244. "landmark-contentinfo-is-top-level": {
  245. "description": "contentinfo 랜드마크가 최상위 레벨에 있는지 확인하세요.",
  246. "help": "contentinfo 랜드마크는 다른 랜드마크 안에 포함되지 않아야 합니다."
  247. },
  248. "landmark-main-is-top-level": {
  249. "description": "main 랜드마크가 최상위 레벨에 있는지 확인하세요.",
  250. "help": "main 랜드마크는 다른 랜드마크 안에 포함되지 않아야 합니다."
  251. },
  252. "landmark-no-duplicate-banner": {
  253. "description": "문서가 최대 하나의 banner 랜드마크를 가지고 있는지 확인하세요.",
  254. "help": "문서는 하나를 초과하는 banner 랜드마크를 가지지 않아야 합니다."
  255. },
  256. "landmark-no-duplicate-contentinfo": {
  257. "description": "문서가 최대 하나의 contentinfo 랜드마크를 가지고 있는지 확인하세요.",
  258. "help": "문서는 하나를 초과하는 contentinfo 랜드마크를 가지지 않아야 합니다."
  259. },
  260. "landmark-no-duplicate-main": {
  261. "description": "문서가 최대 하나의 main 랜드마크를 가지고 있는지 확인하세요.",
  262. "help": "문서는 하나를 초과하는 main 랜드마크를 가지지 않아야 합니다."
  263. },
  264. "landmark-one-main": {
  265. "description": "문서가 main 랜드마크를 가지고 있는지 확인하세요,",
  266. "help": "문서는 하나의 main 랜드마크를 가져야 합니다."
  267. },
  268. "landmark-unique": {
  269. "help": "랜드마크가 고유한지 확인하세요.",
  270. "description": "랜드마크는 고유한 역할(role) 또는 역할(role)/레이블/제목 조합(즉, 접근 가능한 이름)을 가져야 합니다."
  271. },
  272. "link-in-text-block": {
  273. "description": "링크가 색상에 의존하지 않고 구별 될 수 있어야 합니다.",
  274. "help": "링크는 반드시 색상에 의존하지 않는 방식으로 주변 텍스트로부터 구별되어야 합니다."
  275. },
  276. "link-name": {
  277. "description": "링크가 인식 가능한 텍스트를 가지고 있는지 확인하세요.",
  278. "help": "링크는 반드시 인식 가능한 텍스트를 가져야 합니다."
  279. },
  280. "list": {
  281. "description": "목록이 올바르게 구조화되어 있는지 확인하세요.",
  282. "help": "<ul>과 <ol>은 반드시 <li>, <script> 또는 <template> 엘리먼트만을 바로 포함해야 합니다."
  283. },
  284. "listitem": {
  285. "description": "<li> 엘리먼트가 의미론적으로 사용되었는지 확인하세요.",
  286. "help": "<li> 엘리먼트는 반드시 <ul>이나 <ol>에 포함되어야 합니다."
  287. },
  288. "marquee": {
  289. "description": "<marquee> 엘리먼트가 사용되지 않도록 하세요.",
  290. "help": "<marquee> 엘리먼트는 더 이상 사용되지 않으며 반드시 사용되지 않아야 합니다."
  291. },
  292. "meta-refresh": {
  293. "description": "<meta http-equiv=\"refresh\">가 사용되지 않도록 하세요.",
  294. "help": "시간 제한 새로고침은 존재하지 않아야 합니다."
  295. },
  296. "meta-viewport-large": {
  297. "description": "<meta name=\"viewport\">가 크기를 조정할 수 있는지 확인하세요.",
  298. "help": "사용자는 텍스트를 최대 500%까지 확대/축소 또는 크기를 조정할 수 있어야 합니다."
  299. },
  300. "meta-viewport": {
  301. "description": "<meta name=\"viewport\">가 텍스트 크기 조절 및 확대/축소를 비활성화되지 않게 하세요.",
  302. "help": "확대/축소 및 크기 조정은 비활성화되지 않아야 합니다."
  303. },
  304. "nested-interactive": {
  305. "description": "중첩된 대화형 컨트롤은 스크린리더에 의해 낭독되지 않습니다.",
  306. "help": "대화형 컨트롤이 중첩되지 않게 하세요."
  307. },
  308. "no-autoplay-audio": {
  309. "description": "<video>나 <audio> 엘리먼트가 중지 시키거나 오디오를 음소거하는 제어 메커니즘 없이 3초를 초과하여 오디오를 자동 재생하지 않게 하세요.",
  310. "help": "<video>나 <audio> 엘리먼트는 오디오를 자동 재생하지 않아야 합니다."
  311. },
  312. "object-alt": {
  313. "description": "<object> 엘리먼트가 대체텍스트를 가지고 있는지 확인하세요.",
  314. "help": "<object> 엘리먼트는 반드시 대체텍스트를 가져야 합니다."
  315. },
  316. "p-as-heading": {
  317. "description": "p 엘리먼트를 스타일링하여 제목으로 사용되지 않도록 하세요.",
  318. "help": "굵은 텍스트, 기울임 꼴, 글꼴 크기를 p 엘리먼트를 제목으로 스타일링하는데 사용하지 않아야 합니다."
  319. },
  320. "page-has-heading-one": {
  321. "description": "페이지 또는 프레임 중 최소 하나의 프레임이 1 레벨 제목을 포함하고 있는지 확인하세요.",
  322. "help": "페이지는 1 레벨 제목을 포함해야 합니다."
  323. },
  324. "presentation-role-conflict": {
  325. "description": "역할(role)이 none이거나 presentation이고 역할(role) 충돌 해결이 필요한 엘리먼트를 표시해 두세요.",
  326. "help": "none이나 presentation 역할(role) 엘리먼트가 표시되어야 합니다."
  327. },
  328. "region": {
  329. "description": "모든 페이지 콘텐츠가 랜드마크에 포함되어 있는지 확인하세요.",
  330. "help": "모든 페이지 콘텐츠는 랜드마크에 포함되어야 합니다."
  331. },
  332. "role-img-alt": {
  333. "description": "[role='img'] 엘리먼트가 대체텍스트를 가지고 있는지 확인하세요.",
  334. "help": "[role='img'] 엘리먼트는 대체텍스트를 가저야 합니다."
  335. },
  336. "scope-attr-valid": {
  337. "description": "scope 어트리뷰트가 테이블에 올바르게 사용되고 있는지 확인하세요.",
  338. "help": "scope 어트리뷰트는 올바르게 사용되어야 합니다."
  339. },
  340. "scrollable-region-focusable": {
  341. "description": "스크롤 가능한 콘텐츠를 가진 엘리먼트는 반드시 키보드로 접근 가능해야 합니다.",
  342. "help": "스크롤 가능한 영역이 키보드 접근을 가져야 합니다."
  343. },
  344. "select-name": {
  345. "description": "select 엘리먼트가 접근 가능한 이름을 가지고 있는지 확인하세요.",
  346. "help": "select 엘리먼트는 반드시 접근 가능한 이름을 가져야 합니다."
  347. },
  348. "server-side-image-map": {
  349. "description": "서버 사이드 이미지 맵이 사용되지 않도록 하세요.",
  350. "help": "서버 사이드 이미지 맵은 반드시 사용되지 않아야 합니다."
  351. },
  352. "skip-link": {
  353. "description": "모든 건너뛰기 링크가 초점을 얻을 수 있는(focusable) 대상을 가지는지 확인하세요.",
  354. "help": "건너뛰기 링크 대상이 존재하고 초점을 얻을 수 있어야(focusable) 합니다."
  355. },
  356. "svg-img-alt": {
  357. "description": "이미지, 그래픽 문서, 그래픽 심볼 역할(role)을 가진 svg 엘리먼트가 접근 가능한 텍스트를 가지고 있는지 확인하세요.",
  358. "help": "img 역할(role)을 가진 svg 엘리먼트는 접근 가능한 텍스트를 가져야 합니다."
  359. },
  360. "tabindex": {
  361. "description": "tabindex 어트리뷰트 값이 0보다 크지 않게 하세요.",
  362. "help": "엘리먼트는 0보다 큰 tabindex를 가지지 않아야 합니다."
  363. },
  364. "table-duplicate-name": {
  365. "description": "테이블이 동일한 summary와 caption을 가지지 않게 하세요.",
  366. "help": "<caption> 엘리먼트는 summary 어트리뷰트와 동일한 텍스트를 포함하지 않아야 합니다."
  367. },
  368. "table-fake-caption": {
  369. "description": "캡션이 있는 테이블이 <caption> 엘리먼트를 사용하고 있는지 확인하세요.",
  370. "help": "데이터 테이블에 캡션을 제공하는데 데이터 셀이나 헤더 셀이 반드시 사용되지 않아야 합니다."
  371. },
  372. "td-has-header": {
  373. "description": "큰 테이블의 비어 있지 않은 각 데이터 셀이 하나 또는 그 이상의 테이블 헤더를 가지고 있는지 확인하세요.",
  374. "help": "3x3보다 큰 테이블에서 모든 비어있지 않은 td 엘리먼트는 반드시 연관된 테이블 헤더를 가져야 합니다."
  375. },
  376. "td-headers-attr": {
  377. "description": "headers를 사용하는 테이블의 각 셀이 그 테이블의 다른 셀을 참조하고 있는지 확인하세요.",
  378. "help": "headers 어트리뷰트를 사용하는 table 엘리먼트의 모든 셀은 반드시 그 동일한 테이블의 다른 셀만 참조해야 합니다."
  379. },
  380. "th-has-data-cells": {
  381. "description": "데이터 테이블의 각 테이블 헤더가 데이터 셀을 참조하고 있는지 확인하세요.",
  382. "help": "모든 th 엘리먼트와 role=columnheader/rowheader를 가진 엘리먼트는 반드시 그것들이 설명하는 데이터 셀을 가져야 합니다."
  383. },
  384. "valid-lang": {
  385. "description": "lang 어트리뷰트가 유효한 값을 가지고 있는지 확인하세요.",
  386. "help": "lang 어트리뷰트는 반드시 유효한 값을 가져야 합니다."
  387. },
  388. "video-caption": {
  389. "description": "<video> 엘리먼트가 캡션(자막)을 가지고 있는지 확인하세요.",
  390. "help": "<video> 엘리먼트는 반드시 캡션(자막)을 가져야 합니다."
  391. }
  392. },
  393. "checks": {
  394. "abstractrole": {
  395. "pass": "abstract 역할(role)이 사용되지 않았습니다.",
  396. "fail": {
  397. "singular": "abstract 역할(role)은 직접 사용될 수 없습니다: ${data.values}",
  398. "plural": "abstract 역할(role)들은 직접 사용될 수 없습니다: ${data.values}"
  399. }
  400. },
  401. "aria-allowed-attr": {
  402. "pass": "ARIA 어트리뷰트가 정의된 역할(role)에 대해 올바르게 사용되었습니다.",
  403. "fail": {
  404. "singular": "ARIA 어트리뷰트가 허용되지 않았습니다: ${data.values}",
  405. "plural": "ARIA 어트리뷰트들이 허용되지 않았습니다: ${data.values}"
  406. },
  407. "incomplete": "이 엘리먼트에 ARIA 어트리뷰트가 무시되어도 문제가 없는지 확안하세요: ${data.values}"
  408. },
  409. "aria-allowed-role": {
  410. "pass": "ARIA 역할(role)이 주어진 엘리먼트에 허용되었습니다.",
  411. "fail": {
  412. "singular": "ARIA 역할(role) ${data.values}이(가) 주어진 엘리먼트에 허용되지 않았습니다.",
  413. "plural": "ARIA 역할(role)들 ${data.values}이(가) 주어진 엘리먼트에 허용되지 않았습니다."
  414. },
  415. "incomplete": {
  416. "singular": "엘리먼트에 허용되지 않았기 때문에, 엘리먼트가 노출 될 때 ARIA 역할(role) ${data.values}이(가) 반드시 제거되어야 합니다.",
  417. "plural": "엘리먼트에 허용되지 않았기 때문에, 엘리먼트가 노출 될 때 ARIA 역할(role)들 ${data.values}이(가) 반드시 제거되어야 합니다."
  418. }
  419. },
  420. "aria-errormessage": {
  421. "pass": "aria-errormessage가 존재하고, 지원된 aria-errormessage 기법을 사용하는 스크린리더에 노출되는 엘리먼트를 참조합니다.",
  422. "fail": {
  423. "singular": "aria-errormessage 값 `${data.values}`은(는) 반드시 메세지를 낭독하기 위한 기법을 (예를 들어, aria-live, aria-describedby, role=alert 등) 사용해야 합니다.",
  424. "plural": "aria-errormessage 값들 `${data.values}`은(는) 반드시 메세지를 낭독하기 위한 기법을 (예를 들어, aria-live, aria-describedby, role=alert 등) 사용해야 합니다.",
  425. "hidden": "aria-errormessage 값 `${data.values}`은(는) 숨겨진 엘리먼트를 참조할 수 없습니다."
  426. },
  427. "incomplete": {
  428. "singular": "aria-errormessage 값 `${data.values}`이(가) 기존 엘리먼트를 참조하는지 확인하세요.",
  429. "plural": "aria-errormessage 값들 `${data.values}`이(가) 기존 엘리먼트를 참조하는지 확인하세요.",
  430. "idrefs": "aria-errormessage 엘리먼트가 페이지에 존재하는지 확인할 수 없습니다: ${data.values}"
  431. }
  432. },
  433. "aria-hidden-body": {
  434. "pass": "문서 body에 aria-hidden 어트리뷰트가 없습니다.",
  435. "fail": "문서 body에 aria-hidden=true가 없어야 합니다."
  436. },
  437. "aria-level": {
  438. "pass": "aria-level 값이 유효합니다.",
  439. "incomplete": "6보다 큰 aria-level 값은 모든 스크린리더와 브라우저 조합에서 지원되지 않습니다."
  440. },
  441. "aria-prohibited-attr": {
  442. "pass": "ARIA 어트리뷰트가 혀용되었습니다.",
  443. "fail": {
  444. "hasRolePlural": "${data.prohibited} 어트리뷰트는 \"${data.role}\" 역할(role)과 함께 사용될 수 없습니다.",
  445. "hasRoleSingular": "${data.prohibited} 어트리뷰트는 \"${data.role}\" 역할(role)과 함께 사용될 수 없습니다.",
  446. "noRolePlural": "${data.prohibited} 어트리뷰트는 유효하지 않은 역할(role)을 가진 ${data.nodeName}에 사용될 수 없습니다.",
  447. "noRoleSingular": "${data.prohibited} 어트리뷰트는 유효하지 않은 역할(role)을 가진 ${data.nodeName}에 사용될 수 없습니다."
  448. },
  449. "incomplete": {
  450. "hasRoleSingular": "${data.prohibited} 어트리뷰트는 \"${data.role}\" 역할(role)에서 제대로 지원되지 않습니다.",
  451. "hasRolePlural": "${data.prohibited} 어트리뷰트는 \"${data.role}\" 역할(role)에서 제대로 지원되지 않습니다.",
  452. "noRoleSingular": "${data.prohibited} 어트리뷰트는 유효한 역할(role) 어트리뷰트가 없는 ${data.nodeName}에서는 제대로 지원되지 않습니다.",
  453. "noRolePlural": "${data.prohibited} 어트리뷰트는 유효한 역할(role) 어트리뷰트가 없는 ${data.nodeName}에서는 제대로 지원되지 않습니다."
  454. }
  455. },
  456. "aria-required-attr": {
  457. "pass": "모든 필수 ARIA 어트리뷰트가 존재합니다.",
  458. "fail": {
  459. "singular": "필수 ARIA 어트리뷰트가 없습니다: ${data.values}",
  460. "plural": "필수 ARIA 어트리뷰트들이 없습니다: ${data.values}"
  461. }
  462. },
  463. "aria-required-children": {
  464. "pass": "필수 ARIA 하위 항목들이 존재합니다.",
  465. "fail": {
  466. "singular": "필수 ARIA 하위 역할(role)이 없습니다: ${data.values}",
  467. "plural": "필수 ARIA 하위 역할(role)들이 없습니다: ${data.values}"
  468. },
  469. "incomplete": {
  470. "singular": "추가 될 예상 ARIA 하위 역할(role): ${data.values}",
  471. "plural": "추가 될 예상 ARIA 하위 역할(role)들: ${data.values}"
  472. }
  473. },
  474. "aria-required-parent": {
  475. "pass": "필수 ARIA 상위 역할(role)이 존재합니다.",
  476. "fail": {
  477. "singular": "필수 ARIA 상위 역할(role)이 없습니다: ${data.values}",
  478. "plural": "필수 ARIA 상위 역할(role)들이 없습니다: ${data.values}"
  479. }
  480. },
  481. "aria-roledescription": {
  482. "pass": "aria-roledescription이 지원되는 의미론적 역할(role)에 사용되었습니다.",
  483. "incomplete": "지원되는 스크린리더에서 aria-roledescription이 낭독되는지 검사하세요.",
  484. "fail": "엘리먼트에 aria-roledescription을 지원하는 역할(role)을 제공되지 않았습니다."
  485. },
  486. "aria-unsupported-attr": {
  487. "pass": "ARIA 어트리뷰트가 지원됩니다.",
  488. "fail": "ARIA 어트리뷰트가 스크린리더와 보조기술에서 널리 지원되지 않습니다: ${data.values}"
  489. },
  490. "aria-valid-attr-value": {
  491. "pass": "ARIA 어트리뷰트 값이 유효합니다.",
  492. "fail": {
  493. "singular": "유효하지 않은 ARIA 어트리뷰트 값: ${data.values}",
  494. "plural": "유효하지 않은 ARIA 어트리뷰트 값들: ${data.values}"
  495. },
  496. "incomplete": {
  497. "noId": "ARIA 어트리뷰트 엘리먼트 ID가 페이지에 없습니다: ${data.needsReview}",
  498. "ariaCurrent": "ARIA 어트리뷰트 값이 유효하지 않으며 \"aria-current=true\"로 취급 될 것입니다: ${data.needsReview}",
  499. "idrefs": "페이지에 ARIA 어트리뷰트 엘리먼트 ID가 존재하는지 확인할 수 없습니다: ${data.needsReview}"
  500. }
  501. },
  502. "aria-valid-attr": {
  503. "pass": "ARIA 어트리뷰트 이름이 유효합니다.",
  504. "fail": {
  505. "singular": "유효하지 않은 ARIA 어트리뷰트 이름: ${data.values}",
  506. "plural": "유효하지 않은 ARIA 어트리뷰트 이름들: ${data.values}"
  507. }
  508. },
  509. "deprecatedrole": {
  510. "pass": "ARIA 역할(role)은 용도 폐기(deprecated) 되지 않았습니다.",
  511. "fail": "사용된 역할(role)은 용도 폐기(deprecated) 되었습니다: ${data.values}"
  512. },
  513. "fallbackrole": {
  514. "pass": "하나의 역할(role) 값만 사용되었습니다.",
  515. "fail": "폴백 역할(role)들은 구형 브라우저들에서 지원되지 않으므로, 단 하나의 값만 사용해야 합니다.",
  516. "incomplete": "'presentation'이나 'none' 역할(role)만 사용하세요, 둘은 동의어입니다."
  517. },
  518. "has-global-aria-attribute": {
  519. "pass": {
  520. "singular": "엘리먼트가 전역 ARIA 어트리뷰트를 가지고 있습니다: ${data.values}",
  521. "plural": "엘리먼트가 전역 ARIA 어트리뷰트들을 가지고 있습니다: ${data.values}"
  522. },
  523. "fail": "엘리먼트가 전역 ARIA 어트리뷰트를 가지고 있지 않습니다."
  524. },
  525. "has-widget-role": {
  526. "pass": "엘리먼트가 위젯 역할(role)을 가지고 있습니다.",
  527. "fail": "엘리먼트가 위젯 역할(role)을 가지고 있지 않습니다."
  528. },
  529. "invalidrole": {
  530. "pass": "ARIA 역할(role)이 유효합니다.",
  531. "fail": {
  532. "singular": "역할(role)은 반드시 유효한 ARIA 역할(role)들 중 하나여야 합니다: ${data.values}",
  533. "plural": "역할(role)들은 반드시 유효한 ARIA 역할(role)들 중 하나여야 합니다: ${data.values}"
  534. }
  535. },
  536. "is-element-focusable": {
  537. "pass": "엘리먼트가 초점을 얻을 수 있습니다(focusable).",
  538. "fail": "엘리먼트가 초점을 얻을 수 없습니다(not focusable)."
  539. },
  540. "no-implicit-explicit-label": {
  541. "pass": "<label>과 접근 가능한 이름이 일치합니다.",
  542. "incomplete": "<label>이 ARIA ${data} 필드의 이름의 일부일 필요가 없는지 확인하세요."
  543. },
  544. "unsupportedrole": {
  545. "pass": "ARIA 역할(role)이 지원됩니다.",
  546. "fail": "사용된 역할(role)이 스크린리더와 보조기술에서 널리 지원되지 않습니다: ${data.values}"
  547. },
  548. "valid-scrollable-semantics": {
  549. "pass": "엘리먼트가 초점 순서(focus order)의 엘리먼트에 유효한 의미론을 가집니다.",
  550. "fail": "엘리먼트가 초점 순서(focus order)의 엘리먼트에 유효하지 않은 의미론을 가집니다."
  551. },
  552. "color-contrast-enhanced": {
  553. "pass": "엘리먼트가 ${data.contrastRatio}의 충분한 명도 대비를 가집니다.",
  554. "fail": {
  555. "default": "엘리먼트가 ${data.contrastRatio} (전경색: ${data.fgColor}, 배경색: ${data.bgColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight})의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}",
  556. "fgOnShadowColor": "엘리먼트가 전경색과 그림자 색상 (전경색: ${data.fgColor}, 텍스트 그림자 색상: ${data.shadowColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight}) 사이에 ${data.contrastRatio}의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}",
  557. "shadowOnBgColor": "엘리먼트가 그림자 색상과 배경색 (텍스트 그림자 색상: ${data.shadowColor}, 배경색: ${data.bgColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight}) 사이에 ${data.contrastRatio}의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}"
  558. },
  559. "incomplete": {
  560. "default": "명암비를 확인할 수 없습니다.",
  561. "bgImage": "배경 이미지로 인해 엘리먼트의 배경색이 확인될 수 없습니다.",
  562. "bgGradient": "배경 그라데이션으로 인해 엘리먼트의 배경색이 확인될 수 없습니다.",
  563. "imgNode": "엘리먼트가 이미지 노드를 포함하기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
  564. "bgOverlap": "다른 엘리먼트로 겹쳐 있기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
  565. "fgAlpha": "알파 투명도 때문에 엘리먼트의 전경색이 확인될 수 없습니다.",
  566. "elmPartiallyObscured": "다른 엘리먼트에 의해 부분적으로 가려 있기 때문에 배경색이 확인될 수 없습니다.",
  567. "elmPartiallyObscuring": "다른 엘리먼트에 의해 부분적으로 겹쳐 있기 때문에 배경색이 확인될 수 없습니다.",
  568. "outsideViewport": "엘리먼트가 뷰포트 밖에 있기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
  569. "equalRatio": "엘리먼트가 배경색과 1:1의 명암비를 가집니다.",
  570. "shortTextContent": "엘리먼트 콘텐츠가 너무 짧아 실제 텍스트 콘텐츠인지 확인될 수 없습니다.",
  571. "nonBmp": "엘리먼트 콘텐츠가 비텍스트 문자만 포함합니다.",
  572. "pseudoContent": "가상 엘리먼트로 인해 엘리먼트의 배경색이 확인될 수 없습니다."
  573. }
  574. },
  575. "color-contrast": {
  576. "pass": "엘리먼트가 ${data.contrastRatio}의 충분한 명도 대비를 가집니다.",
  577. "fail": {
  578. "default": "엘리먼트가 ${data.contrastRatio} (전경색: ${data.fgColor}, 배경색: ${data.bgColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight})의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}",
  579. "fgOnShadowColor": "엘리먼트가 전경색과 그림자 색상 (전경색: ${data.fgColor}, 텍스트 그림자 색상: ${data.shadowColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight}) 사이에 ${data.contrastRatio}의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}",
  580. "shadowOnBgColor": "엘리먼트가 그림자 색상과 배경색 (텍스트 그림자 색상: ${data.shadowColor}, 배경색: ${data.bgColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight}) 사이에 ${data.contrastRatio}의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}"
  581. },
  582. "incomplete": {
  583. "default": "명암비를 확인할 수 없습니다.",
  584. "bgImage": "배경 이미지로 인해 엘리먼트의 배경색이 확인될 수 없습니다.",
  585. "bgGradient": "배경 그라데이션으로 인해 엘리먼트의 배경색이 확인될 수 없습니다.",
  586. "imgNode": "엘리먼트가 이미지 노드를 포함하기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
  587. "bgOverlap": "다른 엘리먼트로 겹쳐 있기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
  588. "fgAlpha": "알파 투명도 때문에 엘리먼트의 전경색이 확인될 수 없습니다.",
  589. "elmPartiallyObscured": "다른 엘리먼트에 의해 부분적으로 가려 있기 때문에 배경색이 확인될 수 없습니다.",
  590. "elmPartiallyObscuring": "다른 엘리먼트에 의해 부분적으로 겹쳐 있기 때문에 배경색이 확인될 수 없습니다.",
  591. "outsideViewport": "엘리먼트가 뷰포트 밖에 있기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
  592. "equalRatio": "엘리먼트가 배경색과 1:1의 명암비를 가집니다.",
  593. "shortTextContent": "엘리먼트 콘텐츠가 너무 짧아 실제 텍스트 콘텐츠인지 확인될 수 없습니다.",
  594. "nonBmp": "엘리먼트 콘텐츠가 비텍스트 문자만 포함합니다.",
  595. "pseudoContent": "가상 엘리먼트로 인해 엘리먼트의 배경색이 확인될 수 없습니다."
  596. }
  597. },
  598. "link-in-text-block": {
  599. "pass": "링크가 색상 외 다른 방법으로 주변 텍스트와 구별 될 수 있습니다.",
  600. "fail": "링크가 색상 외 다른 방법으로 주변 텍스트와 구별 될 필요가 있습니다.",
  601. "incomplete": {
  602. "default": "명암비를 확인할 수 없습니다.",
  603. "bgContrast": "엘리먼트의 명암비가 확인될 수 없습니다. 뚜렷이 구별되는 hover/focus 스타일을 확인하세요.",
  604. "bgImage": "'배경 이미지로 인해 엘리먼트의 명암비가 확인될 수 없습니다.",
  605. "bgGradient": "배경 그라데이션으로 인해 엘리먼트의 명암비가 확인될 수 없습니다.",
  606. "imgNode": "엘리먼트가 이미지 노드를 포함하기 때문에 엘리먼트의 명암비가 확인될 수 없습니다.",
  607. "bgOverlap": "엘리먼트 겹침으로 인해 엘리먼트의 명암비가 확인될 수 없습니다."
  608. }
  609. },
  610. "autocomplete-appropriate": {
  611. "pass": "autocomplete 값이 적절한 엘리먼트에 있습니다",
  612. "fail": "autocomplete 값은 이 유형의 입력에는 적절하지 않습니다."
  613. },
  614. "autocomplete-valid": {
  615. "pass": "autocomplete 어트리뷰트가 올바르게 구성되었습니다.",
  616. "fail": "autocomplete 어트리뷰트가 올바르지 않게 구성되었습니다."
  617. },
  618. "accesskeys": {
  619. "pass": "accesskey 어트리뷰트 값이 고유합니다.",
  620. "fail": "문서에 동일한 accesskey를 가진 여러 엘리먼트가 있습니다."
  621. },
  622. "focusable-content": {
  623. "pass": "엘리먼트가 초점을 얻을 수 있는(focusable) 엘리먼트를 포함합니다.",
  624. "fail": "엘리먼트가 초점을 얻을 수 있는(focusable) 콘텐츠를 가져야 합니다."
  625. },
  626. "focusable-disabled": {
  627. "pass": "엘리먼트 안에 초점을 얻을 수 있는(focusable) 엘리먼트가 없습니다.",
  628. "fail": "초점을 얻을 수 있는(focusable) 콘텐츠는 비활성 되거나 DOM에서 제거되어야 합니다."
  629. },
  630. "focusable-element": {
  631. "pass": "엘리먼트가 초점을 얻을 수 있습니다(focusable).",
  632. "fail": "엘리먼트가 초점을 얻을 수 있어야(focusable) 합니다."
  633. },
  634. "focusable-modal-open": {
  635. "pass": "modal이 열려 있는 동안 초점을 얻을 수 있는(focusable) 엘리먼트가 없습니다.",
  636. "incomplete": "현재 상태에서 초점을 얻을 수 있는(focusable) 엘리먼트가 키보드로 초점을 얻을 수(tabbable) 없는지 확인하세요"
  637. },
  638. "focusable-no-name": {
  639. "pass": "엘리먼트가 탭 순서(tab order)에 없거나 접근 가능한 텍스트를 가지고 있습니다.",
  640. "fail": "엘리먼트가 탭 순서(tab order)에 있지만 접근 가능한 텍스트를 가지고 있지 않습니다.",
  641. "incomplete": "엘리먼트가 접근 가능한 이름을 가지고 있는지 확인할 수 없습니다."
  642. },
  643. "focusable-not-tabbable": {
  644. "pass": "엘리먼트 안에 초점을 얻을 수 있는(focusable) 엘리먼트가 없습니다.",
  645. "fail": "초점을 얻을 수 있는(focusable) 콘텐츠는 tabindex='-1'을 가지거나 DOM에서 제거되어야 합니다."
  646. },
  647. "frame-focusable-content": {
  648. "pass": "엘리먼트에 초점을 얻을 수 있는(focusable) 후손 항목이 없습니다.",
  649. "fail": "엘리먼트에 초점을 얻을 수 있는(focusable) 후손 항목이 있습니다.",
  650. "incomplete": "엘리먼트에 후손 항목이 있는지 확인할 수 없습니다."
  651. },
  652. "landmark-is-top-level": {
  653. "pass": "${data.role} 랜드마크가 최상위에 있습니다.",
  654. "fail": "${data.role} 랜드마크가 다른 랜드마크에 포함되어 있습니다."
  655. },
  656. "no-focusable-content": {
  657. "pass": "엘리먼트에 초점을 얻을 수 있는(focusable) 후손 항목이 없습니다.",
  658. "fail": {
  659. "default": "엘리먼트에 초점을 얻을 수 있는(focusable) 후손 항목이 있습니다.",
  660. "notHidden": "대화형 컨트롤 내부의 엘리먼트에 음수 tabindex를 사용하는 것은 ('aria-hidden=true'인 경우에도) 보조기술에서 엘리먼트가 초점을 얻는 것을 막지 않습니다."
  661. },
  662. "incomplete": "엘리먼트에 후손 항목이 있는지 확인할 수 없습니다."
  663. },
  664. "page-has-heading-one": {
  665. "pass": "페이지가 최소 한 개의 1 레벨 제목을 가지고 있습니다.",
  666. "fail": "페이지가 반드시 1 레벨 제목을 가져야 합니다."
  667. },
  668. "page-has-main": {
  669. "pass": "문서에 최소 하나의 main 랜드마크가 있습니다.",
  670. "fail": "문서에 main 랜드마크가 없습니다."
  671. },
  672. "page-no-duplicate-banner": {
  673. "pass": "문서가 banner 랜드마크를 하나를 초과하여 가지고 있지 않습니다.",
  674. "fail": "문서가 banner 랜드마크를 하나를 초과하여 가지고 있습니다."
  675. },
  676. "page-no-duplicate-contentinfo": {
  677. "pass": "문서가 contentinfo 랜드마크를 하나를 초과하여 가지고 있지 않습니다.",
  678. "fail": "문서가 contentinfo 랜드마크를 하나를 초과하여 가지고 있습니다."
  679. },
  680. "page-no-duplicate-main": {
  681. "pass": "문서가 main 랜드마크를 하나를 초과하여 가지고 있지 않습니다.",
  682. "fail": "문서가 main 랜드마크를 하나를 초과하여 가지고 있습니다."
  683. },
  684. "tabindex": {
  685. "pass": "엘리먼트가 0보다 큰 tabindex를 가지고 있지 않습니다.",
  686. "fail": "엘리먼트가 0보다 큰 tabindex를 가지고 있습니다."
  687. },
  688. "alt-space-value": {
  689. "pass": "엘리먼트가 유효한 alt 어트리뷰트 값을 가지고 있습니다.",
  690. "fail": "엘리먼트가 공백 문자만으로 구성 되는 alt 어트리뷰트를 가지고 있고, 이는 모든 스크린리더가 무시하지 않습니다."
  691. },
  692. "duplicate-img-label": {
  693. "pass": "엘리먼트가 <img> alt 텍스트에 기존 텍스트를 중복하지 않습니다.",
  694. "fail": "엘리먼트가 기존 텍스트와 중복되는 alt 텍스트를 가진 <img> 엘리먼트를 포함합니다."
  695. },
  696. "explicit-label": {
  697. "pass": "form 엘리먼트가 명시적인 <label>을 가지고 있습니다.",
  698. "fail": "form 엘리먼트에 명시적인 <label>이 없습니다.",
  699. "incomplete": "form 엘리먼트가 명시적인 <label>을 가지고 있는지 확인할 수 없습니다."
  700. },
  701. "help-same-as-label": {
  702. "pass": "도움말 텍스트(title이나 aria-describedby)가 레이블 텍스트를 중복하지 않습니다.",
  703. "fail": "도움말 텍스트(title이나 aria-describedby)가 레이블 텍스트와 동일합니다."
  704. },
  705. "hidden-explicit-label": {
  706. "pass": "form 엘리먼트가 눈에 보이는 명시적인 <label>을 가집니다.",
  707. "fail": "form 엘리먼트가 숨겨진 명시적인 <label>을 가집니다.",
  708. "incomplete": "form 엘리먼트가 숨겨진 명시적인 <label>을 가지는지 확인할 수 없습니다."
  709. },
  710. "implicit-label": {
  711. "pass": "form 엘리먼트가 암묵적인(감싸는) <label>을 가집니다.",
  712. "fail": "form 엘리먼트에 암묵적인(감싸는) <label>이 없습니다.",
  713. "incomplete": "form 엘리먼트가 암묵적인(감싸는) <label>을 가지는지 확인할 수 없습니다."
  714. },
  715. "label-content-name-mismatch": {
  716. "pass": "엘리먼트가 접근 가능한 이름의 일부로 눈에 보이는 텍스트를 포함하고 있습니다.",
  717. "fail": "엘리먼트 내부 텍스트가 접근 가능한 이름에 포함되어 있지 않습니다."
  718. },
  719. "multiple-label": {
  720. "pass": "form 필드가 여러 레이블 엘리먼트를 가지고 있지 않습니다.",
  721. "incomplete": "여러 레이블 엘리먼트는 보조기술에서 널리 지원되지 않습니다. 첫 번째 레이블이 모든 필요한 정보를 포함하는지 확인하세요."
  722. },
  723. "title-only": {
  724. "pass": "form 엘리먼트가 레이블을 위해 title 어트리뷰트만 단독으로 사용하지 않습니다.",
  725. "fail": "form 엘리먼트의 레이블을 생성하는데 title만 사용되었습니다."
  726. },
  727. "landmark-is-unique": {
  728. "pass": "랜드마크는 반드시 고유한 역할(role)이나 role/label/title 조합(즉, 접근 가능한 이름)을 가져야 합니다.",
  729. "fail": "랜드마크는 랜드마크를 구별할 수 있게 만들기 위해 반드시 고유한 aria-label, aria-labelledby 또는 title을 가져야 합니다."
  730. },
  731. "has-lang": {
  732. "pass": "<html> 엘리먼트에 lang 어트리뷰트가 있습니다.",
  733. "fail": {
  734. "noXHTML": "xml:lang 어트리뷰트는 HTML 페이지에 유효하지 않습니다, lang 어트리뷰트를 사용하세요.",
  735. "noLang": "<html> 어트리뷰트에 lang 어트리뷰트가 없습니다."
  736. }
  737. },
  738. "valid-lang": {
  739. "pass": "lang 어트리뷰트의 값이 유효한 언어 목록에 포함되어 있습니다.",
  740. "fail": "lang 어트리뷰트의 값이 유효한 언어 목록에 포함되어 있지 않습니다."
  741. },
  742. "xml-lang-mismatch": {
  743. "pass": "lang과 xml:lang 어트리뷰트가 동일한 기본 언어를 가지고 있습니다.",
  744. "fail": "lang과 xml:lang 어트리뷰트가 동일한 기본 언어를 가지고 있지 않습니다."
  745. },
  746. "dlitem": {
  747. "pass": "설명 목록 항목이 <dl> 상위 엘리먼트를 가지고 있습니다.",
  748. "fail": "설명 목록 항목이 <dl> 상위 엘리먼트를 가지고 있지 않습니다."
  749. },
  750. "listitem": {
  751. "pass": "목록 항목이 <ul>, <ol> 또는 role=\"list\" 상위 엘리먼트를 가지고 있습니다.",
  752. "fail": {
  753. "default": "목록 항목이 <ul>, <ol> 상위 엘리먼트를 가지고 있지 않습니다.",
  754. "roleNotValid": "목록 항목이 역할(role)이 없는 <ul>, <ol> 상위 엘리먼트나 role=\"list\" 상위 엘리먼트를 가지고 있지 않습니다."
  755. }
  756. },
  757. "only-dlitems": {
  758. "pass": "목록 엘리먼트가 허용된 내부 <dt>나 <dd> 엘리먼트 직속 자식만 가지고 있습니다.",
  759. "fail": "목록 엘리먼트가 허용된 내부 <dt>나 <dd> 엘리먼트가 아닌 직속 자식을 가지고 있습니다."
  760. },
  761. "only-listitems": {
  762. "pass": "목록 엘리먼트가 허용된 내부 <li> 엘리먼트 직속 자식만 가지고 있습니다.",
  763. "fail": {
  764. "default": "목록 엘리먼트가 허용된 내부 <li> 엘리먼트가 아닌 직속 자식을 가지고 있습니다.",
  765. "roleNotValid": "목록 엘리먼트가 허용되지 않은 역할(role)을 가진 직속 자식을 가지고 있습니다: ${data.roles}"
  766. }
  767. },
  768. "structured-dlitems": {
  769. "pass": "비어있지 않은 경우, 엘리먼트가 <dt>와 <dd> 엘리먼트를 모두 가지고 있습니다.",
  770. "fail": "비어있지 않은 경우, 엘리먼트가 최소 하나의 <dd> 엘리먼트가 뒤따르는 최소 하나의 <dt> 엘리먼트를 가지고 있지 않습니다."
  771. },
  772. "caption": {
  773. "pass": "멀티미디어 엘리먼트가 캡션(자막) 트랙을 가지고 있습니다.",
  774. "incomplete": "엘리먼트에 캡션(자막)이 사용 가능한지 확인하세요."
  775. },
  776. "frame-tested": {
  777. "pass": "iframe이 axe-core로 테스트 되었습니다.",
  778. "fail": "iframe이 axe-core로 테스트 될 수 없습니다.",
  779. "incomplete": "iframe은 아직 axe-core로 테스트 되지 않았습니다."
  780. },
  781. "no-autoplay-audio": {
  782. "pass": "<video>나 <audio>가 허용된 지속 시간을 초과하여 오디오를 출력하지 않거나 제어 메커니즘을 가지고 있습니다.",
  783. "fail": "<video>나 <audio>가 허용된 지속 시간을 초과하여 오디오를 출력하거나 제어 메커니즘을 가지고 있지 않습니다.",
  784. "incomplete": "<video>나 <audio>가 허용된 지속 시간을 초과하여 오디오를 출력하지 않거나 제어 메커니즘을 제공하고 있는지 확인하세요."
  785. },
  786. "css-orientation-lock": {
  787. "pass": "디스플레이를 조작할 수 있고, 방향 잠금이 존재하지 않습니다.",
  788. "fail": "CSS 방향 잠금이 적용되어 있어, 디스플레이를 조작할 수 없습니다.",
  789. "incomplete": "CSS 방향 잠금이 확인될 수 없습니다."
  790. },
  791. "meta-viewport-large": {
  792. "pass": "<meta> 태그가 모바일 기기에서 확대/축소하는 것을 제한하지 않습니다.",
  793. "fail": "<meta> 태그가 모바일 기기에서 확대/축소하는 것을 제한하고 있습니다."
  794. },
  795. "meta-viewport": {
  796. "pass": "<meta> 태그가 모바일 기기에서 확대/축소하는 것을 비활성화하지 않았습니다.",
  797. "fail": "모바일 기기에서 <meta> 태그의 ${data}이(가) 확대/축소를 할 수 없게 만듭니다."
  798. },
  799. "header-present": {
  800. "pass": "페이지가 제목을 가지고 있습니다.",
  801. "fail": "페이지에 제목이 없습니다."
  802. },
  803. "heading-order": {
  804. "pass": "제목 순서가 유효합니다.",
  805. "fail": "제목 순서가 잘못되었습니다.",
  806. "incomplete": "이전 제목을 확인 할 수 없습니다."
  807. },
  808. "identical-links-same-purpose": {
  809. "pass": "다른 URL로 이동하는 동일한 이름의 다른 링크가 없습니다.",
  810. "incomplete": "링크가 동일한 용도를 가지고 있는지, 또는 의도적으로 모호하게 한 것인지 확인하세요."
  811. },
  812. "internal-link-present": {
  813. "pass": "유효한 건너뛰기 링크가 발견되었습니다.",
  814. "fail": "유효한 건너뛰기 링크를 찾을 수 없습니다."
  815. },
  816. "landmark": {
  817. "pass": "페이지가 랜드마크 영역을 가지고 있습니다.",
  818. "fail": "페이지에 랜드마크 영역이 없습니다."
  819. },
  820. "meta-refresh": {
  821. "pass": "<meta> 태그가 페이지를 즉시 새로고침하지 않습니다.",
  822. "fail": "<meta> 태그가 페이지의 시간 제한 새로고침을 강요합니다."
  823. },
  824. "p-as-heading": {
  825. "pass": "<p> 엘리먼트가 제목으로 스타일되지 않았습니다.",
  826. "fail": "스타일링된 p 엘리먼트는 제목 엘리먼트 대신 사용되지 않아야 합니다.",
  827. "incomplete": "<p> 엘리먼트가 제목으로 스타일되었는지 확인할 수 없습니다."
  828. },
  829. "region": {
  830. "pass": "모든 페이지 콘텐츠가 랜드마크에 포함되어 있습니다.",
  831. "fail": "일부 페이지 콘텐츠가 랜드마크에 포함되어 있지 않습니다."
  832. },
  833. "skip-link": {
  834. "pass": "건너뛰기 링크 대상이 존재합니다.",
  835. "incomplete": "건너뛰기 링크 대상이 활성화 시 표시되어야 합니다.",
  836. "fail": "건너뛰기 링크 대상이 없습니다."
  837. },
  838. "unique-frame-title": {
  839. "pass": "엘리먼트의 title 어트리뷰트가 고유합니다.",
  840. "fail": "엘리먼트의 title 어트리뷰트가 고유하지 않습니다."
  841. },
  842. "duplicate-id-active": {
  843. "pass": "문서에 동일한 id 어트리뷰트를 공유하는 활성 엘리먼트가 없습니다.",
  844. "fail": "문서에 동일한 id 어트리뷰트를 가진 활성 엘리먼트가 있습니다: ${data}"
  845. },
  846. "duplicate-id-aria": {
  847. "pass": "문서에 동일한 id 어트리뷰트를 공유하는 ARIA로 참조된 엘리먼트 및 레이블이 없습니다.",
  848. "fail": "문서에 동일한 id 어트리뷰트를 가진 ARIA로 참조된 여러 엘리먼트가 있습니다: ${data}"
  849. },
  850. "duplicate-id": {
  851. "pass": "문서에 동일한 id 어트리뷰트를 공유하는 정적 엘리먼트가 없습니다.",
  852. "fail": "문서에 동일한 id 어트리뷰트를 공유하는 여러 정적 엘리먼트가 있습니다: ${data}"
  853. },
  854. "aria-label": {
  855. "pass": "aria-label 어트리뷰트가 존재하고 비어있지 않습니다.",
  856. "fail": "aria-label 어트리뷰트가 없거나 비어있습니다."
  857. },
  858. "aria-labelledby": {
  859. "pass": "aria-labelledby 어트리뷰트가 존재하고 스크린리더에 노출되는 엘리먼트를 참조하고 있습니다.",
  860. "fail": "aria-labelledby 어트리뷰트가 없거나, 존재하지 않는 엘리먼트를 참조하고 있거나, 비어있는 엘리먼트를 참조하고 있습니다.",
  861. "incomplete": "aria-labelledby가 존재하고 있는 엘리먼트를 참조하는지 확인하세요."
  862. },
  863. "avoid-inline-spacing": {
  864. "pass": "텍스트 간격에 영향을 주는 '!important'를 가진 명시된 인라인 스타일이 없습니다.",
  865. "fail": {
  866. "singular": "인라인 스타일을 재정의 하는 것을 대부분의 브라우저가 지원하지 않으므로, 인라인 스타일 ${data.values}에서 '!important'를 제거하세요.",
  867. "plural": "인라인 스타일들을 재정의 하는 것을 대부분의 브라우저가 지원하지 않으므로, 인라인 스타일들 ${data.values}에서 '!important'를 제거하세요."
  868. }
  869. },
  870. "button-has-visible-text": {
  871. "pass": "엘리먼트가 스크린리더에 노출되는 내부 텍스트를 가지고 있습니다.",
  872. "fail": "엘리먼트에 스크린리더에 노출되는 내부 텍스트가 없습니다.",
  873. "incomplete": "엘리먼트가 하위 항목을 가지고 있는지 확인할 수 없습니다."
  874. },
  875. "doc-has-title": {
  876. "pass": "문서가 비어있지 않은 <title> 엘리먼트를 가지고 있습니다.",
  877. "fail": "문서에 비어있지 않은 <title> 엘리먼트가 없습니다."
  878. },
  879. "exists": {
  880. "pass": "엘리먼트가 존재하지 않습니다.",
  881. "incomplete": "엘리먼트가 존재합니다."
  882. },
  883. "has-alt": {
  884. "pass": "엘리먼트가 alt 어트리뷰트를 가지고 있습니다.",
  885. "fail": "엘리먼트에 alt 어트리뷰트가 없습니다."
  886. },
  887. "has-visible-text": {
  888. "pass": "엘리먼트가 스크린리더에 노출되는 텍스트를 가지고 있습니다.",
  889. "fail": "엘리먼트가 스크린리더에 노출되는 텍스트를 가지고 있지 않습니다.",
  890. "incomplete": "엘리먼트가 하위 항목을 가지고 있는지 확인할 수 없습니다."
  891. },
  892. "is-on-screen": {
  893. "pass": "엘리먼트가 보이지 않습니다.",
  894. "fail": "엘리먼트가 노출되어 있습니다."
  895. },
  896. "non-empty-alt": {
  897. "pass": "엘리먼트가 비어있지 않은 alt 어트리뷰트를 가지고 있습니다.",
  898. "fail": {
  899. "noAttr": "엘리먼트에 alt 어트리뷰트가 없습니다.",
  900. "emptyAttr": "엘리먼트가 빈 alt 어트리뷰트를 가지고 있습니다."
  901. }
  902. },
  903. "non-empty-if-present": {
  904. "pass": {
  905. "default": "엘리먼트에 value 어트리뷰트가 없습니다.",
  906. "has-label": "엘리먼트가 비어있지 않은 value 어트리뷰트를 가지고 있습니다."
  907. },
  908. "fail": "엘리먼트가 value 어트리뷰트를 가지고 있고 value 어트리뷰트가 비어있습니다."
  909. },
  910. "non-empty-placeholder": {
  911. "pass": "엘리먼트가 placeholder 어트리뷰트를 가지고 있습니다.",
  912. "fail": {
  913. "noAttr": "엘리먼트에 placeholder 어트리뷰트가 없습니다.",
  914. "emptyAttr": "엘리먼트가 빈 placeholder 어트리뷰트를 가지고 있습니다."
  915. }
  916. },
  917. "non-empty-title": {
  918. "pass": "엘리먼트가 title 어트리뷰트를 가지고 있습니다.",
  919. "fail": {
  920. "noAttr": "엘리먼트에 title 어트리뷰트가 없습니다.",
  921. "emptyAttr": "엘리먼트가 빈 title 어트리뷰트를 가지고 있습니다."
  922. }
  923. },
  924. "non-empty-value": {
  925. "pass": "엘리먼트가 비어있지 않은 value 어트리뷰트를 가지고 있습니다.",
  926. "fail": {
  927. "noAttr": "엘리먼트에 value 어트리뷰트가 없습니다.",
  928. "emptyAttr": "엘리먼트가 빈 value 어트리뷰트를 가지고 있습니다."
  929. }
  930. },
  931. "presentational-role": {
  932. "pass": "엘리먼트의 기본 의미론이 role=\"${data.role}\"(으)로 재정의되었습니다.",
  933. "fail": {
  934. "default": "엘리먼트의 기본 의미론이 role=\"none\"이나 role=\"presentation\"으로 재정의되지 않았습니다.",
  935. "globalAria": "엘리먼트가 전역 ARIA 어트리뷰트를 가지고 있기 때문에 엘리먼트의 역할(role)이 표현적이지 않습니다.",
  936. "focusable": "엘리먼트가 초점을 얻을 수 있기(focusable) 때문에 엘리먼트의 역할(role)은 표현적이지 않습니다.",
  937. "both": "전역 ARIA 어트리뷰트를 가지고 있고 초점을 얻을 수 있기(focusable) 때문에 엘리먼트의 역할(role)은 표현적이지 않습니다."
  938. }
  939. },
  940. "role-none": {
  941. "pass": "엘리먼트의 기본 의미론이 role=\"none\"으로 재정의되었습니다.",
  942. "fail": "엘리먼트의 기본 의미론이 role=\"none\"으로 재정의되지 않았습니다."
  943. },
  944. "role-presentation": {
  945. "pass": "엘리먼트의 기본 의미론이 role=\"presentation\"으로 재정의되었습니다.",
  946. "fail": "엘리먼트의 기본 의미론이 role=\"presentation\"으로 재정의되지 않았습니다."
  947. },
  948. "svg-non-empty-title": {
  949. "pass": "엘리먼트가 title인 하위 항목을 가지고 있습니다.",
  950. "fail": {
  951. "noTitle": "엘리먼트에 title인 하위 항목이 없습니다.",
  952. "emptyTitle": "엘리먼트 하위 title이 비어있습니다."
  953. },
  954. "incomplete": "엘리먼트가 title인 하위 항목을 가지고 있는지 확인할 수 없습니다."
  955. },
  956. "caption-faked": {
  957. "pass": "테이블의 첫 번째 행이 캡션으로 사용되지 않았습니다.",
  958. "fail": "테이블의 첫 번째 자식은 테이블 셀 대신 caption이어야 합니다."
  959. },
  960. "html5-scope": {
  961. "pass": "scope 어트리뷰트가 테이블 헤더 엘리먼트(<th>)에만 사용되었습니다.",
  962. "fail": "HTML 5에서, scope 어트리뷰트는 테이블 헤더 엘리먼트(<th>)에만 사용 될 수 있습니다."
  963. },
  964. "same-caption-summary": {
  965. "pass": "summary 어트리뷰트의 내용과 <caption>이 중복되지 않습니다.",
  966. "fail": "summary 어트리뷰트의 내용과 <caption> 엘리먼트가 동일합니다."
  967. },
  968. "scope-value": {
  969. "pass": "scope 어트리뷰트가 올바르게 사용되었습니다.",
  970. "fail": "어트리뷰트의 값은 오직 'row'나 'col'만 될 수 있습니다."
  971. },
  972. "td-has-header": {
  973. "pass": "모든 비어있지 않은 데이터 셀이 테이블 헤더를 가지고 있습니다.",
  974. "fail": "일부 비어있지 않은 데이터 셀이 테이블 헤더를 가지고 있지 않습니다."
  975. },
  976. "td-headers-attr": {
  977. "pass": "headers 어트리뷰트는 오직 테이블의 다른 셀을 참조하는데에만 사용되고 있습니다.",
  978. "incomplete": "headers 어트리뷰트가 비어있습니다.",
  979. "fail": "headers 어트리뷰트가 오직 테이블의 다른 셀을 참조하는데에만 사용되지 않고 있습니다."
  980. },
  981. "th-has-data-cells": {
  982. "pass": "모든 테이블 헤더 셀이 데이터 셀을 참조하고 있습니다.",
  983. "fail": "모든 테이블 헤더 셀이 데이터 셀을 참조하고 있지 않습니다.",
  984. "incomplete": "테이블 데이터 셀이 누락되었거나 비어있습니다."
  985. },
  986. "hidden-content": {
  987. "pass": "페이지의 모든 콘텐츠가 분석 되었습니다.",
  988. "fail": "이 페이지의 콘텐츠를 분석하는데 문제가 발생했습니다.",
  989. "incomplete": "페이지에 분석될 수 없는 숨겨진 콘텐츠가 있습니다. 이 콘텐츠를 분석하려면 콘텐츠의 노출을 동작시킬 필요가 있습니다."
  990. }
  991. },
  992. "failureSummaries": {
  993. "any": {
  994. "failureMessage": "다음 중 하나를 해결하세요:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
  995. },
  996. "none": {
  997. "failureMessage": "다음 사항을 모두 해결하세요:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
  998. }
  999. },
  1000. "incompleteFallbackMessage": "axe가 원인을 제시할 수 없습니다. 엘리먼트 검사기를 열어 볼 시간입니다!"
  1001. }