ko.json 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735
  1. {
  2. "lang": "ko",
  3. "rules": {
  4. "accesskeys": {
  5. "description": "모든 accesskey 속성 값이 고유한지 확인합니다.",
  6. "help": "accesskey 속성 값은 고유해야 합니다."
  7. },
  8. "area-alt": {
  9. "description": "이미지 맵의 <area> 요소에 alt 속성이 있는지 확인합니다.",
  10. "help": "<area> 요소의 내용을 기술하는 alt 속성이 필요합니다."
  11. },
  12. "aria-allowed-attr": {
  13. "description": "요소의 역할(role)에 ARIA 속성이 허용되도록 합니다.",
  14. "help": "요소는 허용 된 ARIA 속성만 사용해야 합니다."
  15. },
  16. "aria-allowed-role": {
  17. "description": "역할(role) 속성이 요소에 적절한지 확인하세요.",
  18. "help": "요소에 적절한 ARIA 역할(role)을 설정해야 합니다."
  19. },
  20. "aria-hidden-body": {
  21. "description": "<body> 요소의 aria-hidden='true' 설정을 확인하세요.",
  22. "help": "aria-hidden='true' 설정이 <body> 요소에 설정되어서는 안됩니다."
  23. },
  24. "aria-hidden-focus": {
  25. "description": "aria-hidden 요소에 포커스 가능한 요소가 포함되지 않도록 보장합니다.",
  26. "help": "ARIA 속성을 사용해 숨겨진 요소는 포커스 가능한 요소를 포함해서는 안됩니다."
  27. },
  28. "aria-input-field-name": {
  29. "description": "모든 ARIA 입력 필드(input fields)에 접근 가능한 이름이 있는지 확인하세요.",
  30. "help": "ARIA 입력 필드(input fields)에는 접근 가능한 이름 설정이 필요합니다."
  31. },
  32. "aria-required-attr": {
  33. "description": "ARIA 역할(role)을 가진 요소가 모든 필수 ARIA 속성을 갖도록 설정합니다.",
  34. "help": "역할(role)에 필요한 필수 ARIA 속성 설정이 필요합니다."
  35. },
  36. "aria-required-children": {
  37. "description": "하위 역할(child roles)이 필요한 ARIA 역할을 가진 요소에 해당 요소가 포함되었는지 확인하세요.",
  38. "help": "특정 ARIA 역할에는 특정 자손(chidren)이 포함되어야 합니다."
  39. },
  40. "aria-required-parent": {
  41. "description": "부모 역할(parent roles)이 필요한 ARIA 역할을 가진 요소가 포함되었는지 확인하세요.",
  42. "help": "특정 ARIA 역할은 특정 부모 역할을 가진 요소에 포함되어야 합니다."
  43. },
  44. "aria-roles": {
  45. "description": "역할(role) 속성을 가진 모든 요소가 유효한 값을 사용하도록 합니다.",
  46. "help": "사용된 ARIA 역할(role)은 유효한 값을 준수해야 합니다."
  47. },
  48. "aria-toggle-field-name": {
  49. "description": "모든 ARIA 토글 필드(toggle field)에 접근 가능한 이름이 있는지 확인합니다.",
  50. "help": "ARIA 토글 필드(toggle field)는 접근 가능한 이름이 설정되어야 합니다."
  51. },
  52. "aria-valid-attr-value": {
  53. "description": "모든 ARIA 속성이 유효한 값을 갖도록 합니다.",
  54. "help": "ARIA 속성은 유효한 값을 준수해야 합니다."
  55. },
  56. "aria-valid-attr": {
  57. "description": "aria-로 시작하는 속성이 유효한 ARIA 속성인지 확인합니다.",
  58. "help": "유효하지 않은 ARIA 속성 이름을 사용해서는 안됩니다."
  59. },
  60. "audio-caption": {
  61. "description": "<audio> 요소에 캡션(자막)이 설정되어 있는지 확인하세요.",
  62. "help": "<audio> 요소에는 캡션 <track> 요소가 포함되어야 합니다."
  63. },
  64. "autocomplete-valid": {
  65. "description": "autocomplete 속성이 정확하고, Form 필드에 적합한지 확인하세요.",
  66. "help": "autocomplete 속성은 반드시 정확하게 사용되어야 합니다."
  67. },
  68. "avoid-inline-spacing": {
  69. "description": "style 속성을 통해 설정된 텍스트 간격(spacing)을 사용자 정의 스타일시트로 조정 할 수 있는지 확인합니다.",
  70. "help": "인라인 텍스트 간격(spacing)은 사용자 정의 스타일시트로 조정 가능해야 합니다."
  71. },
  72. "blink": {
  73. "description": "<blink> 요소는 사용하지 않습니다.",
  74. "help": "<blink> 요소는 사용하면 안됩니다."
  75. },
  76. "button-name": {
  77. "description": "버튼 요소에 식별 가능한 텍스트가 포함되어 있는지 확인합니다.",
  78. "help": "버튼 요소는 식별 가능한 텍스트를 포함해야 합니다."
  79. },
  80. "bypass": {
  81. "description": "사용자가 내비게이션을 건너띄고, 콘텐츠로 바로 이동할 수 있는 하나 이상의 메커니즘을 제공해야 합니다.",
  82. "help": "페이지의 반복 블록(예: 내비게이션)을 건너띌 수 있는 수단이 필요합니다."
  83. },
  84. "color-contrast": {
  85. "description": "전경색과 배경색 간의 대비가 WCAG2 AA 기준 값을 충족하도록 보장해야 합니다.",
  86. "help": "요소의 색상 대비가 충분히 식별 가능해야 합니다."
  87. },
  88. "css-orientation-lock": {
  89. "description": "콘텐츠가 특정 디스플레이 방향으로 고정되지 않고 콘텐츠가 모든 디스플레이 방향으로 작동 가능하도록 보장합니다.",
  90. "help": "CSS 미디어쿼리는 디스플레이 방향을 잠그는 목적으로 사용해서는 안됩니다."
  91. },
  92. "definition-list": {
  93. "description": "<dl> 요소가 올바르게 구성되어 있는지 확인합니다.",
  94. "help": "<dl> 요소는 올바르게 정렬 된 <dt>, <dd> 그룹, <script> 또는 <template> 요소에만 직접 포함되어야 합니다."
  95. },
  96. "dlitem": {
  97. "description": "<dt>, <dd> 요소가 <dl>요소에 포함 되도록 합니다.",
  98. "help": "<dt>, <dd> 요소는 <dl> 요소 또는 <dl> 내부의 <div> 요소에 포함되어야 합니다."
  99. },
  100. "document-title": {
  101. "description": "<title> 요소에 적절한 문서 제목이 설정되었는지 확인합니다.",
  102. "help": "문서 제목인 <title> 요소의 값이 설정되어야 합니다."
  103. },
  104. "duplicate-id-active": {
  105. "description": "활성화 된 요소에 설정된 id 속성 이름 값 중복 여부를 확인합니다.",
  106. "help": "활성화 된 요소의 id 속성 이름 값은 반드시 고유해야 합니다."
  107. },
  108. "duplicate-id-aria": {
  109. "description": "ARIA 및 레이블에 사용된 모든 id 속성 값이 고유한지 확인합니다.",
  110. "help": "ARIA 및 레이블에 사용 된 ID는 고유해야 합니다."
  111. },
  112. "duplicate-id": {
  113. "description": "모든 id 속성 값이 고유한지 확인합니다.",
  114. "help": "id 속성 값은 고유해야 합니다."
  115. },
  116. "empty-heading": {
  117. "description": "제목 역할의 요소에 식별 가능한 콘텐츠가 포함되어 있는지 확인합니다.",
  118. "help": "제목 역할을 가진 요소는 반드시 적절한 콘텐츠를 포함해야 합니다."
  119. },
  120. "focus-order-semantics": {
  121. "description": "포커스 순서가 설정된 요소가 적절한 역할을 갖도록 보장하는지 확인합니다.",
  122. "help": "포커스 순서가 설정된 요소는 대화형(interactive) 콘텐츠에 적합한 역할이 필요합니다."
  123. },
  124. "form-field-multiple-labels": {
  125. "description": "Form 필드에 여러 레이블 요소가 없는지 확인합니다.",
  126. "help": "Form 필드에는 여러 레이블 요소가 없어야 합니다."
  127. },
  128. "frame-tested": {
  129. "description": "<iframe> 및 <frame> 요소에 axe-core 스크립트가 포함되어 있는지 확인합니다.",
  130. "help": "Frame은 axe-core로 테스트 해야 합니다."
  131. },
  132. "frame-title-unique": {
  133. "description": "<iframe> 및 <frame> 요소에 고유한 title 속성이 포함되어 있는지 확인합니다.",
  134. "help": "Frame에는 고유한 title 속성이 설정되어야 합니다."
  135. },
  136. "frame-title": {
  137. "description": "<iframe> 및 <frame> 요소에 내용을 가진 title 속성이 포함되어 있는지 확인합니다.",
  138. "help": "Frame에는 title 속성이 있어야 합니다."
  139. },
  140. "heading-order": {
  141. "description": "제목의 순서가 의미적으로 올바른지 확인합니다.",
  142. "help": "제목 수준(level)은 한 단계씩 증가해야 합니다."
  143. },
  144. "hidden-content": {
  145. "description": "숨겨진 콘텐츠에 대해 사용자에게 알립니다.",
  146. "help": "페이지의 숨겨진 콘텐츠를 분석 할 수 없습니다."
  147. },
  148. "html-has-lang": {
  149. "description": "모든 문서의 <html> 요소에 lang 속성이 있는지 확인합니다.",
  150. "help": "<html> 요소에는 lang 속성이 있어야 합니다."
  151. },
  152. "html-lang-valid": {
  153. "description": "<html> 요소의 lang 속성에 유효한 값이 있는지 확인하세요.",
  154. "help": "<html> 요소는 lang 속성에 유효한 값을 가져야 합니다."
  155. },
  156. "html-xml-lang-mismatch": {
  157. "description": "유효한 lang, xml:lang 속성 값과 <html> 요소의 lang 속성이 일치하는지 확인하세요.",
  158. "help": "lang, xml:lang 속성이 있는 <html> 요소는 동일한 기본 언어(lang) 속성 값을 가져야 합니다."
  159. },
  160. "image-alt": {
  161. "description": "<img> 요소에 alt 속성 값으로 적절한 값이 설정되어 있거나, role='presentation' 설정이 있는지 확인하세요.",
  162. "help": "이미지는 적절한 대체 텍스트가 제공되어야 합니다."
  163. },
  164. "image-redundant-alt": {
  165. "description": "이미지 대체 텍스트로 반복되지 않는지 확인합니다.",
  166. "help": "이미지의 대체 텍스트가 반복해서 제공되어서는 안됩니다."
  167. },
  168. "input-button-name": {
  169. "description": "입력 버튼(input button)에 식별 가능한 텍스트가 있는지 확인하세요.",
  170. "help": "입력 버튼에는 식별 가능한 텍스트가 있어야 합니다."
  171. },
  172. "input-image-alt": {
  173. "description": "<input type=\"image\"> 요소에 대체 텍스트가 있는지 확인합니다.",
  174. "help": "이미지 버튼에는 대체 텍스트가 있어야 합니다."
  175. },
  176. "label-content-name-mismatch": {
  177. "description": "콘텐츠를 통해 레이블이 지정된 요소가 접근 가능한 이름의 일부로 보이는 텍스트를 가져야 합니다.",
  178. "help": "요소는 접근 가능한 이름의 일부로 보이는 텍스트를 가져야 합니다."
  179. },
  180. "label-title-only": {
  181. "description": "모든 Form 요소에 title 또는 aria-describedby 속성을 사용하여 레이블을 지정하지 않아야 합니다.",
  182. "help": "Form 요소는 눈에 보이는 레이블이 있어야 합니다."
  183. },
  184. "label": {
  185. "description": "모든 Form 요소에 레이블이 있는지 확인합니다.",
  186. "help": "Form 요소에는 레이블이 있어야 합니다."
  187. },
  188. "landmark-banner-is-top-level": {
  189. "description": "banner 랜드마크가 최상위 레벨에 있는지 확인합니다.",
  190. "help": "banner 랜드마크는 다른 랜드마크에 포함되지 않아야 합니다."
  191. },
  192. "landmark-complementary-is-top-level": {
  193. "description": "complementary 랜드마크 또는 aside는 최상위 레벨을 유지해야 합니다.",
  194. "help": "aside는 다른 랜드마크에 포함되어서는 안됩니다."
  195. },
  196. "landmark-contentinfo-is-top-level": {
  197. "description": "contentinfo 랜드마크가 최상위 레벨인지 확인합니다.",
  198. "help": "contentinfo 랜드마크는 다른 랜드마크에 포함되지 않아야 합니다."
  199. },
  200. "landmark-main-is-top-level": {
  201. "description": "main 랜드마크가 최상위 레벨인지 확인합니다.",
  202. "help": "main 랜드마크는 다른 랜드마크에 포함되지 않아야 합니다."
  203. },
  204. "landmark-no-duplicate-banner": {
  205. "description": "문서에 최대 하나의 banner 랜드마크가 있는지 확인합니다.",
  206. "help": "문서에는 둘 이상의 banner 랜드마크가 없어야 합니다."
  207. },
  208. "landmark-no-duplicate-contentinfo": {
  209. "description": "문서에 최대 하나의 contentinfo 랜드마크가 있는지 확인합니다.",
  210. "help": "문서에는 둘 이상의 contentinfo 랜드마크가 없어야 합니다."
  211. },
  212. "landmark-one-main": {
  213. "description": "문서에 하나의 main 랜드마크만 있고 페이지의 각 iframe에는 최대 하나의 main 랜드마크가 있는지 확인합니다.",
  214. "help": "문서에는 둘 이상의 main 랜드마크가 없어야 합니다."
  215. },
  216. "landmark-unique": {
  217. "description": "랜드마크에는 고유한 역할(role) 또는 role/label/title (즉, 접근 가능한 이름) 조합이 있어야 합니다.",
  218. "help": "랜드마크가 고유한지 확인합니다."
  219. },
  220. "link-in-text-block": {
  221. "description": "색상에 의존하지 않고 링크를 구별 할 수 있어야 합니다.",
  222. "help": "링크는 색상에 의존하지 않는 방식으로 주변 텍스트와 구별 되어야 합니다."
  223. },
  224. "link-name": {
  225. "description": "링크에 식별 가능한 텍스트가 있는지 확인합니다.",
  226. "help": "링크에는 식별 가능한 텍스트가 있어야 합니다."
  227. },
  228. "list": {
  229. "description": "목록이 올바르게 구성되어 있는지 확인합니다.",
  230. "help": "<ul> 및 <ol> 요소는 <li>, <script> 또는 <template> 요소 만 직접 포함해야 합니다."
  231. },
  232. "listitem": {
  233. "description": "<li> 요소가 의미적으로 <ul> 또는 <ol>에 포함 되어 있는지 확인합니다.",
  234. "help": "<li> 요소는 <ul> 또는 <ol>에 포함 되어야 합니다."
  235. },
  236. "marquee": {
  237. "description": "<marquee> 요소가 사용되지 않도록 합니다.",
  238. "help": "<marquee> 요소는 더 이상 사용되지 않으며 사용해서는 안됩니다."
  239. },
  240. "meta-refresh": {
  241. "description": "<meta http-equiv=\"refresh\"> 요소는 사용하지 않습니다.",
  242. "help": "시간 새로 고침이 존재하지 않아야 합니다."
  243. },
  244. "meta-viewport-large": {
  245. "description": "<meta name=\"viewport\"> 요소의 스케일 설정이 500%까지 확장 가능한지 확인합니다.",
  246. "help": "사용자는 텍스트를 최대 500% 확대 또는 축소 할 수 있어야 합니다."
  247. },
  248. "meta-viewport": {
  249. "description": "<meta name=\"viewport\"> 요소가 텍스트 크기 조절 및 확대/축소를 비활성화하지 않도록 합니다.",
  250. "help": "줌 및 스케일링을 비활성화 해서는 안됩니다."
  251. },
  252. "object-alt": {
  253. "description": "<object> 요소에 대체 텍스트(alt)가 있는지 확인합니다.",
  254. "help": "<object> 요소에는 대체 텍스트가 있어야 합니다."
  255. },
  256. "p-as-heading": {
  257. "description": "p 요소를 스타일링 하여 제목처럼 사용했는지 확인하세요.",
  258. "help": "p 요소를 Bold, italic 또는 글자 크기를 조정해 제목처럼 보이게 사용해서는 안됩니다."
  259. },
  260. "page-has-heading-one": {
  261. "description": "페이지 또는 해당 프레임 중 하나 이상의 제목 레벨이 1인 요소가 포함되어 있는지 확인합니다.",
  262. "help": "페이지는 제목 레벨이 1인 요소를 포함해야 합니다."
  263. },
  264. "region": {
  265. "description": "모든 페이지 콘텐츠가 랜드마크로 포함되어 있는지 확인합니다.",
  266. "help": "모든 페이지 콘텐츠는 랜드마크로 포함 되어야 합니다."
  267. },
  268. "role-img-alt": {
  269. "description": "[role='img'] 요소에 대체 텍스트가 있는지 확인합니다.",
  270. "help": "[role='img'] 요소에는 대체 텍스트가 있어야 합니다."
  271. },
  272. "scope-attr-valid": {
  273. "description": "테이블에서 scope 속성이 올바르게 사용되도록 합니다.",
  274. "help": "scope 속성을 올바르게 사용해야 합니다."
  275. },
  276. "scrollable-region-focusable": {
  277. "description": "스크롤 가능한 콘텐츠가 있는 요소는 키보드로 접근 할 수 있어야 합니다.",
  278. "help": "스크롤 가능 영역에 키보드 접근 권한이 있는지 확인해야 합니다."
  279. },
  280. "server-side-image-map": {
  281. "description": "서버 사이드 이미지 맵이 사용되지 않도록 합니다.",
  282. "help": "서버 사이드 이미지 맵을 사용해서는 안됩니다."
  283. },
  284. "skip-link": {
  285. "description": "모든 건너뛰기(skip) 링크에 포커스 가능한 대상이 있는지 확인하세요.",
  286. "help": "스킵 링크 대상이 존재하고 포커스 가능해야 합니다."
  287. },
  288. "tabindex": {
  289. "description": "tabindex 속성 값이 0보다 크지 않도록 합니다.",
  290. "help": "요소는 0보다 큰 tabindex를 가져서는 안됩니다."
  291. },
  292. "table-duplicate-name": {
  293. "description": "테이블의 summary 속성 값과 <caption> 요소의 콘텐츠 값이 동일하지 않아야 합니다.",
  294. "help": "<caption> 요소는 summary 속성과 동일한 텍스트를 포함하지 않아야 합니다."
  295. },
  296. "table-fake-caption": {
  297. "description": "캡션이 있는 테이블이 <caption> 요소를 사용하는지 확인하세요.",
  298. "help": "데이터 또는 헤더 셀을 사용하여 데이터 테이블 캡션인 것처럼 제공해서는 안됩니다."
  299. },
  300. "td-has-header": {
  301. "description": "데이터 셀이 3x3 보다 많은 테이블은 비어 있지 않은 각 데이터 셀에 하나 이상의 테이블 헤더가 있는지 확인하세요.",
  302. "help": "3x3 보다 큰 테이블의 비어 있지 않은 모든 td 요소에는 연관된 테이블 헤더가 있어야 합니다."
  303. },
  304. "td-headers-attr": {
  305. "description": "헤더를 사용하는 테이블의 각 셀이 해당 테이블의 다른 셀을 참조하는지 확인하세요.",
  306. "help": "headers 속성을 사용하는 테이블 요소의 모든 셀은 동일한 테이블의 다른 셀만 참조해야 합니다."
  307. },
  308. "th-has-data-cells": {
  309. "description": "데이터 테이블의 각 테이블 헤더가 데이터 셀을 참조하는지 확인하세요.",
  310. "help": "모든 요소 및 role='columnheader/rowheader' 설정 된 요소는 설명하는 데이터 셀이 있어야 합니다."
  311. },
  312. "valid-lang": {
  313. "description": "lang 속성이 유효한 값을 갖도록 합니다.",
  314. "help": "lang 속성은 유효한 값을 가져야 합니다."
  315. },
  316. "video-caption": {
  317. "description": "<video> 요소에 캡션(자막)이 있는지 확인합니다.",
  318. "help": "<video> 요소에는 캡션(자막)이 있어야 합니다."
  319. }
  320. },
  321. "checks": {
  322. "abstractrole": {
  323. "pass": "추상 역할은 직접 사용하지 않습니다.",
  324. "fail": "추상 역할은 직접 사용할 수 없습니다."
  325. },
  326. "aria-allowed-attr": {
  327. "description": "ARIA 속성이 요소의 역할에 허용 되도록 합니다.",
  328. "help": "요소는 허용된 ARIA 속성만 사용해야 합니다."
  329. },
  330. "aria-allowed-role": {
  331. "pass": "ARIA 역할(role)은 지정된 요소에 대해 허용되어 있습니다.",
  332. "fail": "ARIA 역할(role)은 지정된 요소에 대해 허용되지 않았습니다.",
  333. "incomplete": "ARIA 역할(role)은 이 요소에 허가되어 있지 않기 때문에, 요소가 표시되었을 때 ARIA 역할을 삭제할 필요가 있습니다."
  334. },
  335. "aria-hidden-body": {
  336. "description": "<body> 요소에 aria-hidden='true' 속성 설정이 없는지 확인하세요.",
  337. "help": "aria-hidden='true' 설정을 <body> 요소에 사용해서는 안됩니다."
  338. },
  339. "aria-errormessage": {
  340. "pass": "지원되고 있는 aria-errormessage 기술을 사용하고 있습니다.",
  341. "fail": "aria-errormessage 값 ${data.values}는 메시지를 공지하는 방법을 사용해야 합니다.(예를 들어, aria-live, aria-describedby,role=alert 등)"
  342. },
  343. "has-widget-role": {
  344. "pass": "요소에 widget 역할이 ​​있습니다.",
  345. "fail": "요소에 widget 역할이 ​​없습니다."
  346. },
  347. "invalidrole": {
  348. "pass": "ARIA 역할이 유효합니다.",
  349. "fail": "역할은 유효한 ARIA 역할 중 하나여야 합니다."
  350. },
  351. "no-implicit-explicit-label": {
  352. "pass": "<label>과 접근 가능한 이름이 일치하지 않습니다.",
  353. "incomplete": "<label>이 ARIA ${data} 필드 이름의 일부일 필요는 없는지 확인하세요."
  354. },
  355. "aria-required-attr": {
  356. "description": "ARIA 역할을 가진 요소가 모든 필수 ARIA 속성을 갖도록 합니다.",
  357. "help": "필수 ARIA 속성이 제공 되어야 합니다."
  358. },
  359. "aria-required-children": {
  360. "pass": "필수적인 ARIA 역할이 존재합니다.",
  361. "fail": "필수적인 ARIA 역할이 제공되지 않고 있습니다: ${data.values}",
  362. "incomplete": "ARIA의 자손 역할이 추가되어야 합니다: ${data.values}"
  363. },
  364. "aria-required-parent": {
  365. "pass": "필수적인 ARIA 역할이 존재합니다.",
  366. "fail": "필수적인 ARIA 역할이 제공되지 않고 있습니다: ${data.values}"
  367. },
  368. "aria-unsupported-attr": {
  369. "pass": "사용된 ARIA 속성은 지원되고 있습니다.",
  370. "fail": "사용된 ARIA 속성은 스크린 리더나 보조 기술에 널리 지원되지 않고 있습니다: ${data.values}"
  371. },
  372. "unsupportedrole": {
  373. "pass": "사용된 ARIA 역할이 지원됩니다.",
  374. "fail": "사용된 ARIA 속성은 스크린 리더나 보조 기술에 널리 지원되지 않고 있습니다.: ${data.values}"
  375. },
  376. "aria-valid-attr-value": {
  377. "pass": "ARIA 속성이 유효합니다.",
  378. "fail": "무효인 ARIA 속성입니다: ${data.values}",
  379. "incomplete": "페이지에 ARIA 속성의 요소 ID가 존재하지 않습니다: ${data.values}"
  380. },
  381. "aria-valid-attr": {
  382. "pass": "ARIA 속성명이 유효합니다.",
  383. "fail": "무효인 ARIA 속성명 입니다: ${data.values}"
  384. },
  385. "valid-scrollable-semantics": {
  386. "pass": "요소는 포커스 순서에서 요소에 대한 유효한 의미를 갖습니다.",
  387. "fail": "요소의 포커스 순서에서 요소에 대한 의미가 유효하지 않습니다."
  388. },
  389. "color-contrast": {
  390. "pass": "${data.contrastRatio} 요소의 색상 대비가 충분합니다.",
  391. "fail": "${data.contrastRatio} 요소의 색상 대비가 충분하지 않습니다. (foreground color: ${data.fgColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). ${data.expectedContrastRatio} 예상 대비 비율",
  392. "incomplete": {
  393. "bgImage": "배경 이미지로 인해 요소의 배경색을 확인할 수 없습니다.",
  394. "bgGradient": "배경 그라데이션으로 인해 요소의 배경색을 결정할 수 없습니다.",
  395. "imgNode": "요소에 이미지 노드가 포함되어 있으므로 요소의 배경색을 확인할 수 없습니다.",
  396. "bgOverlap": "요소의 배경색이 다른 요소와 겹치므로 확인할 수 없습니다.",
  397. "fgAlpha": "알파 투명도로 인해 요소의 전경색을 확인할 수 없습니다.",
  398. "elmPartiallyObscured": "요소의 배경색이 다른 요소에 의해 부분적으로 가려져서 확인할 수 없습니다.",
  399. "elmPartiallyObscuring": "요소의 배경색이 다른 요소와 부분적으로 겹치므로 확인할 수 없습니다.",
  400. "outsideViewport": "요소가 뷰포트 외부에 있으므로 요소의 배경색을 확인할 수 없습니다.",
  401. "equalRatio": "요소는 배경과 1:1 대비 비율을 갖습니다.",
  402. "shortTextContent": "요소 내용이 너무 짧아 실제 텍스트 내용인지 확인할 수 없습니다.",
  403. "default": "명암 비를 결정할 수 없습니다."
  404. }
  405. },
  406. "link-in-text-block": {
  407. "pass": "링크는 색상이 아닌 다른 방식으로 주변 텍스트와 구별 될 수 있습니다.",
  408. "fail": "링크는 색상이 아닌 다른 방식으로 주변 텍스트와 구별 되어야 합니다.",
  409. "incomplete": {
  410. "bgContrast": "요소의 명암비를 결정할 수 없습니다. 뚜렷한 hover / focus 스타일 확인",
  411. "bgImage": "배경 이미지로 인해 요소의 대비 비율을 결정할 수 없습니다.",
  412. "bgGradient": "배경 그라데이션으로 인해 요소의 대비 비율을 확인할 수 없습니다.",
  413. "imgNode": "요소에 이미지 노드가 포함되어 있으므로 요소의 대비 비율을 확인할 수 없습니다.",
  414. "bgOverlap": "요소 겹침으로 인해 요소의 대비 비율을 확인할 수 없습니다.",
  415. "default": "명암비를 결정할 수 없습니다."
  416. }
  417. },
  418. "autocomplete-appropriate": {
  419. "pass": "autocomplete 값이 적절한 요소에 있습니다.",
  420. "fail": "autocomplete 값은 이 유형의 입력에 적합하지 않습니다."
  421. },
  422. "autocomplete-valid": {
  423. "pass": "autocomplete 속성이 올바르게 형식화 되었습니다.",
  424. "fail": "autocomplete 속성의 형식이 잘못 되었습니다."
  425. },
  426. "accesskeys": {
  427. "pass": "accesskey 속성 값은 고유합니다",
  428. "fail": "문서에 동일한 accesskey를 가진 여러 요소가 있습니다."
  429. },
  430. "focusable-content": {
  431. "pass": "요소에는 포커스 가능한 요소가 포함됩니다.",
  432. "fail": "요소는 포커스 가능한 콘텐츠를 가져야 합니다."
  433. },
  434. "focusable-disabled": {
  435. "pass": "요소 안에 포커스 가능한 요소가 포함되어 있지 않습니다.",
  436. "fail": "포커스 가능 콘텐츠를 비 활성화하거나 DOM에서 제거해야 합니다."
  437. },
  438. "focusable-element": {
  439. "pass": "요소는 포커스 가능합니다.",
  440. "fail": "요소에 포커스를 맞출 수 있어야 합니다."
  441. },
  442. "focusable-no-name": {
  443. "pass": "요소가 탭 순서가 아니거나 접근 가능한 텍스트가 있습니다.",
  444. "fail": "요소가 탭 순서이며 접근 가능한 텍스트가 없습니다."
  445. },
  446. "focusable-not-tabbable": {
  447. "pass": "요소 내에 포커스 가능한 요소가 포함되어 있지 않습니다.",
  448. "fail": "포커스 가능 콘텐츠는 tabindex='-1' 이거나 DOM에서 제거 되어야 합니다."
  449. },
  450. "landmark-is-top-level": {
  451. "pass": "${data.role} 랜드마크가 최상위 레벨에 있습니다.",
  452. "fail": "${data.role} 랜드마크는 다른 랜드마크에 포함되어 있습니다."
  453. },
  454. "page-has-heading-one": {
  455. "pass": "페이지에 하나 이상의 제목 레벨 1이 있습니다.",
  456. "fail": "페이지에는 제목 레벨 1이 있어야 합니다."
  457. },
  458. "page-has-main": {
  459. "pass": "문서에 하나 이상의 main 랜드마크가 있습니다.",
  460. "fail": "문서에 main 랜드마크가 없습니다."
  461. },
  462. "page-no-duplicate-banner": {
  463. "pass": "문서에 둘 이상의 banner 랜드마크가 없습니다.",
  464. "fail": "문서에 둘 이상의 banner 랜드마크가 있습니다."
  465. },
  466. "page-no-duplicate-contentinfo": {
  467. "pass": "문서에 하나 이상의 contentinfo 랜드마크가 없습니다.",
  468. "fail": "문서에 하나 이상의 contentinfo 랜드마크가 있습니다."
  469. },
  470. "page-no-duplicate-main": {
  471. "pass": "문서에 둘 이상의 main 랜드마크가 없습니다.",
  472. "fail": "문서에 둘 이상의 main 랜드마크가 있습니다."
  473. },
  474. "tabindex": {
  475. "pass": "요소에 0보다 큰 tabindex가 없습니다.",
  476. "fail": "요소의 tabindex가 0보다 큽니다."
  477. },
  478. "alt-space-value": {
  479. "pass": "요소에 유효한 대체 속성 값이 있습니다.",
  480. "fail": "요소에는 공백 문자만 포함하는 alt 속성이 있으며 모든 스크린 리더에서 무시하지 않습니다."
  481. },
  482. "duplicate-img-label": {
  483. "pass": "<img> 대체 텍스트에서 요소가 기존 텍스트를 복제하지 않습니다.",
  484. "fail": "요소에 기존 텍스트를 복제하는 대체 텍스트가 있는 <img> 요소가 포함되어 있습니다."
  485. },
  486. "explicit-label": {
  487. "pass": "Form 요소에 명확한 <label>이 존재하고 있습니다.",
  488. "fail": "Form 요소에 명확한 <label>이 존재하지 않습니다."
  489. },
  490. "help-same-as-label": {
  491. "pass": "도움말 텍스트(title 또는 aria-describedby)는 레이블 텍스트를 복제하지 않습니다.",
  492. "fail": "도움말 텍스트(title 또는 aria-describedby)는 레이블 텍스트와 동일합니다."
  493. },
  494. "hidden-explicit-label": {
  495. "pass": "Form 요소에 명시적인 <label>이 있습니다.",
  496. "fail": "Form 요소에 숨겨진 <label>이 있습니다."
  497. },
  498. "implicit-label": {
  499. "pass": "Form 요소에 암묵적인(포함된) <label>이 존재하고 있습니다.",
  500. "fail": "Form 요소에 암묵적인(포함된) <label>이 존재하지 않습니다."
  501. },
  502. "label-content-name-mismatch": {
  503. "pass": "요소는 접근 가능한 이름의 일부로 보이는 텍스트를 포함합니다.",
  504. "fail": "요소 안의 텍스트는 접근 가능한 이름에 포함되지 않습니다."
  505. },
  506. "multiple-label": {
  507. "pass": "Form 필드에 여러 레이블 요소가 없습니다.",
  508. "incomplete": "보조 기술에서 다중 레이블 요소가 널리 지원되지 않습니다. 첫 번째 레이블에 필요한 모든 정보가 포함되어 있는지 확인하세요."
  509. },
  510. "title-only": {
  511. "pass": "Form 요소는 레이블에 title 속성만 사용하지 않습니다.",
  512. "fail": "Form 요소의 레이블을 생성하는데 사용되는 title 속성만 해당됩니다."
  513. },
  514. "landmark-is-unique": {
  515. "pass": "랜드마크에는 고유한 role 또는 role/label/title (즉, 접근 가능한 이름) 조합이 있어야 합니다.",
  516. "fail": "랜드마크는 고유한 aria-label, aria-labelledby 또는 title이 있어야 랜드마크를 구별 할 수 있습니다."
  517. },
  518. "has-lang": {
  519. "pass": "<html> 요소에 lang 속성이 있습니다.",
  520. "fail": "<html> 요소에 lang 속성이 없습니다."
  521. },
  522. "valid-lang": {
  523. "pass": "lang 속성 값은 유효한 언어 목록에 포함되어 있습니다.",
  524. "fail": "lang 속성 값이 유효한 언어 목록에 포함되어 있지 않습니다."
  525. },
  526. "xml-lang-mismatch": {
  527. "pass": "lang 및 xml:lang 속성은 주 언어 속성 값이 동일합니다.",
  528. "fail": "lang 및 xml:lang 속성은 주 언어 속성 값이 동일하지 않습니다."
  529. },
  530. "dlitem": {
  531. "pass": "설명 목록 항목에 <dl> 상위 요소가 있습니다.",
  532. "fail": "설명 목록 항목에 <dl> 상위 요소가 없습니다."
  533. },
  534. "listitem": {
  535. "pass": "목록 항목에 <ul>, <ol> 또는 role=\"list\" 상위 요소가 있습니다.",
  536. "fail": "목록 항목에 <ul>, <ol> 또는 role=\"list\" 상위 요소가 없습니다."
  537. },
  538. "only-dlitems": {
  539. "pass": "List 요소에는 <dt> 또는 <dd> 요소 내에서 허용되는 직접적인 자식 요소들만 있습니다.",
  540. "fail": "List 요소에는 <dt> 또는 <dd> 요소 내에서 허용되지 않는 직접적인 자식 요소들이 있습니다."
  541. },
  542. "only-listitems": {
  543. "pass": "List 요소에는 <li> 요소 내에 허용되는 직접적인 자식 요소들만 있습니다.",
  544. "fail": "List 요소에는 <li> 요소 내에 허용되지 않는 직접 자식 요소들이 있습니다."
  545. },
  546. "structured-dlitems": {
  547. "pass": "비어 있지 않으면 요소에 <dt> 및 <dd> 요소가 모두 있습니다.",
  548. "fail": "비어 있지 않은 경우 요소에는 하나 이상의 <dt> 요소가 없고 그 뒤에 하나 이상의 <dd> 요소가 없습니다."
  549. },
  550. "caption": {
  551. "pass": "멀티미디어 요소에는 자막 트랙이 있습니다.",
  552. "incomplete": "요소에 캡션을 사용할 수 있는지 확인하세요."
  553. },
  554. "frame-tested": {
  555. "pass": "iframe은 axe-core로 테스트 되었습니다.",
  556. "fail": "iframe은 axe-core로 테스트 할 수 없습니다.",
  557. "incomplete": "iframe은 여전히 ​​axe-core로 테스트 해야 합니다."
  558. },
  559. "css-orientation-lock": {
  560. "pass": "디스플레이가 작동하고 방향 잠금이 설정되어 있지 않습니다.",
  561. "fail": "CSS 방향 잠금이 적용되어 디스플레이를 작동 할 수 없게 합니다.",
  562. "incomplete": "CSS 방향 잠금을 확인할 수 없습니다."
  563. },
  564. "meta-viewport-large": {
  565. "pass": "<meta> 태그가 모바일 장치에서 화면 확대가 가능합니다.",
  566. "fail": "<meta> 태그는 모바일 장치에서 화면 확대/축소를 제한합니다."
  567. },
  568. "meta-viewport": {
  569. "pass": "<meta> 태그는 모바일 장치에서 확대/축소를 비활성화하지 않습니다.",
  570. "fail": "<meta> 태그의 ${data}는 모바일 장치에서 확대/축소를 사용하지 않습니다."
  571. },
  572. "header-present": {
  573. "pass": "페이지에 헤더가 있습니다.",
  574. "fail": "페이지에 헤더가 없습니다."
  575. },
  576. "heading-order": {
  577. "pass": "제목 순서가 유효합니다.",
  578. "fail": "제목 순서가 잘못되었습니다."
  579. },
  580. "internal-link-present": {
  581. "pass": "유효한 건너뛰기 링크가 발견되었습니다.",
  582. "fail": "유효한 건너뛰기 링크가 없습니다."
  583. },
  584. "landmark": {
  585. "pass": "페이지에 랜드마크 영역이 있습니다.",
  586. "fail": "페이지에 랜드마크 영역이 없습니다."
  587. },
  588. "meta-refresh": {
  589. "pass": "<meta> 태그는 페이지를 즉시 새로 고치지 않습니다.",
  590. "fail": "<meta> 태그는 페이지를 새로 고침합니다."
  591. },
  592. "p-as-heading": {
  593. "pass": "<p> 요소는 제목처럼 스타일이 설정되지 않았습니다.",
  594. "fail": "스타일이 지정된 p 요소 대신 제목 요소를 사용해야 합니다."
  595. },
  596. "region": {
  597. "pass": "모든 페이지 내용은 랜드마크로 포함됩니다.",
  598. "fail": "일부 페이지 내용은 랜드마크에 포함되지 않습니다."
  599. },
  600. "skip-link": {
  601. "pass": "링크 건너뛰기 대상이 존재합니다.",
  602. "incomplete": "활성화 시 링크 대상 건너뛰기가 표시 되어야 합니다.",
  603. "fail": "건너띄기 링크 대상이 없습니다."
  604. },
  605. "unique-frame-title": {
  606. "pass": "요소의 title 속성은 고유합니다.",
  607. "fail": "요소의 title 속성이 고유하지 않습니다."
  608. },
  609. "duplicate-id-active": {
  610. "pass": "문서에 같은 id 속성을 갖는 유효한 요소는 없습니다.",
  611. "fail": "문서에 같은 id 속성을 갖는 유효한 요소가 있습니다: ${data}"
  612. },
  613. "duplicate-id-aria": {
  614. "pass": "문서에 ARIA로 참조된 요소나 동일한 id 속성을 공유하는 레이블이 없습니다.",
  615. "fail": "동일한 id 속성을 가진 ARIA를 참조하는 여러 요소가 문서에 있습니다: ${data}"
  616. },
  617. "duplicate-id": {
  618. "pass": "문서에 동일한 id 속성을 공유하는 정적 요소가 없습니다.",
  619. "fail": "문서에 동일한 id 속성을 가진 여러 정적 요소가 있습니다."
  620. },
  621. "aria-label": {
  622. "pass": "aria-label 속성이 존재하며 비어 있지 않습니다.",
  623. "fail": "aria-label 속성이 존재하지 않거나 비어 있습니다."
  624. },
  625. "aria-labelledby": {
  626. "pass": "aria-labeledby 속성이 있으며 스크린 리더에 표시되는 요소를 참조합니다.",
  627. "fail": "aria-labeledby 속성이 존재하지 않거나, 존재하지 않는 요소를 참조하거나, 비어 있는 요소를 참조합니다."
  628. },
  629. "avoid-inline-spacing": {
  630. "pass": "텍스트 간격에 영향을 주는 '!important'를 가진 인라인 스타일이 지정되지 않았습니다.",
  631. "fail": {
  632. "singular": "인라인 스타일에서 '!important' 제거 s ${data.values}, 이 항목을 재정의하는 것은 대부분의 브라우저에서 지원되지 않습니다.",
  633. "plural": "인라인 스타일에서 '!important' 제거 ${data.values}, 이 항목을 재정의하는 것은 대부분의 브라우저에서 지원되지 않습니다."
  634. }
  635. },
  636. "button-has-visible-text": {
  637. "pass": "요소에는 스크린 리더에 표시되는 내부 텍스트가 있습니다.",
  638. "fail": "요소에는 스크린 리더에서 볼 수 있는 내부 텍스트가 없습니다."
  639. },
  640. "doc-has-title": {
  641. "pass": "문서에 비어 있지 않은 <title> 요소가 있습니다.",
  642. "fail": "문서에 비어 있지 않은 <title> 요소가 없습니다."
  643. },
  644. "exists": {
  645. "pass": "요소는 존재하지 않습니다.",
  646. "fail": "요소가 존재합니다."
  647. },
  648. "has-alt": {
  649. "pass": "요소에 alt 속성이 존재합니다.",
  650. "fail": "요소에 alt 속성이 존재하지 않습니다."
  651. },
  652. "has-visible-text": {
  653. "pass": "요소에 스크린 리더가 인식 가능한 텍스트가 존재하고 있습니다.",
  654. "fail": "요소에 스크린 리더가 인식 가능한 텍스트가 존재하지 않습니다."
  655. },
  656. "is-on-screen": {
  657. "pass": "요소가 표시되어 있지 않습니다.",
  658. "fail": "요소가 표시되어 있습니다."
  659. },
  660. "non-empty-alt": {
  661. "pass": "요소에 비어있지 않은 alt 속성이 존재합니다.",
  662. "fail": "요소에 alt 속성이 존재하지 않거나, alt 속성이 비어 있습니다."
  663. },
  664. "non-empty-if-present": {
  665. "pass": {
  666. "default": "요소 값 속성이 없습니다",
  667. "has-label": "요소 비어 있지 않은 값 속성이 있습니다"
  668. },
  669. "fail": "요소에 value 속성이 존재하고, value 속성이 비어있습니다."
  670. },
  671. "non-empty-title": {
  672. "pass": "요소에 title 속성이 존재하고 있습니다.",
  673. "fail": "요소에 title 속성이 존재하지 않거나, title 속성이 비어 있습니다."
  674. },
  675. "non-empty-value": {
  676. "pass": "요소에 비어 있지 않은 value 요소가 존재하고 있습니다.",
  677. "fail": "요소에 value 속성이 존재하지 않거나, value 속성이 비어 있습니다."
  678. },
  679. "role-none": {
  680. "pass": "요소의 기본 의미가 role=\"none\" 역할로 재정의 되었습니다.",
  681. "fail": "요소의 기본 의미가 role=\"none\" 역할로 재정의 되지 않았습니다."
  682. },
  683. "role-presentation": {
  684. "pass": "요소의 기본 의미가 role=\"presentation\" 역할로 재정의 되었습니다.",
  685. "fail": "요소의 기본 의미가 role=\"presentation\" 역할로 재정의 되지 않았습니다."
  686. },
  687. "caption-faked": {
  688. "pass": "테이블의 첫 번째 행은 캡션으로 사용되지 않습니다.",
  689. "fail": "테이블의 첫 번째 자식은 테이블 셀 대신 캡션 이어야 합니다."
  690. },
  691. "html5-scope": {
  692. "pass": "scope 속성은 테이블 헤더 요소 (<th>)에서만 사용됩니다.",
  693. "fail": "HTML5에서 scope 속성은 테이블 헤더 요소(<th>)에서만 사용할 수 있습니다."
  694. },
  695. "same-caption-summary": {
  696. "pass": "summary 속성 및 <caption> 콘텐츠는 중복되지 않았습니다.",
  697. "fail": "summary 속성 및 <caption> 콘텐츠는 중복됩니다."
  698. },
  699. "scope-value": {
  700. "pass": "scope 속성은 올바르게 사용되고 있습니다.",
  701. "fail": "scope 속성의 값은 'row' 또는 'col'뿐입니다."
  702. },
  703. "td-has-header": {
  704. "pass": "비어 있지 않은 모든 데이터 셀에는 테이블 헤더가 있습니다.",
  705. "fail": "비어 있지 않은 일부 데이터 셀에는 테이블 헤더가 없습니다."
  706. },
  707. "td-headers-attr": {
  708. "pass": "headers 속성은 독점적으로 테이블의 다른 셀을 참조하는데 사용됩니다.",
  709. "fail": "headers 속성은 테이블의 다른 셀을 참조하는데 독점적으로 사용되지 않습니다."
  710. },
  711. "th-has-data-cells": {
  712. "pass": "모든 테이블 헤더 셀은 데이터 셀을 나타냅니다.",
  713. "fail": "모든 테이블 헤더 셀이 데이터 셀을 참조하는 것은 아닙니다.",
  714. "incomplete": "테이블 데이터 셀이 없거나 비어 있습니다."
  715. },
  716. "hidden-content": {
  717. "pass": "페이지의 모든 내용이 분석되었습니다.",
  718. "fail": "이 페이지의 내용을 분석하는 중에 문제가 발생했습니다.",
  719. "incomplete": "분석되지 않은 숨겨진 콘텐츠가 페이지에 있습니다. 콘텐츠를 분석하려면 해당 콘텐츠의 표시를 트리거 해야 합니다."
  720. }
  721. },
  722. "failureSummaries": {
  723. "any": {
  724. "failureMessage": "다음 중 하나를 수정하세요:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
  725. },
  726. "none": {
  727. "failureMessage": "다음 중 하나를 수정하세요:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
  728. }
  729. },
  730. "incompleteFallbackMessage": {
  731. "undefined": {
  732. "failureMessage": "다음 중 하나를 수정하세요:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
  733. }
  734. }
  735. }