| 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": {
|
|---|
| 465 | "default": "필수 ARIA 하위 항목들이 존재합니다."
|
|---|
| 466 | },
|
|---|
| 467 | "fail": {
|
|---|
| 468 | "singular": "필수 ARIA 하위 역할(role)이 없습니다: ${data.values}",
|
|---|
| 469 | "plural": "필수 ARIA 하위 역할(role)들이 없습니다: ${data.values}"
|
|---|
| 470 | },
|
|---|
| 471 | "incomplete": {
|
|---|
| 472 | "singular": "추가 될 예상 ARIA 하위 역할(role): ${data.values}",
|
|---|
| 473 | "plural": "추가 될 예상 ARIA 하위 역할(role)들: ${data.values}"
|
|---|
| 474 | }
|
|---|
| 475 | },
|
|---|
| 476 | "aria-required-parent": {
|
|---|
| 477 | "pass": "필수 ARIA 상위 역할(role)이 존재합니다.",
|
|---|
| 478 | "fail": {
|
|---|
| 479 | "singular": "필수 ARIA 상위 역할(role)이 없습니다: ${data.values}",
|
|---|
| 480 | "plural": "필수 ARIA 상위 역할(role)들이 없습니다: ${data.values}"
|
|---|
| 481 | }
|
|---|
| 482 | },
|
|---|
| 483 | "aria-roledescription": {
|
|---|
| 484 | "pass": "aria-roledescription이 지원되는 의미론적 역할(role)에 사용되었습니다.",
|
|---|
| 485 | "incomplete": "지원되는 스크린리더에서 aria-roledescription이 낭독되는지 검사하세요.",
|
|---|
| 486 | "fail": "엘리먼트에 aria-roledescription을 지원하는 역할(role)을 제공되지 않았습니다."
|
|---|
| 487 | },
|
|---|
| 488 | "aria-unsupported-attr": {
|
|---|
| 489 | "pass": "ARIA 어트리뷰트가 지원됩니다.",
|
|---|
| 490 | "fail": "ARIA 어트리뷰트가 스크린리더와 보조기술에서 널리 지원되지 않습니다: ${data.values}"
|
|---|
| 491 | },
|
|---|
| 492 | "aria-valid-attr-value": {
|
|---|
| 493 | "pass": "ARIA 어트리뷰트 값이 유효합니다.",
|
|---|
| 494 | "fail": {
|
|---|
| 495 | "singular": "유효하지 않은 ARIA 어트리뷰트 값: ${data.values}",
|
|---|
| 496 | "plural": "유효하지 않은 ARIA 어트리뷰트 값들: ${data.values}"
|
|---|
| 497 | },
|
|---|
| 498 | "incomplete": {
|
|---|
| 499 | "noId": "ARIA 어트리뷰트 엘리먼트 ID가 페이지에 없습니다: ${data.needsReview}",
|
|---|
| 500 | "ariaCurrent": "ARIA 어트리뷰트 값이 유효하지 않으며 \"aria-current=true\"로 취급 될 것입니다: ${data.needsReview}",
|
|---|
| 501 | "idrefs": "페이지에 ARIA 어트리뷰트 엘리먼트 ID가 존재하는지 확인할 수 없습니다: ${data.needsReview}"
|
|---|
| 502 | }
|
|---|
| 503 | },
|
|---|
| 504 | "aria-valid-attr": {
|
|---|
| 505 | "pass": "ARIA 어트리뷰트 이름이 유효합니다.",
|
|---|
| 506 | "fail": {
|
|---|
| 507 | "singular": "유효하지 않은 ARIA 어트리뷰트 이름: ${data.values}",
|
|---|
| 508 | "plural": "유효하지 않은 ARIA 어트리뷰트 이름들: ${data.values}"
|
|---|
| 509 | }
|
|---|
| 510 | },
|
|---|
| 511 | "deprecatedrole": {
|
|---|
| 512 | "pass": "ARIA 역할(role)은 용도 폐기(deprecated) 되지 않았습니다.",
|
|---|
| 513 | "fail": "사용된 역할(role)은 용도 폐기(deprecated) 되었습니다: ${data.values}"
|
|---|
| 514 | },
|
|---|
| 515 | "fallbackrole": {
|
|---|
| 516 | "pass": "하나의 역할(role) 값만 사용되었습니다.",
|
|---|
| 517 | "fail": "폴백 역할(role)들은 구형 브라우저들에서 지원되지 않으므로, 단 하나의 값만 사용해야 합니다.",
|
|---|
| 518 | "incomplete": "'presentation'이나 'none' 역할(role)만 사용하세요, 둘은 동의어입니다."
|
|---|
| 519 | },
|
|---|
| 520 | "has-global-aria-attribute": {
|
|---|
| 521 | "pass": {
|
|---|
| 522 | "singular": "엘리먼트가 전역 ARIA 어트리뷰트를 가지고 있습니다: ${data.values}",
|
|---|
| 523 | "plural": "엘리먼트가 전역 ARIA 어트리뷰트들을 가지고 있습니다: ${data.values}"
|
|---|
| 524 | },
|
|---|
| 525 | "fail": "엘리먼트가 전역 ARIA 어트리뷰트를 가지고 있지 않습니다."
|
|---|
| 526 | },
|
|---|
| 527 | "has-widget-role": {
|
|---|
| 528 | "pass": "엘리먼트가 위젯 역할(role)을 가지고 있습니다.",
|
|---|
| 529 | "fail": "엘리먼트가 위젯 역할(role)을 가지고 있지 않습니다."
|
|---|
| 530 | },
|
|---|
| 531 | "invalidrole": {
|
|---|
| 532 | "pass": "ARIA 역할(role)이 유효합니다.",
|
|---|
| 533 | "fail": {
|
|---|
| 534 | "singular": "역할(role)은 반드시 유효한 ARIA 역할(role)들 중 하나여야 합니다: ${data.values}",
|
|---|
| 535 | "plural": "역할(role)들은 반드시 유효한 ARIA 역할(role)들 중 하나여야 합니다: ${data.values}"
|
|---|
| 536 | }
|
|---|
| 537 | },
|
|---|
| 538 | "is-element-focusable": {
|
|---|
| 539 | "pass": "엘리먼트가 초점을 얻을 수 있습니다(focusable).",
|
|---|
| 540 | "fail": "엘리먼트가 초점을 얻을 수 없습니다(not focusable)."
|
|---|
| 541 | },
|
|---|
| 542 | "no-implicit-explicit-label": {
|
|---|
| 543 | "pass": "<label>과 접근 가능한 이름이 일치합니다.",
|
|---|
| 544 | "incomplete": "<label>이 ARIA ${data} 필드의 이름의 일부일 필요가 없는지 확인하세요."
|
|---|
| 545 | },
|
|---|
| 546 | "unsupportedrole": {
|
|---|
| 547 | "pass": "ARIA 역할(role)이 지원됩니다.",
|
|---|
| 548 | "fail": "사용된 역할(role)이 스크린리더와 보조기술에서 널리 지원되지 않습니다: ${data.values}"
|
|---|
| 549 | },
|
|---|
| 550 | "valid-scrollable-semantics": {
|
|---|
| 551 | "pass": "엘리먼트가 초점 순서(focus order)의 엘리먼트에 유효한 의미론을 가집니다.",
|
|---|
| 552 | "fail": "엘리먼트가 초점 순서(focus order)의 엘리먼트에 유효하지 않은 의미론을 가집니다."
|
|---|
| 553 | },
|
|---|
| 554 | "color-contrast-enhanced": {
|
|---|
| 555 | "pass": "엘리먼트가 ${data.contrastRatio}의 충분한 명도 대비를 가집니다.",
|
|---|
| 556 | "fail": {
|
|---|
| 557 | "default": "엘리먼트가 ${data.contrastRatio} (전경색: ${data.fgColor}, 배경색: ${data.bgColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight})의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}",
|
|---|
| 558 | "fgOnShadowColor": "엘리먼트가 전경색과 그림자 색상 (전경색: ${data.fgColor}, 텍스트 그림자 색상: ${data.shadowColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight}) 사이에 ${data.contrastRatio}의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}",
|
|---|
| 559 | "shadowOnBgColor": "엘리먼트가 그림자 색상과 배경색 (텍스트 그림자 색상: ${data.shadowColor}, 배경색: ${data.bgColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight}) 사이에 ${data.contrastRatio}의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}"
|
|---|
| 560 | },
|
|---|
| 561 | "incomplete": {
|
|---|
| 562 | "default": "명암비를 확인할 수 없습니다.",
|
|---|
| 563 | "bgImage": "배경 이미지로 인해 엘리먼트의 배경색이 확인될 수 없습니다.",
|
|---|
| 564 | "bgGradient": "배경 그라데이션으로 인해 엘리먼트의 배경색이 확인될 수 없습니다.",
|
|---|
| 565 | "imgNode": "엘리먼트가 이미지 노드를 포함하기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
|
|---|
| 566 | "bgOverlap": "다른 엘리먼트로 겹쳐 있기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
|
|---|
| 567 | "fgAlpha": "알파 투명도 때문에 엘리먼트의 전경색이 확인될 수 없습니다.",
|
|---|
| 568 | "elmPartiallyObscured": "다른 엘리먼트에 의해 부분적으로 가려 있기 때문에 배경색이 확인될 수 없습니다.",
|
|---|
| 569 | "elmPartiallyObscuring": "다른 엘리먼트에 의해 부분적으로 겹쳐 있기 때문에 배경색이 확인될 수 없습니다.",
|
|---|
| 570 | "outsideViewport": "엘리먼트가 뷰포트 밖에 있기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
|
|---|
| 571 | "equalRatio": "엘리먼트가 배경색과 1:1의 명암비를 가집니다.",
|
|---|
| 572 | "shortTextContent": "엘리먼트 콘텐츠가 너무 짧아 실제 텍스트 콘텐츠인지 확인될 수 없습니다.",
|
|---|
| 573 | "nonBmp": "엘리먼트 콘텐츠가 비텍스트 문자만 포함합니다.",
|
|---|
| 574 | "pseudoContent": "가상 엘리먼트로 인해 엘리먼트의 배경색이 확인될 수 없습니다."
|
|---|
| 575 | }
|
|---|
| 576 | },
|
|---|
| 577 | "color-contrast": {
|
|---|
| 578 | "pass": "엘리먼트가 ${data.contrastRatio}의 충분한 명도 대비를 가집니다.",
|
|---|
| 579 | "fail": {
|
|---|
| 580 | "default": "엘리먼트가 ${data.contrastRatio} (전경색: ${data.fgColor}, 배경색: ${data.bgColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight})의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}",
|
|---|
| 581 | "fgOnShadowColor": "엘리먼트가 전경색과 그림자 색상 (전경색: ${data.fgColor}, 텍스트 그림자 색상: ${data.shadowColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight}) 사이에 ${data.contrastRatio}의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}",
|
|---|
| 582 | "shadowOnBgColor": "엘리먼트가 그림자 색상과 배경색 (텍스트 그림자 색상: ${data.shadowColor}, 배경색: ${data.bgColor}, 글꼴 크기: ${data.fontSize}, 글꼴 두께: ${data.fontWeight}) 사이에 ${data.contrastRatio}의 불충분한 명도 대비를 가집니다. 기대 명암비: ${data.expectedContrastRatio}"
|
|---|
| 583 | },
|
|---|
| 584 | "incomplete": {
|
|---|
| 585 | "default": "명암비를 확인할 수 없습니다.",
|
|---|
| 586 | "bgImage": "배경 이미지로 인해 엘리먼트의 배경색이 확인될 수 없습니다.",
|
|---|
| 587 | "bgGradient": "배경 그라데이션으로 인해 엘리먼트의 배경색이 확인될 수 없습니다.",
|
|---|
| 588 | "imgNode": "엘리먼트가 이미지 노드를 포함하기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
|
|---|
| 589 | "bgOverlap": "다른 엘리먼트로 겹쳐 있기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
|
|---|
| 590 | "fgAlpha": "알파 투명도 때문에 엘리먼트의 전경색이 확인될 수 없습니다.",
|
|---|
| 591 | "elmPartiallyObscured": "다른 엘리먼트에 의해 부분적으로 가려 있기 때문에 배경색이 확인될 수 없습니다.",
|
|---|
| 592 | "elmPartiallyObscuring": "다른 엘리먼트에 의해 부분적으로 겹쳐 있기 때문에 배경색이 확인될 수 없습니다.",
|
|---|
| 593 | "outsideViewport": "엘리먼트가 뷰포트 밖에 있기 때문에 엘리먼트의 배경색이 확인될 수 없습니다.",
|
|---|
| 594 | "equalRatio": "엘리먼트가 배경색과 1:1의 명암비를 가집니다.",
|
|---|
| 595 | "shortTextContent": "엘리먼트 콘텐츠가 너무 짧아 실제 텍스트 콘텐츠인지 확인될 수 없습니다.",
|
|---|
| 596 | "nonBmp": "엘리먼트 콘텐츠가 비텍스트 문자만 포함합니다.",
|
|---|
| 597 | "pseudoContent": "가상 엘리먼트로 인해 엘리먼트의 배경색이 확인될 수 없습니다."
|
|---|
| 598 | }
|
|---|
| 599 | },
|
|---|
| 600 | "link-in-text-block": {
|
|---|
| 601 | "pass": "링크가 색상 외 다른 방법으로 주변 텍스트와 구별 될 수 있습니다.",
|
|---|
| 602 | "fail": "링크가 색상 외 다른 방법으로 주변 텍스트와 구별 될 필요가 있습니다.",
|
|---|
| 603 | "incomplete": {
|
|---|
| 604 | "default": "명암비를 확인할 수 없습니다.",
|
|---|
| 605 | "bgContrast": "엘리먼트의 명암비가 확인될 수 없습니다. 뚜렷이 구별되는 hover/focus 스타일을 확인하세요.",
|
|---|
| 606 | "bgImage": "'배경 이미지로 인해 엘리먼트의 명암비가 확인될 수 없습니다.",
|
|---|
| 607 | "bgGradient": "배경 그라데이션으로 인해 엘리먼트의 명암비가 확인될 수 없습니다.",
|
|---|
| 608 | "imgNode": "엘리먼트가 이미지 노드를 포함하기 때문에 엘리먼트의 명암비가 확인될 수 없습니다.",
|
|---|
| 609 | "bgOverlap": "엘리먼트 겹침으로 인해 엘리먼트의 명암비가 확인될 수 없습니다."
|
|---|
| 610 | }
|
|---|
| 611 | },
|
|---|
| 612 | "autocomplete-appropriate": {
|
|---|
| 613 | "pass": "autocomplete 값이 적절한 엘리먼트에 있습니다.",
|
|---|
| 614 | "fail": "autocomplete 값은 이 유형의 입력에는 적절하지 않습니다."
|
|---|
| 615 | },
|
|---|
| 616 | "autocomplete-valid": {
|
|---|
| 617 | "pass": "autocomplete 어트리뷰트가 올바르게 구성되었습니다.",
|
|---|
| 618 | "fail": "autocomplete 어트리뷰트가 올바르지 않게 구성되었습니다."
|
|---|
| 619 | },
|
|---|
| 620 | "accesskeys": {
|
|---|
| 621 | "pass": "accesskey 어트리뷰트 값이 고유합니다.",
|
|---|
| 622 | "fail": "문서에 동일한 accesskey를 가진 여러 엘리먼트가 있습니다."
|
|---|
| 623 | },
|
|---|
| 624 | "focusable-content": {
|
|---|
| 625 | "pass": "엘리먼트가 초점을 얻을 수 있는(focusable) 엘리먼트를 포함합니다.",
|
|---|
| 626 | "fail": "엘리먼트가 초점을 얻을 수 있는(focusable) 콘텐츠를 가져야 합니다."
|
|---|
| 627 | },
|
|---|
| 628 | "focusable-disabled": {
|
|---|
| 629 | "pass": "엘리먼트 안에 초점을 얻을 수 있는(focusable) 엘리먼트가 없습니다.",
|
|---|
| 630 | "fail": "초점을 얻을 수 있는(focusable) 콘텐츠는 비활성 되거나 DOM에서 제거되어야 합니다."
|
|---|
| 631 | },
|
|---|
| 632 | "focusable-element": {
|
|---|
| 633 | "pass": "엘리먼트가 초점을 얻을 수 있습니다(focusable).",
|
|---|
| 634 | "fail": "엘리먼트가 초점을 얻을 수 있어야(focusable) 합니다."
|
|---|
| 635 | },
|
|---|
| 636 | "focusable-modal-open": {
|
|---|
| 637 | "pass": "modal이 열려 있는 동안 초점을 얻을 수 있는(focusable) 엘리먼트가 없습니다.",
|
|---|
| 638 | "incomplete": "현재 상태에서 초점을 얻을 수 있는(focusable) 엘리먼트가 키보드로 초점을 얻을 수(tabbable) 없는지 확인하세요."
|
|---|
| 639 | },
|
|---|
| 640 | "focusable-no-name": {
|
|---|
| 641 | "pass": "엘리먼트가 탭 순서(tab order)에 없거나 접근 가능한 텍스트를 가지고 있습니다.",
|
|---|
| 642 | "fail": "엘리먼트가 탭 순서(tab order)에 있지만 접근 가능한 텍스트를 가지고 있지 않습니다.",
|
|---|
| 643 | "incomplete": "엘리먼트가 접근 가능한 이름을 가지고 있는지 확인할 수 없습니다."
|
|---|
| 644 | },
|
|---|
| 645 | "focusable-not-tabbable": {
|
|---|
| 646 | "pass": "엘리먼트 안에 초점을 얻을 수 있는(focusable) 엘리먼트가 없습니다.",
|
|---|
| 647 | "fail": "초점을 얻을 수 있는(focusable) 콘텐츠는 tabindex='-1'을 가지거나 DOM에서 제거되어야 합니다."
|
|---|
| 648 | },
|
|---|
| 649 | "frame-focusable-content": {
|
|---|
| 650 | "pass": "엘리먼트에 초점을 얻을 수 있는(focusable) 후손 항목이 없습니다.",
|
|---|
| 651 | "fail": "엘리먼트에 초점을 얻을 수 있는(focusable) 후손 항목이 있습니다.",
|
|---|
| 652 | "incomplete": "엘리먼트에 후손 항목이 있는지 확인할 수 없습니다."
|
|---|
| 653 | },
|
|---|
| 654 | "landmark-is-top-level": {
|
|---|
| 655 | "pass": "${data.role} 랜드마크가 최상위에 있습니다.",
|
|---|
| 656 | "fail": "${data.role} 랜드마크가 다른 랜드마크에 포함되어 있습니다."
|
|---|
| 657 | },
|
|---|
| 658 | "no-focusable-content": {
|
|---|
| 659 | "pass": "엘리먼트에 초점을 얻을 수 있는(focusable) 후손 항목이 없습니다.",
|
|---|
| 660 | "fail": {
|
|---|
| 661 | "default": "엘리먼트에 초점을 얻을 수 있는(focusable) 후손 항목이 있습니다.",
|
|---|
| 662 | "notHidden": "대화형 컨트롤 내부의 엘리먼트에 음수 tabindex를 사용하는 것은 ('aria-hidden=true'인 경우에도) 보조기술에서 엘리먼트가 초점을 얻는 것을 막지 않습니다."
|
|---|
| 663 | },
|
|---|
| 664 | "incomplete": "엘리먼트에 후손 항목이 있는지 확인할 수 없습니다."
|
|---|
| 665 | },
|
|---|
| 666 | "page-has-heading-one": {
|
|---|
| 667 | "pass": "페이지가 최소 한 개의 1 레벨 제목을 가지고 있습니다.",
|
|---|
| 668 | "fail": "페이지가 반드시 1 레벨 제목을 가져야 합니다."
|
|---|
| 669 | },
|
|---|
| 670 | "page-has-main": {
|
|---|
| 671 | "pass": "문서에 최소 하나의 main 랜드마크가 있습니다.",
|
|---|
| 672 | "fail": "문서에 main 랜드마크가 없습니다."
|
|---|
| 673 | },
|
|---|
| 674 | "page-no-duplicate-banner": {
|
|---|
| 675 | "pass": "문서가 banner 랜드마크를 하나를 초과하여 가지고 있지 않습니다.",
|
|---|
| 676 | "fail": "문서가 banner 랜드마크를 하나를 초과하여 가지고 있습니다."
|
|---|
| 677 | },
|
|---|
| 678 | "page-no-duplicate-contentinfo": {
|
|---|
| 679 | "pass": "문서가 contentinfo 랜드마크를 하나를 초과하여 가지고 있지 않습니다.",
|
|---|
| 680 | "fail": "문서가 contentinfo 랜드마크를 하나를 초과하여 가지고 있습니다."
|
|---|
| 681 | },
|
|---|
| 682 | "page-no-duplicate-main": {
|
|---|
| 683 | "pass": "문서가 main 랜드마크를 하나를 초과하여 가지고 있지 않습니다.",
|
|---|
| 684 | "fail": "문서가 main 랜드마크를 하나를 초과하여 가지고 있습니다."
|
|---|
| 685 | },
|
|---|
| 686 | "tabindex": {
|
|---|
| 687 | "pass": "엘리먼트가 0보다 큰 tabindex를 가지고 있지 않습니다.",
|
|---|
| 688 | "fail": "엘리먼트가 0보다 큰 tabindex를 가지고 있습니다."
|
|---|
| 689 | },
|
|---|
| 690 | "alt-space-value": {
|
|---|
| 691 | "pass": "엘리먼트가 유효한 alt 어트리뷰트 값을 가지고 있습니다.",
|
|---|
| 692 | "fail": "엘리먼트가 공백 문자만으로 구성 되는 alt 어트리뷰트를 가지고 있고, 이는 모든 스크린리더가 무시하지 않습니다."
|
|---|
| 693 | },
|
|---|
| 694 | "duplicate-img-label": {
|
|---|
| 695 | "pass": "엘리먼트가 <img> alt 텍스트에 기존 텍스트를 중복하지 않습니다.",
|
|---|
| 696 | "fail": "엘리먼트가 기존 텍스트와 중복되는 alt 텍스트를 가진 <img> 엘리먼트를 포함합니다."
|
|---|
| 697 | },
|
|---|
| 698 | "explicit-label": {
|
|---|
| 699 | "pass": "form 엘리먼트가 명시적인 <label>을 가지고 있습니다.",
|
|---|
| 700 | "fail": "form 엘리먼트에 명시적인 <label>이 없습니다.",
|
|---|
| 701 | "incomplete": "form 엘리먼트가 명시적인 <label>을 가지고 있는지 확인할 수 없습니다."
|
|---|
| 702 | },
|
|---|
| 703 | "help-same-as-label": {
|
|---|
| 704 | "pass": "도움말 텍스트(title이나 aria-describedby)가 레이블 텍스트를 중복하지 않습니다.",
|
|---|
| 705 | "fail": "도움말 텍스트(title이나 aria-describedby)가 레이블 텍스트와 동일합니다."
|
|---|
| 706 | },
|
|---|
| 707 | "hidden-explicit-label": {
|
|---|
| 708 | "pass": "form 엘리먼트가 눈에 보이는 명시적인 <label>을 가집니다.",
|
|---|
| 709 | "fail": "form 엘리먼트가 숨겨진 명시적인 <label>을 가집니다.",
|
|---|
| 710 | "incomplete": "form 엘리먼트가 숨겨진 명시적인 <label>을 가지는지 확인할 수 없습니다."
|
|---|
| 711 | },
|
|---|
| 712 | "implicit-label": {
|
|---|
| 713 | "pass": "form 엘리먼트가 암묵적인(감싸는) <label>을 가집니다.",
|
|---|
| 714 | "fail": "form 엘리먼트에 암묵적인(감싸는) <label>이 없습니다.",
|
|---|
| 715 | "incomplete": "form 엘리먼트가 암묵적인(감싸는) <label>을 가지는지 확인할 수 없습니다."
|
|---|
| 716 | },
|
|---|
| 717 | "label-content-name-mismatch": {
|
|---|
| 718 | "pass": "엘리먼트가 접근 가능한 이름의 일부로 눈에 보이는 텍스트를 포함하고 있습니다.",
|
|---|
| 719 | "fail": "엘리먼트 내부 텍스트가 접근 가능한 이름에 포함되어 있지 않습니다."
|
|---|
| 720 | },
|
|---|
| 721 | "multiple-label": {
|
|---|
| 722 | "pass": "form 필드가 여러 레이블 엘리먼트를 가지고 있지 않습니다.",
|
|---|
| 723 | "incomplete": "여러 레이블 엘리먼트는 보조기술에서 널리 지원되지 않습니다. 첫 번째 레이블이 모든 필요한 정보를 포함하는지 확인하세요."
|
|---|
| 724 | },
|
|---|
| 725 | "title-only": {
|
|---|
| 726 | "pass": "form 엘리먼트가 레이블을 위해 title 어트리뷰트만 단독으로 사용하지 않습니다.",
|
|---|
| 727 | "fail": "form 엘리먼트의 레이블을 생성하는데 title만 사용되었습니다."
|
|---|
| 728 | },
|
|---|
| 729 | "landmark-is-unique": {
|
|---|
| 730 | "pass": "랜드마크는 반드시 고유한 역할(role)이나 role/label/title 조합(즉, 접근 가능한 이름)을 가져야 합니다.",
|
|---|
| 731 | "fail": "랜드마크는 랜드마크를 구별할 수 있게 만들기 위해 반드시 고유한 aria-label, aria-labelledby 또는 title을 가져야 합니다."
|
|---|
| 732 | },
|
|---|
| 733 | "has-lang": {
|
|---|
| 734 | "pass": "<html> 엘리먼트에 lang 어트리뷰트가 있습니다.",
|
|---|
| 735 | "fail": {
|
|---|
| 736 | "noXHTML": "xml:lang 어트리뷰트는 HTML 페이지에 유효하지 않습니다, lang 어트리뷰트를 사용하세요.",
|
|---|
| 737 | "noLang": "<html> 어트리뷰트에 lang 어트리뷰트가 없습니다."
|
|---|
| 738 | }
|
|---|
| 739 | },
|
|---|
| 740 | "valid-lang": {
|
|---|
| 741 | "pass": "lang 어트리뷰트의 값이 유효한 언어 목록에 포함되어 있습니다.",
|
|---|
| 742 | "fail": "lang 어트리뷰트의 값이 유효한 언어 목록에 포함되어 있지 않습니다."
|
|---|
| 743 | },
|
|---|
| 744 | "xml-lang-mismatch": {
|
|---|
| 745 | "pass": "lang과 xml:lang 어트리뷰트가 동일한 기본 언어를 가지고 있습니다.",
|
|---|
| 746 | "fail": "lang과 xml:lang 어트리뷰트가 동일한 기본 언어를 가지고 있지 않습니다."
|
|---|
| 747 | },
|
|---|
| 748 | "dlitem": {
|
|---|
| 749 | "pass": "설명 목록 항목이 <dl> 상위 엘리먼트를 가지고 있습니다.",
|
|---|
| 750 | "fail": "설명 목록 항목이 <dl> 상위 엘리먼트를 가지고 있지 않습니다."
|
|---|
| 751 | },
|
|---|
| 752 | "listitem": {
|
|---|
| 753 | "pass": "목록 항목이 <ul>, <ol> 또는 role=\"list\" 상위 엘리먼트를 가지고 있습니다.",
|
|---|
| 754 | "fail": {
|
|---|
| 755 | "default": "목록 항목이 <ul>, <ol> 상위 엘리먼트를 가지고 있지 않습니다.",
|
|---|
| 756 | "roleNotValid": "목록 항목이 역할(role)이 없는 <ul>, <ol> 상위 엘리먼트나 role=\"list\" 상위 엘리먼트를 가지고 있지 않습니다."
|
|---|
| 757 | }
|
|---|
| 758 | },
|
|---|
| 759 | "only-dlitems": {
|
|---|
| 760 | "pass": "목록 엘리먼트가 허용된 내부 <dt>나 <dd> 엘리먼트 직속 자식만 가지고 있습니다.",
|
|---|
| 761 | "fail": "목록 엘리먼트가 허용된 내부 <dt>나 <dd> 엘리먼트가 아닌 직속 자식을 가지고 있습니다."
|
|---|
| 762 | },
|
|---|
| 763 | "only-listitems": {
|
|---|
| 764 | "pass": "목록 엘리먼트가 허용된 내부 <li> 엘리먼트 직속 자식만 가지고 있습니다.",
|
|---|
| 765 | "fail": {
|
|---|
| 766 | "default": "목록 엘리먼트가 허용된 내부 <li> 엘리먼트가 아닌 직속 자식을 가지고 있습니다.",
|
|---|
| 767 | "roleNotValid": "목록 엘리먼트가 허용되지 않은 역할(role)을 가진 직속 자식을 가지고 있습니다: ${data.roles}"
|
|---|
| 768 | }
|
|---|
| 769 | },
|
|---|
| 770 | "structured-dlitems": {
|
|---|
| 771 | "pass": "비어있지 않은 경우, 엘리먼트가 <dt>와 <dd> 엘리먼트를 모두 가지고 있습니다.",
|
|---|
| 772 | "fail": "비어있지 않은 경우, 엘리먼트가 최소 하나의 <dd> 엘리먼트가 뒤따르는 최소 하나의 <dt> 엘리먼트를 가지고 있지 않습니다."
|
|---|
| 773 | },
|
|---|
| 774 | "caption": {
|
|---|
| 775 | "pass": "멀티미디어 엘리먼트가 캡션(자막) 트랙을 가지고 있습니다.",
|
|---|
| 776 | "incomplete": "엘리먼트에 캡션(자막)이 사용 가능한지 확인하세요."
|
|---|
| 777 | },
|
|---|
| 778 | "frame-tested": {
|
|---|
| 779 | "pass": "iframe이 axe-core로 테스트 되었습니다.",
|
|---|
| 780 | "fail": "iframe이 axe-core로 테스트 될 수 없습니다.",
|
|---|
| 781 | "incomplete": "iframe은 아직 axe-core로 테스트 되지 않았습니다."
|
|---|
| 782 | },
|
|---|
| 783 | "no-autoplay-audio": {
|
|---|
| 784 | "pass": "<video>나 <audio>가 허용된 지속 시간을 초과하여 오디오를 출력하지 않거나 제어 메커니즘을 가지고 있습니다.",
|
|---|
| 785 | "fail": "<video>나 <audio>가 허용된 지속 시간을 초과하여 오디오를 출력하거나 제어 메커니즘을 가지고 있지 않습니다.",
|
|---|
| 786 | "incomplete": "<video>나 <audio>가 허용된 지속 시간을 초과하여 오디오를 출력하지 않거나 제어 메커니즘을 제공하고 있는지 확인하세요."
|
|---|
| 787 | },
|
|---|
| 788 | "css-orientation-lock": {
|
|---|
| 789 | "pass": "디스플레이를 조작할 수 있고, 방향 잠금이 존재하지 않습니다.",
|
|---|
| 790 | "fail": "CSS 방향 잠금이 적용되어 있어, 디스플레이를 조작할 수 없습니다.",
|
|---|
| 791 | "incomplete": "CSS 방향 잠금이 확인될 수 없습니다."
|
|---|
| 792 | },
|
|---|
| 793 | "meta-viewport-large": {
|
|---|
| 794 | "pass": "<meta> 태그가 모바일 기기에서 확대/축소하는 것을 제한하지 않습니다.",
|
|---|
| 795 | "fail": "<meta> 태그가 모바일 기기에서 확대/축소하는 것을 제한하고 있습니다."
|
|---|
| 796 | },
|
|---|
| 797 | "meta-viewport": {
|
|---|
| 798 | "pass": "<meta> 태그가 모바일 기기에서 확대/축소하는 것을 비활성화하지 않았습니다.",
|
|---|
| 799 | "fail": "모바일 기기에서 <meta> 태그의 ${data}이(가) 확대/축소를 할 수 없게 만듭니다."
|
|---|
| 800 | },
|
|---|
| 801 | "header-present": {
|
|---|
| 802 | "pass": "페이지가 제목을 가지고 있습니다.",
|
|---|
| 803 | "fail": "페이지에 제목이 없습니다."
|
|---|
| 804 | },
|
|---|
| 805 | "heading-order": {
|
|---|
| 806 | "pass": "제목 순서가 유효합니다.",
|
|---|
| 807 | "fail": "제목 순서가 잘못되었습니다.",
|
|---|
| 808 | "incomplete": "이전 제목을 확인 할 수 없습니다."
|
|---|
| 809 | },
|
|---|
| 810 | "identical-links-same-purpose": {
|
|---|
| 811 | "pass": "다른 URL로 이동하는 동일한 이름의 다른 링크가 없습니다.",
|
|---|
| 812 | "incomplete": "링크가 동일한 용도를 가지고 있는지, 또는 의도적으로 모호하게 한 것인지 확인하세요."
|
|---|
| 813 | },
|
|---|
| 814 | "internal-link-present": {
|
|---|
| 815 | "pass": "유효한 건너뛰기 링크가 발견되었습니다.",
|
|---|
| 816 | "fail": "유효한 건너뛰기 링크를 찾을 수 없습니다."
|
|---|
| 817 | },
|
|---|
| 818 | "landmark": {
|
|---|
| 819 | "pass": "페이지가 랜드마크 영역을 가지고 있습니다.",
|
|---|
| 820 | "fail": "페이지에 랜드마크 영역이 없습니다."
|
|---|
| 821 | },
|
|---|
| 822 | "meta-refresh": {
|
|---|
| 823 | "pass": "<meta> 태그가 페이지를 즉시 새로고침하지 않습니다.",
|
|---|
| 824 | "fail": "<meta> 태그가 페이지의 시간 제한 새로고침을 강요합니다."
|
|---|
| 825 | },
|
|---|
| 826 | "p-as-heading": {
|
|---|
| 827 | "pass": "<p> 엘리먼트가 제목으로 스타일되지 않았습니다.",
|
|---|
| 828 | "fail": "스타일링된 p 엘리먼트는 제목 엘리먼트 대신 사용되지 않아야 합니다.",
|
|---|
| 829 | "incomplete": "<p> 엘리먼트가 제목으로 스타일되었는지 확인할 수 없습니다."
|
|---|
| 830 | },
|
|---|
| 831 | "region": {
|
|---|
| 832 | "pass": "모든 페이지 콘텐츠가 랜드마크에 포함되어 있습니다.",
|
|---|
| 833 | "fail": "일부 페이지 콘텐츠가 랜드마크에 포함되어 있지 않습니다."
|
|---|
| 834 | },
|
|---|
| 835 | "skip-link": {
|
|---|
| 836 | "pass": "건너뛰기 링크 대상이 존재합니다.",
|
|---|
| 837 | "incomplete": "건너뛰기 링크 대상이 활성화 시 표시되어야 합니다.",
|
|---|
| 838 | "fail": "건너뛰기 링크 대상이 없습니다."
|
|---|
| 839 | },
|
|---|
| 840 | "unique-frame-title": {
|
|---|
| 841 | "pass": "엘리먼트의 title 어트리뷰트가 고유합니다.",
|
|---|
| 842 | "fail": "엘리먼트의 title 어트리뷰트가 고유하지 않습니다."
|
|---|
| 843 | },
|
|---|
| 844 | "duplicate-id-active": {
|
|---|
| 845 | "pass": "문서에 동일한 id 어트리뷰트를 공유하는 활성 엘리먼트가 없습니다.",
|
|---|
| 846 | "fail": "문서에 동일한 id 어트리뷰트를 가진 활성 엘리먼트가 있습니다: ${data}"
|
|---|
| 847 | },
|
|---|
| 848 | "duplicate-id-aria": {
|
|---|
| 849 | "pass": "문서에 동일한 id 어트리뷰트를 공유하는 ARIA로 참조된 엘리먼트 및 레이블이 없습니다.",
|
|---|
| 850 | "fail": "문서에 동일한 id 어트리뷰트를 가진 ARIA로 참조된 여러 엘리먼트가 있습니다: ${data}"
|
|---|
| 851 | },
|
|---|
| 852 | "duplicate-id": {
|
|---|
| 853 | "pass": "문서에 동일한 id 어트리뷰트를 공유하는 정적 엘리먼트가 없습니다.",
|
|---|
| 854 | "fail": "문서에 동일한 id 어트리뷰트를 공유하는 여러 정적 엘리먼트가 있습니다: ${data}"
|
|---|
| 855 | },
|
|---|
| 856 | "aria-label": {
|
|---|
| 857 | "pass": "aria-label 어트리뷰트가 존재하고 비어있지 않습니다.",
|
|---|
| 858 | "fail": "aria-label 어트리뷰트가 없거나 비어있습니다."
|
|---|
| 859 | },
|
|---|
| 860 | "aria-labelledby": {
|
|---|
| 861 | "pass": "aria-labelledby 어트리뷰트가 존재하고 스크린리더에 노출되는 엘리먼트를 참조하고 있습니다.",
|
|---|
| 862 | "fail": "aria-labelledby 어트리뷰트가 없거나, 존재하지 않는 엘리먼트를 참조하고 있거나, 비어있는 엘리먼트를 참조하고 있습니다.",
|
|---|
| 863 | "incomplete": "aria-labelledby가 존재하고 있는 엘리먼트를 참조하는지 확인하세요."
|
|---|
| 864 | },
|
|---|
| 865 | "avoid-inline-spacing": {
|
|---|
| 866 | "pass": "텍스트 간격에 영향을 주는 '!important'를 가진 명시된 인라인 스타일이 없습니다.",
|
|---|
| 867 | "fail": {
|
|---|
| 868 | "singular": "인라인 스타일을 재정의 하는 것을 대부분의 브라우저가 지원하지 않으므로, 인라인 스타일 ${data.values}에서 '!important'를 제거하세요.",
|
|---|
| 869 | "plural": "인라인 스타일들을 재정의 하는 것을 대부분의 브라우저가 지원하지 않으므로, 인라인 스타일들 ${data.values}에서 '!important'를 제거하세요."
|
|---|
| 870 | }
|
|---|
| 871 | },
|
|---|
| 872 | "button-has-visible-text": {
|
|---|
| 873 | "pass": "엘리먼트가 스크린리더에 노출되는 내부 텍스트를 가지고 있습니다.",
|
|---|
| 874 | "fail": "엘리먼트에 스크린리더에 노출되는 내부 텍스트가 없습니다.",
|
|---|
| 875 | "incomplete": "엘리먼트가 하위 항목을 가지고 있는지 확인할 수 없습니다."
|
|---|
| 876 | },
|
|---|
| 877 | "doc-has-title": {
|
|---|
| 878 | "pass": "문서가 비어있지 않은 <title> 엘리먼트를 가지고 있습니다.",
|
|---|
| 879 | "fail": "문서에 비어있지 않은 <title> 엘리먼트가 없습니다."
|
|---|
| 880 | },
|
|---|
| 881 | "exists": {
|
|---|
| 882 | "pass": "엘리먼트가 존재하지 않습니다.",
|
|---|
| 883 | "incomplete": "엘리먼트가 존재합니다."
|
|---|
| 884 | },
|
|---|
| 885 | "has-alt": {
|
|---|
| 886 | "pass": "엘리먼트가 alt 어트리뷰트를 가지고 있습니다.",
|
|---|
| 887 | "fail": "엘리먼트에 alt 어트리뷰트가 없습니다."
|
|---|
| 888 | },
|
|---|
| 889 | "has-visible-text": {
|
|---|
| 890 | "pass": "엘리먼트가 스크린리더에 노출되는 텍스트를 가지고 있습니다.",
|
|---|
| 891 | "fail": "엘리먼트가 스크린리더에 노출되는 텍스트를 가지고 있지 않습니다.",
|
|---|
| 892 | "incomplete": "엘리먼트가 하위 항목을 가지고 있는지 확인할 수 없습니다."
|
|---|
| 893 | },
|
|---|
| 894 | "is-on-screen": {
|
|---|
| 895 | "pass": "엘리먼트가 보이지 않습니다.",
|
|---|
| 896 | "fail": "엘리먼트가 노출되어 있습니다."
|
|---|
| 897 | },
|
|---|
| 898 | "non-empty-alt": {
|
|---|
| 899 | "pass": "엘리먼트가 비어있지 않은 alt 어트리뷰트를 가지고 있습니다.",
|
|---|
| 900 | "fail": {
|
|---|
| 901 | "noAttr": "엘리먼트에 alt 어트리뷰트가 없습니다.",
|
|---|
| 902 | "emptyAttr": "엘리먼트가 빈 alt 어트리뷰트를 가지고 있습니다."
|
|---|
| 903 | }
|
|---|
| 904 | },
|
|---|
| 905 | "non-empty-if-present": {
|
|---|
| 906 | "pass": {
|
|---|
| 907 | "default": "엘리먼트에 value 어트리뷰트가 없습니다.",
|
|---|
| 908 | "has-label": "엘리먼트가 비어있지 않은 value 어트리뷰트를 가지고 있습니다."
|
|---|
| 909 | },
|
|---|
| 910 | "fail": "엘리먼트가 value 어트리뷰트를 가지고 있고 value 어트리뷰트가 비어있습니다."
|
|---|
| 911 | },
|
|---|
| 912 | "non-empty-placeholder": {
|
|---|
| 913 | "pass": "엘리먼트가 placeholder 어트리뷰트를 가지고 있습니다.",
|
|---|
| 914 | "fail": {
|
|---|
| 915 | "noAttr": "엘리먼트에 placeholder 어트리뷰트가 없습니다.",
|
|---|
| 916 | "emptyAttr": "엘리먼트가 빈 placeholder 어트리뷰트를 가지고 있습니다."
|
|---|
| 917 | }
|
|---|
| 918 | },
|
|---|
| 919 | "non-empty-title": {
|
|---|
| 920 | "pass": "엘리먼트가 title 어트리뷰트를 가지고 있습니다.",
|
|---|
| 921 | "fail": {
|
|---|
| 922 | "noAttr": "엘리먼트에 title 어트리뷰트가 없습니다.",
|
|---|
| 923 | "emptyAttr": "엘리먼트가 빈 title 어트리뷰트를 가지고 있습니다."
|
|---|
| 924 | }
|
|---|
| 925 | },
|
|---|
| 926 | "non-empty-value": {
|
|---|
| 927 | "pass": "엘리먼트가 비어있지 않은 value 어트리뷰트를 가지고 있습니다.",
|
|---|
| 928 | "fail": {
|
|---|
| 929 | "noAttr": "엘리먼트에 value 어트리뷰트가 없습니다.",
|
|---|
| 930 | "emptyAttr": "엘리먼트가 빈 value 어트리뷰트를 가지고 있습니다."
|
|---|
| 931 | }
|
|---|
| 932 | },
|
|---|
| 933 | "presentational-role": {
|
|---|
| 934 | "pass": "엘리먼트의 기본 의미론이 role=\"${data.role}\"(으)로 재정의되었습니다.",
|
|---|
| 935 | "fail": {
|
|---|
| 936 | "default": "엘리먼트의 기본 의미론이 role=\"none\"이나 role=\"presentation\"으로 재정의되지 않았습니다.",
|
|---|
| 937 | "globalAria": "엘리먼트가 전역 ARIA 어트리뷰트를 가지고 있기 때문에 엘리먼트의 역할(role)이 표현적이지 않습니다.",
|
|---|
| 938 | "focusable": "엘리먼트가 초점을 얻을 수 있기(focusable) 때문에 엘리먼트의 역할(role)은 표현적이지 않습니다.",
|
|---|
| 939 | "both": "전역 ARIA 어트리뷰트를 가지고 있고 초점을 얻을 수 있기(focusable) 때문에 엘리먼트의 역할(role)은 표현적이지 않습니다."
|
|---|
| 940 | }
|
|---|
| 941 | },
|
|---|
| 942 | "role-none": {
|
|---|
| 943 | "pass": "엘리먼트의 기본 의미론이 role=\"none\"으로 재정의되었습니다.",
|
|---|
| 944 | "fail": "엘리먼트의 기본 의미론이 role=\"none\"으로 재정의되지 않았습니다."
|
|---|
| 945 | },
|
|---|
| 946 | "role-presentation": {
|
|---|
| 947 | "pass": "엘리먼트의 기본 의미론이 role=\"presentation\"으로 재정의되었습니다.",
|
|---|
| 948 | "fail": "엘리먼트의 기본 의미론이 role=\"presentation\"으로 재정의되지 않았습니다."
|
|---|
| 949 | },
|
|---|
| 950 | "svg-non-empty-title": {
|
|---|
| 951 | "pass": "엘리먼트가 title인 하위 항목을 가지고 있습니다.",
|
|---|
| 952 | "fail": {
|
|---|
| 953 | "noTitle": "엘리먼트에 title인 하위 항목이 없습니다.",
|
|---|
| 954 | "emptyTitle": "엘리먼트 하위 title이 비어있습니다."
|
|---|
| 955 | },
|
|---|
| 956 | "incomplete": "엘리먼트가 title인 하위 항목을 가지고 있는지 확인할 수 없습니다."
|
|---|
| 957 | },
|
|---|
| 958 | "caption-faked": {
|
|---|
| 959 | "pass": "테이블의 첫 번째 행이 캡션으로 사용되지 않았습니다.",
|
|---|
| 960 | "fail": "테이블의 첫 번째 자식은 테이블 셀 대신 caption이어야 합니다."
|
|---|
| 961 | },
|
|---|
| 962 | "html5-scope": {
|
|---|
| 963 | "pass": "scope 어트리뷰트가 테이블 헤더 엘리먼트(<th>)에만 사용되었습니다.",
|
|---|
| 964 | "fail": "HTML 5에서, scope 어트리뷰트는 테이블 헤더 엘리먼트(<th>)에만 사용 될 수 있습니다."
|
|---|
| 965 | },
|
|---|
| 966 | "same-caption-summary": {
|
|---|
| 967 | "pass": "summary 어트리뷰트의 내용과 <caption>이 중복되지 않습니다.",
|
|---|
| 968 | "fail": "summary 어트리뷰트의 내용과 <caption> 엘리먼트가 동일합니다."
|
|---|
| 969 | },
|
|---|
| 970 | "scope-value": {
|
|---|
| 971 | "pass": "scope 어트리뷰트가 올바르게 사용되었습니다.",
|
|---|
| 972 | "fail": "어트리뷰트의 값은 오직 'row'나 'col'만 될 수 있습니다."
|
|---|
| 973 | },
|
|---|
| 974 | "td-has-header": {
|
|---|
| 975 | "pass": "모든 비어있지 않은 데이터 셀이 테이블 헤더를 가지고 있습니다.",
|
|---|
| 976 | "fail": "일부 비어있지 않은 데이터 셀이 테이블 헤더를 가지고 있지 않습니다."
|
|---|
| 977 | },
|
|---|
| 978 | "td-headers-attr": {
|
|---|
| 979 | "pass": "headers 어트리뷰트는 오직 테이블의 다른 셀을 참조하는데에만 사용되고 있습니다.",
|
|---|
| 980 | "incomplete": "headers 어트리뷰트가 비어있습니다.",
|
|---|
| 981 | "fail": "headers 어트리뷰트가 오직 테이블의 다른 셀을 참조하는데에만 사용되지 않고 있습니다."
|
|---|
| 982 | },
|
|---|
| 983 | "th-has-data-cells": {
|
|---|
| 984 | "pass": "모든 테이블 헤더 셀이 데이터 셀을 참조하고 있습니다.",
|
|---|
| 985 | "fail": "모든 테이블 헤더 셀이 데이터 셀을 참조하고 있지 않습니다.",
|
|---|
| 986 | "incomplete": "테이블 데이터 셀이 누락되었거나 비어있습니다."
|
|---|
| 987 | },
|
|---|
| 988 | "hidden-content": {
|
|---|
| 989 | "pass": "페이지의 모든 콘텐츠가 분석 되었습니다.",
|
|---|
| 990 | "fail": "이 페이지의 콘텐츠를 분석하는데 문제가 발생했습니다.",
|
|---|
| 991 | "incomplete": "페이지에 분석될 수 없는 숨겨진 콘텐츠가 있습니다. 이 콘텐츠를 분석하려면 콘텐츠의 노출을 동작시킬 필요가 있습니다."
|
|---|
| 992 | }
|
|---|
| 993 | },
|
|---|
| 994 | "failureSummaries": {
|
|---|
| 995 | "any": {
|
|---|
| 996 | "failureMessage": "다음 중 하나를 해결하세요:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
|
|---|
| 997 | },
|
|---|
| 998 | "none": {
|
|---|
| 999 | "failureMessage": "다음 사항을 모두 해결하세요:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
|
|---|
| 1000 | }
|
|---|
| 1001 | },
|
|---|
| 1002 | "incompleteFallbackMessage": "axe가 원인을 제시할 수 없습니다. 엘리먼트 검사기를 열어 볼 시간입니다!"
|
|---|
| 1003 | }
|
|---|