govuk_publishing_components 38.2.0 → 38.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/govuk_publishing_components/components/feedback.js +0 -38
  3. data/app/views/govuk_publishing_components/components/_share_links.html.erb +2 -2
  4. data/app/views/govuk_publishing_components/components/feedback/_survey_signup_form.html.erb +7 -45
  5. data/config/locales/ar.yml +1 -1
  6. data/config/locales/az.yml +1 -1
  7. data/config/locales/be.yml +1 -1
  8. data/config/locales/bg.yml +1 -1
  9. data/config/locales/bn.yml +1 -1
  10. data/config/locales/cs.yml +1 -1
  11. data/config/locales/cy.yml +1 -1
  12. data/config/locales/da.yml +1 -1
  13. data/config/locales/de.yml +1 -1
  14. data/config/locales/dr.yml +1 -1
  15. data/config/locales/el.yml +1 -1
  16. data/config/locales/en.yml +1 -1
  17. data/config/locales/es-419.yml +1 -1
  18. data/config/locales/es.yml +1 -1
  19. data/config/locales/et.yml +1 -1
  20. data/config/locales/fa.yml +1 -1
  21. data/config/locales/fi.yml +1 -1
  22. data/config/locales/fr.yml +1 -1
  23. data/config/locales/gd.yml +1 -1
  24. data/config/locales/gu.yml +1 -1
  25. data/config/locales/he.yml +1 -1
  26. data/config/locales/hi.yml +1 -1
  27. data/config/locales/hr.yml +1 -1
  28. data/config/locales/hu.yml +1 -1
  29. data/config/locales/hy.yml +1 -1
  30. data/config/locales/id.yml +1 -1
  31. data/config/locales/is.yml +1 -1
  32. data/config/locales/it.yml +1 -1
  33. data/config/locales/ja.yml +1 -1
  34. data/config/locales/ka.yml +1 -1
  35. data/config/locales/kk.yml +1 -1
  36. data/config/locales/lt.yml +1 -1
  37. data/config/locales/lv.yml +1 -1
  38. data/config/locales/ms.yml +1 -1
  39. data/config/locales/mt.yml +1 -1
  40. data/config/locales/nl.yml +1 -1
  41. data/config/locales/no.yml +1 -1
  42. data/config/locales/pa-pk.yml +1 -1
  43. data/config/locales/pa.yml +1 -1
  44. data/config/locales/pl.yml +1 -1
  45. data/config/locales/ps.yml +1 -1
  46. data/config/locales/pt.yml +1 -1
  47. data/config/locales/ro.yml +1 -1
  48. data/config/locales/ru.yml +1 -1
  49. data/config/locales/si.yml +1 -1
  50. data/config/locales/sk.yml +1 -1
  51. data/config/locales/sl.yml +1 -1
  52. data/config/locales/so.yml +1 -1
  53. data/config/locales/sq.yml +1 -1
  54. data/config/locales/sr.yml +1 -1
  55. data/config/locales/sv.yml +1 -1
  56. data/config/locales/sw.yml +1 -1
  57. data/config/locales/ta.yml +1 -1
  58. data/config/locales/th.yml +1 -1
  59. data/config/locales/tk.yml +1 -1
  60. data/config/locales/tr.yml +1 -1
  61. data/config/locales/uk.yml +1 -1
  62. data/config/locales/ur.yml +1 -1
  63. data/config/locales/uz.yml +1 -1
  64. data/config/locales/vi.yml +1 -1
  65. data/config/locales/zh-hk.yml +1 -1
  66. data/config/locales/zh-tw.yml +1 -1
  67. data/config/locales/zh.yml +1 -1
  68. data/lib/govuk_publishing_components/version.rb +1 -1
  69. data/node_modules/axe-core/README.md +7 -3
  70. data/node_modules/axe-core/axe.js +11587 -10370
  71. data/node_modules/axe-core/axe.min.js +2 -2
  72. data/node_modules/axe-core/locales/_template.json +13 -5
  73. data/node_modules/axe-core/locales/da.json +3 -1
  74. data/node_modules/axe-core/locales/de.json +207 -31
  75. data/node_modules/axe-core/locales/el.json +1069 -0
  76. data/node_modules/axe-core/locales/es.json +3 -1
  77. data/node_modules/axe-core/locales/eu.json +3 -1
  78. data/node_modules/axe-core/locales/fr.json +3 -1
  79. data/node_modules/axe-core/locales/he.json +3 -1
  80. data/node_modules/axe-core/locales/it.json +1108 -0
  81. data/node_modules/axe-core/locales/ja.json +3 -1
  82. data/node_modules/axe-core/locales/ko.json +3 -1
  83. data/node_modules/axe-core/locales/no_NB.json +3 -1
  84. data/node_modules/axe-core/locales/pl.json +3 -1
  85. data/node_modules/axe-core/locales/pt_BR.json +3 -1
  86. data/node_modules/axe-core/locales/zh_CN.json +1116 -0
  87. data/node_modules/axe-core/locales/zh_TW.json +1108 -0
  88. data/node_modules/axe-core/package.json +19 -21
  89. data/node_modules/axe-core/sri-history.json +4 -0
  90. metadata +7 -3
@@ -0,0 +1,1108 @@
1
+ {
2
+ "lang": "zh_TW",
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 屬性",
14
+ "help": "元素只能使用受支援的 ARIA 屬性"
15
+ },
16
+ "aria-allowed-role": {
17
+ "description": "確保角色屬性具有適合該元素的值",
18
+ "help": "ARIA 角色應該適合該元素"
19
+ },
20
+ "aria-braille-equivalent": {
21
+ "description": "確保 aria-braillelabel 和 aria-brailleroledescription 具有非點字等效項",
22
+ "help": "aria-braille 屬性必須具有非點字等效項"
23
+ },
24
+ "aria-command-name": {
25
+ "description": "確保每個 ARIA 按鈕、連結和選單項目都有一個無障礙的名稱",
26
+ "help": "ARIA 指令必須具有無障礙的名稱"
27
+ },
28
+ "aria-conditional-attr": {
29
+ "description": "確保按照元素角色規範中的描述使用 ARIA 屬性",
30
+ "help": "必須按照元素角色指定的方式使用 ARIA 屬性"
31
+ },
32
+ "aria-deprecated-role": {
33
+ "description": "確保元素不使用已棄用的角色",
34
+ "help": "不得使用已棄用的 ARIA 角色"
35
+ },
36
+ "aria-dialog-name": {
37
+ "description": "確保每個 ARIA 對話框和警報對話框節點都有一個無障礙的名稱",
38
+ "help": "ARIA 對話框和警報對話框節點應該有一個無障礙的名稱"
39
+ },
40
+ "aria-hidden-body": {
41
+ "description": "確保 <body> 沒有 aria-hidden=\"true\"",
42
+ "help": "aria-hidden=\"true\" 不得出現在 <body>"
43
+ },
44
+ "aria-hidden-focus": {
45
+ "description": "確保 aria 隱藏元素不可對焦也不包含可聚焦元素",
46
+ "help": "ARIA 隱藏元素不得為可聚焦元素或包含可聚焦元素"
47
+ },
48
+ "aria-input-field-name": {
49
+ "description": "確保每個 ARIA 輸入欄位都有一個無障礙的名稱",
50
+ "help": "ARIA 輸入欄位必須具有無障礙的名稱"
51
+ },
52
+ "aria-meter-name": {
53
+ "description": "確保每個 ARIA 計量節點都有一個無障礙的名稱",
54
+ "help": "ARIA 計量節點必須具有無障礙的名稱"
55
+ },
56
+ "aria-progressbar-name": {
57
+ "description": "確保每個 ARIA 進度條節點都有一個無障礙的名稱",
58
+ "help": "ARIA 進度條節點必須具有無障礙的名稱"
59
+ },
60
+ "aria-prohibited-attr": {
61
+ "description": "確保元素角色不禁止 ARIA 屬性",
62
+ "help": "元素只能使用允許的 ARIA 屬性"
63
+ },
64
+ "aria-required-attr": {
65
+ "description": "確保具有 ARIA 角色的元素具有所有必需的 ARIA 屬性",
66
+ "help": "必須提供必需的 ARIA 屬性"
67
+ },
68
+ "aria-required-children": {
69
+ "description": "確保具有需要子角色的 ARIA 角色的元素包含它們",
70
+ "help": "某些 ARIA 角色必須包含特定的子角色"
71
+ },
72
+ "aria-required-parent": {
73
+ "description": "確保具有需要父角色的 ARIA 角色的元素包含在其中",
74
+ "help": "某些 ARIA 角色必須被特定的父級包含"
75
+ },
76
+ "aria-roledescription": {
77
+ "description": "確保 aria-roledescription 僅用於具有隱式或顯式角色的元素",
78
+ "help": "aria-roledescription 必須位於具有語意角色的元素上"
79
+ },
80
+ "aria-roles": {
81
+ "description": "確保具有角色屬性的所有元素都使用有效值",
82
+ "help": "使用的 ARIA 角色必須符合有效值"
83
+ },
84
+ "aria-text": {
85
+ "description": "確保在沒有可聚焦後代的元素上使用 role=\"text\"",
86
+ "help": "\"role=text\"不應有可聚焦的後代"
87
+ },
88
+ "aria-toggle-field-name": {
89
+ "description": "確保每個 ARIA 切換欄位都有一個無障礙的名稱",
90
+ "help": "ARIA 切換欄位必須具有無障礙的名稱"
91
+ },
92
+ "aria-tooltip-name": {
93
+ "description": "確保每個 ARIA 工具提示節點都有一個無障礙的名稱",
94
+ "help": "ARIA 工具提示節點必須具有無障礙的名稱"
95
+ },
96
+ "aria-treeitem-name": {
97
+ "description": "確保每個 ARIA 樹項節點都有一個無障礙的名稱",
98
+ "help": "ARIA 樹項節點應該有一個無障礙的名稱"
99
+ },
100
+ "aria-valid-attr-value": {
101
+ "description": "確保所有 ARIA 屬性都具有有效值",
102
+ "help": "ARIA 屬性必須符合有效值"
103
+ },
104
+ "aria-valid-attr": {
105
+ "description": "確保以 aria- 開頭的屬性是有效的 ARIA 屬性",
106
+ "help": "ARIA 屬性必須符合有效名稱"
107
+ },
108
+ "audio-caption": {
109
+ "description": "確保 <audio> 元素有標題",
110
+ "help": "<audio> 元素必須有字幕軌道"
111
+ },
112
+ "autocomplete-valid": {
113
+ "description": "確保 autocomplete 屬性正確且適合表單字段",
114
+ "help": "必須正確使用 autocomplete 屬性"
115
+ },
116
+ "avoid-inline-spacing": {
117
+ "description": "確保可以使用自訂樣式表調整透過樣式屬性設定的文字間距",
118
+ "help": "內嵌文字間距必須可以使用自訂樣式表進行調整"
119
+ },
120
+ "blink": {
121
+ "description": "確保不使用 <blink> 元素",
122
+ "help": "<blink> 元素已棄用,不得使用"
123
+ },
124
+ "button-name": {
125
+ "description": "確保按鈕具有可識別的文字",
126
+ "help": "按鈕必須有可辨識的文字"
127
+ },
128
+ "bypass": {
129
+ "description": "確保每個頁面至少有一個機制供用戶繞過導航並直接跳到內容",
130
+ "help": "頁面必須具有繞過重複區塊的方法"
131
+ },
132
+ "color-contrast-enhanced": {
133
+ "description": "確保前景色和背景色之間的對比度符合 WCAG 2 AAA 增強對比度閾值",
134
+ "help": "元素必須滿足增強的顏色對比閾值"
135
+ },
136
+ "color-contrast": {
137
+ "description": "確保前景色和背景色之間的對比度符合 WCAG 2 AA 最小對比度閾值",
138
+ "help": "元素必須滿足最低顏色對比閾值"
139
+ },
140
+ "css-orientation-lock": {
141
+ "description": "確保內容不會鎖定到任何特定的顯示方向,並且內容可在所有顯示方向上操作",
142
+ "help": "CSS 媒體查詢不得鎖定顯示方向"
143
+ },
144
+ "definition-list": {
145
+ "description": "確保 <dl> 元素結構正確",
146
+ "help": "<dl> 元素只能直接包含正確排序的 <dt> 和 <dd> 群組、<script>、<template> 或 <div> 元素"
147
+ },
148
+ "dlitem": {
149
+ "description": "確保 <dt> 和 <dd> 元素包含在 <dl> 中",
150
+ "help": "<dt> 和 <dd> 元素必須包含在 <dl> 中"
151
+ },
152
+ "document-title": {
153
+ "description": "確保每個 HTML 頁面包含非空 <title> 元素",
154
+ "help": "頁面必須具有 <title> 元素以幫助導航"
155
+ },
156
+ "duplicate-id-active": {
157
+ "description": "確保活動元素的每個 id 屬性值都是唯一的",
158
+ "help": "活動元素的 ID 必須是唯一的"
159
+ },
160
+ "duplicate-id-aria": {
161
+ "description": "確保 ARIA 和標籤中使用的每個 id 屬性值都是唯一的",
162
+ "help": "ARIA 和標籤中使用的 ID 必須是唯一的"
163
+ },
164
+ "duplicate-id": {
165
+ "description": "確保每個 id 屬性值都是唯一的",
166
+ "help": "id 屬性值必須是唯一的"
167
+ },
168
+ "empty-heading": {
169
+ "description": "確保標題具有可識別的文字",
170
+ "help": "標題不能為空"
171
+ },
172
+ "empty-table-header": {
173
+ "description": "確保表格標題具有可識別的文字",
174
+ "help": "表格標題文字不應為空"
175
+ },
176
+ "focus-order-semantics": {
177
+ "description": "確保焦點次序中的元素具有適合互動式內容的角色",
178
+ "help": "焦點次序中的元素應具有適當的角色"
179
+ },
180
+ "form-field-multiple-labels": {
181
+ "description": "確保表單欄位沒有多個標籤元素",
182
+ "help": "表單欄位不得有多個標籤元素"
183
+ },
184
+ "frame-focusable-content": {
185
+ "description": "確保具有可聚焦內容的 <frame> 和 <iframe> 元素沒有 tabindex=-1",
186
+ "help": "具有可聚焦內容的框架不得具有 tabindex=-1"
187
+ },
188
+ "frame-tested": {
189
+ "description": "確保 <iframe> 和 <frame> 元素包含 axe-core 腳本",
190
+ "help": "框架應使用 axe-core 進行測試"
191
+ },
192
+ "frame-title-unique": {
193
+ "description": "確保 <iframe> 和 <frame> 元素包含唯一的標題屬性",
194
+ "help": "框架必須具有唯一的標題屬性"
195
+ },
196
+ "frame-title": {
197
+ "description": "確保 <iframe> 和 <frame> 元素具有無障礙的名稱",
198
+ "help": "框架必須有一個易於訪問的名稱"
199
+ },
200
+ "heading-order": {
201
+ "description": "確保標題順序在語意上正確",
202
+ "help": "標題等級只能增加一級"
203
+ },
204
+ "hidden-content": {
205
+ "description": "告知使用者隱藏內容",
206
+ "help": "應分析頁面上的隱藏內容"
207
+ },
208
+ "html-has-lang": {
209
+ "description": "確保每個 HTML 頁面都有一個 lang 屬性",
210
+ "help": "<html> 元素必須有 lang 屬性"
211
+ },
212
+ "html-lang-valid": {
213
+ "description": "確保 <html> 元素的 lang 屬性具有有效值",
214
+ "help": "<html> 元素必須具有有效的 lang 屬性值"
215
+ },
216
+ "html-xml-lang-mismatch": {
217
+ "description": "確保具有有效 lang 和 xml:lang 屬性的 HTML 元素與頁面的基本語言一致",
218
+ "help": "帶有 lang 和 xml:lang 的 HTML 元素必須具有相同的基本語言"
219
+ },
220
+ "identical-links-same-purpose": {
221
+ "description": "確保具有相同無障礙名稱的連結具有相似的目的",
222
+ "help": "具有相同名稱的連結必須具有相似的目的"
223
+ },
224
+ "image-alt": {
225
+ "description": "確保 <img> 元素具有替代文字或 \"none\" 或 \"presentation\" 角色",
226
+ "help": "圖片必須有替代文字"
227
+ },
228
+ "image-redundant-alt": {
229
+ "description": "確保替代圖像不會重複為文字",
230
+ "help": "圖像的替代文字不應作為文字重複"
231
+ },
232
+ "input-button-name": {
233
+ "description": "確保輸入按鈕具有可識別的文字",
234
+ "help": "輸入按鈕必須有可辨識的文字"
235
+ },
236
+ "input-image-alt": {
237
+ "description": "確保 <input type=\"image\"> 元素具有替代文字",
238
+ "help": "圖像按鈕必須有替代文字"
239
+ },
240
+ "label-content-name-mismatch": {
241
+ "description": "確保透過其內容標記的元素必須將其可見文字作為其無障礙名稱的一部分",
242
+ "help": "元素的可見文字必須作為其無障礙名稱的一部分"
243
+ },
244
+ "label-title-only": {
245
+ "description": "確保每個表單都有一個可見標籤,並且不僅僅使用隱藏標籤或標題或 aria-describedby 屬性",
246
+ "help": "表單應該有一個可見的標籤"
247
+ },
248
+ "label": {
249
+ "description": "確保每個表單都有一個標籤",
250
+ "help": "表單必須有標籤"
251
+ },
252
+ "landmark-banner-is-top-level": {
253
+ "description": "確保橫幅 landmark 位於頂層",
254
+ "help": "橫幅 landmark 不應包含在另一個 landmark 中"
255
+ },
256
+ "landmark-complementary-is-top-level": {
257
+ "description": "確保互補的 landmark 或旁位於頂層",
258
+ "help": "Aside 不應包含在另一個 landmark 中"
259
+ },
260
+ "landmark-contentinfo-is-top-level": {
261
+ "description": "確保 contentinfo landmark 位於頂層",
262
+ "help": "Contentinfo landmark 不應包含在另一個 landmark 中"
263
+ },
264
+ "landmark-main-is-top-level": {
265
+ "description": "確保主要 landmark 位於頂層",
266
+ "help": "主要 landmark 不應包含在另一個 landmark 中"
267
+ },
268
+ "landmark-no-duplicate-banner": {
269
+ "description": "確保頁面最多有一個橫幅 landmark",
270
+ "help": "頁面不應有超過一個橫幅 landmark"
271
+ },
272
+ "landmark-no-duplicate-contentinfo": {
273
+ "description": "確保頁面最多有一個 contentinfo landmark",
274
+ "help": "頁面不應包含多個內容資訊 landmark"
275
+ },
276
+ "landmark-no-duplicate-main": {
277
+ "description": "確保頁面最多有一個主要 landmark",
278
+ "help": "頁面不應有超過一個主要 landmark"
279
+ },
280
+ "landmark-one-main": {
281
+ "description": "確保頁面有一個主要 landmark",
282
+ "help": "頁面應該有一個主要 landmark"
283
+ },
284
+ "landmark-unique": {
285
+ "help": "確保 landmark 的獨特性",
286
+ "description": "landmark 應具有獨特的角色或角色/標籤/標題(即無障礙的名稱) 組合成唯一"
287
+ },
288
+ "link-in-text-block": {
289
+ "description": "確保連結以不依賴顏色的方式與周圍的文字區分開來",
290
+ "help": "連結必須能夠在不依賴顏色的情況下區分"
291
+ },
292
+ "link-name": {
293
+ "description": "確保連結具有可識別的文字",
294
+ "help": "連結必須有可識別的文字"
295
+ },
296
+ "list": {
297
+ "description": "確保列表結構正確",
298
+ "help": "<ul> 和 <ol> 只能直接包含 <li>、<script> 或 <template> 元素"
299
+ },
300
+ "listitem": {
301
+ "description": "確保 <li> 元素按語義使用",
302
+ "help": "<li> 元素必須包含在 <ul> 或 <ol> 中"
303
+ },
304
+ "marquee": {
305
+ "description": "確保不使用 <marquee> 元素",
306
+ "help": "<marquee> 元素已棄用,不得使用"
307
+ },
308
+ "meta-refresh-no-exceptions": {
309
+ "description": "確保 <meta http-equiv=\"refresh\"> 不用於延遲刷新",
310
+ "help": "不得使用延遲刷新"
311
+ },
312
+ "meta-refresh": {
313
+ "description": "確保 <meta http-equiv=\"refresh\"> 不用於延遲刷新",
314
+ "help": "不得使用20小時以下的延遲刷新"
315
+ },
316
+ "meta-viewport-large": {
317
+ "description": "確保 <meta name=\"viewport\"> 可以足夠縮放量",
318
+ "help": "用戶應該能夠將文字縮放至 500%"
319
+ },
320
+ "meta-viewport": {
321
+ "description": "確保 <meta name=\"viewport\"> 不會停用文字縮放",
322
+ "help": "不得禁用縮放"
323
+ },
324
+ "nested-interactive": {
325
+ "description": "確保互動式控制不嵌套,因為螢幕閱讀器並不總是宣布它們,或者可能導致輔助軟體出現焦點問題",
326
+ "help": "互動控件不得嵌套"
327
+ },
328
+ "no-autoplay-audio": {
329
+ "description": "確保 <video> 或 <audio> 元素在沒有控制機制停止或靜音音訊的情況下自動播放音訊不會超過 3 秒",
330
+ "help": "<video> 或 <audio> 元素不得自動播放"
331
+ },
332
+ "object-alt": {
333
+ "description": "確保 <object> 元素具有替代文字",
334
+ "help": "<object> 元素必須有替代文字"
335
+ },
336
+ "p-as-heading": {
337
+ "description": "確保粗體、斜體文字和字體大小不用於將 <p> 元素設定為標題",
338
+ "help": "樣式化的 <p> 元素不得作為標題"
339
+ },
340
+ "page-has-heading-one": {
341
+ "description": "確保頁面或至少其中一個框架包含一級標題",
342
+ "help": "頁面應包含一級標題"
343
+ },
344
+ "presentation-role-conflict": {
345
+ "description": "標記為展示性的元素不應具有全域 ARIA 或 tabindex 以確保所有螢幕閱讀器忽略它們",
346
+ "help": "確保標記為展示性的元素始終被忽略"
347
+ },
348
+ "region": {
349
+ "description": "確保所有頁面內容都包含在 landmark 中",
350
+ "help": "所有頁面內容應包含在 landmark 中"
351
+ },
352
+ "role-img-alt": {
353
+ "description": "確保 [role=\"img\"] 元素具有替代文字",
354
+ "help": "[role=\"img\"] 元素必須有替代文字"
355
+ },
356
+ "scope-attr-valid": {
357
+ "description": "確保在表上正確使用範圍屬性",
358
+ "help": "應正確使用範圍屬性"
359
+ },
360
+ "scrollable-region-focusable": {
361
+ "description": "確保具有可滾動內容的元素可以透過鍵盤訪問",
362
+ "help": "可滾動區域必須具有鍵盤存取權限"
363
+ },
364
+ "select-name": {
365
+ "description": "確保選擇元素具有無障礙的名稱",
366
+ "help": "選擇元素必須具有無障礙的名稱"
367
+ },
368
+ "server-side-image-map": {
369
+ "description": "確保不使用伺服器端圖像映射",
370
+ "help": "不得使用伺服器端圖像映射"
371
+ },
372
+ "skip-link": {
373
+ "description": "確保所有跳過連結都有可聚焦的目標",
374
+ "help": "跳過連結目標應該存在並且可聚焦"
375
+ },
376
+ "svg-img-alt": {
377
+ "description": "確保具有 img、圖形頁面或圖形符號角色的 <svg> 元素具有無障礙的文字",
378
+ "help": "具有 img 角色的 <svg> 元素必須有替代文字"
379
+ },
380
+ "tabindex": {
381
+ "description": "確保 tabindex 屬性值不大於 0",
382
+ "help": "元素的 tabindex 不應大於零"
383
+ },
384
+ "table-duplicate-name": {
385
+ "description": "確保 <caption> 元素不包含與摘要屬性相同的文字",
386
+ "help": "表格不應具有相同的摘要和標題"
387
+ },
388
+ "table-fake-caption": {
389
+ "description": "確保帶有標題的表格使用 <caption> 元素",
390
+ "help": "資料或標題儲存格不得用於為資料表提供標題"
391
+ },
392
+ "target-size": {
393
+ "description": "確保觸摸目標有足夠的尺寸和空間",
394
+ "help": "所有觸摸目標必須為 24px 大,或留出足夠的空間"
395
+ },
396
+ "td-has-header": {
397
+ "description": "確保大於 3 x 3 的 <table> 中的每個非空資料單元格都具有一個或多個表標題",
398
+ "help": "較大 <table> 中的非空 <td> 元素必須具有關聯的表頭"
399
+ },
400
+ "td-headers-attr": {
401
+ "description": "確保表中使用 headers 屬性的每個單元格僅引用該表中的其他單元格",
402
+ "help": "使用 headers 屬性的表格儲存格只能引用同一個表格中的儲存格"
403
+ },
404
+ "th-has-data-cells": {
405
+ "description": "確保 <th> 元素和具有 role=columnheader/rowheader 的元素具有它們所描述的資料單元",
406
+ "help": "資料表中的表標題必須引用資料儲存格"
407
+ },
408
+ "valid-lang": {
409
+ "description": "確保 lang 屬性具有有效值",
410
+ "help": "lang 屬性必須具有有效值"
411
+ },
412
+ "video-caption": {
413
+ "description": "確保 <video> 元素有標題",
414
+ "help": "<video> 元素必須有標題"
415
+ }
416
+ },
417
+ "checks": {
418
+ "abstractrole": {
419
+ "pass": "不使用抽象角色",
420
+ "fail": {
421
+ "singular": "抽象角色不能直接使用:${data.values}",
422
+ "plural": "抽象角色不能直接使用:${data.values}"
423
+ }
424
+ },
425
+ "aria-allowed-attr": {
426
+ "pass": "ARIA 屬性正確用於定義的角色",
427
+ "fail": {
428
+ "singular": "不允許使用 ARIA 屬性:${data.values}",
429
+ "plural": "不允許使用 ARIA 屬性:${data.values}"
430
+ },
431
+ "incomplete": "檢查是否在此元素上忽略 ARIA 屬性沒有問題:${data.values}"
432
+ },
433
+ "aria-allowed-role": {
434
+ "pass": "給定元素允許 ARIA 角色",
435
+ "fail": {
436
+ "singular": "給定元素不允許 ARIA 角色 ${data.values}",
437
+ "plural": "給定元素不允許 ARIA 角色 ${data.values}"
438
+ },
439
+ "incomplete": {
440
+ "singular": "當元素可見時,必須刪除 ARIA 角色 ${data.values},因為該元素不允許這樣做",
441
+ "plural": "當元素可見時,必須刪除 ARIA 角色 ${data.values},因為元素不允許使用它們"
442
+ }
443
+ },
444
+ "aria-busy": {
445
+ "pass": "元素具有 aria-busy 屬性",
446
+ "fail": "元素在顯示載入程式時使用 aria-busy=\"true\""
447
+ },
448
+ "aria-conditional-attr": {
449
+ "pass": "允許使用 ARIA 屬性",
450
+ "fail": {
451
+ "checkbox": "刪除 aria-checked,或將其設為\"${data.checkState}\"以符合真實的複選框狀態",
452
+ "rowSingular": "樹狀網格行支援此屬性,但 ${data.ownerRole} 不支援:${data.invalidAttrs}",
453
+ "rowPlural": "樹網格行支援這些屬性,但 ${data.ownerRole} 不支援:${data.invalidAttrs}"
454
+ }
455
+ },
456
+ "aria-errormessage": {
457
+ "pass": "aria-errormessage 存在,並引用使用受支援的 aria-errormessage 技術的螢幕閱讀器可見的元素",
458
+ "fail": {
459
+ "singular": "aria-errormessage 值 `${data.values}` 必須使用某種技巧來通告訊息(例如:aria-live、aria-describedby、role=alert 等)",
460
+ "plural": "aria-errormessage 值 `${data.values}` 必須使用某種技巧來通告訊息(例如:aria-live、aria-describedby、role=alert 等)",
461
+ "hidden": "aria-errormessage 值 `${data.values}` 無法引用隱藏元素"
462
+ },
463
+ "incomplete": {
464
+ "singular": "確保 aria-errormessage 值 `${data.values}` 引用現有元素",
465
+ "plural": "確保 aria-errormessage 值 `${data.values}` 引用現有元素",
466
+ "idrefs": "無法確定頁面上是否存在 aria-errormessage 元素:${data.values}"
467
+ }
468
+ },
469
+ "aria-hidden-body": {
470
+ "pass": "<body> 不存在 aria-hidden 屬性",
471
+ "fail": "aria-hidden=true 不應出現在 <body>"
472
+ },
473
+ "aria-level": {
474
+ "pass": "aria 等級值有效",
475
+ "incomplete": "並非所有螢幕閱讀器和瀏覽器組合都支援大於 6 的 aria-level 值"
476
+ },
477
+ "aria-prohibited-attr": {
478
+ "pass": "允許使用 ARIA 屬性",
479
+ "fail": {
480
+ "hasRolePlural": "${data.prohibited} 屬性不能與角色「${data.role}」一起使用",
481
+ "hasRoleSingular": "${data.prohibited} 屬性不能與角色「${data.role}」一起使用",
482
+ "noRolePlural": "${data.prohibited} 屬性不能在沒有有效角色屬性的 ${data.nodeName} 上使用",
483
+ "noRoleSingular": "${data.prohibited} 屬性不能在沒有有效角色屬性的 ${data.nodeName} 上使用"
484
+ },
485
+ "incomplete": {
486
+ "hasRoleSingular": "角色「${data.role}」較不支援 ${data.prohibited} 屬性",
487
+ "hasRolePlural": "角色「${data.role}」不能很好地支援 ${data.prohibited} 屬性",
488
+ "noRoleSingular": "沒有有效角色屬性的 ${data.nodeName} 不能很好地支援 ${data.prohibited} 屬性",
489
+ "noRolePlural": "沒有有效角色屬性的 ${data.nodeName} 不能很好地支援 ${data.prohibited} 屬性"
490
+ }
491
+ },
492
+ "aria-required-attr": {
493
+ "pass": "所有必需的 ARIA 屬性均已存在",
494
+ "fail": {
495
+ "singular": "所需的 ARIA 屬性不存在:${data.values}",
496
+ "plural": "所需的 ARIA 屬性不存在:${data.values}"
497
+ }
498
+ },
499
+ "aria-required-children": {
500
+ "pass": "子元素需要 ARIA 角色",
501
+ "fail": {
502
+ "singular": "子元素所需的 ARIA 角色不存在:${data.values}",
503
+ "plural": "子元素所需的 ARIA 角色不存在:${data.values}",
504
+ "unallowed": "元素具有不允許的子元素:${data.values}"
505
+ },
506
+ "incomplete": {
507
+ "singular": "子元素期望加入 ARIA 角色:${data.values}",
508
+ "plural": "子元素期望加入 ARIA 角色:${data.values}"
509
+ }
510
+ },
511
+ "aria-required-parent": {
512
+ "pass": "父元素需要存在 ARIA 角色",
513
+ "fail": {
514
+ "singular": "父元素所需的 ARIA 角色不存在:${data.values}",
515
+ "plural": "父元素所需的 ARIA 角色不存在:${data.values}"
516
+ }
517
+ },
518
+ "aria-roledescription": {
519
+ "pass": "用於支援的語意角色的 aria-roledescription",
520
+ "incomplete": "檢查 aria-roledescription 是否由受支援的螢幕閱讀器宣布",
521
+ "fail": "賦予元素一個支持 'aria-roledescription' 的角色"
522
+ },
523
+ "aria-unsupported-attr": {
524
+ "pass": "支援 ARIA 屬性",
525
+ "fail": "ARIA 屬性在螢幕閱讀器和輔助軟體並未被廣泛支援:${data.values}"
526
+ },
527
+ "aria-valid-attr-value": {
528
+ "pass": "ARIA 屬性值有效",
529
+ "fail": {
530
+ "singular": "無效的 ARIA 屬性值:${data.values}",
531
+ "plural": "無效的 ARIA 屬性值:${data.values}"
532
+ },
533
+ "incomplete": {
534
+ "noId": "頁面上不存在 ARIA 屬性元素 ID:${data.needsReview}",
535
+ "noIdShadow": "ARIA 屬性元素 ID 在頁面上不存在或不同影子 DOM 樹的後代:${data.needsReview}",
536
+ "ariaCurrent": "ARIA 屬性值無效,將被視為「aria-current=true」:${data.needsReview}",
537
+ "idrefs": "無法確定頁面上是否存在 ARIA 屬性元素 ID:${data.needsReview}",
538
+ "empty": "ARIA 屬性值在空時被忽略:${data.needsReview}"
539
+ }
540
+ },
541
+ "aria-valid-attr": {
542
+ "pass": "ARIA 屬性名稱有效",
543
+ "fail": {
544
+ "singular": "無效的 ARIA 屬性名稱:${data.values}",
545
+ "plural": "無效的 ARIA 屬性名稱:${data.values}"
546
+ }
547
+ },
548
+ "braille-label-equivalent": {
549
+ "pass": "aria-braillelabel 用於具有無障礙文字的元素",
550
+ "fail": "aria-braillelabel 用於沒有無障礙文字的元素",
551
+ "incomplete": "無法計算無障礙的文字"
552
+ },
553
+ "braille-roledescription-equivalent": {
554
+ "pass": "aria-brailleroledescription 用於具有 aria-roledescription 的元素",
555
+ "fail": {
556
+ "noRoleDescription": "aria-brailleroledescription 用於沒有 aria-roledescription 的元素",
557
+ "emptyRoleDescription": "aria-brailleroledescription 用於具有空 aria-roledescription 的元素"
558
+ }
559
+ },
560
+ "deprecatedrole": {
561
+ "pass": "ARIA 角色並未棄用",
562
+ "fail": "使用的角色已棄用:${data}"
563
+ },
564
+ "fallbackrole": {
565
+ "pass": "僅使用一個角色值",
566
+ "fail": "僅使用一個角色值,因為舊版瀏覽器不支援後備角色",
567
+ "incomplete": "僅使用角色 'presentation' 或 'none',因為它們是同義詞"
568
+ },
569
+ "has-global-aria-attribute": {
570
+ "pass": {
571
+ "singular": "元素具有全域 ARIA 屬性:${data.values}",
572
+ "plural": "元素具有全域 ARIA 屬性:${data.values}"
573
+ },
574
+ "fail": "元素沒有全域 ARIA 屬性"
575
+ },
576
+ "has-widget-role": {
577
+ "pass": "元素具有小部件角色",
578
+ "fail": "元素沒有小部件角色"
579
+ },
580
+ "invalidrole": {
581
+ "pass": "ARIA 角色有效",
582
+ "fail": {
583
+ "singular": "角色必須是有效的 ARIA 角色之一:${data.values}",
584
+ "plural": "角色必須是有效的 ARIA 角色之一:${data.values}"
585
+ }
586
+ },
587
+ "is-element-focusable": {
588
+ "pass": "元素是可聚焦的",
589
+ "fail": "元素不可聚焦"
590
+ },
591
+ "no-implicit-explicit-label": {
592
+ "pass": "<label> 和無障礙名稱之間沒有不匹配",
593
+ "incomplete": "檢查 <label> 不需要是 ARIA ${data} 欄位的名稱"
594
+ },
595
+ "unsupportedrole": {
596
+ "pass": "支援 ARIA 角色",
597
+ "fail": "所使用的角色在螢幕閱讀器和輔助軟體並未被廣泛支持:${data}"
598
+ },
599
+ "valid-scrollable-semantics": {
600
+ "pass": "元素對於焦點次序中的元素具有有效語意",
601
+ "fail": "對於焦點次序中的元素,元素具有無效語意"
602
+ },
603
+ "color-contrast-enhanced": {
604
+ "pass": "元素具有足夠的顏色對比 ${data.contrastRatio}",
605
+ "fail": {
606
+ "default": "元素的 ${data.contrastRatio} 顏色對比不足(前景色:${data.fgColor},背景色:${data.bgColor},字體大小:${data.fontSize},字體粗細:${data.fontWeight}),預期對比 ${data.expectedContrastRatio}",
607
+ "fgOnShadowColor": "元素的前景色與陰影顏色之間的 ${data.contrastRatio} 顏色對比不足(前景色:${data.fgColor},文字陰影顏色:${data.shadowColor},字體大小:${data.fontSize} ,字型粗細:${data.fontWeight}),預期對比 ${data.expectedContrastRatio}",
608
+ "shadowOnBgColor": "元素的陰影顏色和背景顏色之間的 ${data.contrastRatio} 顏色對比不足(文字陰影顏色:${data.shadowColor},背景顏色:${data.bgColor},字體大小:${data.fontSize } ,字型粗細:${data.fontWeight}),預期對比 ${data.expectedContrastRatio}"
609
+ },
610
+ "incomplete": {
611
+ "default": "無法確定對比度",
612
+ "bgImage": "由於背景圖像而無法確定元素的背景顏色",
613
+ "bgGradient": "由於背景漸變,無法確定元素的背景顏色",
614
+ "imgNode": "無法確定元素的背景顏色,因為元素包含影像節點",
615
+ "bgOverlap": "無法確定元素的背景顏色,因為它與另一個元素重疊",
616
+ "fgAlpha": "由於 Alpha 透明度,無法確定元素的前景色",
617
+ "elmPartiallyObscured": "無法確定元素的背景顏色,因為它被另一個元素部分遮擋",
618
+ "elmPartiallyObscuring": "無法確定元素的背景顏色,因為它與其他元素部分重疊",
619
+ "outsideViewport": "無法確定元素的背景顏色,因為它位於視窗之外",
620
+ "equalRatio": "元素與背景的對比為 1:1",
621
+ "shortTextContent": "元素內容太短,無法判斷是否為實際文字內容",
622
+ "nonBmp": "元素內容僅包含非文字字符",
623
+ "pseudoContent": "由於偽元素,無法確定元素的背景顏色"
624
+ }
625
+ },
626
+ "color-contrast": {
627
+ "pass": {
628
+ "default": "元素具有足夠的顏色對比 ${data.contrastRatio}",
629
+ "hidden": "元素被隱藏"
630
+ },
631
+ "fail": {
632
+ "default": "元素的 ${data.contrastRatio} 顏色對比不足(前景色:${data.fgColor},背景色:${data.bgColor},字體大小:${data.fontSize},字體粗細:${data.fontWeight}),預期對比 ${data.expectedContrastRatio}",
633
+ "fgOnShadowColor": "元素的前景色與陰影顏色之間的 ${data.contrastRatio} 顏色對比不足(前景色:${data.fgColor},文字陰影顏色:${data.shadowColor},字體大小:${data.fontSize} ,字型粗細:${data.fontWeight}),預期對比 ${data.expectedContrastRatio}",
634
+ "shadowOnBgColor": "元素的陰影顏色和背景顏色之間的 ${data.contrastRatio} 顏色對比不足(文字陰影顏色:${data.shadowColor},背景顏色:${data.bgColor},字體大小:${data.fontSize} ,字型粗細:${data.fontWeight}),預期對比 ${data.expectedContrastRatio}"
635
+ },
636
+ "incomplete": {
637
+ "default": "無法確定對比度",
638
+ "bgImage": "由於背景圖像而無法確定元素的背景顏色",
639
+ "bgGradient": "由於背景漸變,無法確定元素的背景顏色",
640
+ "imgNode": "無法確定元素的背景顏色,因為元素包含影像節點",
641
+ "bgOverlap": "無法確定元素的背景顏色,因為它與另一個元素重疊",
642
+ "complexTextShadows": "無法確定元素的對比度,因為它使用複雜的文字陰影",
643
+ "fgAlpha": "由於 Alpha 透明度,無法確定元素的前景色",
644
+ "elmPartiallyObscured": "無法確定元素的背景顏色,因為它被另一個元素部分遮擋",
645
+ "elmPartiallyObscuring": "無法確定元素的背景顏色,因為它與其他元素部分重疊",
646
+ "outsideViewport": "無法確定元素的背景顏色,因為它位於視窗之外",
647
+ "equalRatio": "元素與背景的對比為 1:1",
648
+ "shortTextContent": "元素內容太短,無法判斷是否為實際文字內容",
649
+ "nonBmp": "元素內容僅包含非文字字符",
650
+ "pseudoContent": "由於偽元素,無法確定元素的背景顏色"
651
+ }
652
+ },
653
+ "link-in-text-block-style": {
654
+ "pass": "可以透過視覺樣式將連結與周圍的文字區分開來",
655
+ "incomplete": {
656
+ "default": "檢查連結是否需要樣式以將其與附近的文字區分開",
657
+ "pseudoContent": "檢查連結的偽樣式是否足以將其與周圍的文字區分開來"
658
+ },
659
+ "fail": "該連結沒有樣式(例如下劃線)來將其與周圍的文字區分開來"
660
+ },
661
+ "link-in-text-block": {
662
+ "pass": "連結可以透過顏色以外的其他方式與周圍的文字區分開來",
663
+ "fail": {
664
+ "fgContrast": "此連結與周圍文字的顏色對比 ${data.contrastRatio}:1 不足,(最小對比為 ${data.requiredContrastRatio}:1,連結文字:${data.nodeColor},周圍文字:${data.parentColor})",
665
+ "bgContrast": "連結背景的顏色對比 ${data.contrastRatio} 不足(最小對比為 ${data.requiredContrastRatio}:1,連結背景顏色:${data.nodeBackgroundColor},周圍背景顏色:${data.parentBackgroundColor})"
666
+ },
667
+ "incomplete": {
668
+ "default": "無法確定元素的前景對比度",
669
+ "bgContrast": "無法確定元素的背景對比度",
670
+ "bgImage": "由於背景影像而無法確定元素的對比度",
671
+ "bgGradient": "由於背景漸變,無法確定元素的對比",
672
+ "imgNode": "無法確定元素的對比度,因為元素包含影像節點",
673
+ "bgOverlap": "由於元素重疊,無法確定元素的對比"
674
+ }
675
+ },
676
+ "autocomplete-appropriate": {
677
+ "pass": "autocomplete 值位於適當的元素上",
678
+ "fail": "autocomplete 值不適合此類輸入"
679
+ },
680
+ "autocomplete-valid": {
681
+ "pass": "autocomplete 屬性的格式正確",
682
+ "fail": "autocomplete 屬性的格式不正確"
683
+ },
684
+ "accesskeys": {
685
+ "pass": "accesskey 屬性值是唯一的",
686
+ "fail": "頁面有多個元素具有相同的 accesskey"
687
+ },
688
+ "focusable-content": {
689
+ "pass": "元素包含可聚焦元素",
690
+ "fail": "元素應該具有可聚焦的內容"
691
+ },
692
+ "focusable-disabled": {
693
+ "pass": "元素內不包含可聚焦元素",
694
+ "incomplete": "檢查可聚焦元素是否立即移動焦點指示器",
695
+ "fail": "應停用可聚焦內容或從 DOM 中刪除可聚焦內容"
696
+ },
697
+ "focusable-element": {
698
+ "pass": "元素可聚焦",
699
+ "fail": "元素應該是可聚焦的"
700
+ },
701
+ "focusable-modal-open": {
702
+ "pass": "模式開啟時沒有可聚焦的元素",
703
+ "incomplete": "檢查可聚焦元素在目前狀態下是否無法選項"
704
+ },
705
+ "focusable-no-name": {
706
+ "pass": "元素未按 Tab 鍵順序或具有無障礙的文字",
707
+ "fail": "元素按 Tab 鍵順序排列,並且沒有可訪問的文字",
708
+ "incomplete": "無法確定元素是否具有無障礙的名稱"
709
+ },
710
+ "focusable-not-tabbable": {
711
+ "pass": "元素內不包含可聚焦元素",
712
+ "incomplete": "檢查可聚焦元素是否立即移動焦點指示器",
713
+ "fail": "可聚焦內容應具有 tabindex=\"-1\" 或從 DOM 中刪除"
714
+ },
715
+ "frame-focusable-content": {
716
+ "pass": "元素沒有可聚焦的後代",
717
+ "fail": "元素具有可聚焦的後代",
718
+ "incomplete": "無法確定元素是否有後代"
719
+ },
720
+ "landmark-is-top-level": {
721
+ "pass": "${data.role} landmark 位於頂層",
722
+ "fail": "${data.role} landmark 包含在另一個 landmark"
723
+ },
724
+ "no-focusable-content": {
725
+ "pass": "元素沒有可聚焦的後代",
726
+ "fail": {
727
+ "default": "元素具有可聚焦的後代",
728
+ "notHidden": "在互動式控制項內的元素上使用負 tabindex 不會阻止輔助軟體聚焦該元素(即使使用 aria-hidden=\"true\")"
729
+ },
730
+ "incomplete": "無法確定元素是否有後代"
731
+ },
732
+ "page-has-heading-one": {
733
+ "pass": "頁面至少有一個一級標題",
734
+ "fail": "頁面必須有一級標題"
735
+ },
736
+ "page-has-main": {
737
+ "pass": "頁面至少有一個主要 landmark",
738
+ "fail": "頁面沒有主要 landmark"
739
+ },
740
+ "page-no-duplicate-banner": {
741
+ "pass": "頁面不包含超過一個橫幅 landmark",
742
+ "fail": "頁面具有多個橫幅 landmark"
743
+ },
744
+ "page-no-duplicate-contentinfo": {
745
+ "pass": "頁面不包含多個 contentinfo landmark",
746
+ "fail": "頁面具有多個 contentinfo landmark"
747
+ },
748
+ "page-no-duplicate-main": {
749
+ "pass": "頁面沒有超過一個主要 landmark",
750
+ "fail": "頁面有多個主要 landmark"
751
+ },
752
+ "tabindex": {
753
+ "pass": "元素的 tabindex 不大於 0",
754
+ "fail": "元素的 tabindex 大於 0"
755
+ },
756
+ "alt-space-value": {
757
+ "pass": "元素具有有效的 alt 屬性值",
758
+ "fail": "元素具有僅包含空格字元的 alt 屬性,所有螢幕閱讀器都不會忽略該屬性"
759
+ },
760
+ "duplicate-img-label": {
761
+ "pass": "元素內的文字沒有和元素內的 <img> 替代文字重複",
762
+ "fail": "元素內的文字和元素內的 <img> 替代文字重複"
763
+ },
764
+ "explicit-label": {
765
+ "pass": "表單有一個明確的標籤文字 <label>",
766
+ "fail": "表單沒有明確的標籤文字 <label>",
767
+ "incomplete": "無法確定表單是否具有明確的標籤文字 <label>"
768
+ },
769
+ "help-same-as-label": {
770
+ "pass": "說明文字(title 或 aria-describedby) 不重複標籤文字",
771
+ "fail": "說明文字(title 或 aria-describedby) 文字與標籤文字相同"
772
+ },
773
+ "hidden-explicit-label": {
774
+ "pass": "表單有一個可見且明確的標籤文字 <label>",
775
+ "fail": "表單具有隱藏且明確的標籤文字 <label>",
776
+ "incomplete": "無法確定表單是否具有隱藏且明確的標籤文字 <label>"
777
+ },
778
+ "implicit-label": {
779
+ "pass": "表單有隱藏標籤文字 <label>",
780
+ "fail": "表單沒有隱藏標籤文字 <label>",
781
+ "incomplete": "無法確定表單是否具有隱藏標籤文字 <label>"
782
+ },
783
+ "label-content-name-mismatch": {
784
+ "pass": "元素包含可見文字作為其無障礙名稱的一部分",
785
+ "fail": "元素內的文字不包含在無障礙名稱中"
786
+ },
787
+ "multiple-label": {
788
+ "pass": "表單欄位沒有多個標籤元素",
789
+ "incomplete": "輔助軟體並未廣泛支援多個標籤元素,確保第一個標籤包含所有必要的資訊"
790
+ },
791
+ "title-only": {
792
+ "pass": "表單不僅僅使用 title 屬性作為其標籤",
793
+ "fail": "僅使用標題來產生表單的標籤"
794
+ },
795
+ "landmark-is-unique": {
796
+ "pass": "landmark 必須具有唯一的角色或由角色/標籤/標題(即無障礙的名稱)組合成唯一",
797
+ "fail": "landmark 必須具有唯一的 aria-label、aria-labelledby 或標題,以使 landmark 易於區分"
798
+ },
799
+ "has-lang": {
800
+ "pass": "<html> 元素有一個 lang 屬性",
801
+ "fail": {
802
+ "noXHTML": "xml:lang 屬性在 HTML 頁面上無效,請使用 lang 屬性",
803
+ "noLang": "<html> 元素沒有 lang 屬性"
804
+ }
805
+ },
806
+ "valid-lang": {
807
+ "pass": "lang 屬性的值包含在有效語言清單中",
808
+ "fail": "lang 屬性的值未包含在有效語言清單中"
809
+ },
810
+ "xml-lang-mismatch": {
811
+ "pass": "Lang 和 xml:lang 屬性具有相同的基本語言",
812
+ "fail": "Lang 和 xml:lang 屬性沒有相同的基本語言"
813
+ },
814
+ "dlitem": {
815
+ "pass": "描述列表項目有一個 <dl> 父元素",
816
+ "fail": "說明清單項目沒有 <dl> 父元素"
817
+ },
818
+ "listitem": {
819
+ "pass": "列表項目具有 <ul>、<ol> 或 role=\"list\" 父元素",
820
+ "fail": {
821
+ "default": "列表項目的父元素不是 <ul> 或 <ol>",
822
+ "roleNotValid": "列表項目的父元素不是 <ul> 或 <ol> ,且列表項目的父元素沒有屬性 role=\"list\""
823
+ }
824
+ },
825
+ "only-dlitems": {
826
+ "pass": "dl 元素僅具有允許在內部的直接子元素; <dt>、<dd> 或 <div> 元素",
827
+ "fail": "dl 元素有不允許的直接子元素:${data.values}"
828
+ },
829
+ "only-listitems": {
830
+ "pass": "列表元素僅允許在 <li> 元素內具有直接子元素",
831
+ "fail": "列表元素具有不允許的直接子元素:${data.values}"
832
+ },
833
+ "structured-dlitems": {
834
+ "pass": "當不為空時,元素同時具有 <dt> 和 <dd> 元素",
835
+ "fail": "當不為空時,元素沒有至少一個 <dt> 元素後面跟著至少一個 <dd> 元素"
836
+ },
837
+ "caption": {
838
+ "pass": "多媒體元素有一個字幕軌道",
839
+ "incomplete": "檢查標題是否適用於該元素"
840
+ },
841
+ "frame-tested": {
842
+ "pass": "iframe 使用 axe-core 進行了測試",
843
+ "fail": "iframe 無法使用 axe-core 進行測試",
844
+ "incomplete": "iframe 仍需使用 axe-core 進行測試"
845
+ },
846
+ "no-autoplay-audio": {
847
+ "pass": "<video> 或 <audio> 輸出音訊的時間不會超過允許的持續時間或具有控制機制",
848
+ "fail": "<video> 或 <audio> 輸出音訊的時間超過允許的持續時間,且沒有控制機制",
849
+ "incomplete": "檢查 <video> 或 <audio> 輸出音訊的時間是否超過允許的持續時間或提供控制機制"
850
+ },
851
+ "css-orientation-lock": {
852
+ "pass": "顯示可操作,方向鎖定不存在",
853
+ "fail": "CSS 方向鎖定已套用,導致顯示無法操作",
854
+ "incomplete": "CSS 方向鎖定無法確定"
855
+ },
856
+ "meta-viewport-large": {
857
+ "pass": "<meta> 標籤不會阻止行動裝置上的顯著縮放",
858
+ "fail": "<meta> 標籤限制行動裝置上的縮放"
859
+ },
860
+ "meta-viewport": {
861
+ "pass": "<meta> 標籤不會停用行動裝置上的縮放",
862
+ "fail": "<meta> 標記上的 ${data} 停用行動裝置上的縮放"
863
+ },
864
+ "target-offset": {
865
+ "pass": "目標與其最近的鄰近的元素有足夠的空間,安全可點選空間的距離為 ${data.closestOffset}px,至少為 ${data.minOffset}px",
866
+ "fail": "目標與其最近鄰近的元素之間的空間不足,安全可點擊空間的距離為 ${data.closestOffset}px,而不是至少 ${data.minOffset}px",
867
+ "incomplete": {
868
+ "default": "tabindex 為負的元素與其最近鄰近的元素的空間不足,安全可點擊空間的距離為 ${data.closestOffset}px,而不是至少 ${data.minOffset}px,這是一個目標嗎?",
869
+ "nonTabbableNeighbor": "目標與其最近鄰近的元素之間的空間不足,安全可點擊空間的距離為 ${data.closestOffset}px,而不是至少 ${data.minOffset}px,鄰近的元素是目標嗎?"
870
+ }
871
+ },
872
+ "target-size": {
873
+ "pass": {
874
+ "default": "控制的內容具有足夠的大小(${data.width}px x ${data.height}px,應至少為 ${data.minSize}px x ${data.minSize}px)",
875
+ "obscured": "控制的內容被忽略,因為它被完全遮擋,因此不可點擊"
876
+ },
877
+ "fail": {
878
+ "default": "目標大小不足(${data.width}px x ${data.height}px,應至少為 ${data.minSize}px x ${data.minSize}px)",
879
+ "partiallyObscured": "目標尺寸不足,因為它被部分遮蔽(最小空間為 ${data.width}px x ${data.height}px,應至少為 ${data.minSize}px x ${data.minSize}px)"
880
+ },
881
+ "incomplete": {
882
+ "default": "tabindex 為負的元素大小不足(${data.width}px x ${data.height}px,應至少為 ${data.minSize}px x ${data.minSize}px),這是一個目標嗎?",
883
+ "contentOverflow": "由於內容溢出,無法準確確定元素大小",
884
+ "partiallyObscured": "tabindex 為負的元素大小不足,因為它被部分遮蔽(最小空間為 ${data.width}px x ${data.height}px,應至少為 ${data.minSize}px x ${data.minSize}像素),這是一個目標嗎?",
885
+ "partiallyObscuredNonTabbable": "目標大小不足,因為它被負 tabindex 的鄰近的元素部分遮擋(最小空間為 ${data.width}px x ${data.height}px,應至少為 ${data.minSize}px x ${data .minSize }px),相鄰的元素是目標嗎?"
886
+ }
887
+ },
888
+ "header-present": {
889
+ "pass": "頁面有標題",
890
+ "fail": "頁面沒有標題"
891
+ },
892
+ "heading-order": {
893
+ "pass": "標題順序有效",
894
+ "fail": "標題順序無效",
895
+ "incomplete": "無法確定前一個標題"
896
+ },
897
+ "identical-links-same-purpose": {
898
+ "pass": "沒有其他具有相同名稱且轉到不同 URL 連結",
899
+ "incomplete": "檢查連結是否有相同的目的,或是否故意含糊不清"
900
+ },
901
+ "internal-link-present": {
902
+ "pass": "找到有效的跳過連結",
903
+ "fail": "找不到有效的跳過連結"
904
+ },
905
+ "landmark": {
906
+ "pass": "頁面有一個 landmark 區域",
907
+ "fail": "頁面沒有 landmark 區域"
908
+ },
909
+ "meta-refresh-no-exceptions": {
910
+ "pass": "<meta> 標籤不會立即重新整理頁面",
911
+ "fail": "<meta> 標籤強制頁面定時刷新"
912
+ },
913
+ "meta-refresh": {
914
+ "pass": "<meta> 標籤不會立即重新整理頁面",
915
+ "fail": "<meta> 標籤強制頁面定時刷新(小於20小時)"
916
+ },
917
+ "p-as-heading": {
918
+ "pass": "<p> 元素的樣式不為標題",
919
+ "fail": "應使用標題元素而不是樣式化的 <p> 元素",
920
+ "incomplete": "無法確定 <p> 元素是否設定為標題樣式"
921
+ },
922
+ "region": {
923
+ "pass": "所有頁面內容均包含在 landmark 中",
924
+ "fail": "某些頁面內容不包含在 landmark 中"
925
+ },
926
+ "skip-link": {
927
+ "pass": "跳過連結目標存在",
928
+ "incomplete": "跳過連結目標在啟動時應該變得可見",
929
+ "fail": "無跳過連結目標"
930
+ },
931
+ "unique-frame-title": {
932
+ "pass": "元素的標題屬性是唯一的",
933
+ "fail": "元素的 title 屬性不唯一"
934
+ },
935
+ "duplicate-id-active": {
936
+ "pass": "頁面沒有共用相同 id 屬性的活動元素",
937
+ "fail": "頁面具有相同 id 屬性的活動元素:${data}"
938
+ },
939
+ "duplicate-id-aria": {
940
+ "pass": "頁面沒有使用 ARIA 引用的元素或共享相同 id 屬性的標籤",
941
+ "fail": "頁面具有使用 ARIA 引用的多個具有相同 id 屬性的元素:${data}"
942
+ },
943
+ "duplicate-id": {
944
+ "pass": "頁面沒有共享相同 id 屬性的靜態元素",
945
+ "fail": "頁面有多個具有相同 id 屬性的靜態元素:${data}"
946
+ },
947
+ "aria-label": {
948
+ "pass": "aria-label 屬性存在且不為空",
949
+ "fail": "aria-label 屬性不存在或為空"
950
+ },
951
+ "aria-labelledby": {
952
+ "pass": "aria-labelledby 屬性存在並引用螢幕閱讀器可見的元素",
953
+ "fail": "aria-labelledby 屬性不存在、引用不存在的元素或引用為空的元素",
954
+ "incomplete": "確保 aria-labelledby 引用現有元素"
955
+ },
956
+ "avoid-inline-spacing": {
957
+ "pass": "未指定影響文字間距的帶有「!important」的內聯樣式",
958
+ "fail": {
959
+ "singular": "從內聯樣式 ${data.values} 中刪除 '!important',因為大多數瀏覽器不支援覆寫它",
960
+ "plural": "從內聯樣式 ${data.values} 中刪除 '!important',因為大多數瀏覽器不支援覆寫它"
961
+ }
962
+ },
963
+ "button-has-visible-text": {
964
+ "pass": "元素具有螢幕閱讀器可見的內部文字",
965
+ "fail": "元素沒有螢幕閱讀器可見的內部文字",
966
+ "incomplete": "無法確定元素是否有子元素"
967
+ },
968
+ "doc-has-title": {
969
+ "pass": "文檔有一個非空的 <title> 元素",
970
+ "fail": "頁面沒有非空 <title> 元素"
971
+ },
972
+ "exists": {
973
+ "pass": "元素不存在",
974
+ "incomplete": "元素存在"
975
+ },
976
+ "has-alt": {
977
+ "pass": "元素具有 alt 屬性",
978
+ "fail": "元素沒有 alt 屬性"
979
+ },
980
+ "has-visible-text": {
981
+ "pass": "元素具有螢幕閱讀器可見的文字",
982
+ "fail": "元素沒有螢幕閱讀器可見的文字",
983
+ "incomplete": "無法確定元素是否有子元素"
984
+ },
985
+ "important-letter-spacing": {
986
+ "pass": "style 屬性中的字母間距未設定為 !important,或滿足最小值",
987
+ "fail": "樣式屬性中的字母間距不得使用 !important,或位於 ${data.minValue}em(目前 ${data.value}em)"
988
+ },
989
+ "important-line-height": {
990
+ "pass": "style 屬性中的line-height沒有設定為!important,或滿足最小值",
991
+ "fail": "style 屬性中的 line-height 不得使用 !important,或位於 ${data.minValue}em(目前 ${data.value}em)"
992
+ },
993
+ "important-word-spacing": {
994
+ "pass": "style 屬性中的 word-spacing 未設定為 !important,或滿足最小值",
995
+ "fail": "style 屬性中的字間距不得使用 !important,或位於 ${data.minValue}em(目前 ${data.value}em)"
996
+ },
997
+ "is-on-screen": {
998
+ "pass": "元素不可見",
999
+ "fail": "元素可見"
1000
+ },
1001
+ "non-empty-alt": {
1002
+ "pass": "元素具有非空 alt 屬性",
1003
+ "fail": {
1004
+ "noAttr": "元素沒有 alt 屬性",
1005
+ "emptyAttr": "元素具有空的 alt 屬性"
1006
+ }
1007
+ },
1008
+ "non-empty-if-present": {
1009
+ "pass": {
1010
+ "default": "元素沒有 value 屬性",
1011
+ "has-label": "元素具有非空值屬性"
1012
+ },
1013
+ "fail": "元素有 value 屬性且 value 屬性為空"
1014
+ },
1015
+ "non-empty-placeholder": {
1016
+ "pass": "元素具有佔位符屬性",
1017
+ "fail": {
1018
+ "noAttr": "元素沒有佔位符屬性",
1019
+ "emptyAttr": "元素具有空佔位符屬性"
1020
+ }
1021
+ },
1022
+ "non-empty-title": {
1023
+ "pass": "元素有一個標題屬性",
1024
+ "fail": {
1025
+ "noAttr": "元素沒有 title 屬性",
1026
+ "emptyAttr": "元素的標題屬性為空"
1027
+ }
1028
+ },
1029
+ "non-empty-value": {
1030
+ "pass": "元素具有非空值屬性",
1031
+ "fail": {
1032
+ "noAttr": "元素沒有 value 屬性",
1033
+ "emptyAttr": "元素具有空值屬性"
1034
+ }
1035
+ },
1036
+ "presentational-role": {
1037
+ "pass": "元素的預設語意被 role=\"${data.role}\" 覆蓋",
1038
+ "fail": {
1039
+ "default": "元素的預設語意未被 role=\"none\" 或 role=\"presentation\" 覆蓋",
1040
+ "globalAria": "元素的角色不是表現性的,因為它具有全域 ARIA 屬性",
1041
+ "focusable": "元素的作用不是表現性的,因為它是可聚焦的",
1042
+ "both": "元素的角色不是表現性的,因為它具有全局 ARIA 屬性並且可聚焦",
1043
+ "iframe": "在具有演示角色的 ${data.nodeName} 元素上使用「title」屬性在螢幕閱讀器之間的行為不一致"
1044
+ }
1045
+ },
1046
+ "role-none": {
1047
+ "pass": "元素的預設語意被 role=\"none\" 覆蓋",
1048
+ "fail": "元素的預設語意未被 role=\"none\" 覆蓋"
1049
+ },
1050
+ "role-presentation": {
1051
+ "pass": "元素的預設語意被 role=\"presentation\" 覆蓋",
1052
+ "fail": "元素的預設語意未被 role=\"presentation\" 覆蓋"
1053
+ },
1054
+ "svg-non-empty-title": {
1055
+ "pass": "元素有一個子元素,它是標題",
1056
+ "fail": {
1057
+ "noTitle": "元素沒有作為標題的子元素",
1058
+ "emptyTitle": "元素子標題為空"
1059
+ },
1060
+ "incomplete": "無法確定元素的子元素是標題"
1061
+ },
1062
+ "caption-faked": {
1063
+ "pass": "表格的第一行不作為標題",
1064
+ "fail": "表格的第一個子項目應該是標題而不是表格儲存格"
1065
+ },
1066
+ "html5-scope": {
1067
+ "pass": "範圍屬性僅用於表頭元素(<th>)",
1068
+ "fail": "在 HTML 5 中,範圍屬性只能用在表頭元素(<th>) 上"
1069
+ },
1070
+ "same-caption-summary": {
1071
+ "pass": "摘要屬性和 <caption> 的內容不重複",
1072
+ "fail": "摘要屬性和 <caption> 元素的內容相同",
1073
+ "incomplete": "無法確定 <table> 元素是否有標題"
1074
+ },
1075
+ "scope-value": {
1076
+ "pass": "範圍屬性使用正確",
1077
+ "fail": "scope 屬性的值只能是 'row' 或 'col'"
1078
+ },
1079
+ "td-has-header": {
1080
+ "pass": "所有非空資料儲存格都有表格標題",
1081
+ "fail": "某些非空資料儲存格沒有表頭"
1082
+ },
1083
+ "td-headers-attr": {
1084
+ "pass": "headers 屬性專門用於引用表格中的其他儲存格",
1085
+ "incomplete": "headers 屬性為空",
1086
+ "fail": "headers 屬性不僅僅用於引用表中的其他單元格"
1087
+ },
1088
+ "th-has-data-cells": {
1089
+ "pass": "所有表格標題儲存格均引用資料儲存格",
1090
+ "fail": "並非所有表格標題儲存格都引用資料儲存格",
1091
+ "incomplete": "表格資料單元格缺失或為空"
1092
+ },
1093
+ "hidden-content": {
1094
+ "pass": "頁面上的所有內容都已分析",
1095
+ "fail": "分析此頁面上的內容時出現問題",
1096
+ "incomplete": "頁面上存在未分析的隱藏內容,您將需要觸發此內容的顯示才能對其進行分析"
1097
+ }
1098
+ },
1099
+ "failureSummaries": {
1100
+ "any": {
1101
+ "failureMessage": "修正以下任一問題:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
1102
+ },
1103
+ "none": {
1104
+ "failureMessage": "修正以下所有問題:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
1105
+ }
1106
+ },
1107
+ "incompleteFallbackMessage": "axe 也說不出原因,該使用元素檢查器了!"
1108
+ }