es.json 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788
  1. {
  2. "lang": "es",
  3. "rules": {
  4. "accesskeys": {
  5. "description": "Garantiza que cada valor para el atributo accesskey es único",
  6. "help": "El valor del atributo accesskey debe ser único"
  7. },
  8. "area-alt": {
  9. "description": "Garantiza que los elementos <area> de los mapas de imágenes tienen texto alternativo",
  10. "help": "Los elementos <area> activos deben tener texto alternativo"
  11. },
  12. "aria-allowed-attr": {
  13. "description": "Garantiza que los atributos ARIA están permitidos para el rol de un elemento",
  14. "help": "Los elementos solo deben usar atributos ARIA permitidos"
  15. },
  16. "aria-allowed-role": {
  17. "description": "Garantiza que el atributo role tiene un valor apropiado para el elemento",
  18. "help": "ARIA role debe ser apropiado para el elemento"
  19. },
  20. "aria-hidden-body": {
  21. "description": "Garantiza que aria-hidden='true' no está presente en el 'body' del documento.",
  22. "help": "aria-hidden='true' no debe estar presente en el 'body' del documento"
  23. },
  24. "aria-hidden-focus": {
  25. "description": "Garantiza que los elementos 'aria-hidden' no contienen elementos que admitan el foco",
  26. "help": "Los elementos 'ARIA hidden' no deben contener elementos que admitan el foco"
  27. },
  28. "aria-input-field-name": {
  29. "description": "Garantiza que cada 'ARIA input field' tiene un nombre accesible",
  30. "help": "Los 'ARIA input fields' tienen un nombre accesible"
  31. },
  32. "aria-required-attr": {
  33. "description": "Garantiza que los elementos con 'ARIA roles' tienen todos los atributos ARIA requeridos",
  34. "help": "Deben proporcionarse los atributos ARIA requeridos"
  35. },
  36. "aria-required-children": {
  37. "description": "Garantiza que los elementos con un 'ARIA role' que requieren 'child roles' los contienen",
  38. "help": "Ciertos 'ARIA roles' deben contener determinados hijos"
  39. },
  40. "aria-required-parent": {
  41. "description": "Garantiza que los elementos con un 'ARIA role' que requieren 'parent roles' están contenidos en ellos",
  42. "help": "Ciertos 'ARIA roles' deben estar contenidos en determinados padres"
  43. },
  44. "aria-roles": {
  45. "description": "Garantiza que todos los elementos con un atributo role usan un valor válido",
  46. "help": "Los 'ARIA roles' usados deben cumplir los requisitos para valores válidos"
  47. },
  48. "aria-toggle-field-name": {
  49. "description": "Garantiza que cada 'ARIA toggle field' tiene un nombre accesible",
  50. "help": "Los 'ARIA toggle fields' tienen un nombre accesible"
  51. },
  52. "aria-valid-attr-value": {
  53. "description": "Garantiza que todos los atributos ARIA tienen valores válidos",
  54. "help": "Los atributos ARIA deben cumplir los requisitos para valores válidos"
  55. },
  56. "aria-valid-attr": {
  57. "description": "Garantiza que los atributos que empiezan por aria- son atributos ARIA válidos",
  58. "help": "Los atributos ARIA deben cumplir los requisitos para nombres válidos"
  59. },
  60. "audio-caption": {
  61. "description": "Garantiza que los elementos <audio> tienen subtítulos",
  62. "help": "Los elementos <audio> deben tener una pista de subtítulos"
  63. },
  64. "autocomplete-valid": {
  65. "description": "Garantizar que el atributo autocomplete es correcto y adecuado para el campo de formulario",
  66. "help": "El atributo autocomplete debe usarse correctamente"
  67. },
  68. "avoid-inline-spacing": {
  69. "description": "Garantizar que el espaciado de texto establecido mediante atributos style se puede ajustar con hojas de estilo personalizadas",
  70. "help": "El espaciado de texto 'inline' debe poder ajustarse mediante hojas de estilo personalizadas"
  71. },
  72. "blink": {
  73. "description": "Garantiza que no se usan elementos <blink>",
  74. "help": "Los elementos <blink> están obsoletos y no deben usarse"
  75. },
  76. "button-name": {
  77. "description": "Garantiza que los botones tienen texto discernible",
  78. "help": "Los botones deben tener texto discernible"
  79. },
  80. "bypass": {
  81. "description": "Garantiza que cada página tiene al menos un medio para que un usuario pueda saltarse la navegación y pasar directamente al contenido",
  82. "help": "Las páginas deben tener medios para saltarse bloques repetidos"
  83. },
  84. "color-contrast": {
  85. "description": "Garantiza que el contraste entre colores de primer plano y fondo cumple los límites de la ratio para contraste WCAG 2 AA",
  86. "help": "Los elementos deben tener un contraste de colores suficiente"
  87. },
  88. "color-contrast-enhanced": {
  89. "description": "Garantiza que el contraste entre colores de primer plano y fondo cumple los límites de la ratio para contraste WCAG 2 AAA",
  90. "help": "Los elementos deben tener un contraste de colores suficiente"
  91. },
  92. "css-orientation-lock": {
  93. "description": "Garantiza que el contenido no está bloqueado en ninguna orientación de pantalla específica, y que el contenido es manejable en cualquier orientación de pantalla",
  94. "help": "Las 'CSS Media queries' no se usan para bloquear la orientación de pantalla"
  95. },
  96. "definition-list": {
  97. "description": "Garantiza que los elementos <dl> están estructurados correctamente",
  98. "help": "Los elementos <dl> solo deben contener directamente grupos de <dt> y <dd> debidamente ordenados, o elementos <script> o <template>"
  99. },
  100. "dlitem": {
  101. "description": "Garantiza que los elementos <dt> y <dd> están contenidos en un <dl>",
  102. "help": "Los elementos <dt> y <dd> deben estar contenidos en un <dl>"
  103. },
  104. "document-title": {
  105. "description": "Garantiza que cada documento HTML tiene un elemento <title> no vacío",
  106. "help": "Los documentos deben tener elementos <title> para ayudar en la navegación"
  107. },
  108. "duplicate-id-active": {
  109. "description": "Garantiza que cada valor para el atributo id de elementos activos es único",
  110. "help": "Los 'IDs' de elementos activos deben ser únicos"
  111. },
  112. "duplicate-id-aria": {
  113. "description": "Garantiza que cada valor del atributo id usado en ARIA y en 'labels' es único",
  114. "help": "Los 'IDs' usados en ARIA y en 'labels' deben ser únicos"
  115. },
  116. "duplicate-id": {
  117. "description": "Garantiza que cada valor para el atributo id es único",
  118. "help": "El valor del atributo id debe ser único"
  119. },
  120. "empty-heading": {
  121. "description": "Garantiza que los encabezados tienen texto discernible",
  122. "help": "Los encabezados no deben estar vacíos"
  123. },
  124. "focus-order-semantics": {
  125. "description": "Garantiza que los elementos en orden de foco tienen un rol apropiado",
  126. "help": "Los elementos en orden de foco necesitan un rol apropiado para contenido interactivo"
  127. },
  128. "form-field-multiple-labels": {
  129. "description": "Garantiza que el campo de formulario no tiene múltiples elementos label",
  130. "help": "El campo de formulario no debe tener múltiples elementos label"
  131. },
  132. "frame-tested": {
  133. "description": "Garantiza que los elementos <iframe> y <frame> contienen el script axe-core",
  134. "help": "Los marcos deben probarse con axe-core"
  135. },
  136. "frame-title-unique": {
  137. "description": "Garantiza que los elementos <iframe> y <frame> contienen un atributo título único",
  138. "help": "Los marcos deben tener un único atributo title"
  139. },
  140. "frame-title": {
  141. "description": "Garantiza que los elementos <iframe> y <frame> contienen un atributo título no vacío",
  142. "help": "Los marcos deben tener el atributo title"
  143. },
  144. "heading-order": {
  145. "description": "Garantiza que el orden de los encabezados es semánticamente correcto",
  146. "help": "El nivel de encabezados solo debería incrementarse en 1"
  147. },
  148. "hidden-content": {
  149. "description": "Informa a los usuarios sobre contenido oculto.",
  150. "help": "El contenido oculto de la página no se puede analizar"
  151. },
  152. "html-has-lang": {
  153. "description": "Garantiza que cada documento HTML tiene un atributo lang",
  154. "help": "El elemento <html> debe tener un atributo lang"
  155. },
  156. "html-lang-valid": {
  157. "description": "Garantiza que el atributo lang del elemento <html> tiene un valor válido",
  158. "help": "El elemento <html> debe tener un valor válido para el atributo lang"
  159. },
  160. "html-xml-lang-mismatch": {
  161. "description": "Garantizar que en los elementos HTML con atributos tanto lang como xml:lang válidos haya concordancia en el idioma base de la página",
  162. "help": "Los elementos HTML con lang y xml:lang deben tener el mismo idioma base"
  163. },
  164. "image-alt": {
  165. "description": "Garantiza que los elementos <img> tienen texto alternativo o un rol de none o presentation",
  166. "help": "Las imágenes deben tener texto alternativo"
  167. },
  168. "image-redundant-alt": {
  169. "description": "Garantiza que la alternativa a la imagen no se repite como texto",
  170. "help": "El texto alternativo de las imágenes no debe repetirse como texto"
  171. },
  172. "input-button-name": {
  173. "description": "Garantizar que los 'input buttons' tienen texto discernible",
  174. "help": "Los 'Input buttons' deben tener texto discernible"
  175. },
  176. "input-image-alt": {
  177. "description": "Garantiza que los elementos <input type=\"image\"> tienen texto alternativo",
  178. "help": "Los 'image buttons' deben tener texto alternativo"
  179. },
  180. "label-content-name-mismatch": {
  181. "description": "Garantiza que, en los elementos etiquetados mediante su contenido, su texto visible debe formar parte de su nombre accesible",
  182. "help": "Los elementos deben tener su texto visible como parte de su nombre accesible"
  183. },
  184. "label-title-only": {
  185. "description": "Garantiza que cada elemento de formulario no está etiquetado únicamente mediante los atributos title o aria-describedby ",
  186. "help": "Los elementos de formulario deben tener una etiqueta visible"
  187. },
  188. "label": {
  189. "description": "Garantiza que cada elemento de formulario tiene una etiqueta",
  190. "help": "Los elementos de formulario deben tener etiquetas"
  191. },
  192. "landmark-banner-is-top-level": {
  193. "description": "Garantiza que el punto de referencia banner está en el nivel superior",
  194. "help": "El punto de referencia banner no debe estar contenido en otro punto de referencia"
  195. },
  196. "landmark-complementary-is-top-level": {
  197. "description": "Garantiza que el punto de referencia complementary o aside está en el nivel superior",
  198. "help": "Aside no debe estar contenido en otro punto de referencia"
  199. },
  200. "landmark-contentinfo-is-top-level": {
  201. "description": "Garantiza que el punto de referencia contentinfo está en el nivel superior",
  202. "help": "El punto de referencia contentinfo no debe estar contenido en otro punto de referencia"
  203. },
  204. "landmark-main-is-top-level": {
  205. "description": "Garantiza que el punto de referencia main está en el nivel superior",
  206. "help": "El punto de referencia main no debe estar contenido en otro punto de referencia"
  207. },
  208. "landmark-no-duplicate-banner": {
  209. "description": "Garantiza que el documento tiene, como mucho, un punto de referencia banner",
  210. "help": "El documento no debe tener más de un punto de referencia banner"
  211. },
  212. "landmark-no-duplicate-contentinfo": {
  213. "description": "Garantiza que el documento tiene, como mucho, un punto de referencia contentinfo",
  214. "help": "El documento no debe tener más de un punto de referencia contentinfo"
  215. },
  216. "landmark-one-main": {
  217. "description": "Garantiza que el documento solo tiene un punto de referencia main y que cada marco incorporado en la página tiene, como mucho, un punto de referencia main",
  218. "help": "El documento debe tener un punto de referencia main"
  219. },
  220. "landmark-unique": {
  221. "help": "Garantiza que los puntos de referencia son únicos",
  222. "description": "Los puntos de referencia deben tener una única combinación de role o role/label/title (es decir, un nombre accesible único)"
  223. },
  224. "link-in-text-block": {
  225. "description": "Los enlaces pueden distinguirse sin depender del color",
  226. "help": "Los enlaces deben distinguirse del texto adyacente por un medio que no dependa del color"
  227. },
  228. "link-name": {
  229. "description": "Garantiza que los enlaces tienen texto discernible",
  230. "help": "Los enlaces deben tener texto discernible"
  231. },
  232. "list": {
  233. "description": "Garantiza que las listas están estructuradas correctamente",
  234. "help": "<ul> y <ol> solo deben contener directamente elementos <li>, <script> o <template>"
  235. },
  236. "listitem": {
  237. "description": "Garantiza que los elementos <li> se utilizan semánticamente",
  238. "help": "Los elementos <li> deben estar contenidos en un <ul> o un <ol>"
  239. },
  240. "marquee": {
  241. "description": "Garantiza que no se usan elementos <marquee>",
  242. "help": "Los elementos <marquee> están obsoletos y no deben usarse"
  243. },
  244. "meta-refresh": {
  245. "description": "Garantiza que no se usa <meta http-equiv=\"refresh\">",
  246. "help": "El refresco programado no debe existir"
  247. },
  248. "meta-viewport-large": {
  249. "description": "Garantizar que <meta name=\"viewport\"> puede ampliarse en grado significativo",
  250. "help": "Los usuarios deben poder hacer zum y ampliar el texto hasta 500%"
  251. },
  252. "meta-viewport": {
  253. "description": "Garantiza que <meta name=\"viewport\"> no impide la ampliación y el zum en el texto",
  254. "help": "No debe impedirse el zum y la ampliación"
  255. },
  256. "object-alt": {
  257. "description": "Garantiza que los elementos <object> tienen texto alternativo",
  258. "help": "Los elementos <object> deben tener texto alternativo"
  259. },
  260. "p-as-heading": {
  261. "description": "Garantizar que los elementos p no se usan para diseñar encabezados",
  262. "help": "No se usa texto en negrita, cursiva o tamaño de fuente para dar estilo de encabezados a elementos p"
  263. },
  264. "page-has-heading-one": {
  265. "description": "Garantizar que la página, o al menos uno de sus marcos, contiene un encabezado de nivel 1",
  266. "help": "La página debe contener un encabezado de nivel 1"
  267. },
  268. "region": {
  269. "description": "Garantiza que todo el contenido de la página está incluido en puntos de referencia",
  270. "help": "Todo el contenido de la página debe estar incluido en puntos de referencia"
  271. },
  272. "role-img-alt": {
  273. "description": "Garantiza que los elementos [role='img'] tienen texto alternativo",
  274. "help": "Los elementos [role='img'] tienen un texto alternativo"
  275. },
  276. "scope-attr-valid": {
  277. "description": "Garantiza que el atributo scope se usa correctamente en las tablas",
  278. "help": "El atributo scope debería usarse correctamente"
  279. },
  280. "scrollable-region-focusable": {
  281. "description": "Los elementos que tienen contenido que puede desplazarse verticalmente (en 'scroll') deberían ser accesibles mediante el teclado",
  282. "help": "Asegurar que la región de desplazamiento vertical ('scroll') tiene acceso por teclado"
  283. },
  284. "server-side-image-map": {
  285. "description": "Garantiza que no se usan mapas de imágenes del lado del servidor",
  286. "help": "No deben usarse mapas de imágenes del lado del servidor"
  287. },
  288. "skip-link": {
  289. "description": "Garantizar que todos los enlaces de salto ('skip') tienen un destino que admite el foco",
  290. "help": "El destino del enlace de salto ('skip') debería existir y admitir el foco"
  291. },
  292. "tabindex": {
  293. "description": "Garantiza que los valores del atributo tabindex no son mayores que 0",
  294. "help": "Los elementos no deberían tener un tabindex mayor que 0"
  295. },
  296. "table-duplicate-name": {
  297. "description": "Garantizar que las tablas no tienen el mismo summary y caption",
  298. "help": "El elemento <caption> no debería contener el mismo texto que el atributo summary"
  299. },
  300. "table-fake-caption": {
  301. "description": "Garantizar que las tablas con título usan el elemento <caption>.",
  302. "help": "Las celdas de datos o de encabezados no deberían usarse para dar título a una tabla de datos."
  303. },
  304. "td-has-header": {
  305. "description": "Garantizar que cada celda de datos no vacía de una tabla grande tiene uno o más encabezados de tabla",
  306. "help": "Todos los elementos td no vacíos de una tabla mayor que 3 por 3 deben tener un encabezado de tabla asociado"
  307. },
  308. "td-headers-attr": {
  309. "description": "Garantizar que cada celda que use los encabezados en una tabla haga referencia a otra celda de esa tabla",
  310. "help": "Todas las celdas de un elemento table que usen el atributo headers deben hacer referencia solo a otras celdas de esa misma tabla"
  311. },
  312. "th-has-data-cells": {
  313. "description": "Garantizar que cada encabezado de tabla en una tabla de datos hace referencia a celdas de datos",
  314. "help": "Todos los elementos th y elementos con role=columnheader/rowheader deben tener las celdas de datos que describen"
  315. },
  316. "valid-lang": {
  317. "description": "Garantiza que los atributos lang tienen valores válidos",
  318. "help": "El atributo lang debe tener un valor válido"
  319. },
  320. "video-caption": {
  321. "description": "Garantiza que los elementos <video> tienen subtítulos",
  322. "help": "Los elementos <video> deben tener subtítulos"
  323. }
  324. },
  325. "checks": {
  326. "abstractrole": {
  327. "pass": "No se usan 'abstract roles'",
  328. "fail": "Los 'abstract roles' no se pueden usar directamente"
  329. },
  330. "aria-allowed-attr": {
  331. "pass": "Los atributos ARIA se usan correctamente para el rol definido",
  332. "fail": {
  333. "singular": "En ARIA, atributos no están permitidos : ${data.values}",
  334. "plural": "En ARIA, atributono está permitido : ${data.values}"
  335. }
  336. },
  337. "aria-allowed-role": {
  338. "pass": "El rol ARIA está permitido para el elemento proporcionado",
  339. "fail": {
  340. "singular": "En ARIA, roles ${data.values} no están permitidos para el elemento proporcionado",
  341. "plural": "En ARIA, role ${data.values} no está permitido para el elemento proporcionado"
  342. },
  343. "incomplete": {
  344. "singular": "En ARIA, hay que eliminar roles ${data.values} cuando el elemento se haga visible, ya que no están permitidos para el elemento",
  345. "plural": "En ARIA, hay que eliminar role ${data.values} cuando el elemento se haga visible, ya que no está permitido para el elemento"
  346. }
  347. },
  348. "aria-hidden-body": {
  349. "pass": "No hay ningún atributo aria-hidden presente en el 'body' del documento",
  350. "fail": "aria-hidden=true no debe estar presente en el 'body' del documento"
  351. },
  352. "aria-errormessage": {
  353. "pass": "Usa una técnica admitida para aria-errormessage",
  354. "fail": {
  355. "singular": "En aria-errormessage, valores ${data.values}`, se debe usar una técnica para anunciar el mensaje (p. ej., aria-live, aria-describedby, role=alert, etc.)",
  356. "plural": "En aria-errormessage, valor ${data.values}`, se debe usar una técnica para anunciar el mensaje (p. ej., aria-live, aria-describedby, role=alert, etc.)"
  357. }
  358. },
  359. "has-widget-role": {
  360. "pass": "El elemento tiene un rol de widget.",
  361. "fail": "El elemento no tiene un rol de widget."
  362. },
  363. "invalidrole": {
  364. "pass": "El rol ARIA es válido",
  365. "fail": "El rol debe ser uno de los roles ARIA válidos"
  366. },
  367. "no-implicit-explicit-label": {
  368. "pass": "No hay discordancia entre un <label> y el nombre accesible",
  369. "incomplete": "Comprobar que el <label> no necesita ser parte del ARIA ${data} para el nombre del campo"
  370. },
  371. "aria-required-attr": {
  372. "pass": "Todos los atributos ARIA requeridos están presentes",
  373. "fail": {
  374. "singular": "Atributos requeridos no presentes: ${data.values}",
  375. "plural": "Atributo requerido no presente: ${data.values}"
  376. }
  377. },
  378. "aria-required-children": {
  379. "pass": "Los hijos ARIA requeridos están presentes",
  380. "fail": {
  381. "singular": "Rol de hijos requerido en ARIA no presente: ${data.values}",
  382. "plural": "Rol de hijo requerido en ARIA no presente: ${data.values}"
  383. },
  384. "incomplete": {
  385. "singular": "Esperando que se añada rol ARIA para hijos: ${data.values}",
  386. "plural": "Esperando que se añada rol ARIA para hijo: ${data.values}"
  387. }
  388. },
  389. "aria-required-parent": {
  390. "pass": "Rol de padre requerido en ARIA presente",
  391. "fail": {
  392. "singular": "Rol de ARIA requerido para padre s no presente: ${data.values}",
  393. "plural": "Rol de ARIA requerido para padre no presente: ${data.values}"
  394. }
  395. },
  396. "aria-unsupported-attr": {
  397. "pass": "El atributo ARIA está admitido",
  398. "fail": "El atributo ARIA no está ampliamente admitido en lectores de pantalla y tecnologías de apoyo: ${data.values}"
  399. },
  400. "unsupportedrole": {
  401. "pass": "El rol ARIA está admitido",
  402. "fail": "El rol usado no está ampliamente admitido en lectores de pantalla y tecnologías de apoyo: ${data.values}"
  403. },
  404. "aria-valid-attr-value": {
  405. "pass": "Los valores de los atributos ARIA son válidos",
  406. "fail": {
  407. "singular": "Valores no válidos para atributo ARIA: ${data.values}",
  408. "plural": "Valor no válido para atributo ARIA: ${data.values}"
  409. },
  410. "incomplete": {
  411. "singular": "Atributos ARIA ID de elemento no existe en la página: ${data.values}",
  412. "plural": "Atributo ARIA ID de elemento no existe en la página: ${data.values}"
  413. }
  414. },
  415. "aria-valid-attr": {
  416. "pass": {
  417. "singular": "Nombres de atributos ARIA válidos",
  418. "plural": "Nombrede atributo ARIA válido"
  419. },
  420. "fail": {
  421. "singular": "Nombres de atributos ARIA no válidos: ${data.values}",
  422. "plural": "Nombre de atributo ARIA no válido: ${data.values}"
  423. }
  424. },
  425. "valid-scrollable-semantics": {
  426. "pass": "El elemento tiene una semántica válida para un elemento en orden de foco.",
  427. "fail": "El elemento tiene una semántica no válida para un elemento en orden de foco."
  428. },
  429. "color-contrast": {
  430. "pass": "El elemento tiene un contraste de color suficiente de ${data.contrastRatio}",
  431. "fail": "El elemento tiene un contraste de color insuficiente de ${data.contrastRatio} (color de primer plano: ${data.fgColor}, color de fondo: ${data.bgColor}, tamaño de fuente: ${data.fontSize}, grosor de fuente: ${data.fontWeight}). Ratio de contraste esperado: ${data.expectedContrastRatio}",
  432. "incomplete": {
  433. "bgImage": "El color de fondo del elemento no se pudo determinar debido a una imagen de fondo",
  434. "bgGradient": "El color de fondo del elemento no se pudo determinar debido a un degradado de fondo",
  435. "imgNode": "El color de fondo del elemento no se pudo determinar porque el elemento contiene un nodo de imagen",
  436. "bgOverlap": "El color de fondo no se pudo determinar porque tiene otro elemento superpuesto",
  437. "fgAlpha": "El color de fondo no se pudo determinar debido a una transparencia alfa",
  438. "elmPartiallyObscured": "El color de fondo no se pudo determinar porque está parcialmente oculto por otro elemento",
  439. "elmPartiallyObscuring": "El color de fondo del elemento no se pudo determinar porque se superpone parcialmente a otros elementos",
  440. "outsideViewport": "El color de fondo del elemento no se pudo determinar porque está fuera de la ventana gráfica ('viewport')",
  441. "equalRatio": "El elemento tiene una ratio de contraste 1:1 con el fondo",
  442. "shortTextContent": "El contenido del elemento es demasiado corto para determinar si es contenido de texto propiamente dicho",
  443. "default": "Imposible determinar la ratio de contraste"
  444. }
  445. },
  446. "color-contrast-enhanced": {
  447. "pass": "El elemento tiene un contraste de color suficiente de ${data.contrastRatio}",
  448. "fail": "El elemento tiene un contraste de color insuficiente de ${data.contrastRatio} (color de primer plano: ${data.fgColor}, color de fondo: ${data.bgColor}, tamaño de fuente: ${data.fontSize}, grosor de fuente: ${data.fontWeight}). Ratio de contraste esperado: ${data.expectedContrastRatio}",
  449. "incomplete": {
  450. "bgImage": "El color de fondo del elemento no se pudo determinar debido a una imagen de fondo",
  451. "bgGradient": "El color de fondo del elemento no se pudo determinar debido a un degradado de fondo",
  452. "imgNode": "El color de fondo del elemento no se pudo determinar porque el elemento contiene un nodo de imagen",
  453. "bgOverlap": "El color de fondo no se pudo determinar porque tiene otro elemento superpuesto",
  454. "fgAlpha": "El color de fondo no se pudo determinar debido a una transparencia alfa",
  455. "elmPartiallyObscured": "El color de fondo no se pudo determinar porque está parcialmente oculto por otro elemento",
  456. "elmPartiallyObscuring": "El color de fondo del elemento no se pudo determinar porque se superpone parcialmente a otros elementos",
  457. "outsideViewport": "El color de fondo del elemento no se pudo determinar porque está fuera de la ventana gráfica ('viewport')",
  458. "equalRatio": "El elemento tiene una ratio de contraste 1:1 con el fondo",
  459. "shortTextContent": "El contenido del elemento es demasiado corto para determinar si es contenido de texto propiamente dicho",
  460. "default": "Imposible determinar la ratio de contraste"
  461. }
  462. },
  463. "link-in-text-block": {
  464. "pass": "Los enlaces se pueden distinguir respecto al texto adyacente de forma ajena al color",
  465. "fail": "Es necesario distinguir los enlaces respecto al texto adyacente de una forma ajena al color",
  466. "incomplete": {
  467. "bgContrast": "No se pudo determinar la ratio de contraste del elemento. Comprobar si existe un estilo hover/focus distinto",
  468. "bgImage": "La ratio de contraste del elemento no se pudo determinar debido a una imagen de fondo",
  469. "bgGradient": "La ratio de contraste del elemento no se pudo determinar debido a un degradado de fondo",
  470. "imgNode": "La ratio de contraste del elemento no se pudo determinar porque el elemento contiene un nodo de imagen",
  471. "bgOverlap": "La ratio de contraste del elemento no se pudo determinar debido a superposición de elementos",
  472. "default": "Imposible determinar la ratio de contraste"
  473. }
  474. },
  475. "autocomplete-appropriate": {
  476. "pass": "el valor de autocomplete está en un elemento apropiado",
  477. "fail": "el valor de autocomplete es inapropiado para este tipo de input"
  478. },
  479. "autocomplete-valid": {
  480. "pass": "el atributo autocomplete está formateado correctamente",
  481. "fail": "el atributo autocomplete está formateado incorrectamente"
  482. },
  483. "accesskeys": {
  484. "pass": "El valor del atributo accesskey es único",
  485. "fail": "El documento tiene múltiples elementos con el mismo accesskey"
  486. },
  487. "focusable-content": {
  488. "pass": "El elemento contiene elementos que admiten el foco",
  489. "fail": "El elemento debería tener contenido que admita el foco"
  490. },
  491. "focusable-disabled": {
  492. "pass": "Dentro del elemento no hay elementos que admitan el foco",
  493. "fail": "El contenido que admita el foco debería ser desactivado o eliminado del DOM"
  494. },
  495. "focusable-element": {
  496. "pass": "El elemento admite el foco",
  497. "fail": "El elemento debería admitir el foco"
  498. },
  499. "focusable-no-name": {
  500. "pass": "El elemento no está en orden de tabulación o tiene texto accesible",
  501. "fail": "El elemento está en orden de tabulación y no tiene texto accesible"
  502. },
  503. "focusable-not-tabbable": {
  504. "pass": "Dentro del elemento no hay elementos que admitan el foco",
  505. "fail": "El contenido que admita el foco debería tener tabindex='-1' o ser eliminado del DOM"
  506. },
  507. "landmark-is-top-level": {
  508. "pass": "El punto de referencia ${data.role} está en el nivel superior.",
  509. "fail": "El punto de referencia ${data.role} está contenido en otro punto de referencia."
  510. },
  511. "page-has-heading-one": {
  512. "pass": "La página tiene al menos un encabezado de nivel 1",
  513. "fail": "La página debe tener un encabezado de nivel 1"
  514. },
  515. "page-has-main": {
  516. "pass": "El documento tiene al menos un punto de referencia main",
  517. "fail": "El documento no tiene punto de referencia main"
  518. },
  519. "page-no-duplicate-banner": {
  520. "pass": "El documento no tiene más de un punto de referencia banner",
  521. "fail": "El documento tiene más de un punto de referencia banner"
  522. },
  523. "page-no-duplicate-contentinfo": {
  524. "pass": "El documento no tiene más de un punto de referencia contentinfo",
  525. "fail": "El documento tiene más de un punto de referencia contentinfo"
  526. },
  527. "page-no-duplicate-main": {
  528. "pass": "El documento no tiene más de un punto de referencia main",
  529. "fail": "El documento tiene más de un punto de referencia main"
  530. },
  531. "tabindex": {
  532. "pass": "El elemento no tiene un tabindex mayor que 0",
  533. "fail": "El elemento tiene un tabindex mayor que 0"
  534. },
  535. "alt-space-value": {
  536. "pass": "El elemento tiene un valor válido para el atributo alt",
  537. "fail": "El elemento tiene un atributo alt que contiene solo un carácter de espacio, que no es ignorado por todos los lectores de pantalla"
  538. },
  539. "duplicate-img-label": {
  540. "pass": "El elemento no duplica texto existente en el texto alternativo de <img>",
  541. "fail": "El elemento contiene un elemento <img> con texto alternativo que duplica texto existente"
  542. },
  543. "explicit-label": {
  544. "pass": "El elemento de formulario tiene un <label> explícito",
  545. "fail": "El elemento de formulario no tiene un <label> explícito"
  546. },
  547. "help-same-as-label": {
  548. "pass": "El texto de ayuda (title o aria-describedby) no duplica el texto de label",
  549. "fail": "El texto de ayuda (title o aria-describedby) es el mismo que el texto de label"
  550. },
  551. "hidden-explicit-label": {
  552. "pass": "El elemento de formulario tiene un <label> explícito visible",
  553. "fail": "El elemento de formulario tiene un <label> explícito oculto"
  554. },
  555. "implicit-label": {
  556. "pass": "El elemento de formulario tiene un <label> implícito ('envuelto')",
  557. "fail": "El elemento de formulario no tiene un <label> implícito ('envuelto')"
  558. },
  559. "label-content-name-mismatch": {
  560. "pass": "El elemento contiene texto visible como parte de su nombre accesible",
  561. "fail": "El texto contenido en el elemento no está incluido en el nombre accesible"
  562. },
  563. "multiple-label": {
  564. "pass": "El campo de formulario no tiene múltiples elementos label",
  565. "fail": "Múltiples elementos label no son ampliamente admitidos en las tecnologías de apoyo"
  566. },
  567. "title-only": {
  568. "pass": "El elemento de formulario no usa únicamente el atributo title para su etiqueta",
  569. "fail": "Solo se usó title para generar la etiqueta de un elemento de formulario"
  570. },
  571. "landmark-is-unique": {
  572. "pass": "Los puntos de referencia deben tener una combinación única de role o role/label/title (es decir, un nombre accesible único)",
  573. "fail": "El punto de referencia debe tener un aria-label, aria-labelledby o title único para que los puntos de referencia sean distinguibles"
  574. },
  575. "has-lang": {
  576. "pass": "El elemento <html> tiene un atributo lang",
  577. "fail": "El elemento <html> no tiene un atributo lang"
  578. },
  579. "valid-lang": {
  580. "pass": "El valor del atributo lang está incluido en la lista de idiomas válidos",
  581. "fail": "Valor del atributo lang no incluido en la lista de idiomas válidos"
  582. },
  583. "xml-lang-mismatch": {
  584. "pass": "Los atributos lang y xml:lang tienen el mismo idioma base",
  585. "fail": "Los atributos lang y xml:lang no tienen el mismo idioma base"
  586. },
  587. "dlitem": {
  588. "pass": "El elemento de lista de descripción tiene un elemento <dl> padre",
  589. "fail": "El elemento de lista de descripción no tiene un elemento <dl> padre"
  590. },
  591. "listitem": {
  592. "pass": "El elemento de lista tiene un elemento padre <ul>, <ol> o role=\"list\"",
  593. "fail": "El elemento de lista no tiene un elemento padre <ul>, <ol> o role=\"list\""
  594. },
  595. "only-dlitems": {
  596. "pass": "El elemento de lista solo tiene hijos directos que están permitidos dentro de elementos <dt> o <dd>",
  597. "fail": "El elemento de lista tiene hijos directos que no están permitidos dentro de elementos <dt> o <dd>"
  598. },
  599. "only-listitems": {
  600. "pass": "El elemento de lista solo tiene hijos directos que están permitidos dentro de elementos <li>",
  601. "fail": "El elemento de lista tiene hijos directos que no están permitidos dentro de elementos <li>"
  602. },
  603. "structured-dlitems": {
  604. "pass": "Cuando no está vacío, el elemento tiene tanto elementos <dt> como <dd>",
  605. "fail": "Cuando no está vacío, el elemento no tiene al menos un elemento <dt> seguido por, al menos, un elemento <dd>"
  606. },
  607. "caption": {
  608. "pass": "El elemento multimedia tiene una pista de subtítulos",
  609. "incomplete": "Comprobar que hay disponibles subtítulos para el elemento"
  610. },
  611. "frame-tested": {
  612. "pass": "El marco incorporado fue probado con axe-core",
  613. "fail": "El marco incorporado no se pudo probar con axe-core",
  614. "incomplete": "El marco incorporado aún tiene que probarse con axe-core"
  615. },
  616. "css-orientation-lock": {
  617. "pass": "La pantalla es manejable y no existe bloqueo de orientación",
  618. "fail": "Se aplica bloqueo de orientación CSS y hace que la pantalla sea inmanejable",
  619. "incomplete": "No se puede determinar si hay bloqueo de orientación CSS"
  620. },
  621. "meta-viewport-large": {
  622. "pass": "La etiqueta <meta> no impide un zum significativo en dispositivos móviles",
  623. "fail": "La etiqueta <meta> limita el zum en dispositivos móviles"
  624. },
  625. "meta-viewport": {
  626. "pass": "La etiqueta <meta> no impide el zum en dispositivos móviles",
  627. "fail": "${data} en la etiqueta <meta> impide el zum en dispositivos móviles"
  628. },
  629. "header-present": {
  630. "pass": "La página tiene un 'header'",
  631. "fail": "La página no tiene un 'header'"
  632. },
  633. "heading-order": {
  634. "pass": "Horden de encabezados válido",
  635. "fail": "Orden de encabezados no válido"
  636. },
  637. "internal-link-present": {
  638. "pass": "Encontrado enlace de salto ('skip') válido",
  639. "fail": "No se han encontrado enlaces de salto ('skip') válidos"
  640. },
  641. "landmark": {
  642. "pass": "La página tiene una región punto de referencia",
  643. "fail": "La página no tiene una región punto de referencia"
  644. },
  645. "meta-refresh": {
  646. "pass": "La etiqueta <meta> no refresca la página inmediatamente",
  647. "fail": "La etiqueta <meta> fuerza el refresco programado de la página"
  648. },
  649. "p-as-heading": {
  650. "pass": "Los elementos <p> no se han diseñado como encabezados",
  651. "fail": "Deberían usarse elementos de encabezado en vez de elementos <p> con estilos"
  652. },
  653. "region": {
  654. "pass": "Todo el contenido de la página está incluido en puntos de referencia",
  655. "fail": "La página tiene contenido no incluido en puntos de referencia"
  656. },
  657. "skip-link": {
  658. "pass": "Existe el destino del enlace de salto ('skip')",
  659. "incomplete": "El destino del enlace de salto ('skip') debería volverse visible en la activación",
  660. "fail": "No hay destino para el enlace de salto ('skip')"
  661. },
  662. "unique-frame-title": {
  663. "pass": "El atributo title del elemento es único",
  664. "fail": "El atributo title del elemento no es único"
  665. },
  666. "duplicate-id-active": {
  667. "pass": "El documento no tiene elementos activos que compartan el mismo atributo id",
  668. "fail": "El documento tiene elementos activos con el mismo atributo id: ${data}"
  669. },
  670. "duplicate-id-aria": {
  671. "pass": "El documento no tiene elementos referidos con ARIA o etiquetas que compartan el mismo atributo id",
  672. "fail": "El documento tiene múltiples elementos referidos con ARIA con el mismo atributo id: ${data}"
  673. },
  674. "duplicate-id": {
  675. "pass": "El documento no tiene elementos estáticos que compartan el mismo atributo id",
  676. "fail": "El documento tiene múltiples elementos estáticos con el mismo atributo id"
  677. },
  678. "aria-label": {
  679. "pass": "El atributo aria-label existe y no está vacío",
  680. "fail": "El atributo aria-label no existe o está vacío"
  681. },
  682. "aria-labelledby": {
  683. "pass": "El atributo aria-labelledby existe y hace referencia a elementos visibles para lectores de pantalla",
  684. "fail": "El atributo aria-labelledby no existe, hace referencia a elementos inexistentes o hace referencia a elementos vacíos"
  685. },
  686. "avoid-inline-spacing": {
  687. "pass": "No se han especificado estilos 'inline' con '!important' que afecten al espaciado de texto",
  688. "fail": {
  689. "singular": "Eliminar '!important' de inline styles ${data.values}, porque su anulación no está admitida en la mayoría de navegadores",
  690. "plural": "Eliminar '!important' de inline style ${data.values}, porque su anulación no está admitida en la mayoría de navegadores"
  691. }
  692. },
  693. "button-has-visible-text": {
  694. "pass": "El elemento tiene texto interno visible para lectores de pantalla",
  695. "fail": "El elemento no tiene texto interno visible para lectores de pantalla"
  696. },
  697. "doc-has-title": {
  698. "pass": "El documento tiene un elemento <title> no vacío",
  699. "fail": "El documento no tiene un elemento <title> no vacío"
  700. },
  701. "exists": {
  702. "pass": "El elemento no existe",
  703. "fail": "El elemento existe"
  704. },
  705. "has-alt": {
  706. "pass": "El elemento tiene un atributo alt",
  707. "fail": "El elemento no tiene un atributo alt"
  708. },
  709. "has-visible-text": {
  710. "pass": "El elemento tiene texto visible para lectores de pantalla",
  711. "fail": "El elemento no tiene texto visible para lectores de pantalla"
  712. },
  713. "is-on-screen": {
  714. "pass": "El elemento no es visible",
  715. "fail": "El elemento es visible"
  716. },
  717. "non-empty-alt": {
  718. "pass": "El elemento tiene un atributo alt no vacío",
  719. "fail": "El elemento no tiene atributo alt o el atributo alt está vacío"
  720. },
  721. "non-empty-if-present": {
  722. "pass": {
  723. "default": "El elemento no tiene un atributo de valor",
  724. "has-label": "El elemento tiene un atributo de valor no vacío"
  725. },
  726. "fail": "El elemento tiene un atributo de valor y el atributo de valor está vacío"
  727. },
  728. "non-empty-title": {
  729. "pass": "El elemento tiene un atributo title",
  730. "fail": "El elemento no tiene atributo title o el atributo title está vacío"
  731. },
  732. "non-empty-value": {
  733. "pass": "El elemento tiene un atributo de valor no vacío",
  734. "fail": "El elemento no tiene un atributo de valor o el atributo de valor está vacío"
  735. },
  736. "role-none": {
  737. "pass": "La semántica predeterminada del elemento se anuló mediante role=\"none\"",
  738. "fail": "La semántica predeterminada del elemento no se anuló mediante role=\"none\""
  739. },
  740. "role-presentation": {
  741. "pass": "La semántica predeterminada del elemento se anuló mediante role=\"presentation\"",
  742. "fail": "La semántica predeterminada del elemento no se anuló mediante role=\"presentation\""
  743. },
  744. "caption-faked": {
  745. "pass": "La primera fila de una tabla no se usa como título ('caption')",
  746. "fail": "La primera fila de la tabla debería ser un título ('caption') en vez de una celda de tabla"
  747. },
  748. "html5-scope": {
  749. "pass": "El atributo scope solo se usa en elementos de encabezados de tabla (<th>)",
  750. "fail": "En HTML 5, los atributos scope solo se pueden usar en elementos de encabezados de tabla (<th>)"
  751. },
  752. "same-caption-summary": {
  753. "pass": "El contenido del atributo summary y de <caption> no están duplicados",
  754. "fail": "El contenido del atributo summary y del elemento <caption> son idénticos"
  755. },
  756. "scope-value": {
  757. "pass": "El atributo scope se usa correctamente",
  758. "fail": "El valor del atributo scope solo puede ser 'row' o 'col'"
  759. },
  760. "td-has-header": {
  761. "pass": "Todas las celdas de datos no vacías tienen encabezados de tabla",
  762. "fail": "Algunas celdas de datos no vacías no tienen encabezados de tabla"
  763. },
  764. "td-headers-attr": {
  765. "pass": "El atributo headers se usa exclusivamente para hacer referencia a otras celdas de la tabla",
  766. "fail": "El atributo headers no se usa exclusivamente para hacer referencia a otras celdas de la tabla"
  767. },
  768. "th-has-data-cells": {
  769. "pass": "Todas las celdas de encabezados de tabla hacen referencia a celdas de datos",
  770. "fail": "No todas las celdas de encabezados de tabla hacen referencia a celdas de datos",
  771. "incomplete": "Hay celdas de datos de la tabla ausentes o vacías"
  772. },
  773. "hidden-content": {
  774. "pass": "Se ha analizado todo el contenido de la página.",
  775. "fail": "Hubo problemas al analizar el contenido de esta página.",
  776. "incomplete": "Hay contenido oculto en la página que no fue analizado. Necesitarás activar la visualización de este contenido a fin de analizarlo."
  777. }
  778. },
  779. "failureSummaries": {
  780. "any": {
  781. "failureMessage": "Corregir cualquiera de las siguientes incidencias:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
  782. },
  783. "none": {
  784. "failureMessage": "Corregir (todas) las siguientes incidencias:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
  785. }
  786. },
  787. "incompleteFallbackMessage": "Corregir (todas) las siguientes incidencias:{{~it:value}}\n {{=value.split('\\n').join('\\n ')}}{{~}}"
  788. }