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

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

Fix frontend appearance

  • Property mode set to 100644
File size: 62.8 KB
Line 
1{
2 "lang": "pt_PT",
3 "rules": {
4 "accesskeys": {
5 "description": "Garantir que cada valor do atributo 'accesskey' seja único",
6 "help": "O valor do atributo 'accesskey' deve ser único"
7 },
8 "area-alt": {
9 "description": "Garantir que os elementos <area> dos mapas de imagem tenham texto alternativo",
10 "help": "Os elementos <area> ativos devem ter texto alternativo"
11 },
12 "aria-allowed-attr": {
13 "description": "Garantir que a função de um elemento suporte os seus atributos ARIA",
14 "help": "Os elementos devem usar apenas atributos ARIA suportados"
15 },
16 "aria-allowed-role": {
17 "description": "Garantir que o atributo 'role' tenha um valor apropriado para o elemento",
18 "help": "A 'role' ARIA deve ser apropriada para o elemento"
19 },
20 "aria-braille-equivalent": {
21 "description": "Garantir que 'aria-braillelabel' e 'aria-brailleroledescription' tenham um equivalente não braile",
22 "help": "Os atributos 'aria-braille' devem ter um equivalente não braile"
23 },
24 "aria-command-name": {
25 "description": "Garantir que cada botão, link e item de menu ARIA tenha um nome acessível",
26 "help": "Os comandos ARIA devem ter um nome acessível"
27 },
28 "aria-conditional-attr": {
29 "description": "Garantir que os atributos ARIA sejam usados conforme descrito na especificação da função do elemento",
30 "help": "Os atributos ARIA devem ser usados conforme especificado para a função do elemento"
31 },
32 "aria-deprecated-role": {
33 "description": "Garantir que os elementos não usem funções obsoletas",
34 "help": "Não se devem usar funções ARIA obsoletas"
35 },
36 "aria-dialog-name": {
37 "description": "Garantir que cada diálogo e diálogo de alerta ARIA tenha um nome acessível",
38 "help": "Os nós de diálogo e diálogo de alerta ARIA devem ter um nome acessível"
39 },
40 "aria-hidden-body": {
41 "description": "Garantir que 'aria-hidden=\"true\"' não esteja presente no corpo do documento.",
42 "help": "'aria-hidden=\"true\"' não deve estar presente no corpo do documento"
43 },
44 "aria-hidden-focus": {
45 "description": "Garantir que elementos com 'aria-hidden' não sejam focáveis nem contenham elementos focáveis",
46 "help": "Um elemento oculto por ARIA não deve ser focável nem conter elementos focáveis"
47 },
48 "aria-input-field-name": {
49 "description": "Garantir que cada campo de entrada ARIA tenha um nome acessível",
50 "help": "Os campos de entrada ARIA devem ter um nome acessível"
51 },
52 "aria-meter-name": {
53 "description": "Garantir que cada nó de medidor ARIA tenha um nome acessível",
54 "help": "Os nós de medidor ARIA devem ter um nome acessível"
55 },
56 "aria-progressbar-name": {
57 "description": "Garantir que cada nó de barra de progresso ARIA tenha um nome acessível",
58 "help": "Os nós de barra de progresso ARIA devem ter um nome acessível"
59 },
60 "aria-prohibited-attr": {
61 "description": "Garantir que os atributos ARIA não sejam proibidos para a função de um elemento",
62 "help": "Os elementos devem usar apenas atributos ARIA permitidos"
63 },
64 "aria-required-attr": {
65 "description": "Garantir que os elementos com funções ARIA tenham todos os atributos ARIA obrigatórios",
66 "help": "Devem ser fornecidos os atributos ARIA obrigatórios"
67 },
68 "aria-required-children": {
69 "description": "Garantir que os elementos com uma função ARIA que requer funções filhas as contenham",
70 "help": "Certas funções ARIA devem conter determinados elementos filhos"
71 },
72 "aria-required-parent": {
73 "description": "Garantir que os elementos com uma função ARIA que requer funções parentais estejam contidos por estes",
74 "help": "Certas funções ARIA devem estar contidas em pais específicos"
75 },
76 "aria-roledescription": {
77 "description": "Garantir que 'aria-roledescription' seja usado apenas em elementos com uma função implícita ou explícita",
78 "help": "'aria-roledescription' deve estar em elementos com uma função semântica"
79 },
80 "aria-roles": {
81 "description": "Garantir que todos os elementos com o atributo 'role' usem um valor válido",
82 "help": "As funções 'roles' ARIA utilizadas devem corresponder a valores válidos"
83 },
84 "aria-text": {
85 "description": "Garantir que 'role=\"text\"' seja usado em elementos sem descendentes focáveis",
86 "help": "'\"role=text\"' não deve ter descendentes focáveis"
87 },
88 "aria-toggle-field-name": {
89 "description": "Garantir que cada campo de alternância ARIA tenha um nome acessível",
90 "help": "Os campos de alternância ARIA devem ter um nome acessível"
91 },
92 "aria-tooltip-name": {
93 "description": "Garantir que cada nó de 'tooltip' ARIA tenha um nome acessível",
94 "help": "Os nós de 'tooltip' ARIA devem ter um nome acessível"
95 },
96 "aria-treeitem-name": {
97 "description": "Garantir que cada nó de 'treeitem' ARIA tenha um nome acessível",
98 "help": "Os nós de 'treeitem' ARIA devem ter um nome acessível"
99 },
100 "aria-valid-attr-value": {
101 "description": "Garantir que todos os atributos ARIA tenham valores válidos",
102 "help": "Os atributos ARIA devem corresponder a valores válidos"
103 },
104 "aria-valid-attr": {
105 "description": "Garantir que os atributos que começam com 'aria-' sejam atributos ARIA válidos",
106 "help": "Os atributos ARIA devem corresponder a nomes válidos"
107 },
108 "audio-caption": {
109 "description": "Garantir que os elementos <audio> tenham legendas",
110 "help": "Os elementos <audio> devem ter uma pista de legendas"
111 },
112 "autocomplete-valid": {
113 "description": "Garantir que o atributo 'autocomplete' esteja correto e seja adequado para o campo de formulário",
114 "help": "O atributo 'autocomplete' deve ser utilizado corretamente"
115 },
116 "avoid-inline-spacing": {
117 "description": "Garantir que o espaçamento do texto definido através de atributos de estilo possa ser ajustado com folhas de estilo personalizadas",
118 "help": "O espaçamento do texto 'inline' deve ser ajustável com folhas de estilo personalizadas"
119 },
120 "blink": {
121 "description": "Garantir que os elementos <blink> não sejam usados",
122 "help": "Os elementos <blink> estão obsoletos e não devem ser usados"
123 },
124 "button-name": {
125 "description": "Garantir que os botões tenham texto discernível",
126 "help": "Os botões devem ter texto discernível"
127 },
128 "bypass": {
129 "description": "Garantir que cada página tenha pelo menos um mecanismo para o utilizador contornar a navegação e saltar diretamente para o conteúdo",
130 "help": "A página deve ter meios para contornar blocos repetitivos"
131 },
132 "color-contrast-enhanced": {
133 "description": "Garantir que o contraste entre as cores de primeiro plano e de fundo cumpra os limites de razão de contraste aprimorada, WCAG 2 AAA",
134 "help": "Os elementos devem cumprir os limites de razão de contraste aprimorada"
135 },
136 "color-contrast": {
137 "description": "Garantir que o contraste entre as cores de primeiro plano e de fundo cumpra os limites mínimos de razão de contraste, WCAG 2 AA",
138 "help": "Os elementos devem cumprir os limites mínimos de razão de contraste"
139 },
140 "css-orientation-lock": {
141 "description": "Garantir que o conteúdo não esteja bloqueado a uma orientação de ecrã específica, e que seja operativo em todas as orientações de ecrã",
142 "help": "As media queries CSS não devem bloquear a orientação do ecrã"
143 },
144 "definition-list": {
145 "description": "Garantir que os elementos <dl> estejam estruturados corretamente",
146 "help": "Os elementos <dl> devem conter apenas grupos de <dt> e <dd> ordenados corretamente, ou elementos <script>, <template> ou <div>"
147 },
148 "dlitem": {
149 "description": "Garantir que os elementos <dt> e <dd> estejam contidos num <dl>",
150 "help": "Os elementos <dt> e <dd> devem estar contidos num <dl>"
151 },
152 "document-title": {
153 "description": "Garantir que cada documento HTML contenha um elemento <title> não vazio",
154 "help": "Os documentos devem ter um elemento <title> para ajudar na navegação"
155 },
156 "duplicate-id-active": {
157 "description": "Garantir que cada valor do atributo 'id' dos elementos ativos seja único",
158 "help": "Os IDs dos elementos ativos devem ser únicos"
159 },
160 "duplicate-id-aria": {
161 "description": "Garantir que cada valor do atributo 'id' utilizado em ARIA e em etiquetas seja único",
162 "help": "Os IDs usados em ARIA e etiquetas devem ser únicos"
163 },
164 "duplicate-id": {
165 "description": "Garantir que cada valor do atributo 'id' seja único",
166 "help": "O valor do atributo 'id' deve ser único"
167 },
168 "empty-heading": {
169 "description": "Garantir que os cabeçalhos tenham texto discernível",
170 "help": "Os cabeçalhos não devem estar vazios"
171 },
172 "empty-table-header": {
173 "description": "Garantir que os cabeçalhos de tabelas tenham texto discernível",
174 "help": "O texto dos cabeçalhos de tabela não deve estar vazio"
175 },
176 "focus-order-semantics": {
177 "description": "Garantir que os elementos na ordem de foco tenham uma função apropriada para conteúdo interativo",
178 "help": "Os elementos na ordem de foco devem ter uma função apropriada"
179 },
180 "form-field-multiple-labels": {
181 "description": "Garantir que o campo de formulário não possua múltiplos elementos 'label'",
182 "help": "O campo de formulário não deve ter múltiplos elementos 'label'"
183 },
184 "frame-focusable-content": {
185 "description": "Garantir que os elementos <frame> e <iframe> com conteúdo focável não tenham tabindex=-1",
186 "help": "Os frames com conteúdo focável não devem ter tabindex=-1"
187 },
188 "frame-tested": {
189 "description": "Garantir que os elementos <iframe> e <frame> contenham o script axe-core",
190 "help": "Os frames devem ser testados com axe-core"
191 },
192 "frame-title-unique": {
193 "description": "Garantir que os elementos <iframe> e <frame> contenham um atributo 'title' único",
194 "help": "Os frames devem ter um atributo 'title' único"
195 },
196 "frame-title": {
197 "description": "Garantir que os elementos <iframe> e <frame> tenham um atributo 'title' acessível",
198 "help": "Os frames devem ter um atributo 'title' acessível"
199 },
200 "heading-order": {
201 "description": "Garantir que a ordem dos cabeçalhos seja semanticamente correta",
202 "help": "Os níveis de cabeçalho devem aumentar apenas de um em um"
203 },
204 "hidden-content": {
205 "description": "Informa os utilizadores sobre conteúdo oculto.",
206 "help": "O conteúdo oculto na página deve ser analisado"
207 },
208 "html-has-lang": {
209 "description": "Garantir que cada documento HTML tenha um atributo 'lang'",
210 "help": "O elemento <html> deve ter um atributo 'lang'"
211 },
212 "html-lang-valid": {
213 "description": "Garantir que o atributo 'lang' do elemento <html> tenha um valor válido",
214 "help": "O elemento <html> deve ter um valor válido para o atributo 'lang'"
215 },
216 "html-xml-lang-mismatch": {
217 "description": "Garantir que os elementos HTML com atributos 'lang' e 'xml:lang' válidos concordem na língua base da página",
218 "help": "Os elementos HTML com 'lang' e 'xml:lang' devem ter a mesma língua base"
219 },
220 "identical-links-same-purpose": {
221 "description": "Garantir que links com o mesmo nome acessível tenham um propósito semelhante",
222 "help": "Links com o mesmo nome devem ter um propósito semelhante"
223 },
224 "image-alt": {
225 "description": "Garantir que os elementos <img> tenham texto alternativo ou um 'role' igual a 'none' ou 'presentation'",
226 "help": "As imagens devem ter texto alternativo"
227 },
228 "image-redundant-alt": {
229 "description": "Garantir que o texto alternativo da imagem não seja repetido como texto",
230 "help": "O texto alternativo das imagens não deve ser repetido como texto"
231 },
232 "input-button-name": {
233 "description": "Garantir que os botões de 'input' tenham texto discernível",
234 "help": "Os botões de 'input' devem ter texto discernível"
235 },
236 "input-image-alt": {
237 "description": "Garantir que os elementos <input type=\"image\"> tenham texto alternativo",
238 "help": "Os botões de imagem devem ter texto alternativo"
239 },
240 "label-content-name-mismatch": {
241 "description": "Garantir que os elementos etiquetados através do seu conteúdo incluam o texto visível como parte do seu nome acessível",
242 "help": "Os elementos devem incluir o seu texto visível como parte do nome acessível"
243 },
244 "label-title-only": {
245 "description": "Garantir que cada elemento de formulário tenha uma etiqueta visível e não seja etiquetado apenas através de etiquetas ocultas, ou dos atributos 'title' ou 'aria-describedby'",
246 "help": "Os elementos de formulário devem ter uma etiqueta visível"
247 },
248 "label": {
249 "description": "Garantir que cada elemento de formulário tenha uma etiqueta",
250 "help": "Os elementos de formulário devem ter etiquetas"
251 },
252 "landmark-banner-is-top-level": {
253 "description": "Garantir que o marco de 'banner' esteja no nível principal",
254 "help": "O marco de 'banner' não deve estar contido noutro marco"
255 },
256 "landmark-complementary-is-top-level": {
257 "description": "Garantir que o marco 'complementary' ou 'aside' estejam no nível principal",
258 "help": "O 'aside' não deve estar contido noutro marco"
259 },
260 "landmark-contentinfo-is-top-level": {
261 "description": "Garantir que o marco 'contentinfo' esteja no nível principal",
262 "help": "O marco 'contentinfo' não deve estar contido noutro marco"
263 },
264 "landmark-main-is-top-level": {
265 "description": "Garantir que o marco 'main' esteja no nível principal",
266 "help": "O marco 'main' não deve estar contido noutro marco"
267 },
268 "landmark-no-duplicate-banner": {
269 "description": "Garantir que o documento tenha, no máximo, um marco de 'banner'",
270 "help": "O documento não deve ter mais do que um marco de 'banner'"
271 },
272 "landmark-no-duplicate-contentinfo": {
273 "description": "Garantir que o documento tenha, no máximo, um marco 'contentinfo'",
274 "help": "O documento não deve ter mais do que um marco 'contentinfo'"
275 },
276 "landmark-no-duplicate-main": {
277 "description": "Garantir que o documento tenha, no máximo, um marco 'main'",
278 "help": "O documento não deve ter mais do que um marco 'main'"
279 },
280 "landmark-one-main": {
281 "description": "Garantir que o documento tenha um marco 'main'",
282 "help": "O documento deve ter um marco 'main'"
283 },
284 "landmark-unique": {
285 "description": "Garantir que os marcos sejam únicos",
286 "help": "Os marcos devem ter uma combinação única de 'role' ou 'role'/'label'/'title' (ou seja, nome acessível)"
287 },
288 "link-in-text-block": {
289 "description": "Garantir que os links se distingam do texto circundante de forma que não dependa da cor",
290 "help": "Os links devem ser distinguíveis sem depender da cor"
291 },
292 "link-name": {
293 "description": "Garantir que os links tenham texto discernível",
294 "help": "Os links devem ter texto discernível"
295 },
296 "list": {
297 "description": "Garantir que as listas estejam estruturadas corretamente",
298 "help": "Os elementos <ul> e <ol> devem conter diretamente apenas elementos <li>, <script> ou <template>"
299 },
300 "listitem": {
301 "description": "Garantir que os elementos <li> sejam usados de forma semântica",
302 "help": "Os elementos <li> devem estar contidos num <ul> ou <ol>"
303 },
304 "marquee": {
305 "description": "Garantir que os elementos <marquee> não sejam usados",
306 "help": "Os elementos <marquee> estão obsoletos e não devem ser usados"
307 },
308 "meta-refresh-no-exceptions": {
309 "description": "Garantir que <meta http-equiv=\"refresh\"> não seja usado para atualização com atraso",
310 "help": "Não se deve usar atualização com atraso"
311 },
312 "meta-refresh": {
313 "description": "Garantir que <meta http-equiv=\"refresh\"> não seja usado para atualização com atraso",
314 "help": "Não se deve usar atualização com atraso inferior a 20 horas"
315 },
316 "meta-viewport-large": {
317 "description": "Garantir que <meta name=\"viewport\"> permita uma ampliação significativa",
318 "help": "Os utilizadores devem ser capazes de ampliar e escalar o texto até 500%"
319 },
320 "meta-viewport": {
321 "description": "Garantir que <meta name=\"viewport\"> não desative a escalabilidade e ampliação do texto",
322 "help": "A ampliação e escalabilidade não devem ser desativadas"
323 },
324 "nested-interactive": {
325 "description": "Garantir que os controles interativos não estejam aninhados, pois nem sempre são anunciados pelos leitores de ecrã ou podem causar problemas de foco para tecnologias assistivas",
326 "help": "Os controles interativos não devem estar aninhados"
327 },
328 "no-autoplay-audio": {
329 "description": "Garantir que os elementos <video> ou <audio> não reproduzam áudio automaticamente por mais de 3 segundos sem um mecanismo de controlo para parar ou silenciar o áudio",
330 "help": "Os elementos <video> ou <audio> não devem reproduzir automaticamente"
331 },
332 "object-alt": {
333 "description": "Garantir que os elementos <object> tenham texto alternativo",
334 "help": "Os elementos <object> devem ter texto alternativo"
335 },
336 "p-as-heading": {
337 "description": "Garantir que texto em negrito, itálico e tamanho de fonte não sejam usados para estilizar elementos <p> como cabeçalhos",
338 "help": "Os elementos <p> estilizados não devem ser usados como cabeçalhos"
339 },
340 "page-has-heading-one": {
341 "description": "Garantir que a página, ou pelo menos um dos seus 'frames', contenha um cabeçalho de nível 1",
342 "help": "A página deve conter um cabeçalho de nível 1"
343 },
344 "presentation-role-conflict": {
345 "description": "Os elementos marcados como 'none' ou 'presentation' não devem ter ARIA global ou 'tabindex', para garantir que todos os leitores de ecrã os ignorem",
346 "help": "Garantir que os elementos marcados como 'none' ou 'presentation' sejam consistentemente ignorados"
347 },
348 "region": {
349 "description": "Garantir que todo o conteúdo da página esteja contido em marcos (landmarks)",
350 "help": "Todo o conteúdo da página deve estar contido em marcos (landmarks)"
351 },
352 "role-img-alt": {
353 "description": "Garantir que os elementos com 'role=\"img\"' tenham texto alternativo",
354 "help": "Os elementos com 'role=\"img\"' devem ter um texto alternativo"
355 },
356 "scope-attr-valid": {
357 "description": "Garantir que o atributo 'scope' seja usado corretamente em tabelas",
358 "help": "O atributo 'scope' deve ser usado corretamente"
359 },
360 "scrollable-region-focusable": {
361 "description": "Garantir que os elementos com conteúdo rolável sejam acessíveis por teclado",
362 "help": "A região rolável deve ser acessível por teclado"
363 },
364 "select-name": {
365 "description": "Garantir que o elemento 'select' tenha um nome acessível",
366 "help": "O elemento 'select' deve ter um nome acessível"
367 },
368 "server-side-image-map": {
369 "description": "Garantir que os mapas de imagem do lado do servidor não sejam usados",
370 "help": "Os mapas de imagem do lado do servidor não devem ser usados"
371 },
372 "skip-link": {
373 "description": "Garantir que todos os links de salto tenham um destino focável",
374 "help": "O destino do link de salto deve existir e ser focável"
375 },
376 "summary-name": {
377 "description": "Garantir que os elementos 'summary' tenham texto discernível",
378 "help": "Os elementos 'summary' devem ter texto discernível"
379 },
380 "svg-img-alt": {
381 "description": "Garantir que os elementos <svg> com uma função 'img', 'graphics-document' ou 'graphics-symbol' tenham um texto acessível",
382 "help": "Os elementos <svg> com a função 'img' devem ter um texto alternativo"
383 },
384 "tabindex": {
385 "description": "Garantir que os valores do atributo 'tabindex' não sejam superiores a 0",
386 "help": "Os elementos não devem ter 'tabindex' superior a zero"
387 },
388 "table-duplicate-name": {
389 "description": "Garantir que o elemento <caption> não contenha o mesmo texto que o atributo 'summary'",
390 "help": "As tabelas não devem ter o mesmo 'summary' e <caption>"
391 },
392 "table-fake-caption": {
393 "description": "Garantir que as tabelas com caption utilizem o elemento <caption>.",
394 "help": "Não se devem usar células de dados ou de cabeçalho para dar caption a uma tabela de dados."
395 },
396 "target-size": {
397 "description": "Garantir que os alvos tácteis tenham tamanho e espaço suficientes",
398 "help": "Todos os alvos tácteis devem ter 24px de dimensão ou deixar espaço suficiente"
399 },
400 "td-has-header": {
401 "description": "Garantir que cada célula de dados não vazia numa tabela maior do que 3x3 tenha um ou mais cabeçalhos",
402 "help": "Os elementos <td> não vazios em tabelas maiores devem ter um cabeçalho associado"
403 },
404 "td-headers-attr": {
405 "description": "Garantir que cada célula numa tabela que usa o atributo 'headers' se refira apenas a outras células nessa tabela",
406 "help": "As células de tabela que usam o atributo 'headers' devem referir-se apenas a células na mesma tabela"
407 },
408 "th-has-data-cells": {
409 "description": "Garantir que os elementos <th> e os elementos com 'role=columnheader/rowheader' tenham células de dados que descrevem",
410 "help": "Os cabeçalhos de tabela numa tabela de dados devem referir-se às células de dados"
411 },
412 "valid-lang": {
413 "description": "Garantir que os atributos 'lang' tenham valores válidos",
414 "help": "O atributo 'lang' deve ter um valor válido"
415 },
416 "video-caption": {
417 "description": "Garantir que os elementos <video> tenham legendas",
418 "help": "Os elementos <video> devem ter legendas"
419 }
420 },
421 "checks": {
422 "abstractrole": {
423 "pass": "Funções abstratas não são utilizadas",
424 "fail": {
425 "singular": "A função abstrata não pode ser usada diretamente: ${data.values}",
426 "plural": "As funções abstratas não podem ser usadas diretamente: ${data.values}"
427 }
428 },
429 "aria-allowed-attr": {
430 "pass": "Os atributos ARIA são usados corretamente para a função definida",
431 "fail": {
432 "singular": "Atributo ARIA não é permitido: ${data.values}",
433 "plural": "Atributos ARIA não são permitidos: ${data.values}"
434 },
435 "incomplete": "Verifique se não há problemas se o atributo ARIA for ignorado neste elemento: ${data.values}"
436 },
437 "aria-allowed-role": {
438 "pass": "A função ARIA é permitida para o elemento",
439 "fail": {
440 "singular": "A função ARIA ${data.values} não é permitida para o elemento",
441 "plural": "As funções ARIA ${data.values} não são permitidas para o elemento"
442 },
443 "incomplete": {
444 "singular": "A função ARIA ${data.values} deve ser removida quando o elemento se tornar visível, pois não é permitida para o elemento",
445 "plural": "As funções ARIA ${data.values} devem ser removidas quando o elemento se tornar visível, pois não são permitidas para o elemento"
446 }
447 },
448 "aria-busy": {
449 "pass": "O elemento tem o atributo 'aria-busy'",
450 "fail": "O elemento utiliza 'aria-busy=\"true\"' enquanto mostra um carregador"
451 },
452 "aria-conditional-attr": {
453 "pass": "O atributo ARIA é permitido",
454 "fail": {
455 "checkbox": "Remova aria-checked, ou defina-o como '\"${data.checkState}\"' para corresponder ao estado real da caixa de seleção",
456 "rowSingular": "Este atributo é suportado em linhas de 'treegrid', mas não em ${data.ownerRole}: ${data.invalidAttrs}",
457 "rowPlural": "Estes atributos são suportados em linhas de 'treegrid', mas não em ${data.ownerRole}: ${data.invalidAttrs}"
458 }
459 },
460 "aria-errormessage": {
461 "pass": "'aria-errormessage' existe e referencia elementos visíveis para leitores de ecrã que utilizam uma técnica suportada de 'aria-errormessage'",
462 "fail": {
463 "singular": "O valor de 'aria-errormessage' `${data.values}` deve utilizar uma técnica para anunciar a mensagem (por exemplo, aria-live, aria-describedby, role=alert, etc.)",
464 "plural": "Os valores de 'aria-errormessage' `${data.values}` devem utilizar uma técnica para anunciar a mensagem (por exemplo, aria-live, aria-describedby, role=alert, etc.)",
465 "hidden": "O valor de 'aria-errormessage' `${data.values}` não pode referenciar um elemento oculto"
466 },
467 "incomplete": {
468 "singular": "Assegure que o valor de 'aria-errormessage' `${data.values}` referencia um elemento existente",
469 "plural": "Assegure que os valores de 'aria-errormessage' `${data.values}` referenciem elementos existentes",
470 "idrefs": "Não foi possível determinar se o elemento 'aria-errormessage' existe na página: ${data.values}"
471 }
472 },
473 "aria-hidden-body": {
474 "pass": "Não há nenhum atributo 'aria-hidden' no corpo do documento",
475 "fail": "'aria-hidden=true' não deve estar presente no corpo do documento"
476 },
477 "aria-level": {
478 "pass": "Os valores de 'aria-level' são válidos",
479 "incomplete": "Valores de 'aria-level' superiores a 6 não são suportados em todas as combinações de leitores de ecrã e navegadores"
480 },
481 "aria-prohibited-attr": {
482 "pass": "O atributo ARIA é permitido",
483 "fail": {
484 "hasRolePlural": "Os atributos ${data.prohibited} não podem ser usados com a função '\"${data.role}\"'.",
485 "hasRoleSingular": "O atributo ${data.prohibited} não pode ser usado com a função '\"${data.role}\"'.",
486 "noRolePlural": "Os atributos ${data.prohibited} não podem ser usados num ${data.nodeName} sem um atributo 'role' válido.",
487 "noRoleSingular": "O atributo ${data.prohibited} não pode ser usado num ${data.nodeName} sem um atributo 'role' válido."
488 },
489 "incomplete": {
490 "hasRoleSingular": "O atributo ${data.prohibited} não é bem suportado com a função '\"${data.role}\"'.",
491 "hasRolePlural": "Os atributos ${data.prohibited} não são bem suportados com a função '\"${data.role}\"'.",
492 "noRoleSingular": "O atributo ${data.prohibited} não é bem suportado num ${data.nodeName} sem um atributo 'role' válido.",
493 "noRolePlural": "Os atributos ${data.prohibited} não são bem suportados num ${data.nodeName} sem um atributo 'role' válido."
494 }
495 },
496 "aria-required-attr": {
497 "pass": "Todos os atributos ARIA obrigatórios estão presentes",
498 "fail": {
499 "singular": "Atributo ARIA obrigatório não está presente: ${data.values}",
500 "plural": "Atributos ARIA obrigatórios não estão presentes: ${data.values}"
501 }
502 },
503 "aria-required-children": {
504 "pass": {
505 "default": "Os elementos filhos ARIA obrigatórios estão presentes",
506 "aria-busy": "O elemento tem o atributo 'aria-busy', pelo que é permitido omitir os elementos filhos obrigatórios"
507 },
508 "fail": {
509 "singular": "A função ARIA de filho obrigatório não está presente: ${data.values}",
510 "plural": "A função ARIA de filhos obrigatórios não está presente: ${data.values}",
511 "unallowed": "O elemento tem filhos que não são permitidos: ${data.values}"
512 },
513 "incomplete": {
514 "singular": "Espera-se que seja adicionada a função ARIA de filho: ${data.values}",
515 "plural": "Espera-se que sejam adicionadas as funções ARIA de filhos: ${data.values}"
516 }
517 },
518 "aria-required-parent": {
519 "pass": "A função ARIA parental obrigatória está presente",
520 "fail": {
521 "singular": "A função ARIA parental obrigatória não está presente: ${data.values}",
522 "plural": "As funções ARIA parentais obrigatórias não estão presentes: ${data.values}"
523 }
524 },
525 "aria-roledescription": {
526 "pass": "'aria-roledescription' é utilizado numa função semântica suportada",
527 "incomplete": "Verifique se o 'aria-roledescription' é anunciado por leitores de ecrã suportados",
528 "fail": "Atribua ao elemento uma função que suporte 'aria-roledescription'"
529 },
530 "aria-unsupported-attr": {
531 "pass": "O atributo ARIA é suportado",
532 "fail": "O atributo ARIA não é amplamente suportado em leitores de ecrã e tecnologias assistivas: ${data.values}"
533 },
534 "aria-valid-attr-value": {
535 "pass": "Os valores dos atributos ARIA são válidos",
536 "fail": {
537 "singular": "Valor de atributo ARIA inválido: ${data.values}",
538 "plural": "Valores de atributo ARIA inválidos: ${data.values}"
539 },
540 "incomplete": {
541 "noId": "O ID do elemento do atributo ARIA não existe na página: ${data.needsReview}",
542 "noIdShadow": "O ID do elemento do atributo ARIA não existe na página ou é descendente de uma shadow DOM tree diferente: ${data.needsReview}",
543 "ariaCurrent": "O valor do atributo ARIA é inválido e será tratado como '\"aria-current=true\"': ${data.needsReview}",
544 "idrefs": "Não foi possível determinar se o ID do elemento do atributo ARIA existe na página: ${data.needsReview}",
545 "empty": "O valor do atributo ARIA é ignorado quando está vazio: ${data.needsReview}",
546 "controlsWithinPopup": "Não foi possível determinar se o ID referenciado por 'aria-controls existe' na página enquanto se utiliza 'aria-haspopup': ${data.needsReview}"
547 }
548 },
549 "aria-valid-attr": {
550 "pass": "O nome do atributo ARIA é válido",
551 "fail": {
552 "singular": "Nome de atributo ARIA inválido: ${data.values}",
553 "plural": "Nomes de atributos ARIA inválidos: ${data.values}"
554 }
555 },
556 "braille-label-equivalent": {
557 "pass": "'aria-braillelabel' é utilizado num elemento com texto acessível",
558 "fail": "'aria-braillelabel' é utilizado num elemento sem texto acessível",
559 "incomplete": "Não foi possível calcular o texto acessível"
560 },
561 "braille-roledescription-equivalent": {
562 "pass": "'aria-brailleroledescription' é utilizado num elemento com aria-roledescription",
563 "fail": {
564 "noRoleDescription": "'aria-brailleroledescription' é utilizado num elemento sem 'aria-roledescription'",
565 "emptyRoleDescription": "'aria-brailleroledescription' é utilizado num elemento com 'aria-roledescription' vazio"
566 }
567 },
568 "deprecatedrole": {
569 "pass": "A função ARIA não está obsoleta",
570 "fail": "A função utilizada está obsoleta: ${data}"
571 },
572 "fallbackrole": {
573 "pass": "Foi utilizado apenas um valor de 'role'",
574 "fail": "Utilize apenas um valor de 'role', pois as funções de 'fallback' não são suportadas em navegadores mais antigos",
575 "incomplete": "Utilize apenas o role 'presentation' ou 'none', pois são sinónimos."
576 },
577 "has-global-aria-attribute": {
578 "pass": {
579 "singular": "O elemento tem o atributo ARIA global: ${data.values}",
580 "plural": "O elemento tem os atributos ARIA globais: ${data.values}"
581 },
582 "fail": "O elemento não tem atributo ARIA global"
583 },
584 "has-widget-role": {
585 "pass": "O elemento tem uma função de 'widget'.",
586 "fail": "O elemento não tem uma função de 'widget'."
587 },
588 "invalidrole": {
589 "pass": "A função ARIA é válida",
590 "fail": {
591 "singular": "A função deve ser uma das funções ARIA válidas: ${data.values}",
592 "plural": "As funções devem ser uma das funções ARIA válidas: ${data.values}"
593 }
594 },
595 "is-element-focusable": {
596 "pass": "O elemento é focável.",
597 "fail": "O elemento não é focável."
598 },
599 "no-implicit-explicit-label": {
600 "pass": "Não há discrepância entre uma <label> e o nome acessível",
601 "incomplete": "Verifique se a <label> não precisa fazer parte do nome do campo ARIA ${data}"
602 },
603 "unsupportedrole": {
604 "pass": "A função ARIA é suportada",
605 "fail": "A função utilizada não é amplamente suportada em leitores de ecrã e tecnologias assistivas: ${data}"
606 },
607 "valid-scrollable-semantics": {
608 "pass": "O elemento tem semântica válida para um elemento na ordem de foco.",
609 "fail": "O elemento tem semântica inválida para um elemento na ordem de foco."
610 },
611 "color-contrast-enhanced": {
612 "pass": "O elemento tem um contraste de cor suficiente de ${data.contrastRatio}",
613 "fail": {
614 "default": "O elemento tem um contraste de cor insuficiente de ${data.contrastRatio} (cor de primeiro plano: ${data.fgColor}, cor de fundo: ${data.bgColor}, tamanho da fonte: ${data.fontSize}, peso da fonte: ${data.fontWeight}). Esperava-se uma razão de contraste de ${data.expectedContrastRatio}",
615 "fgOnShadowColor": "O elemento tem um contraste de cor insuficiente de ${data.contrastRatio} entre a cor de primeiro plano e a cor da sombra (cor de primeiro plano: ${data.fgColor}, cor do text-shadow: ${data.shadowColor}, tamanho da fonte: ${data.fontSize}, peso da fonte: ${data.fontWeight}). Esperava-se uma razão de contraste de ${data.expectedContrastRatio}",
616 "shadowOnBgColor": "O elemento tem um contraste de cor insuficiente de ${data.contrastRatio} entre a cor da sombra e a cor de fundo (cor do text-shadow: ${data.shadowColor}, cor de fundo: ${data.bgColor}, tamanho da fonte: ${data.fontSize}, peso da fonte: ${data.fontWeight}). Esperava-se uma razão de contraste de ${data.expectedContrastRatio}"
617 },
618 "incomplete": {
619 "default": "Não foi possível determinar a razão de contraste",
620 "bgImage": "A cor de fundo do elemento não pôde ser determinada devido a uma imagem de fundo",
621 "bgGradient": "A cor de fundo do elemento não pôde ser determinada devido a um gradiente de fundo",
622 "imgNode": "A cor de fundo do elemento não pôde ser determinada porque o elemento contém um nó de imagem",
623 "bgOverlap": "A cor de fundo do elemento não pôde ser determinada porque está sobreposto por outro elemento",
624 "fgAlpha": "A cor de primeiro plano do elemento não pôde ser determinada devido à transparência alfa",
625 "elmPartiallyObscured": "A cor de fundo do elemento não pôde ser determinada porque está parcialmente encoberta por outro elemento",
626 "elmPartiallyObscuring": "A cor de fundo do elemento não pôde ser determinada porque se sobrepõe parcialmente a outros elementos",
627 "outsideViewport": "A cor de fundo do elemento não pôde ser determinada porque está fora da área visível",
628 "equalRatio": "O elemento tem uma razão de contraste 1:1 com o fundo",
629 "shortTextContent": "O conteúdo do elemento é demasiado curto para determinar se é realmente conteúdo textual",
630 "nonBmp": "O conteúdo do elemento contém apenas caracteres não textuais",
631 "pseudoContent": "A cor de fundo do elemento não pôde ser determinada devido a um pseudo-elemento"
632 }
633 },
634 "color-contrast": {
635 "pass": {
636 "default": "O elemento tem um contraste de cor suficiente de ${data.contrastRatio}",
637 "hidden": "O elemento está oculto"
638 },
639 "fail": {
640 "default": "O elemento tem um contraste de cor insuficiente de ${data.contrastRatio} (cor de primeiro plano: ${data.fgColor}, cor de fundo: ${data.bgColor}, tamanho da fonte: ${data.fontSize}, peso da fonte: ${data.fontWeight}). Esperava-se uma razão de contraste de ${data.expectedContrastRatio}",
641 "fgOnShadowColor": "O elemento tem um contraste de cor insuficiente de ${data.contrastRatio} entre a cor de primeiro plano e a cor da sombra (cor de primeiro plano: ${data.fgColor}, cor do text-shadow: ${data.shadowColor}, tamanho da fonte: ${data.fontSize}, peso da fonte: ${data.fontWeight}). Esperava-se uma razão de contraste de ${data.expectedContrastRatio}",
642 "shadowOnBgColor": "O elemento tem um contraste de cor insuficiente de ${data.contrastRatio} entre a cor da sombra e a cor de fundo (cor do text-shadow: ${data.shadowColor}, cor de fundo: ${data.bgColor}, tamanho da fonte: ${data.fontSize}, peso da fonte: ${data.fontWeight}). Esperava-se uma razão de contraste de ${data.expectedContrastRatio}"
643 },
644 "incomplete": {
645 "default": "Não foi possível determinar a razão de contraste",
646 "bgImage": "A cor de fundo do elemento não pôde ser determinada devido a uma imagem de fundo",
647 "bgGradient": "A cor de fundo do elemento não pôde ser determinada devido a um gradiente de fundo",
648 "imgNode": "A cor de fundo do elemento não pôde ser determinada porque o elemento contém um nó de imagem",
649 "bgOverlap": "A cor de fundo do elemento não pôde ser determinada porque está sobreposto por outro elemento",
650 "complexTextShadows": "Não foi possível determinar o contraste do elemento porque utiliza sombras de texto complexas",
651 "fgAlpha": "A cor de primeiro plano do elemento não pôde ser determinada devido à transparência alfa",
652 "elmPartiallyObscured": "A cor de fundo do elemento não pôde ser determinada porque está parcialmente encoberta por outro elemento",
653 "elmPartiallyObscuring": "A cor de fundo do elemento não pôde ser determinada porque se sobrepõe parcialmente a outros elementos",
654 "outsideViewport": "A cor de fundo do elemento não pôde ser determinada porque está fora da área visível",
655 "equalRatio": "O elemento tem uma razão de contraste 1:1 com o fundo",
656 "shortTextContent": "O conteúdo do elemento é demasiado curto para determinar se é realmente texto",
657 "nonBmp": "O conteúdo do elemento contém apenas caracteres não textuais",
658 "pseudoContent": "A cor de fundo do elemento não pôde ser determinada devido a um pseudo-elemento"
659 }
660 },
661 "link-in-text-block-style": {
662 "pass": "Os links podem ser distinguidos do texto circundante através de estilos visuais",
663 "incomplete": {
664 "default": "Verifique se o link necessita de estilos para se distinguir do texto próximo",
665 "pseudoContent": "Verifique se o pseudo-estilo do link é suficiente para o distinguir do texto circundante"
666 },
667 "fail": "O link não tem estilos (como sublinhado) para se distinguir do texto circundante"
668 },
669 "link-in-text-block": {
670 "pass": "Os links podem ser distinguidos do texto circundante de alguma forma que não seja pela cor",
671 "fail": {
672 "fgContrast": "O link tem um contraste de cor insuficiente de ${data.contrastRatio}:1 com o texto circundante. (O contraste mínimo é ${data.requiredContrastRatio}:1, cor do link: ${data.nodeColor}, cor do texto circundante: ${data.parentColor})",
673 "bgContrast": "O fundo do link tem um contraste de cor insuficiente de ${data.contrastRatio} (o contraste mínimo é ${data.requiredContrastRatio}:1, cor de fundo do link: ${data.nodeBackgroundColor}, cor de fundo circundante: ${data.parentBackgroundColor})"
674 },
675 "incomplete": {
676 "default": "Não foi possível determinar a razão de contraste do primeiro plano do elemento",
677 "bgContrast": "Não foi possível determinar a razão de contraste do fundo do elemento",
678 "bgImage": "Não foi possível determinar a razão de contraste do elemento devido a uma imagem de fundo",
679 "bgGradient": "Não foi possível determinar a razão de contraste do elemento devido a um gradiente de fundo",
680 "imgNode": "Não foi possível determinar a razão de contraste do elemento porque contém um nó de imagem",
681 "bgOverlap": "Não foi possível determinar a razão de contraste do elemento devido à sobreposição de elementos"
682 }
683 },
684 "autocomplete-appropriate": {
685 "pass": "O valor de 'autocomplete' está num elemento apropriado",
686 "fail": "O valor de 'autocomplete' é inapropriado para este tipo de entrada"
687 },
688 "autocomplete-valid": {
689 "pass": "o atributo 'autocomplete' está formatado corretamente",
690 "fail": "o atributo 'autocomplete' está formatado incorretamente",
691 "incomplete": "o atributo 'autocomplete' tem um valor não padrão. Verifique se poderia ser utilizado algum valor padrão."
692 },
693 "accesskeys": {
694 "pass": "O valor do atributo 'accesskey' é único",
695 "fail": "O documento tem múltiplos elementos com o mesmo 'accesskey'"
696 },
697 "focusable-content": {
698 "pass": "O elemento contém elementos focáveis",
699 "fail": "O elemento deveria ter conteúdo focável"
700 },
701 "focusable-disabled": {
702 "pass": "Não há elementos focáveis contidos no elemento",
703 "incomplete": "Verifique se os elementos focáveis movem imediatamente o indicador de foco",
704 "fail": "O conteúdo focável deve ser desativado ou removido do DOM"
705 },
706 "focusable-element": {
707 "pass": "O elemento é focável",
708 "fail": "O elemento deveria ser focável"
709 },
710 "focusable-modal-open": {
711 "pass": "Não há elementos focáveis enquanto um modal está aberto",
712 "incomplete": "Verifique se os elementos focáveis não são tabuláveis no estado atual"
713 },
714 "focusable-no-name": {
715 "pass": "O elemento não está na ordem de tabulação ou tem texto acessível",
716 "fail": "O elemento está na ordem de tabulação e não tem texto acessível",
717 "incomplete": "Não foi possível determinar se o elemento tem um nome acessível"
718 },
719 "focusable-not-tabbable": {
720 "pass": "Não há elementos focáveis contidos no elemento",
721 "incomplete": "Verifique se os elementos focáveis movem imediatamente o indicador de foco",
722 "fail": "O conteúdo focável deve ter 'tabindex=\"-1\"' ou ser removido do DOM"
723 },
724 "frame-focusable-content": {
725 "pass": "O elemento não tem descendentes focáveis",
726 "fail": "O elemento tem descendentes focáveis",
727 "incomplete": "Não foi possível determinar se o elemento tem descendentes"
728 },
729 "landmark-is-top-level": {
730 "pass": "O marco ${data.role} está no nível principal.",
731 "fail": "O marco ${data.role} está contido noutro marco."
732 },
733 "no-focusable-content": {
734 "pass": "O elemento não tem descendentes focáveis",
735 "fail": {
736 "default": "O elemento tem descendentes focáveis",
737 "notHidden": "Utilizar um tabindex negativo num elemento dentro de um controlo interativo não impede que as tecnologias assistivas foquem o elemento (mesmo com aria-hidden=\"true\")"
738 },
739 "incomplete": "Não foi possível determinar se o elemento tem descendentes"
740 },
741 "page-has-heading-one": {
742 "pass": "A página tem pelo menos um cabeçalho de nível 1",
743 "fail": "A página deve ter um cabeçalho de nível 1"
744 },
745 "page-has-main": {
746 "pass": "O documento tem pelo menos um marco 'main'",
747 "fail": "O documento não tem um marco 'main'"
748 },
749 "page-no-duplicate-banner": {
750 "pass": "O documento não tem mais do que um marco de 'banner'",
751 "fail": "O documento tem mais do que um marco de 'banner'"
752 },
753 "page-no-duplicate-contentinfo": {
754 "pass": "O documento não tem mais do que um marco 'contentinfo'",
755 "fail": "O documento tem mais do que um marco 'contentinfo'"
756 },
757 "page-no-duplicate-main": {
758 "pass": "O documento não tem mais do que um marco 'main'",
759 "fail": "O documento tem mais do que um marco 'main'"
760 },
761 "tabindex": {
762 "pass": "O elemento não tem um 'tabindex' superior a 0",
763 "fail": "O elemento tem um 'tabindex' superior a 0"
764 },
765 "alt-space-value": {
766 "pass": "O elemento tem um valor válido para o atributo 'alt'",
767 "fail": "O elemento tem um atributo 'alt' que contém apenas um espaço, o qual não é ignorado por todos os leitores de ecrã"
768 },
769 "duplicate-img-label": {
770 "pass": "O elemento não duplica o texto existente no atributo 'alt' da <img>",
771 "fail": "O elemento contém uma <img> com texto 'alt' que duplica texto existente"
772 },
773 "explicit-label": {
774 "pass": "O elemento tem uma <label> explícita",
775 "fail": "O elemento não tem uma <label> explícita",
776 "incomplete": "Não foi possível determinar se o elemento de formulário tem uma <label> explícita"
777 },
778 "help-same-as-label": {
779 "pass": "O texto de ajuda (title ou aria-describedby) não duplica o texto da etiqueta",
780 "fail": "O texto de ajuda (title ou aria-describedby) é igual ao texto da etiqueta"
781 },
782 "hidden-explicit-label": {
783 "pass": "O elemento de formulário tem uma <label> explícita visível",
784 "fail": "O elemento de formulário tem uma <label> explícita que está oculta",
785 "incomplete": "Não foi possível determinar se o elemento de formulário tem uma <label> explícita oculta"
786 },
787 "implicit-label": {
788 "pass": "O elemento tem uma <label> implícita (envolvida)",
789 "fail": "O elemento não tem uma <label> implícita (envolvida)",
790 "incomplete": "Não foi possível determinar se o elemento de formulário tem uma <label> implícita (envolvida)"
791 },
792 "label-content-name-mismatch": {
793 "pass": "O elemento contém texto visível como parte do seu nome acessível",
794 "fail": "O texto dentro do elemento não está incluído no nome acessível"
795 },
796 "multiple-label": {
797 "pass": "O campo de formulário não tem múltiplos <label>",
798 "incomplete": "Múltiplos <label> não são amplamente suportadas em tecnologias assistivas. Assegure que a primeira etiqueta contém toda a informação necessária."
799 },
800 "title-only": {
801 "pass": "O elemento de formulário não utiliza apenas o atributo 'title' para a sua etiqueta",
802 "fail": "Apenas o 'title' é usado para gerar a etiqueta do elemento de formulário"
803 },
804 "landmark-is-unique": {
805 "pass": "Os marcos devem ter uma combinação única de 'role' ou 'role'/'label'/'title' (ou seja, nome acessível)",
806 "fail": "O marco deve ter um 'aria-label', 'aria-labelledby' ou 'title' únicos para torná-lo distinguível"
807 },
808 "has-lang": {
809 "pass": "O elemento <html> tem um atributo 'lang'",
810 "fail": {
811 "noXHTML": "O atributo 'xml:lang' não é válido em páginas HTML, use o atributo 'lang'.",
812 "noLang": "O elemento <html> não tem um atributo 'lang'"
813 }
814 },
815 "valid-lang": {
816 "pass": "O valor do atributo 'lang' está incluído na lista de línguas válidas",
817 "fail": "O valor do atributo 'lang' não está incluído na lista de línguas válidas"
818 },
819 "xml-lang-mismatch": {
820 "pass": "Os atributos 'lang' e 'xml:lang' têm a mesma língua base",
821 "fail": "Os atributos 'lang' e 'xml:lang' não têm a mesma língua base"
822 },
823 "dlitem": {
824 "pass": "O item de lista de descrições tem um elemento pai <dl>",
825 "fail": "O item de lista de descrições não tem um elemento pai <dl>"
826 },
827 "listitem": {
828 "pass": "O item de lista tem um elemento pai <ul>, <ol> ou 'role=\"list\"'",
829 "fail": {
830 "default": "O item de lista não tem um elemento pai <ul> ou <ol>",
831 "roleNotValid": "O elemento pai do item de lista tem uma role que não é 'role=\"list\"'"
832 }
833 },
834 "only-dlitems": {
835 "pass": "O elemento <dl> tem apenas filhos diretos permitidos: <dt>, <dd> ou <div>",
836 "fail": "O elemento <dl> tem filhos diretos não permitidos: ${data.values}"
837 },
838 "only-listitems": {
839 "pass": "O elemento de lista tem apenas filhos diretos permitidos, que devem ser <li>",
840 "fail": "O elemento de lista tem filhos diretos não permitidos: ${data.values}"
841 },
842 "structured-dlitems": {
843 "pass": "Quando não está vazio, o elemento tem tanto <dt> como <dd>",
844 "fail": "Quando não está vazio, o elemento não tem pelo menos um elemento <dt> seguido de pelo menos um <dd>"
845 },
846 "caption": {
847 "pass": "O elemento multimédia tem uma pista de legendas",
848 "incomplete": "Verifique se as legendas estão disponíveis para o elemento"
849 },
850 "frame-tested": {
851 "pass": "O 'iframe' foi testado com axe-core",
852 "fail": "O 'iframe' não pôde ser testado com axe-core",
853 "incomplete": "O 'iframe' ainda tem de ser testado com axe-core"
854 },
855 "no-autoplay-audio": {
856 "pass": "<video> ou <audio> não reproduzem áudio por mais do que a duração permitida ou têm um mecanismo de controlo",
857 "fail": "<video> ou <audio> reproduzem áudio por mais do que a duração permitida e não têm um mecanismo de controlo",
858 "incomplete": "Verifique se o <video> ou <audio> não reproduzem áudio por mais do que a duração permitida ou fornecem um mecanismo de controlo"
859 },
860 "css-orientation-lock": {
861 "pass": "O ecrã é operativo, e não existe bloqueio de orientação",
862 "fail": "O bloqueio de orientação CSS está aplicado e torna o ecrã inoperável",
863 "incomplete": "Não é possível determinar o bloqueio de orientação CSS"
864 },
865 "meta-viewport-large": {
866 "pass": "A tag <meta> não impede uma ampliação significativa em dispositivos móveis",
867 "fail": "A tag <meta> limita a ampliação em dispositivos móveis"
868 },
869 "meta-viewport": {
870 "pass": "A tag <meta> não desativa a ampliação em dispositivos móveis",
871 "fail": "${data} na tag <meta> desativa a ampliação em dispositivos móveis"
872 },
873 "target-offset": {
874 "pass": {
875 "default": "O alvo tem espaço suficiente dos seus vizinhos mais próximos. O espaço clicável seguro tem um diâmetro de ${data.closestOffset}px, que é, no mínimo, ${data.minOffset}px.",
876 "large": "O alvo excede largamente o tamanho mínimo de ${data.minOffset}px."
877 },
878 "fail": "O alvo tem espaço insuficiente em relação aos vizinhos mais próximos. O espaço clicável seguro tem um diâmetro de ${data.closestOffset}px, em vez de, pelo menos, ${data.minOffset}px.",
879 "incomplete": {
880 "default": "O elemento com tabindex negativo tem espaço insuficiente em relação aos seus vizinhos mais próximos. O espaço clicável seguro tem um diâmetro de ${data.closestOffset}px, em vez de, pelo menos, ${data.minOffset}px. É este um alvo?",
881 "nonTabbableNeighbor": "O alvo tem espaço insuficiente em relação aos seus vizinhos mais próximos. O espaço clicável seguro tem um diâmetro de ${data.closestOffset}px, em vez de, pelo menos, ${data.minOffset}px. Será que o vizinho é um alvo?",
882 "tooManyRects": "Não foi possível obter o tamanho do alvo porque há elementos sobrepostos em excesso"
883 }
884 },
885 "target-size": {
886 "pass": {
887 "default": "O controlo tem um tamanho suficiente (${data.width}px por ${data.height}px, devendo ter pelo menos ${data.minSize}px por ${data.minSize}px)",
888 "obscured": "O controlo é ignorado porque está totalmente encoberto e, por isso, não é clicável",
889 "large": "O alvo excede largamente o tamanho mínimo de ${data.minSize}px."
890 },
891 "fail": {
892 "default": "O alvo tem um tamanho insuficiente (${data.width}px por ${data.height}px, devendo ter pelo menos ${data.minSize}px por ${data.minSize}px)",
893 "partiallyObscured": "O alvo tem um tamanho insuficiente porque está parcialmente encoberto (o menor espaço é de ${data.width}px por ${data.height}px, devendo ser pelo menos ${data.minSize}px por ${data.minSize}px)"
894 },
895 "incomplete": {
896 "default": "O elemento com 'tabindex' negativo tem um tamanho insuficiente (${data.width}px por ${data.height}px, devendo ser pelo menos ${data.minSize}px por ${data.minSize}px). É este um alvo?",
897 "contentOverflow": "O tamanho do elemento não pôde ser determinado com precisão devido ao conteúdo com overflow",
898 "partiallyObscured": "O elemento com 'tabindex' negativo tem um tamanho insuficiente porque está parcialmente encoberto (o menor espaço é de ${data.width}px por ${data.height}px, devendo ser pelo menos ${data.minSize}px por ${data.minSize}px). É este um alvo?",
899 "partiallyObscuredNonTabbable": "O alvo tem um tamanho insuficiente porque está parcialmente encoberto por um vizinho com 'tabindex' negativo (o menor espaço é de ${data.width}px por ${data.height}px, devendo ser pelo menos ${data.minSize}px por ${data.minSize}px). Será que o vizinho é um alvo?",
900 "tooManyRects": "Não foi possível obter o tamanho do alvo porque há elementos sobrepostos em excesso"
901 }
902 },
903 "header-present": {
904 "pass": "A página tem um cabeçalho",
905 "fail": "A página não tem um cabeçalho"
906 },
907 "heading-order": {
908 "pass": "Ordem dos cabeçalhos válida",
909 "fail": "Ordem dos cabeçalhos inválida",
910 "incomplete": "Não foi possível determinar o cabeçalho anterior"
911 },
912 "identical-links-same-purpose": {
913 "pass": "Não existem outros links com o mesmo nome que direcionem para uma URL diferente",
914 "incomplete": "Verifique se os links têm o mesmo propósito ou se são intencionalmente ambíguos."
915 },
916 "internal-link-present": {
917 "pass": "Foi encontrado um link de salto válido",
918 "fail": "Não foi encontrado um link de salto válido"
919 },
920 "landmark": {
921 "pass": "A página tem uma região de marco",
922 "fail": "A página não tem uma região de marco"
923 },
924 "meta-refresh-no-exceptions": {
925 "pass": "A tag <meta> não atualiza imediatamente a página",
926 "fail": "A tag <meta> força a atualização da página com temporização"
927 },
928 "meta-refresh": {
929 "pass": "A tag <meta> não atualiza imediatamente a página",
930 "fail": "A tag <meta> força a atualização da página com temporização (inferior a 20 horas)"
931 },
932 "p-as-heading": {
933 "pass": "Os elementos <p> não estão estilizados como cabeçalhos",
934 "fail": "Deveriam ser usados elementos de cabeçalho em vez de elementos <p> estilizados",
935 "incomplete": "Não foi possível determinar se os elementos <p> estão estilizados como cabeçalhos"
936 },
937 "region": {
938 "pass": "Todo o conteúdo da página está contido em marcos",
939 "fail": "Algum conteúdo da página não está contido em marcos"
940 },
941 "skip-link": {
942 "pass": "O destino do link de salto existe",
943 "incomplete": "O destino do link de salto deve tornar-se visível na ativação",
944 "fail": "Não há destino para o link de salto"
945 },
946 "unique-frame-title": {
947 "pass": "O atributo 'title' do elemento é único",
948 "fail": "O atributo 'title' do elemento não é único"
949 },
950 "duplicate-id-active": {
951 "pass": "O documento não tem elementos ativos que partilhem o mesmo atributo 'id'",
952 "fail": "O documento tem elementos ativos com o mesmo atributo 'id': ${data}"
953 },
954 "duplicate-id-aria": {
955 "pass": "O documento não tem elementos referenciados com ARIA ou etiquetas que partilhem o mesmo atributo 'id'",
956 "fail": "O documento tem múltiplos elementos referenciados com ARIA com o mesmo atributo 'id': ${data}"
957 },
958 "duplicate-id": {
959 "pass": "O documento não tem elementos estáticos que partilhem o mesmo atributo 'id'",
960 "fail": "O documento tem múltiplos elementos estáticos com o mesmo atributo 'id': ${data}"
961 },
962 "aria-label": {
963 "pass": "O atributo 'aria-label' existe e não está vazio",
964 "fail": "O atributo 'aria-label' não existe ou está vazio"
965 },
966 "aria-labelledby": {
967 "pass": "O atributo 'aria-labelledby' existe e referencia elementos visíveis para leitores de ecrã",
968 "fail": "O atributo 'aria-labelledby' não existe, referencia elementos que não existem ou que estão vazios",
969 "incomplete": "Assegure que 'aria-labelledby' referencia um elemento existente"
970 },
971 "avoid-inline-spacing": {
972 "pass": "Não foram especificados estilos 'inline' com '!important' que afetem o espaçamento do texto",
973 "fail": {
974 "singular": "Remova '!important' do estilo 'inline' ${data.values}, pois a sua sobreposição não é suportada pela maioria dos navegadores",
975 "plural": "Remova '!important' dos estilos 'inline' ${data.values}, pois a sua sobreposição não é suportada pela maioria dos navegadores"
976 }
977 },
978 "button-has-visible-text": {
979 "pass": "O elemento tem texto interno que é visível para leitores de ecrã",
980 "fail": "O elemento não tem texto interno que seja visível para leitores de ecrã",
981 "incomplete": "Não foi possível determinar se o elemento tem filhos"
982 },
983 "doc-has-title": {
984 "pass": "O documento tem um elemento <title> não vazio",
985 "fail": "O documento não tem um elemento <title> não vazio"
986 },
987 "exists": {
988 "pass": "O elemento não existe",
989 "incomplete": "O elemento existe"
990 },
991 "has-alt": {
992 "pass": "O elemento tem um atributo 'alt'",
993 "fail": "O elemento não tem um atributo 'alt'"
994 },
995 "has-visible-text": {
996 "pass": "O elemento tem texto que é visível para leitores de ecrã",
997 "fail": "O elemento não tem texto que seja visível para leitores de ecrã",
998 "incomplete": "Não foi possível determinar se o elemento tem filhos"
999 },
1000 "important-letter-spacing": {
1001 "pass": "O espaçamento entre letras no atributo 'style' não está definido como !important, ou cumpre o mínimo",
1002 "fail": "O espaçamento entre letras no atributo 'style' não deve usar !important, ou ter ${data.minValue}em (atualmente ${data.value}em)"
1003 },
1004 "important-line-height": {
1005 "pass": "A altura da linha no atributo 'style' não está definida como !important, ou cumpre o mínimo",
1006 "fail": "A altura da linha no atributo 'style' não deve usar !important, ou ter ${data.minValue}em (atualmente ${data.value}em)"
1007 },
1008 "important-word-spacing": {
1009 "pass": "O espaçamento entre palavras no atributo 'style' não está definido como !important, ou cumpre o mínimo",
1010 "fail": "O espaçamento entre palavras no atributo 'style' não deve usar !important, ou ter ${data.minValue}em (atualmente ${data.value}em)"
1011 },
1012 "is-on-screen": {
1013 "pass": "O elemento não está visível",
1014 "fail": "O elemento está visível"
1015 },
1016 "non-empty-alt": {
1017 "pass": "O elemento tem um atributo 'alt' não vazio",
1018 "fail": {
1019 "noAttr": "O elemento não tem um atributo 'alt'",
1020 "emptyAttr": "O elemento tem um atributo 'alt' vazio"
1021 }
1022 },
1023 "non-empty-if-present": {
1024 "pass": {
1025 "default": "O elemento não tem um atributo 'value'",
1026 "has-label": "O elemento tem um atributo 'value' não vazio"
1027 },
1028 "fail": "O elemento tem um atributo 'value' e este está vazio"
1029 },
1030 "non-empty-placeholder": {
1031 "pass": "O elemento tem um atributo 'placeholder'",
1032 "fail": {
1033 "noAttr": "O elemento não tem um atributo 'placeholder'",
1034 "emptyAttr": "O elemento tem um atributo 'placeholder' vazio"
1035 }
1036 },
1037 "non-empty-title": {
1038 "pass": "O elemento tem um atributo 'title'",
1039 "fail": {
1040 "noAttr": "O elemento não tem um atributo 'title'",
1041 "emptyAttr": "O elemento tem um atributo 'title' vazio"
1042 }
1043 },
1044 "non-empty-value": {
1045 "pass": "O elemento tem um atributo 'value' não vazio",
1046 "fail": {
1047 "noAttr": "O elemento não tem um atributo 'value'",
1048 "emptyAttr": "O elemento tem um atributo 'value' vazio"
1049 }
1050 },
1051 "presentational-role": {
1052 "pass": "A semântica por defeito do elemento foi substituída por 'role=\"${data.role}\"'",
1053 "fail": {
1054 "default": "A semântica por defeito do elemento não foi substituída por 'role=\"none\"' ou 'role=\"presentation\"'",
1055 "globalAria": "A função do elemento não é de apresentação porque tem um atributo ARIA global",
1056 "focusable": "A função do elemento não é de apresentação porque é focável",
1057 "both": "A função do elemento não é de apresentação porque tem um atributo ARIA global e é focável",
1058 "iframe": "Utilizar o atributo '\"title\"' num elemento ${data.nodeName} com uma função de apresentação comporta-se de forma inconsistente entre os leitores de ecrã"
1059 }
1060 },
1061 "role-none": {
1062 "pass": "A semântica por defeito do elemento foi substituída por 'role=\"none\"'",
1063 "fail": "A semântica por defeito do elemento não foi substituída por 'role=\"none\"'"
1064 },
1065 "role-presentation": {
1066 "pass": "A semântica por defeito do elemento foi substituída por 'role=\"presentation\"'",
1067 "fail": "A semântica por defeito do elemento não foi substituída por 'role=\"presentation\"'"
1068 },
1069 "svg-non-empty-title": {
1070 "pass": "O elemento tem um filho que é um título",
1071 "fail": {
1072 "noTitle": "O elemento não tem um filho que seja um título",
1073 "emptyTitle": "O título do filho do elemento está vazio"
1074 },
1075 "incomplete": "Não foi possível determinar se o elemento tem um filho que seja um título"
1076 },
1077 "caption-faked": {
1078 "pass": "A primeira linha de uma tabela não é utilizada como <caption>",
1079 "fail": "O primeiro filho da tabela deveria ser um caption em vez de uma célula"
1080 },
1081 "html5-scope": {
1082 "pass": "O atributo scope é usado apenas em elementos de cabeçalho de tabela (<th>)",
1083 "fail": "No HTML 5, os atributos scope só podem ser usados em elementos de cabeçalho de tabela (<th>)"
1084 },
1085 "same-caption-summary": {
1086 "pass": "O conteúdo do atributo 'summary' e do <caption> não está duplicado",
1087 "fail": "O conteúdo do atributo 'summary' e do elemento <caption> são idênticos",
1088 "incomplete": "Não foi possível determinar se o elemento <table> tem um caption"
1089 },
1090 "scope-value": {
1091 "pass": "O atributo 'scope' é usado corretamente",
1092 "fail": "O valor do atributo 'scope' só pode ser 'row' ou 'col'"
1093 },
1094 "td-has-header": {
1095 "pass": "Todas as células de dados não vazias têm cabeçalhos de tabela",
1096 "fail": "Algumas células de dados não vazias não têm cabeçalhos de tabela"
1097 },
1098 "td-headers-attr": {
1099 "pass": "O atributo 'headers' é usado exclusivamente para referir-se a outras células da tabela",
1100 "incomplete": "O atributo 'headers' está vazio",
1101 "fail": "O atributo 'headers' não é usado exclusivamente para referir-se a outras células da tabela"
1102 },
1103 "th-has-data-cells": {
1104 "pass": "Todos os cabeçalhos de tabela numa tabela de dados referem-se às células de dados",
1105 "fail": "Nem todas as células de cabeçalho de tabela referem-se a células de dados",
1106 "incomplete": "Faltam células de dados na tabela ou estão vazias"
1107 },
1108 "hidden-content": {
1109 "pass": "Todo o conteúdo da página foi analisado.",
1110 "fail": "Houve problemas na análise do conteúdo desta página.",
1111 "incomplete": "Existe conteúdo oculto na página que não foi analisado. Será necessário acionar a sua exibição para o analisar."
1112 }
1113 },
1114 "failureSummaries": {
1115 "any": {
1116 "failureMessage": "Corrija qualquer um dos seguintes:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
1117 },
1118 "none": {
1119 "failureMessage": "Corrija todos os seguintes:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
1120 }
1121 },
1122 "incompleteFallbackMessage": "O axe não conseguiu identificar a razão. Hora de recorrer ao inspetor de elementos!"
1123}
Note: See TracBrowser for help on using the repository browser.