source: frontend/node_modules/axe-core/locales/ko.json

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 63.2 KB
Line 
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}
Note: See TracBrowser for help on using the repository browser.