diff --git a/assets/README.md b/assets/README.md
index cb4bdf3..6c92a1d 100644
--- a/assets/README.md
+++ b/assets/README.md
@@ -95,7 +95,10 @@ Please visit [developer documentation](https://sa11y.netlify.app/developers/) fo
## Development environment
A light server for development is included. Any change inside `/src` folder files will trigger the build process for the files and will reload the page with the new changes. To use this environment:
-1. Clone this repo.
-2. Be sure you have node installed and up to date.
-3. Execute `npm install`
-4. In a terminal execute: `npm run serve`. Then open `http://localhost:8080/docs/demo/en/` in your browser.
+1. Ensure node is installed and up to date (at least v20 and up).
+2. Clone this repo.
+3. Run `npm install`
+4. Run `npm run serve`. Then open `http://localhost:8080/docs/demo/en/` in your browser.
+5. For unit tests, execute `npm test` or `node --test` while the server is running.
+
+**Tip!** To speed up compile time while developing, navigate to `rollup.config.js` and change `developmentMode` to `true`. This will only compile javascript, SCSS, and English translation strings.
diff --git a/assets/bookmarklet/bg.js b/assets/bookmarklet/bg.js
new file mode 100644
index 0000000..5a5a298
--- /dev/null
+++ b/assets/bookmarklet/bg.js
@@ -0,0 +1 @@
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Плъзнете бутона "Sa11y" в лентата с отметки. След това щракнете върху отметките на всяка уебстраница.'):alert("Sa11y вече е зареден на тази страница. Моля, изчакайте или презаредете страницата и опитайте отново."):function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>t(n),d.onreadystatechange=()=>t(n)}("bg")}));
diff --git a/assets/bookmarklet/cs.js b/assets/bookmarklet/cs.js
index d438e66..d8b0ed2 100644
--- a/assets/bookmarklet/cs.js
+++ b/assets/bookmarklet/cs.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),o=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",o.appendChild(s);const a=document.createElement("script");a.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(a),a.onload=()=>t(n),a.onreadystatechange=()=>t(n)}("cs"):alert('Přetáhněte tlačítko "Sa11y" do panelu záložek. Poté klikněte na záložku na libovolné webové stránce.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Přetáhněte tlačítko "Sa11y" do panelu záložek. Poté klikněte na záložku na libovolné webové stránce.'):alert("Sa11y je již na této stránce načten. Počkejte prosím, nebo stránku načtěte znovu a zkuste to znovu."):function(n){const s=document.createElement("link"),o=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",o.appendChild(s);const a=document.createElement("script");a.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(a),a.onload=()=>t(n),a.onreadystatechange=()=>t(n)}("cs")}));
diff --git a/assets/bookmarklet/da.js b/assets/bookmarklet/da.js
index 71c3cd3..fed29ab 100644
--- a/assets/bookmarklet/da.js
+++ b/assets/bookmarklet/da.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(t){const s=document.createElement("link"),d=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",d.appendChild(s);const a=document.createElement("script");a.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(a),a.onload=()=>n(t),a.onreadystatechange=()=>n(t)}("da"):alert('Træk knappen "Sa11y" ind i din bogmærkelinje. Klik derefter på bogmærket på en hvilken som helst webside.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Træk knappen "Sa11y" ind i din bogmærkelinje. Klik derefter på bogmærket på en hvilken som helst webside.'):alert("Sa11y er allerede indlæst på denne side. Vent venligst, eller genindlæs siden og prøv igen."):function(t){const s=document.createElement("link"),d=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",d.appendChild(s);const i=document.createElement("script");i.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(i),i.onload=()=>n(t),i.onreadystatechange=()=>n(t)}("da")}));
diff --git a/assets/bookmarklet/de.js b/assets/bookmarklet/de.js
index 7951e67..2ffc5e8 100644
--- a/assets/bookmarklet/de.js
+++ b/assets/bookmarklet/de.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(t){const s=document.createElement("link"),i=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",i.appendChild(s);const a=document.createElement("script");a.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(a),a.onload=()=>n(t),a.onreadystatechange=()=>n(t)}("de"):alert('Ziehen Sie die Schaltfläche "Sa11y" in Ihre Lesezeichenleiste. Klicken Sie dann auf einer beliebigen Webseite auf das Lesezeichen.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Ziehen Sie die Schaltfläche "Sa11y" in Ihre Lesezeichenleiste. Klicken Sie dann auf einer beliebigen Webseite auf das Lesezeichen.'):alert("Sa11y ist bereits auf dieser Seite geladen. Bitte warten Sie, oder laden Sie die Seite neu und versuchen Sie es erneut."):function(t){const s=document.createElement("link"),i=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",i.appendChild(s);const a=document.createElement("script");a.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(a),a.onload=()=>n(t),a.onreadystatechange=()=>n(t)}("de")}));
diff --git a/assets/bookmarklet/el.js b/assets/bookmarklet/el.js
index 5d76412..2577155 100644
--- a/assets/bookmarklet/el.js
+++ b/assets/bookmarklet/el.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),d=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",d.appendChild(s);const a=document.createElement("script");a.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(a),a.onload=()=>t(n),a.onreadystatechange=()=>t(n)}("el"):alert('Σύρετε το κουμπί "Sa11y" στη γραμμή σελιδοδεικτών σας. Στη συνέχεια, κάντε κλικ στο σελιδοδείκτη σε οποιαδήποτε ιστοσελίδα.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Σύρετε το κουμπί "Sa11y" στη γραμμή σελιδοδεικτών σας. Στη συνέχεια, κάντε κλικ στο σελιδοδείκτη σε οποιαδήποτε ιστοσελίδα.'):alert("Το Sa11y έχει ήδη φορτωθεί σε αυτή τη σελίδα. Παρακαλώ περιμένετε, ή φορτώστε ξανά τη σελίδα και προσπαθήστε ξανά."):function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>t(n),d.onreadystatechange=()=>t(n)}("el")}));
diff --git a/assets/bookmarklet/enUS.js b/assets/bookmarklet/enUS.js
index 3dcecc8..ae1c2bb 100644
--- a/assets/bookmarklet/enUS.js
+++ b/assets/bookmarklet/enUS.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),o=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",o.appendChild(s);const a=document.createElement("script");a.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(a),a.onload=()=>t(n),a.onreadystatechange=()=>t(n)}("enUS"):alert('Drag the "Sa11y" button into your bookmarks bar. Then click the bookmark on any webpage.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Drag the "Sa11y" button into your bookmarks bar. Then click the bookmark on any webpage.'):alert("Sa11y is already loaded on this page. Please wait, or reload the page and try again."):function(n){const a=document.createElement("link"),s=document.getElementsByTagName("head")[0];a.rel="stylesheet",a.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,a.type="text/css",s.appendChild(a);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("enUS")}));
diff --git a/assets/bookmarklet/es.js b/assets/bookmarklet/es.js
index 26080a5..7673553 100644
--- a/assets/bookmarklet/es.js
+++ b/assets/bookmarklet/es.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(t){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const c=document.createElement("script");c.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(c),c.onload=()=>n(t),c.onreadystatechange=()=>n(t)}("es"):alert('Arrastra el botón "Sa11y" a tu barra de marcadores. A continuación, haz clic en el marcador en cualquier página web.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Arrastra el botón "Sa11y" a tu barra de marcadores. A continuación, haz clic en el marcador en cualquier página web.'):alert("Sa11y ya está cargado en esta página. Espere o vuelva a cargar la página e inténtelo de nuevo."):function(t){const a=document.createElement("link"),s=document.getElementsByTagName("head")[0];a.rel="stylesheet",a.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,a.type="text/css",s.appendChild(a);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>n(t),o.onreadystatechange=()=>n(t)}("es")}));
diff --git a/assets/bookmarklet/et.js b/assets/bookmarklet/et.js
index 3472950..9f9b490 100644
--- a/assets/bookmarklet/et.js
+++ b/assets/bookmarklet/et.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>t(n),d.onreadystatechange=()=>t(n)}("et"):alert('Lohistage nupp "Sa11y" oma järjehoidjate riba. Seejärel klõpsake järjehoidjal ükskõik millisel veebilehel.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Lohistage nupp "Sa11y" oma järjehoidjate riba. Seejärel klõpsake järjehoidjal ükskõik millisel veebilehel.'):alert("Sa11y on juba sellel leheküljel laaditud. Palun oodake või laadige leht uuesti ja proovige uuesti."):function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("et")}));
diff --git a/assets/bookmarklet/fi.js b/assets/bookmarklet/fi.js
index 3e94654..991ad8b 100644
--- a/assets/bookmarklet/fi.js
+++ b/assets/bookmarklet/fi.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const i=document.createElement("script");i.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(i),i.onload=()=>t(n),i.onreadystatechange=()=>t(n)}("fi"):alert('Vedä "Sa11y"-painike kirjanmerkkipalkkiin. Napsauta sitten kirjanmerkkiä millä tahansa verkkosivulla.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Lohistage nupp "Sa11y" oma järjehoidjate riba. Seejärel klõpsake järjehoidjal ükskõik millisel veebilehel.'):alert("Sa11y on jo ladattu tälle sivulle. Odota, tai lataa sivu uudelleen ja yritä uudelleen."):function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const i=document.createElement("script");i.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(i),i.onload=()=>t(n),i.onreadystatechange=()=>t(n)}("fi")}));
diff --git a/assets/bookmarklet/fr.js b/assets/bookmarklet/fr.js
index f50486c..dadbd2c 100644
--- a/assets/bookmarklet/fr.js
+++ b/assets/bookmarklet/fr.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>t(n),d.onreadystatechange=()=>t(n)}("fr"):alert('Faites glisser le bouton "Sa11y" dans votre barre de favoris. Cliquez ensuite sur le signet de n\'importe quelle page Web.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Faites glisser le bouton "Sa11y" dans votre barre de favoris. Cliquez ensuite sur le signet de n\'importe quelle page Web.'):alert("Sa11y est déjà chargé sur cette page. Veuillez patienter ou recharger la page et réessayer."):function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("fr")}));
diff --git a/assets/bookmarklet/hu.js b/assets/bookmarklet/hu.js
new file mode 100644
index 0000000..ea74ad9
--- /dev/null
+++ b/assets/bookmarklet/hu.js
@@ -0,0 +1 @@
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Húzza a "Sa11y" gombot a könyvjelzősávba. Ezután kattintson a könyvjelzőre bármelyik weboldalon.'):alert("Sa11y már betöltődött ezen az oldalon. Kérjük, várjon, vagy töltse be újra az oldalt, és próbálja meg újra."):function(n){const a=document.createElement("link"),s=document.getElementsByTagName("head")[0];a.rel="stylesheet",a.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,a.type="text/css",s.appendChild(a);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("hu")}));
diff --git a/assets/bookmarklet/id.js b/assets/bookmarklet/id.js
index aaeab25..d4f293e 100644
--- a/assets/bookmarklet/id.js
+++ b/assets/bookmarklet/id.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(t){const a=document.createElement("link"),s=document.getElementsByTagName("head")[0];a.rel="stylesheet",a.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,a.type="text/css",s.appendChild(a);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>n(t),d.onreadystatechange=()=>n(t)}("id"):alert('Seret tombol "Sa11y" ke bilah penanda Anda. Kemudian klik penanda di halaman web mana pun.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Seret tombol "Sa11y" ke bilah penanda Anda. Kemudian klik penanda di halaman web mana pun.'):alert("Sa11y sudah dimuat di halaman ini. Mohon tunggu, atau muat ulang halaman dan coba lagi."):function(a){const t=document.createElement("link"),s=document.getElementsByTagName("head")[0];t.rel="stylesheet",t.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,t.type="text/css",s.appendChild(t);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${a}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>n(a),d.onreadystatechange=()=>n(a)}("id")}));
diff --git a/assets/bookmarklet/it.js b/assets/bookmarklet/it.js
index f100732..bbead64 100644
--- a/assets/bookmarklet/it.js
+++ b/assets/bookmarklet/it.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(t){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const i=document.createElement("script");i.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(i),i.onload=()=>n(t),i.onreadystatechange=()=>n(t)}("it"):alert('Trascinate il pulsante "Sa11y" nella barra dei segnalibri. Fate quindi clic sul segnalibro in qualsiasi pagina web.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Trascinate il pulsante "Sa11y" nella barra dei segnalibri. Fate quindi clic sul segnalibro in qualsiasi pagina web.'):alert("Sa11y è già stato caricato su questa pagina. Attendere o ricaricare la pagina e riprovare."):function(n){const a=document.createElement("link"),s=document.getElementsByTagName("head")[0];a.rel="stylesheet",a.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,a.type="text/css",s.appendChild(a);const i=document.createElement("script");i.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(i),i.onload=()=>t(n),i.onreadystatechange=()=>t(n)}("it")}));
diff --git a/assets/bookmarklet/ja.js b/assets/bookmarklet/ja.js
index 53f4cd2..4713602 100644
--- a/assets/bookmarklet/ja.js
+++ b/assets/bookmarklet/ja.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>t(n),d.onreadystatechange=()=>t(n)}("ja"):alert("Sa11y」ボタンをブックマークバーにドラッグしてください。その後、任意のウェブページでブックマークをクリックします。")}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert("Sa11y」ボタンをブックマークバーにドラッグしてください。その後、任意のウェブページでブックマークをクリックします。"):alert("Sa11yはすでにこのページにロードされています。しばらくお待ちいただくか、ページを再読み込みして再度お試しください。"):function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>t(n),d.onreadystatechange=()=>t(n)}("ja")}));
diff --git a/assets/bookmarklet/ko.js b/assets/bookmarklet/ko.js
new file mode 100644
index 0000000..f589705
--- /dev/null
+++ b/assets/bookmarklet/ko.js
@@ -0,0 +1 @@
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('"Sa11y" 버튼을 북마크 표시줄로 드래그합니다. 그런 다음 아무 웹페이지에서나 북마크를 클릭합니다.'):alert("이 페이지에 Sa11y가 이미 로드되었습니다. 잠시 기다리거나 페이지를 새로고침한 후 다시 시도하세요."):function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("ko")}));
diff --git a/assets/bookmarklet/lt.js b/assets/bookmarklet/lt.js
index 90d1c5a..7972e58 100644
--- a/assets/bookmarklet/lt.js
+++ b/assets/bookmarklet/lt.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>t(n),d.onreadystatechange=()=>t(n)}("lt"):alert('Vilkite mygtuką "Sa11y" į skirtukų juostą. Tada spustelėkite žymę bet kuriame tinklalapyje.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Vilkite mygtuką "Sa11y" į skirtukų juostą. Tada spustelėkite žymę bet kuriame tinklalapyje.'):alert("Sa11y jau įkeltas į šį puslapį. Palaukite arba įkelkite puslapį iš naujo ir bandykite dar kartą."):function(n){const a=document.createElement("link"),s=document.getElementsByTagName("head")[0];a.rel="stylesheet",a.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,a.type="text/css",s.appendChild(a);const i=document.createElement("script");i.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(i),i.onload=()=>t(n),i.onreadystatechange=()=>t(n)}("lt")}));
diff --git a/assets/bookmarklet/lv.js b/assets/bookmarklet/lv.js
index c26df6e..9bfca73 100644
--- a/assets/bookmarklet/lv.js
+++ b/assets/bookmarklet/lv.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("lv"):alert('Velciet pogu "Sa11y" uz grāmatzīmju joslu. Pēc tam noklikšķiniet uz grāmatzīmes jebkurā tīmekļa vietnē.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Velciet pogu "Sa11y" uz grāmatzīmju joslu. Pēc tam noklikšķiniet uz grāmatzīmes jebkurā tīmekļa vietnē.'):alert("Sa11y jau ir ielādēts šajā lapā. Lūdzu, pagaidiet vai ielādējiet lapu no jauna un mēģiniet vēlreiz."):function(n){const a=document.createElement("link"),s=document.getElementsByTagName("head")[0];a.rel="stylesheet",a.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,a.type="text/css",s.appendChild(a);const i=document.createElement("script");i.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(i),i.onload=()=>t(n),i.onreadystatechange=()=>t(n)}("lv")}));
diff --git a/assets/bookmarklet/nb.js b/assets/bookmarklet/nb.js
index 407880a..14ea068 100644
--- a/assets/bookmarklet/nb.js
+++ b/assets/bookmarklet/nb.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),d=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",d.appendChild(s);const a=document.createElement("script");a.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(a),a.onload=()=>t(n),a.onreadystatechange=()=>t(n)}("nb"):alert('Dra "Sa11y"-knappen til bokmerkelinjen. Klikk deretter på bokmerket på en hvilken som helst nettside.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Dra "Sa11y"-knappen til bokmerkelinjen. Klikk deretter på bokmerket på en hvilken som helst nettside.'):alert("Sa11y er allerede lastet inn på denne siden. Vennligst vent, eller last inn siden på nytt og prøv igjen."):function(t){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>n(t),d.onreadystatechange=()=>n(t)}("nb")}));
diff --git a/assets/bookmarklet/nl.js b/assets/bookmarklet/nl.js
index 2b3871b..b4ce138 100644
--- a/assets/bookmarklet/nl.js
+++ b/assets/bookmarklet/nl.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(t){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>n(t),d.onreadystatechange=()=>n(t)}("nl"):alert('Sleep de knop "Sa11y" naar je bladwijzerbalk. Klik vervolgens op de bladwijzer op een willekeurige webpagina.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Sleep de knop "Sa11y" naar je bladwijzerbalk. Klik vervolgens op de bladwijzer op een willekeurige webpagina.'):alert("Sa11y is al geladen op deze pagina. Wacht even of herlaad de pagina en probeer het opnieuw."):function(t){const a=document.createElement("link"),s=document.getElementsByTagName("head")[0];a.rel="stylesheet",a.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,a.type="text/css",s.appendChild(a);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>n(t),d.onreadystatechange=()=>n(t)}("nl")}));
diff --git a/assets/bookmarklet/pl.js b/assets/bookmarklet/pl.js
index 4672c8f..62a8eaa 100644
--- a/assets/bookmarklet/pl.js
+++ b/assets/bookmarklet/pl.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(t){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>n(t),d.onreadystatechange=()=>n(t)}("pl"):alert("Przeciągnij przycisk „Sa11y” na pasek zakładek. Następnie kliknij zakładkę na dowolnej stronie internetowej.")}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert("Przeciągnij przycisk „Sa11y” na pasek zakładek. Następnie kliknij zakładkę na dowolnej stronie internetowej."):alert("Sa11y jest już załadowany na tej stronie. Poczekaj lub przeładuj stronę i spróbuj ponownie."):function(t){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>n(t),o.onreadystatechange=()=>n(t)}("pl")}));
diff --git a/assets/bookmarklet/ptBR.js b/assets/bookmarklet/ptBR.js
index 52cb530..c49bd18 100644
--- a/assets/bookmarklet/ptBR.js
+++ b/assets/bookmarklet/ptBR.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("ptBR"):alert('Arraste o botão "Sa11y" para sua barra de favoritos. Em seguida, clique no marcador em qualquer página da Web.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Arraste o botão "Sa11y" para sua barra de favoritos. Em seguida, clique no marcador em qualquer página da Web.'):alert("O Sa11y já foi carregado nesta página. Aguarde ou recarregue a página e tente novamente."):function(n){const a=document.createElement("link"),s=document.getElementsByTagName("head")[0];a.rel="stylesheet",a.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,a.type="text/css",s.appendChild(a);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("ptBR")}));
diff --git a/assets/bookmarklet/ptPT.js b/assets/bookmarklet/ptPT.js
index 5a95637..adbca41 100644
--- a/assets/bookmarklet/ptPT.js
+++ b/assets/bookmarklet/ptPT.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("ptPT"):alert('Arraste o botão "Sa11y" para a sua barra de favoritos. Em seguida, clique no marcador em qualquer página da Web.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Arraste o botão "Sa11y" para a sua barra de favoritos. Em seguida, clique no marcador em qualquer página da Web.'):alert("Sa11y já foi carregado nesta página. Aguarde, ou recarregue a página e tente novamente."):function(n){const a=document.createElement("link"),s=document.getElementsByTagName("head")[0];a.rel="stylesheet",a.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,a.type="text/css",s.appendChild(a);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("ptPT")}));
diff --git a/assets/bookmarklet/ro.js b/assets/bookmarklet/ro.js
index f7ca85e..21b7245 100644
--- a/assets/bookmarklet/ro.js
+++ b/assets/bookmarklet/ro.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const c=document.createElement("script");c.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(c),c.onload=()=>t(n),c.onreadystatechange=()=>t(n)}("ro"):alert('Trageți butonul "Sa11y" în bara de marcaje. Apoi faceți clic pe marcaj pe orice pagină web.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Trageți butonul "Sa11y" în bara de marcaje. Apoi faceți clic pe marcaj pe orice pagină web.'):alert("Sa11y este deja încărcat pe această pagină. Vă rugăm să așteptați sau reîncărcați pagina și încercați din nou."):function(t){const a=document.createElement("link"),s=document.getElementsByTagName("head")[0];a.rel="stylesheet",a.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,a.type="text/css",s.appendChild(a);const c=document.createElement("script");c.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(c),c.onload=()=>n(t),c.onreadystatechange=()=>n(t)}("ro")}));
diff --git a/assets/bookmarklet/sa11y-en.js b/assets/bookmarklet/sa11y-en.js
index 16530d7..7408598 100644
--- a/assets/bookmarklet/sa11y-en.js
+++ b/assets/bookmarklet/sa11y-en.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),o=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",o.appendChild(s);const a=document.createElement("script");a.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(a),a.onload=()=>t(n),a.onreadystatechange=()=>t(n)}("en"):alert('Drag the "Sa11y" button into your bookmarks bar. Then click the bookmark on any webpage.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Drag the "Sa11y" button into your bookmarks bar. Then click the bookmark on any webpage.'):alert("Sa11y is already loaded on this page. Please wait, or reload the page and try again."):function(n){const a=document.createElement("link"),s=document.getElementsByTagName("head")[0];a.rel="stylesheet",a.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,a.type="text/css",s.appendChild(a);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("en")}));
diff --git a/assets/bookmarklet/sk.js b/assets/bookmarklet/sk.js
new file mode 100644
index 0000000..a45556d
--- /dev/null
+++ b/assets/bookmarklet/sk.js
@@ -0,0 +1 @@
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Potiahnite tlačidlo "Sa11y" na panel záložiek. Potom kliknite na záložku na ľubovoľnej webovej stránke.'):alert("Sa11y je už načítaná na tejto stránke. Počkajte, prosím, alebo načítajte stránku znova a skúste to znova."):function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("sk")}));
diff --git a/assets/bookmarklet/sl.js b/assets/bookmarklet/sl.js
index e3503d6..504bd1d 100644
--- a/assets/bookmarklet/sl.js
+++ b/assets/bookmarklet/sl.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>t(n),o.onreadystatechange=()=>t(n)}("sl"):alert('Gumb "Sa11y" povlecite v vrstico zaznamkov. Nato kliknite zaznamek na kateri koli spletni strani.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Gumb "Sa11y" povlecite v vrstico zaznamkov. Nato kliknite zaznamek na kateri koli spletni strani.'):alert("Sa11y je že naložen na tej strani. Počakajte ali ponovno naložite stran in poskusite znova."):function(t){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const o=document.createElement("script");o.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(o),o.onload=()=>n(t),o.onreadystatechange=()=>n(t)}("sl")}));
diff --git a/assets/bookmarklet/sv.js b/assets/bookmarklet/sv.js
index 6e11244..68ed6fe 100644
--- a/assets/bookmarklet/sv.js
+++ b/assets/bookmarklet/sv.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>t(n),d.onreadystatechange=()=>t(n)}("sv"):alert('Dra knappen "Sa11y" till ditt bokmärkesfält. Klicka sedan på bokmärket på valfri webbsida.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Dra knappen "Sa11y" till ditt bokmärkesfält. Klicka sedan på bokmärket på valfri webbsida.'):alert("Sa11y är redan laddad på denna sida. Vänligen vänta, eller ladda om sidan och försök igen."):function(t){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>n(t),d.onreadystatechange=()=>n(t)}("sv")}));
diff --git a/assets/bookmarklet/tr.js b/assets/bookmarklet/tr.js
index 7e598b4..8b76f7c 100644
--- a/assets/bookmarklet/tr.js
+++ b/assets/bookmarklet/tr.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(t){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>n(t),d.onreadystatechange=()=>n(t)}("tr"):alert('"Sa11y" düğmesini yer imleri çubuğunuza sürükleyin. Ardından herhangi bir web sayfasında yer imine tıklayın.')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",n=e=>{const n=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[n].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('Dra knappen "Sa11y" till ditt bokmärkesfält. Klicka sedan på bokmärket på valfri webbsida.'):alert('"Sa11y" düğmesini yer imleri çubuğunuza sürükleyin. Ardından herhangi bir web sayfasında yer imine tıklayın.'):function(t){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const i=document.createElement("script");i.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${t}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(i),i.onload=()=>n(t),i.onreadystatechange=()=>n(t)}("tr")}));
diff --git a/assets/bookmarklet/ua.js b/assets/bookmarklet/ua.js
index 6f8da29..0048b54 100644
--- a/assets/bookmarklet/ua.js
+++ b/assets/bookmarklet/ua.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>t(n),d.onreadystatechange=()=>t(n)}("ua"):alert("Перетягніть кнопку «Sa11y» на панель закладок. Потім натисніть закладку на будь-якій веб-сторінці.")}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert("Перетягніть кнопку «Sa11y» на панель закладок. Потім натисніть закладку на будь-якій веб-сторінці."):alert("Sa11y вже завантажується на цій сторінці. Будь ласка, зачекайте або перезавантажте сторінку і спробуйте ще раз."):function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>t(n),d.onreadystatechange=()=>t(n)}("ua")}));
diff --git a/assets/bookmarklet/zh.js b/assets/bookmarklet/zh.js
index bc818ee..ace5b4a 100644
--- a/assets/bookmarklet/zh.js
+++ b/assets/bookmarklet/zh.js
@@ -1 +1 @@
-!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.3",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,detectSPArouting:!0})};"object"!=typeof Sa11y?function(n){const s=document.createElement("link"),d=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",d.appendChild(s);const a=document.createElement("script");a.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(a),a.onload=()=>t(n),a.onreadystatechange=()=>t(n)}("zh"):alert('将 "Sa11y "按钮拖入你的书签栏。然后在任何网页上点击该书签。')}));
+!function(e){"function"==typeof define&&define.amd?define(e):e()}((function(){"use strict";const e="3.0.6",t=e=>{const t=`Sa11yLang${e.charAt(0).toUpperCase()+e.slice(1)}`;Sa11y.Lang.addI18n(window[t].strings),new Sa11y.Sa11y({autoDetectShadowComponents:!0,customChecks:!1,exportResultsPlugin:!0,detectSPArouting:!0})};"object"==typeof Sa11y?window.location.pathname.includes("sa11y")?alert('将 "Sa11y "按钮拖入你的书签栏。然后在任何网页上点击该书签。'):alert("本页面已加载 Sa11y。请稍候,或重新加载页面再试。"):function(n){const s=document.createElement("link"),a=document.getElementsByTagName("head")[0];s.rel="stylesheet",s.href=`https://cdn.jsdelivr.net/gh/ryersondmp/sa11y@${e}/dist/css/sa11y.min.css`,s.type="text/css",a.appendChild(s);const d=document.createElement("script");d.src=`https://cdn.jsdelivr.net/combine/gh/ryersondmp/sa11y@${e}/dist/js/lang/${n}.umd.min.js,gh/ryersondmp/sa11y@${e}/dist/js/sa11y.umd.min.js`,document.body.appendChild(d),d.onload=()=>t(n),d.onreadystatechange=()=>t(n)}("zh")}));
diff --git a/assets/dist/css/control-panel.css b/assets/dist/css/control-panel.css
index 5e26a34..d1a0bfb 100644
--- a/assets/dist/css/control-panel.css
+++ b/assets/dist/css/control-panel.css
@@ -15,6 +15,7 @@ button,
svg,
strong,
kbd,
+pre,
code {
all: unset;
box-sizing: border-box !important;
@@ -46,13 +47,26 @@ label {
font-weight: normal;
text-align: start;
letter-spacing: normal;
- word-break: normal;
+ word-break: break-word;
}
.sa11y-overflow {
overflow: auto;
}
+img,
+video,
+iframe {
+ display: block;
+ max-width: 100%;
+ height: auto;
+ border: 0;
+}
+
+audio {
+ max-width: 100%;
+}
+
/* ************************************* */
/* 2. Main toggle */
/* ************************************* */
@@ -111,19 +125,21 @@ label {
/* ************************************* */
#notification-badge {
position: absolute;
- top: -3px;
+ top: -5.5px;
right: -3px;
display: none;
align-items: center;
justify-content: center;
- width: 20px;
+ min-width: 20px;
height: 20px;
- font-size: 13px;
+ padding: 3px;
+ font-size: 13.5px;
font-weight: normal;
color: #fff;
+ text-wrap: nowrap;
background-color: #eb0000;
border: 1px solid transparent;
- border-radius: 50%;
+ border-radius: 12px;
}
#notification-badge.notification-badge-warning {
color: var(--sa11y-warning-text);
@@ -198,7 +214,7 @@ label {
#panel-alert-content {
position: relative;
align-items: center;
- max-height: 200px;
+ max-height: 400px;
padding: 15px 20px 15px 15px;
overflow-y: auto;
color: var(--sa11y-panel-primary);
@@ -225,6 +241,14 @@ label {
border-radius: 5px;
}
+.element-preview {
+ padding: 5px;
+ margin-bottom: 10px;
+ overflow-wrap: break-word;
+ background-color: var(--sa11y-panel-badge);
+ border-radius: 3.2px;
+}
+
/* Dismiss button for issues */
button[data-sa11y-dismiss] {
display: block;
@@ -232,8 +256,8 @@ button[data-sa11y-dismiss] {
margin: 10px 5px 5px 0;
color: var(--sa11y-panel-primary);
cursor: pointer;
- background: var(--sa11y-panel-bg);
- border: 1px solid var(--sa11y-button-outline);
+ background: var(--sa11y-panel-bg-secondary);
+ border: 2px solid var(--sa11y-button-outline);
border-radius: 5px;
}
button[data-sa11y-dismiss]:hover, button[data-sa11y-dismiss]:focus {
@@ -291,10 +315,8 @@ hr {
border: 1px solid var(--sa11y-button-outline);
border-radius: 50px;
transition: all 0.1s ease-in-out;
- -webkit-margin-end: 8px;
- margin-inline-end: 8px;
- -webkit-margin-start: 2px;
- margin-inline-start: 2px;
+ margin-inline-end: 8px;
+ margin-inline-start: 2px;
}
#dismiss-button.active,
#skip-button.active {
@@ -326,10 +348,8 @@ hr {
#panel.top-left #skip-button,
#panel.left #dismiss-button,
#panel.left #skip-button {
- -webkit-margin-start: 8px;
- margin-inline-start: 8px;
- -webkit-margin-end: 2px;
- margin-inline-end: 2px;
+ margin-inline-start: 8px;
+ margin-inline-end: 2px;
}
/* Dismiss button */
@@ -482,24 +502,19 @@ hr {
box-shadow: 0 0 0 2px var(--sa11y-panel-outline-hover);
}
#outline-list .outline-2 {
- -webkit-margin-start: 15px;
- margin-inline-start: 15px;
+ margin-inline-start: 15px;
}
#outline-list .outline-3 {
- -webkit-margin-start: 30px;
- margin-inline-start: 30px;
+ margin-inline-start: 30px;
}
#outline-list .outline-4 {
- -webkit-margin-start: 45px;
- margin-inline-start: 45px;
+ margin-inline-start: 45px;
}
#outline-list .outline-5 {
- -webkit-margin-start: 60px;
- margin-inline-start: 60px;
+ margin-inline-start: 60px;
}
#outline-list .outline-6 {
- -webkit-margin-start: 75px;
- margin-inline-start: 75px;
+ margin-inline-start: 75px;
}
/* **************************************** */
@@ -609,22 +624,47 @@ hr {
}
#outline-toggle {
- -webkit-border-end: 1px solid var(--sa11y-panel-bg-splitter);
- border-inline-end: 1px solid var(--sa11y-panel-bg-splitter);
+ border-inline-end: 1px solid var(--sa11y-panel-bg-splitter);
}
+#export-results-mode,
label {
display: inline-block;
width: 100%;
margin: 0;
font-weight: normal;
color: var(--sa11y-panel-primary);
+}
+
+label:not(#colour-filter-mode, #export-results-mode) {
cursor: pointer;
}
/* ***************************************** */
/* 13. Settings Panel */
/* ***************************************** */
+#settings-panel #export-csv,
+#settings-panel #export-html {
+ width: unset;
+ padding: 0;
+ text-align: center;
+}
+#settings-panel #export-csv span,
+#settings-panel #export-html span {
+ display: block;
+ width: 65px;
+ padding: 7px 9px;
+ margin: 0 4px;
+ background: var(--sa11y-panel-bg-secondary);
+ border-radius: 5px;
+ box-shadow: inset 0 0 0 2px var(--sa11y-setting-switch-bg-off);
+}
+#settings-panel #export-csv:hover span, #settings-panel #export-csv:focus span, #settings-panel #export-csv:focus-within span,
+#settings-panel #export-html:hover span,
+#settings-panel #export-html:focus span,
+#settings-panel #export-html:focus-within span {
+ background: var(--sa11y-shortcut-hover);
+}
#settings-panel .switch {
position: relative;
width: 105px;
@@ -753,10 +793,8 @@ label {
#panel-colour-filters .panel-icon {
width: 30px;
height: 30px;
- -webkit-margin-end: 5px;
- margin-inline-end: 5px;
- -webkit-margin-start: 10px;
- margin-inline-start: 10px;
+ margin-inline-end: 5px;
+ margin-inline-start: 10px;
-webkit-mask: var(--sa11y-low-vision-icon) center no-repeat;
mask: var(--sa11y-low-vision-icon) center no-repeat;
}
@@ -790,13 +828,15 @@ label {
text-align: end;
vertical-align: middle;
cursor: pointer;
- background: var(--sa11y-panel-bg);
+ background: var(--sa11y-panel-bg-secondary);
border: 2px solid var(--sa11y-setting-switch-bg-off);
border-radius: 5px;
- -webkit-padding-end: 25px;
- padding-inline-end: 25px;
- -webkit-padding-start: 5px;
- padding-inline-start: 5px;
+ padding-inline-end: 25px;
+ padding-inline-start: 5px;
+ margin-inline-end: 4px;
+}
+#colour-filter-select:hover, #colour-filter-select:focus {
+ background: var(--sa11y-shortcut-hover);
}
#colour-filter-select.active {
@@ -838,8 +878,7 @@ label {
display: inline-block;
margin: 0;
list-style-type: none;
- -webkit-padding-end: 10px;
- padding-inline-end: 10px;
+ padding-inline-end: 10px;
}
.readability-score {
@@ -847,13 +886,11 @@ label {
color: var(--sa11y-panel-primary);
background-color: var(--sa11y-panel-badge);
border-radius: 4px;
- -webkit-margin-start: 5px;
- margin-inline-start: 5px;
+ margin-inline-start: 5px;
}
#readability-info {
- -webkit-margin-start: 10px;
- margin-inline-start: 10px;
+ margin-inline-start: 10px;
}
/* ************************************* */
@@ -902,6 +939,7 @@ label {
/* ***************************************** */
::-webkit-scrollbar {
width: 7px;
+ height: 6px;
}
::-webkit-scrollbar-thumb {
diff --git a/assets/dist/css/control-panel.min.css b/assets/dist/css/control-panel.min.css
index 0bd1283..573efdd 100644
--- a/assets/dist/css/control-panel.min.css
+++ b/assets/dist/css/control-panel.min.css
@@ -1 +1 @@
-a,button,code,div,h1,h2,kbd,label,li,ol,p,span,strong,svg,ul{all:unset;box-sizing:border-box!important}:after,:before{all:unset}div{display:block}*{-webkit-font-smoothing:auto!important;font-family:var(--sa11y-font-face)!important;line-height:22px!important}label,li,ol,p,ul{font-size:var(--sa11y-normal-text);font-weight:400;letter-spacing:normal;text-align:start;word-break:normal}.sa11y-overflow{overflow:auto}#toggle{align-items:center;background:linear-gradient(0deg,#e040fb,#00bcd4);background-color:var(--sa11y-blue);background-size:150% 150%;border-radius:50%;bottom:15px;color:#fff;cursor:pointer;display:flex;height:55px;inset-inline-end:18px;justify-content:center;margin:0;overflow:visible;position:fixed;transition:all .2s ease-in-out;width:55px;z-index:2147483644}#toggle.left,#toggle.top-left{inset-inline-start:18px}#toggle.top-left,#toggle.top-right{bottom:unset;top:15px}@media screen and (forced-colors:active){#toggle{border:2px solid transparent}}#toggle svg{height:35px;width:35px}#toggle svg path{fill:var(--sa11y-panel-bg)}#toggle:focus,#toggle:hover{animation:sa11y-toggle-gradient 3s ease}#toggle:disabled:focus,#toggle:disabled:hover{animation:none}#toggle.on{background:linear-gradient(180deg,#e040fb,#00bcd4);background-color:var(--sa11y-blue)}#notification-badge{align-items:center;background-color:#eb0000;border:1px solid transparent;border-radius:50%;color:#fff;display:none;font-size:13px;font-weight:400;height:20px;justify-content:center;position:absolute;right:-3px;top:-3px;width:20px}#notification-badge.notification-badge-warning{background-color:var(--sa11y-warning-hover);border:1px solid var(--sa11y-warning);color:var(--sa11y-warning-text)}#panel{background:var(--sa11y-panel-bg);border-radius:4px;bottom:25px;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15);inset-inline-end:42px;opacity:0;overflow:visible;position:fixed;transform:scale(0);transform-origin:100% 100%;transition:transform .2s,opacity background .2s .2s;visibility:hidden;z-index:2147483643}#panel.left,#panel.top-left{inset-inline-start:42px}#panel.top-left,#panel.top-right{bottom:unset;top:50px}#panel.active{height:auto;opacity:1;transform:scale(1);transform-origin:bottom right;transition:transform .2s,opacity .2s;visibility:visible}@media screen and (forced-colors:active){#panel{border:2px solid transparent}}#panel.active.left,[dir=rtl] #panel.active{transform-origin:bottom left}#panel.active.top-left{transform-origin:top left}#panel.active.top-right{transform-origin:top right}#panel-alert{display:none;opacity:0}#panel-alert.active{display:block;opacity:1}#panel-alert-content{align-items:center;border-bottom:1px solid var(--sa11y-panel-bg-splitter);color:var(--sa11y-panel-primary);max-height:200px;overflow-y:auto;padding:15px 20px 15px 15px;position:relative}#panel-alert-preview .close-tooltip{display:none}#panel-alert-preview,#panel-alert-text{font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text);font-weight:400;line-height:22px}.panel-alert-preview{background:var(--sa11y-panel-bg-secondary);border:1px dashed var(--sa11y-panel-bg-splitter);border-radius:5px;margin-top:15px;padding:10px}button[data-sa11y-dismiss]{background:var(--sa11y-panel-bg);border:1px solid var(--sa11y-button-outline);border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;display:block;margin:10px 5px 5px 0;padding:4px 8px}button[data-sa11y-dismiss]:focus,button[data-sa11y-dismiss]:hover{background:var(--sa11y-shortcut-hover)}h2{display:block;font-size:var(--sa11y-large-text);margin-bottom:3px}h2,strong{font-weight:600}a:not(#outline-list a){border-bottom:0;color:var(--sa11y-hyperlink);cursor:pointer;text-decoration:underline}a:focus,a:hover{text-decoration:none!important}hr{background:var(--sa11y-panel-bg-splitter);border:none;height:1px;margin:10px 0;opacity:1;padding:0}#dismiss-button,#skip-button{-webkit-margin-end:8px;-webkit-margin-start:2px;background:var(--sa11y-panel-bg-secondary);border:1px solid var(--sa11y-button-outline);border-radius:50px;cursor:pointer;display:none;height:36px;margin-inline-end:8px;margin-inline-start:2px;overflow:visible;position:relative;text-align:center;transition:all .1s ease-in-out;width:36px}#dismiss-button.active,#skip-button.active{display:block}#dismiss-button:disabled,#skip-button:disabled{background:none;border:0;box-shadow:none;cursor:default}#dismiss-button:before,#skip-button:before{bottom:-5px;content:"";left:-5px;position:absolute;right:-5px;top:-5px}#dismiss-button:focus:not(:disabled),#dismiss-button:hover:not(:disabled),#skip-button:focus:not(:disabled),#skip-button:hover:not(:disabled){background-color:var(--sa11y-shortcut-hover)}#panel.left #dismiss-button,#panel.left #skip-button,#panel.top-left #dismiss-button,#panel.top-left #skip-button{-webkit-margin-start:8px;-webkit-margin-end:2px;margin-inline-end:2px;margin-inline-start:8px}.dismiss-icon{background:var(--sa11y-setting-switch-bg-off);display:inline-block;height:24px;margin-bottom:-4px;-webkit-mask:var(--sa11y-dismiss-icon) center no-repeat;mask:var(--sa11y-dismiss-icon) center no-repeat;width:24px}@media screen and (forced-colors:active){.dismiss-icon{filter:invert(1)}}#panel-content{align-items:center;color:var(--sa11y-panel-primary);display:flex;padding:6px}#panel-content.errors .panel-icon,#panel-content.good .panel-icon,#panel-content.warnings .panel-icon{height:26px;margin:0 auto;width:26px}#panel-content.errors .panel-icon{background:var(--sa11y-panel-error);margin-top:-2px;-webkit-mask:var(--sa11y-error-svg) center no-repeat;mask:var(--sa11y-error-svg) center no-repeat}#panel-content.good .panel-icon{background:var(--sa11y-good);-webkit-mask:var(--sa11y-good-svg) center no-repeat;mask:var(--sa11y-good-svg) center no-repeat}#panel-content.warnings .panel-icon{background:var(--sa11y-warning-svg-color);-webkit-mask:var(--sa11y-warning-svg) center no-repeat;mask:var(--sa11y-warning-svg) center no-repeat;transform:scaleX(var(--sa11y-icon-direction))}@media screen and (forced-colors:active){#panel-content.errors .panel-icon,#panel-content.good .panel-icon,#panel-content.warnings .panel-icon{filter:invert(1)}}#panel.left #panel-content,#panel.top-left #panel-content{flex-direction:row-reverse}#status{font-size:var(--sa11y-large-text)}#status,.panel-count{color:var(--sa11y-panel-primary)}.panel-count{background-color:var(--sa11y-panel-badge);border-radius:4px;font-size:15px;font-weight:400;margin-left:3px;margin-right:3px;padding:2px 4px}#outline-panel,#page-issues,#settings-panel{color:var(--sa11y-panel-primary);display:none;opacity:0}#outline-panel.active,#page-issues.active,#settings-panel.active{display:block;opacity:1}.panel-header{padding:10px 15px 0;text-align:start}#outline-content,#page-issues-content,#settings-content{border-bottom:1px solid var(--sa11y-panel-bg-splitter);padding:0 15px 10px}#page-issues-content{max-height:160px;overflow-y:auto}#outline-content{max-height:250px;overflow-y:auto}#outline-panel .outline-list-item.sa11y-red-text,#settings-panel .sa11y-red-text{color:var(--sa11y-red-text)}#outline-list{display:block;margin:0;padding:0}#outline-list a{cursor:pointer;display:block;text-decoration:none}#outline-list li{display:block;list-style-type:none;margin-bottom:3px;margin-top:0;padding:0}#outline-list li:first-child{margin-top:5px}#outline-list li a:focus,#outline-list li a:hover{background:var(--sa11y-panel-outline-hover);border-radius:5px;box-shadow:0 0 0 2px var(--sa11y-panel-outline-hover);display:block}#outline-list .outline-2{-webkit-margin-start:15px;margin-inline-start:15px}#outline-list .outline-3{-webkit-margin-start:30px;margin-inline-start:30px}#outline-list .outline-4{-webkit-margin-start:45px;margin-inline-start:45px}#outline-list .outline-5{-webkit-margin-start:60px;margin-inline-start:60px}#outline-list .outline-6{-webkit-margin-start:75px;margin-inline-start:75px}.badge{background-color:var(--sa11y-panel-badge);border:1px solid transparent;border-radius:10px;color:var(--sa11y-panel-primary);display:inline;font-size:13px;font-weight:700;min-width:10px;padding:2px 5px;text-align:center;white-space:nowrap}.error-badge{background:var(--sa11y-error);color:var(--sa11y-error-text)}.warning-badge{background:var(--sa11y-yellow-text);color:var(--sa11y-panel-bg)}.error-icon{background:var(--sa11y-error-text);-webkit-mask:var(--sa11y-error-svg) center no-repeat;mask:var(--sa11y-error-svg) center no-repeat}.error-icon,.hidden-icon{display:inline-block;height:16px;margin-bottom:-3px;width:16px}.hidden-icon{background:var(--sa11y-panel-primary);-webkit-mask:var(--sa11y-hidden-icon-svg) center no-repeat;mask:var(--sa11y-hidden-icon-svg) center no-repeat}.error-badge .hidden-icon{background:var(--sa11y-error-text)}.warning-badge .hidden-icon{background:var(--sa11y-panel-bg)}@media screen and (forced-colors:active){.hidden-icon{filter:invert(1)}}#panel-controls{border-radius:0 0 4px 4px;display:flex;overflow:hidden}#outline-toggle,#settings-toggle{background:var(--sa11y-panel-bg-secondary);background-color:var(--sa11y-panel-bg-secondary);border-bottom:1px solid var(--sa11y-panel-bg-splitter);border-top:1px solid var(--sa11y-panel-bg-splitter);color:var(--sa11y-panel-secondary);cursor:pointer;display:block;font-size:var(--sa11y-normal-text);font-weight:400;height:30px;line-height:0;margin:0;opacity:1;outline:0;padding:0;position:relative;text-align:center;transition:background .2s;width:100%}#outline-toggle.outline-active,#outline-toggle.settings-active,#outline-toggle:hover,#settings-toggle.outline-active,#settings-toggle.settings-active,#settings-toggle:hover{background-color:var(--sa11y-shortcut-hover)}#outline-toggle.outline-active,#outline-toggle.settings-active,#settings-toggle.outline-active,#settings-toggle.settings-active{font-weight:500}#outline-toggle{-webkit-border-end:1px solid var(--sa11y-panel-bg-splitter);border-inline-end:1px solid var(--sa11y-panel-bg-splitter)}label{display:inline-block;width:100%}#settings-panel .switch,label{color:var(--sa11y-panel-primary);cursor:pointer;font-weight:400;margin:0}#settings-panel .switch{background:none;border:0;border-radius:5px;font-size:var(--sa11y-normal-text);height:44px;padding:7px 10px;position:relative;text-align:end;width:105px}#settings-panel .switch[aria-pressed=false]:after,#settings-panel .switch[aria-pressed=true]:after{content:"";display:inline-block;height:27px;margin:0 4px 4px;vertical-align:middle;width:27px}#settings-panel .switch[aria-pressed=true]:after{background:var(--sa11y-setting-switch-bg-on);-webkit-mask:var(--sa11y-setting-switch-on-svg) center no-repeat;mask:var(--sa11y-setting-switch-on-svg) center no-repeat}#settings-panel .switch[aria-pressed=false]:after{background:var(--sa11y-setting-switch-bg-off);-webkit-mask:var(--sa11y-setting-switch-off-svg) center no-repeat;mask:var(--sa11y-setting-switch-off-svg) center no-repeat}@media screen and (forced-colors:active){#settings-panel .switch[aria-pressed=false]:after,#settings-panel .switch[aria-pressed=true]:after{filter:invert(1)}}#settings-panel #settings-options li{align-items:center;border-bottom:1px solid var(--sa11y-panel-bg-splitter);display:flex;justify-content:space-between;list-style-type:none;padding:1px 0}#settings-panel #settings-options li:last-child{border:none}#page-issues{align-items:center;color:var(--sa11y-panel-primary)}#page-issues-list{display:block;margin-top:4px}#page-issues-list li{display:block;margin:0 0 10px}#page-issues-list strong{display:block}#panel-colour-filters{align-items:center;color:var(--sa11y-panel-primary);display:none;font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text);font-weight:400;line-height:22px}#panel-colour-filters.active{display:flex}#panel-colour-filters p{padding:6px 20px 6px 6px;width:100%}#panel-colour-filters[data-colour=protanopia]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(94deg,#786719 11%,#e0c600 36%,#e0c600 47%,#0059e3 75%,#0042aa 91%);border-image:linear-gradient(94deg,#786719 11%,#e0c600 36%,#e0c600 47%,#0059e3 75%,#0042aa 91%);border-image-slice:1}#panel-colour-filters[data-colour=deuteranopia]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(270deg,#567fdb,#a4a28d 48%,#c3ad14 69%,#a79505);border-image:linear-gradient(270deg,#567fdb,#a4a28d 48%,#c3ad14 69%,#a79505);border-image-slice:1}#panel-colour-filters[data-colour=tritanopia]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(270deg,#b1506f,#0696c1 35%,#f3a9ba 70%,#d91c5d 87%,#fe015c);border-image:linear-gradient(270deg,#b1506f,#0696c1 35%,#f3a9ba 70%,#d91c5d 87%,#fe015c);border-image-slice:1}#panel-colour-filters[data-colour=monochromacy]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(270deg,#000,#a7a7a7 50%,#000);border-image:linear-gradient(270deg,#000,#a7a7a7 50%,#000);border-image-slice:1}#panel-colour-filters[data-colour=protanopia] .panel-icon{background:var(--sa11y-panel-error)}#panel-colour-filters[data-colour=deuteranopia] .panel-icon{background:var(--sa11y-good-hover)}#panel-colour-filters[data-colour=tritanopia] .panel-icon{background:var(--sa11y-blue)}#panel-colour-filters[data-colour=monochromacy] .panel-icon{background:linear-gradient(90deg,#38a459 20%,red 50%,#0077c8 80%)}#panel-colour-filters .panel-icon{-webkit-margin-end:5px;-webkit-margin-start:10px;height:30px;margin-inline-end:5px;margin-inline-start:10px;-webkit-mask:var(--sa11y-low-vision-icon) center no-repeat;mask:var(--sa11y-low-vision-icon) center no-repeat;width:30px}@media screen and (forced-colors:active){#panel-colour-filters .panel-icon{forced-color-adjust:none}}.select-dropdown:after{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--sa11y-setting-switch-bg-off);content:" ";height:0;inset-inline-end:25px;margin-top:22.5px;position:absolute;width:0}#colour-filter-select{-webkit-padding-end:25px;-webkit-padding-start:5px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--sa11y-panel-bg);border:2px solid var(--sa11y-setting-switch-bg-off);border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;font-size:var(--sa11y-normal-text);font-weight:400;height:30px;padding-inline-end:25px;padding-inline-start:5px;position:relative;text-align:end;vertical-align:middle}#colour-filter-select.active{box-shadow:0 0 0 2px var(--sa11y-setting-switch-bg-on)}#colour-filter-item label,#colour-filter-item select{margin-bottom:9px;margin-top:10px}#readability-panel{display:none;opacity:0}#readability-panel.active{display:block;opacity:1}#readability-content{border-bottom:1px solid var(--sa11y-panel-bg-splitter);color:var(--sa11y-panel-primary);padding:10px 15px;width:100%}#readability-details{list-style-type:none;margin:0;padding:0;white-space:normal}#readability-details li{-webkit-padding-end:10px;display:inline-block;list-style-type:none;margin:0;padding-inline-end:10px}.readability-score{-webkit-margin-start:5px;background-color:var(--sa11y-panel-badge);border-radius:4px;color:var(--sa11y-panel-primary);margin-inline-start:5px;padding:2px 5px}#readability-info{-webkit-margin-start:10px;margin-inline-start:10px}#skip-to-page-issues{display:none}#panel.has-page-issues #skip-to-page-issues{clip:rect(0,0,0,0);background:var(--sa11y-panel-bg);border:0;border-radius:5px;display:block;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}#panel.has-page-issues #skip-to-page-issues:focus{clip:auto;height:auto;margin:0;overflow:visible;padding:5px 7px;white-space:normal;width:auto;z-index:1}.hide-settings-border{border-bottom:0!important;padding:0 15px!important}::-webkit-scrollbar{width:7px}::-webkit-scrollbar-thumb{background-color:var(--sa11y-button-outline);border-radius:6px}*{scrollbar-color:var(--sa11y-button-outline);scrollbar-width:thin}.scrollable:before{animation:fade 1s ease-in-out;background-image:linear-gradient(180deg,transparent 0,transparent 70%,var(--sa11y-panel-scrollable) 100%);background-position:bottom;bottom:auto;content:"";height:250px;left:0;position:absolute;right:0;top:auto;transition:opacity 1s ease-in-out;z-index:-1}#page-issues-content.scrollable:before{height:160px}#panel-alert.scrollable:before{height:200px}@keyframes sa11y-toggle-gradient{0%{background-position:50% 0}50%{background-position:50% 100%}to{background-position:50% 0}}@keyframes fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transform:none!important;transition:none!important}}#panel{width:375px}#container:lang(en) #panel{width:305px}#container:lang(da) #panel,#container:lang(de) #panel,#container:lang(nb) #panel,#container:lang(pl) #panel,#container:lang(sv) #panel,#container:lang(zh) #panel{width:335px}#container:lang(es) .switch{width:225px!important}#container:not(:lang(en)):not(:lang(de)) .switch{width:205px}
\ No newline at end of file
+a,button,code,div,h1,h2,kbd,label,li,ol,p,pre,span,strong,svg,ul{all:unset;box-sizing:border-box!important}:after,:before{all:unset}div{display:block}*{-webkit-font-smoothing:auto!important;font-family:var(--sa11y-font-face)!important;line-height:22px!important}label,li,ol,p,ul{font-size:var(--sa11y-normal-text);font-weight:400;letter-spacing:normal;text-align:start;word-break:break-word}.sa11y-overflow{overflow:auto}iframe,img,video{border:0;display:block;height:auto;max-width:100%}audio{max-width:100%}#toggle{align-items:center;background:linear-gradient(0deg,#e040fb,#00bcd4);background-color:var(--sa11y-blue);background-size:150% 150%;border-radius:50%;bottom:15px;color:#fff;cursor:pointer;display:flex;height:55px;inset-inline-end:18px;justify-content:center;margin:0;overflow:visible;position:fixed;transition:all .2s ease-in-out;width:55px;z-index:2147483644}#toggle.left,#toggle.top-left{inset-inline-start:18px}#toggle.top-left,#toggle.top-right{bottom:unset;top:15px}@media screen and (forced-colors:active){#toggle{border:2px solid transparent}}#toggle svg{height:35px;width:35px}#toggle svg path{fill:var(--sa11y-panel-bg)}#toggle:focus,#toggle:hover{animation:sa11y-toggle-gradient 3s ease}#toggle:disabled:focus,#toggle:disabled:hover{animation:none}#toggle.on{background:linear-gradient(180deg,#e040fb,#00bcd4);background-color:var(--sa11y-blue)}#notification-badge{text-wrap:nowrap;align-items:center;background-color:#eb0000;border:1px solid transparent;border-radius:12px;color:#fff;display:none;font-size:13.5px;font-weight:400;height:20px;justify-content:center;min-width:20px;padding:3px;position:absolute;right:-3px;top:-5.5px}#notification-badge.notification-badge-warning{background-color:var(--sa11y-warning-hover);border:1px solid var(--sa11y-warning);color:var(--sa11y-warning-text)}#panel{background:var(--sa11y-panel-bg);border-radius:4px;bottom:25px;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15);inset-inline-end:42px;opacity:0;overflow:visible;position:fixed;transform:scale(0);transform-origin:100% 100%;transition:transform .2s,opacity background .2s .2s;visibility:hidden;z-index:2147483643}#panel.left,#panel.top-left{inset-inline-start:42px}#panel.top-left,#panel.top-right{bottom:unset;top:50px}#panel.active{height:auto;opacity:1;transform:scale(1);transform-origin:bottom right;transition:transform .2s,opacity .2s;visibility:visible}@media screen and (forced-colors:active){#panel{border:2px solid transparent}}#panel.active.left,[dir=rtl] #panel.active{transform-origin:bottom left}#panel.active.top-left{transform-origin:top left}#panel.active.top-right{transform-origin:top right}#panel-alert{display:none;opacity:0}#panel-alert.active{display:block;opacity:1}#panel-alert-content{align-items:center;border-bottom:1px solid var(--sa11y-panel-bg-splitter);color:var(--sa11y-panel-primary);max-height:400px;overflow-y:auto;padding:15px 20px 15px 15px;position:relative}#panel-alert-preview .close-tooltip{display:none}#panel-alert-preview,#panel-alert-text{font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text);font-weight:400;line-height:22px}.panel-alert-preview{background:var(--sa11y-panel-bg-secondary);border:1px dashed var(--sa11y-panel-bg-splitter);border-radius:5px;margin-top:15px;padding:10px}.element-preview{background-color:var(--sa11y-panel-badge);border-radius:3.2px;margin-bottom:10px;overflow-wrap:break-word;padding:5px}button[data-sa11y-dismiss]{background:var(--sa11y-panel-bg-secondary);border:2px solid var(--sa11y-button-outline);border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;display:block;margin:10px 5px 5px 0;padding:4px 8px}button[data-sa11y-dismiss]:focus,button[data-sa11y-dismiss]:hover{background:var(--sa11y-shortcut-hover)}h2{display:block;font-size:var(--sa11y-large-text);margin-bottom:3px}h2,strong{font-weight:600}a:not(#outline-list a){border-bottom:0;color:var(--sa11y-hyperlink);cursor:pointer;text-decoration:underline}a:focus,a:hover{text-decoration:none!important}hr{background:var(--sa11y-panel-bg-splitter);border:none;height:1px;margin:10px 0;opacity:1;padding:0}#dismiss-button,#skip-button{background:var(--sa11y-panel-bg-secondary);border:1px solid var(--sa11y-button-outline);border-radius:50px;cursor:pointer;display:none;height:36px;margin-inline-end:8px;margin-inline-start:2px;overflow:visible;position:relative;text-align:center;transition:all .1s ease-in-out;width:36px}#dismiss-button.active,#skip-button.active{display:block}#dismiss-button:disabled,#skip-button:disabled{background:none;border:0;box-shadow:none;cursor:default}#dismiss-button:before,#skip-button:before{bottom:-5px;content:"";left:-5px;position:absolute;right:-5px;top:-5px}#dismiss-button:focus:not(:disabled),#dismiss-button:hover:not(:disabled),#skip-button:focus:not(:disabled),#skip-button:hover:not(:disabled){background-color:var(--sa11y-shortcut-hover)}#panel.left #dismiss-button,#panel.left #skip-button,#panel.top-left #dismiss-button,#panel.top-left #skip-button{margin-inline-end:2px;margin-inline-start:8px}.dismiss-icon{background:var(--sa11y-setting-switch-bg-off);display:inline-block;height:24px;margin-bottom:-4px;-webkit-mask:var(--sa11y-dismiss-icon) center no-repeat;mask:var(--sa11y-dismiss-icon) center no-repeat;width:24px}@media screen and (forced-colors:active){.dismiss-icon{filter:invert(1)}}#panel-content{align-items:center;color:var(--sa11y-panel-primary);display:flex;padding:6px}#panel-content.errors .panel-icon,#panel-content.good .panel-icon,#panel-content.warnings .panel-icon{height:26px;margin:0 auto;width:26px}#panel-content.errors .panel-icon{background:var(--sa11y-panel-error);margin-top:-2px;-webkit-mask:var(--sa11y-error-svg) center no-repeat;mask:var(--sa11y-error-svg) center no-repeat}#panel-content.good .panel-icon{background:var(--sa11y-good);-webkit-mask:var(--sa11y-good-svg) center no-repeat;mask:var(--sa11y-good-svg) center no-repeat}#panel-content.warnings .panel-icon{background:var(--sa11y-warning-svg-color);-webkit-mask:var(--sa11y-warning-svg) center no-repeat;mask:var(--sa11y-warning-svg) center no-repeat;transform:scaleX(var(--sa11y-icon-direction))}@media screen and (forced-colors:active){#panel-content.errors .panel-icon,#panel-content.good .panel-icon,#panel-content.warnings .panel-icon{filter:invert(1)}}#panel.left #panel-content,#panel.top-left #panel-content{flex-direction:row-reverse}#status{font-size:var(--sa11y-large-text)}#status,.panel-count{color:var(--sa11y-panel-primary)}.panel-count{background-color:var(--sa11y-panel-badge);border-radius:4px;font-size:15px;font-weight:400;margin-left:3px;margin-right:3px;padding:2px 4px}#outline-panel,#page-issues,#settings-panel{color:var(--sa11y-panel-primary);display:none;opacity:0}#outline-panel.active,#page-issues.active,#settings-panel.active{display:block;opacity:1}.panel-header{padding:10px 15px 0;text-align:start}#outline-content,#page-issues-content,#settings-content{border-bottom:1px solid var(--sa11y-panel-bg-splitter);padding:0 15px 10px}#page-issues-content{max-height:160px;overflow-y:auto}#outline-content{max-height:250px;overflow-y:auto}#outline-panel .outline-list-item.sa11y-red-text,#settings-panel .sa11y-red-text{color:var(--sa11y-red-text)}#outline-list{display:block;margin:0;padding:0}#outline-list a{cursor:pointer;display:block;text-decoration:none}#outline-list li{display:block;list-style-type:none;margin-bottom:3px;margin-top:0;padding:0}#outline-list li:first-child{margin-top:5px}#outline-list li a:focus,#outline-list li a:hover{background:var(--sa11y-panel-outline-hover);border-radius:5px;box-shadow:0 0 0 2px var(--sa11y-panel-outline-hover);display:block}#outline-list .outline-2{margin-inline-start:15px}#outline-list .outline-3{margin-inline-start:30px}#outline-list .outline-4{margin-inline-start:45px}#outline-list .outline-5{margin-inline-start:60px}#outline-list .outline-6{margin-inline-start:75px}.badge{background-color:var(--sa11y-panel-badge);border:1px solid transparent;border-radius:10px;color:var(--sa11y-panel-primary);display:inline;font-size:13px;font-weight:700;min-width:10px;padding:2px 5px;text-align:center;white-space:nowrap}.error-badge{background:var(--sa11y-error);color:var(--sa11y-error-text)}.warning-badge{background:var(--sa11y-yellow-text);color:var(--sa11y-panel-bg)}.error-icon{background:var(--sa11y-error-text);-webkit-mask:var(--sa11y-error-svg) center no-repeat;mask:var(--sa11y-error-svg) center no-repeat}.error-icon,.hidden-icon{display:inline-block;height:16px;margin-bottom:-3px;width:16px}.hidden-icon{background:var(--sa11y-panel-primary);-webkit-mask:var(--sa11y-hidden-icon-svg) center no-repeat;mask:var(--sa11y-hidden-icon-svg) center no-repeat}.error-badge .hidden-icon{background:var(--sa11y-error-text)}.warning-badge .hidden-icon{background:var(--sa11y-panel-bg)}@media screen and (forced-colors:active){.hidden-icon{filter:invert(1)}}#panel-controls{border-radius:0 0 4px 4px;display:flex;overflow:hidden}#outline-toggle,#settings-toggle{background:var(--sa11y-panel-bg-secondary);background-color:var(--sa11y-panel-bg-secondary);border-bottom:1px solid var(--sa11y-panel-bg-splitter);border-top:1px solid var(--sa11y-panel-bg-splitter);color:var(--sa11y-panel-secondary);cursor:pointer;display:block;font-size:var(--sa11y-normal-text);font-weight:400;height:30px;line-height:0;margin:0;opacity:1;outline:0;padding:0;position:relative;text-align:center;transition:background .2s;width:100%}#outline-toggle.outline-active,#outline-toggle.settings-active,#outline-toggle:hover,#settings-toggle.outline-active,#settings-toggle.settings-active,#settings-toggle:hover{background-color:var(--sa11y-shortcut-hover)}#outline-toggle.outline-active,#outline-toggle.settings-active,#settings-toggle.outline-active,#settings-toggle.settings-active{font-weight:500}#outline-toggle{border-inline-end:1px solid var(--sa11y-panel-bg-splitter)}#export-results-mode,label{color:var(--sa11y-panel-primary);display:inline-block;font-weight:400;margin:0;width:100%}label:not(#colour-filter-mode,#export-results-mode){cursor:pointer}#settings-panel #export-csv,#settings-panel #export-html{padding:0;text-align:center;width:unset}#settings-panel #export-csv span,#settings-panel #export-html span{background:var(--sa11y-panel-bg-secondary);border-radius:5px;box-shadow:inset 0 0 0 2px var(--sa11y-setting-switch-bg-off);display:block;margin:0 4px;padding:7px 9px;width:65px}#settings-panel #export-csv:focus span,#settings-panel #export-csv:focus-within span,#settings-panel #export-csv:hover span,#settings-panel #export-html:focus span,#settings-panel #export-html:focus-within span,#settings-panel #export-html:hover span{background:var(--sa11y-shortcut-hover)}#settings-panel .switch{background:none;border:0;border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;font-size:var(--sa11y-normal-text);font-weight:400;height:44px;margin:0;padding:7px 10px;position:relative;text-align:end;width:105px}#settings-panel .switch[aria-pressed=false]:after,#settings-panel .switch[aria-pressed=true]:after{content:"";display:inline-block;height:27px;margin:0 4px 4px;vertical-align:middle;width:27px}#settings-panel .switch[aria-pressed=true]:after{background:var(--sa11y-setting-switch-bg-on);-webkit-mask:var(--sa11y-setting-switch-on-svg) center no-repeat;mask:var(--sa11y-setting-switch-on-svg) center no-repeat}#settings-panel .switch[aria-pressed=false]:after{background:var(--sa11y-setting-switch-bg-off);-webkit-mask:var(--sa11y-setting-switch-off-svg) center no-repeat;mask:var(--sa11y-setting-switch-off-svg) center no-repeat}@media screen and (forced-colors:active){#settings-panel .switch[aria-pressed=false]:after,#settings-panel .switch[aria-pressed=true]:after{filter:invert(1)}}#settings-panel #settings-options li{align-items:center;border-bottom:1px solid var(--sa11y-panel-bg-splitter);display:flex;justify-content:space-between;list-style-type:none;padding:1px 0}#settings-panel #settings-options li:last-child{border:none}#page-issues{align-items:center;color:var(--sa11y-panel-primary)}#page-issues-list{display:block;margin-top:4px}#page-issues-list li{display:block;margin:0 0 10px}#page-issues-list strong{display:block}#panel-colour-filters{align-items:center;color:var(--sa11y-panel-primary);display:none;font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text);font-weight:400;line-height:22px}#panel-colour-filters.active{display:flex}#panel-colour-filters p{padding:6px 20px 6px 6px;width:100%}#panel-colour-filters[data-colour=protanopia]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(94deg,#786719 11%,#e0c600 36%,#e0c600 47%,#0059e3 75%,#0042aa 91%);border-image:linear-gradient(94deg,#786719 11%,#e0c600 36%,#e0c600 47%,#0059e3 75%,#0042aa 91%);border-image-slice:1}#panel-colour-filters[data-colour=deuteranopia]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(270deg,#567fdb,#a4a28d 48%,#c3ad14 69%,#a79505);border-image:linear-gradient(270deg,#567fdb,#a4a28d 48%,#c3ad14 69%,#a79505);border-image-slice:1}#panel-colour-filters[data-colour=tritanopia]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(270deg,#b1506f,#0696c1 35%,#f3a9ba 70%,#d91c5d 87%,#fe015c);border-image:linear-gradient(270deg,#b1506f,#0696c1 35%,#f3a9ba 70%,#d91c5d 87%,#fe015c);border-image-slice:1}#panel-colour-filters[data-colour=monochromacy]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(270deg,#000,#a7a7a7 50%,#000);border-image:linear-gradient(270deg,#000,#a7a7a7 50%,#000);border-image-slice:1}#panel-colour-filters[data-colour=protanopia] .panel-icon{background:var(--sa11y-panel-error)}#panel-colour-filters[data-colour=deuteranopia] .panel-icon{background:var(--sa11y-good-hover)}#panel-colour-filters[data-colour=tritanopia] .panel-icon{background:var(--sa11y-blue)}#panel-colour-filters[data-colour=monochromacy] .panel-icon{background:linear-gradient(90deg,#38a459 20%,red 50%,#0077c8 80%)}#panel-colour-filters .panel-icon{height:30px;margin-inline-end:5px;margin-inline-start:10px;-webkit-mask:var(--sa11y-low-vision-icon) center no-repeat;mask:var(--sa11y-low-vision-icon) center no-repeat;width:30px}@media screen and (forced-colors:active){#panel-colour-filters .panel-icon{forced-color-adjust:none}}.select-dropdown:after{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--sa11y-setting-switch-bg-off);content:" ";height:0;inset-inline-end:25px;margin-top:22.5px;position:absolute;width:0}#colour-filter-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--sa11y-panel-bg-secondary);border:2px solid var(--sa11y-setting-switch-bg-off);border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;font-size:var(--sa11y-normal-text);font-weight:400;height:30px;margin-inline-end:4px;padding-inline-end:25px;padding-inline-start:5px;position:relative;text-align:end;vertical-align:middle}#colour-filter-select:focus,#colour-filter-select:hover{background:var(--sa11y-shortcut-hover)}#colour-filter-select.active{box-shadow:0 0 0 2px var(--sa11y-setting-switch-bg-on)}#colour-filter-item label,#colour-filter-item select{margin-bottom:9px;margin-top:10px}#readability-panel{display:none;opacity:0}#readability-panel.active{display:block;opacity:1}#readability-content{border-bottom:1px solid var(--sa11y-panel-bg-splitter);color:var(--sa11y-panel-primary);padding:10px 15px;width:100%}#readability-details{list-style-type:none;margin:0;padding:0;white-space:normal}#readability-details li{display:inline-block;list-style-type:none;margin:0;padding-inline-end:10px}.readability-score{background-color:var(--sa11y-panel-badge);border-radius:4px;color:var(--sa11y-panel-primary);margin-inline-start:5px;padding:2px 5px}#readability-info{margin-inline-start:10px}#skip-to-page-issues{display:none}#panel.has-page-issues #skip-to-page-issues{clip:rect(0,0,0,0);background:var(--sa11y-panel-bg);border:0;border-radius:5px;display:block;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}#panel.has-page-issues #skip-to-page-issues:focus{clip:auto;height:auto;margin:0;overflow:visible;padding:5px 7px;white-space:normal;width:auto;z-index:1}.hide-settings-border{border-bottom:0!important;padding:0 15px!important}::-webkit-scrollbar{height:6px;width:7px}::-webkit-scrollbar-thumb{background-color:var(--sa11y-button-outline);border-radius:6px}*{scrollbar-color:var(--sa11y-button-outline);scrollbar-width:thin}.scrollable:before{animation:fade 1s ease-in-out;background-image:linear-gradient(180deg,transparent 0,transparent 70%,var(--sa11y-panel-scrollable) 100%);background-position:bottom;bottom:auto;content:"";height:250px;left:0;position:absolute;right:0;top:auto;transition:opacity 1s ease-in-out;z-index:-1}#page-issues-content.scrollable:before{height:160px}#panel-alert.scrollable:before{height:200px}@keyframes sa11y-toggle-gradient{0%{background-position:50% 0}50%{background-position:50% 100%}to{background-position:50% 0}}@keyframes fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transform:none!important;transition:none!important}}#panel{width:375px}#container:lang(en) #panel{width:305px}#container:lang(da) #panel,#container:lang(de) #panel,#container:lang(nb) #panel,#container:lang(pl) #panel,#container:lang(sv) #panel,#container:lang(zh) #panel{width:335px}#container:lang(es) .switch{width:225px!important}#container:not(:lang(en)):not(:lang(de)) .switch{width:205px}
\ No newline at end of file
diff --git a/assets/dist/css/export-results.css b/assets/dist/css/export-results.css
new file mode 100644
index 0000000..1ed1f13
--- /dev/null
+++ b/assets/dist/css/export-results.css
@@ -0,0 +1,256 @@
+:root {
+ --font-primary: system-ui, "Segoe UI", roboto, helvetica, arial, sans-serif;
+ --font-secondary: Consolas, monaco, "Ubuntu Mono", "Liberation Mono", "Courier New", Courier, monospace;
+ --body-text: #333;
+ --bg-primary: #fff;
+ --bg-secondary: #f6f8fa;
+ --bg-tertiary: #d7d7d7;
+ --link-primary: #004c9b;
+ --red-text: #d30017;
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ --body-text: #dde8ff;
+ --bg-primary: #0a2051;
+ --bg-secondary: #072c7c;
+ --bg-tertiary: #0041c9;
+ --link-primary: #64b2ff;
+ --red-text: #fe5b5f;
+ }
+}
+* {
+ padding: 0;
+ margin: 0;
+}
+
+article,
+aside,
+nav,
+ol,
+p,
+pre,
+section,
+ul {
+ margin-bottom: 1rem;
+}
+
+body {
+ max-width: 70ch;
+ padding: 2rem;
+ margin: 0 auto;
+ overflow-x: hidden;
+ font-family: var(--font-primary);
+ font-size: 1rem;
+ line-height: 1.5;
+ color: var(--body-text);
+ word-break: break-word;
+ overflow-wrap: break-word;
+ background: var(--bg-primary);
+}
+
+h1,
+h2,
+h3 {
+ padding-top: 0.875rem;
+ padding-bottom: 2px;
+ margin-bottom: 8px;
+ line-height: 1;
+ color: var(--body-text);
+}
+
+h1 {
+ font-size: 2.25rem;
+}
+
+h2 {
+ font-size: 1.85rem;
+}
+
+h3 {
+ font-size: 1.55rem;
+}
+
+a {
+ color: var(--link-primary);
+}
+
+a:hover,
+a:focus {
+ text-decoration: none;
+}
+
+header,
+footer {
+ padding: 2rem 1.5rem;
+ padding-right: calc(50vw - 50%);
+ padding-left: calc(50vw - 50%);
+ background: var(--bg-secondary);
+}
+
+header {
+ margin: -2rem calc(0px - (50vw - 50%)) 2rem;
+ border-bottom: 1px solid var(--bg-tertiary);
+}
+
+footer {
+ margin: 3rem calc(0px - (50vw - 50%)) -2rem;
+ text-align: center;
+ border-top: 1px solid var(--bg-tertiary);
+}
+
+header > *:first-child {
+ padding-top: 0;
+ margin-top: 0;
+}
+
+header > *:last-child {
+ margin-bottom: 0;
+}
+
+code,
+samp,
+kbd,
+pre {
+ padding: 3px 6px;
+ font-family: var(--font-secondary);
+ font-size: 0.9rem;
+ background: var(--bg-secondary);
+ border: 1px solid var(--bg-tertiary);
+ border-radius: 4px;
+}
+
+pre {
+ display: block;
+ max-width: 100%;
+ padding: 1rem 1.4rem;
+ overflow: auto;
+}
+
+pre code {
+ padding: 0;
+ margin: 0;
+ font-size: inherit;
+ color: inherit;
+ background: inherit;
+ border: 0;
+}
+
+code pre {
+ display: inline;
+ padding: 0;
+ margin: 0;
+ font-size: inherit;
+ color: inherit;
+ background: inherit;
+ border: 0;
+}
+
+details {
+ padding: 0.6rem 1rem;
+ background: var(--bg-primary);
+ border: 2px solid var(--link-primary);
+ border-radius: 4px;
+}
+
+summary {
+ font-weight: bold;
+ cursor: pointer;
+}
+
+details[open] {
+ padding-bottom: 0.75rem;
+}
+
+details[open] summary {
+ margin-bottom: 6px;
+}
+
+details[open] > *:last-child {
+ margin-bottom: 0;
+}
+
+.two-columns {
+ display: flex;
+}
+
+.column {
+ margin-inline-end: 20px;
+ flex: 1;
+}
+
+.count {
+ max-width: 220px;
+}
+
+.column dl {
+ width: 100%;
+}
+
+dl {
+ padding-top: 10px;
+}
+
+dt {
+ font-weight: bold;
+}
+
+dd {
+ padding-bottom: 10px;
+}
+
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+ margin-bottom: 0;
+}
+
+ul li {
+ margin-bottom: 0.5rem;
+}
+
+ol,
+ul {
+ padding-left: 2rem;
+}
+
+li li:has(pre, img, iframe, video, audio) {
+ margin-top: 1rem;
+ list-style: none;
+}
+
+ol li:not(li li) {
+ margin-bottom: 3rem;
+}
+
+iframe,
+img {
+ display: block;
+ max-width: 50%;
+ border: 0;
+}
+
+video,
+audio {
+ display: block;
+ border: 0;
+}
+
+.red-text {
+ color: var(--red-text);
+}
+
+.visually-hidden {
+ position: absolute;
+ display: block;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ overflow: hidden;
+ clip: rect(1px, 1px, 1px, 1px);
+ white-space: nowrap;
+ border: 0;
+ -webkit-clip-path: inset(50%);
+ clip-path: inset(50%);
+}
\ No newline at end of file
diff --git a/assets/dist/css/export-results.min.css b/assets/dist/css/export-results.min.css
new file mode 100644
index 0000000..d0691dd
--- /dev/null
+++ b/assets/dist/css/export-results.min.css
@@ -0,0 +1 @@
+:root{--font-primary:system-ui,"Segoe UI",roboto,helvetica,arial,sans-serif;--font-secondary:Consolas,monaco,"Ubuntu Mono","Liberation Mono","Courier New",Courier,monospace;--body-text:#333;--bg-primary:#fff;--bg-secondary:#f6f8fa;--bg-tertiary:#d7d7d7;--link-primary:#004c9b;--red-text:#d30017}@media (prefers-color-scheme:dark){:root{--body-text:#dde8ff;--bg-primary:#0a2051;--bg-secondary:#072c7c;--bg-tertiary:#0041c9;--link-primary:#64b2ff;--red-text:#fe5b5f}}*{margin:0;padding:0}article,aside,nav,ol,p,pre,section,ul{margin-bottom:1rem}body{background:var(--bg-primary);font-family:var(--font-primary);font-size:1rem;line-height:1.5;margin:0 auto;max-width:70ch;overflow-wrap:break-word;overflow-x:hidden;padding:2rem;word-break:break-word}body,h1,h2,h3{color:var(--body-text)}h1,h2,h3{line-height:1;margin-bottom:8px;padding-bottom:2px;padding-top:.875rem}h1{font-size:2.25rem}h2{font-size:1.85rem}h3{font-size:1.55rem}a{color:var(--link-primary)}a:focus,a:hover{text-decoration:none}footer,header{background:var(--bg-secondary);padding:2rem calc(50vw - 50%)}header{border-bottom:1px solid var(--bg-tertiary);margin:-2rem calc(-50vw + 50%) 2rem}footer{border-top:1px solid var(--bg-tertiary);margin:3rem calc(-50vw + 50%) -2rem;text-align:center}header>:first-child{margin-top:0;padding-top:0}header>:last-child{margin-bottom:0}code,kbd,pre,samp{background:var(--bg-secondary);border:1px solid var(--bg-tertiary);border-radius:4px;font-family:var(--font-secondary);font-size:.9rem;padding:3px 6px}pre{display:block;max-width:100%;overflow:auto;padding:1rem 1.4rem}code pre,pre code{background:inherit;border:0;color:inherit;font-size:inherit;margin:0;padding:0}code pre{display:inline}details{background:var(--bg-primary);border:2px solid var(--link-primary);border-radius:4px;padding:.6rem 1rem}summary{cursor:pointer;font-weight:700}details[open]{padding-bottom:.75rem}details[open] summary{margin-bottom:6px}details[open]>:last-child{margin-bottom:0}.two-columns{display:flex}.column{flex:1;margin-inline-end:20px}.count{max-width:220px}.column dl{width:100%}dl{padding-top:10px}dt{font-weight:700}dd{padding-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ul li{margin-bottom:.5rem}ol,ul{padding-left:2rem}li li:has(pre,img,iframe,video,audio){list-style:none;margin-top:1rem}ol li:not(li li){margin-bottom:3rem}iframe,img{max-width:50%}audio,iframe,img,video{border:0;display:block}.red-text{color:var(--red-text)}.visually-hidden{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);display:block;height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}
\ No newline at end of file
diff --git a/assets/dist/css/shared.css b/assets/dist/css/shared.css
index 5ea6345..b4e68d5 100644
--- a/assets/dist/css/shared.css
+++ b/assets/dist/css/shared.css
@@ -33,6 +33,10 @@ h2,
display: inline-block !important;
}
+code {
+ font-family: monospace !important;
+}
+
code,
kbd,
.kbd {
@@ -42,10 +46,6 @@ kbd,
border-radius: 3.2px;
}
-code {
- font-family: monospace;
-}
-
.bold {
font-weight: 600;
}
@@ -76,8 +76,8 @@ code {
font-weight: normal;
color: var(--sa11y-panel-primary);
cursor: pointer;
- background: none;
- border: 1px solid var(--sa11y-button-outline);
+ background: var(--sa11y-panel-bg-secondary);
+ border: 2px solid var(--sa11y-button-outline);
border-radius: 50%;
transition: all 0.2s ease-in-out;
}
diff --git a/assets/dist/css/shared.min.css b/assets/dist/css/shared.min.css
index 26b15c8..44e8e57 100644
--- a/assets/dist/css/shared.min.css
+++ b/assets/dist/css/shared.min.css
@@ -1 +1 @@
-.visually-hidden{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);display:block;height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}[hidden]{display:none!important}.header-text,.header-text-inline,h2{color:var(--sa11y-panel-primary);display:block;font-size:var(--sa11y-large-text);font-weight:600;margin-bottom:3px}.header-text-inline{display:inline-block!important}.kbd,code,kbd{background-color:var(--sa11y-panel-badge);border-radius:3.2px;color:var(--sa11y-panel-primary);padding:1.6px 4.8px}code{font-family:monospace}.bold{font-weight:600}.red-text{color:var(--sa11y-red-text)}.red-text,.yellow-text{font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text)}.yellow-text{color:var(--sa11y-yellow-text)}.close-btn{background:none;border:1px solid var(--sa11y-button-outline);border-radius:50%;color:var(--sa11y-panel-primary);cursor:pointer;float:var(--sa11y-float-rtl);font-size:var(--sa11y-normal-text);font-weight:400;height:32px;margin:0;position:relative;transition:all .2s ease-in-out;width:32px}.close-btn:focus,.close-btn:hover{background-color:var(--sa11y-shortcut-hover)}.close-btn:after{background:var(--sa11y-setting-switch-bg-off);bottom:-7px;content:"";left:-7px;-webkit-mask:var(--sa11y-close-btn-svg) center no-repeat;mask:var(--sa11y-close-btn-svg) center no-repeat;position:absolute;right:-7px;top:-7px}@media screen and (forced-colors:active){.close-btn:after{filter:invert(1)}}#container [tabindex="-1"]:focus,#container [tabindex="0"]:focus,#container a:focus,#container button:not(#settings-toggle):not(#outline-toggle):not(.switch):focus,#container select:focus{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}#container #outline-toggle:focus,#container #settings-toggle:focus,#container .switch:focus{box-shadow:inset 0 0 0 4px var(--sa11y-focus-color);outline:0}.tippy-box[data-theme~=sa11y-theme] [tabindex="-1"]:focus,.tippy-box[data-theme~=sa11y-theme] a:focus,.tippy-box[data-theme~=sa11y-theme] button:active,.tippy-box[data-theme~=sa11y-theme] button:focus{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}#container #outline-toggle:focus:not(:focus-visible),#container #settings-toggle:focus:not(:focus-visible),#container [tabindex="-1"]:focus:not(:focus-visible),#container [tabindex="0"]:focus:not(:focus-visible),#container button:focus:not(:focus-visible),#container select:focus:not(:focus-visible){box-shadow:none;outline:0}.tippy-box[data-theme~=sa11y-theme] [tabindex="-1"]:focus:not(:focus-visible),.tippy-box[data-theme~=sa11y-theme] a:focus:not(:focus-visible),.tippy-box[data-theme~=sa11y-theme] button:focus:not(:focus-visible){box-shadow:none;outline:0}#container [tabindex="-1"]:focus-visible,#container [tabindex="0"]:focus-visible,#container a:focus-visible,#container button:not(#settings-toggle):not(#outline-toggle):not(.switch):focus-visible,#container select:focus-visible{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}#container #outline-toggle:focus-visible,#container #settings-toggle:focus-visible,#container .switch:focus-visible{box-shadow:inset 0 0 0 4px var(--sa11y-focus-color);outline:0}.tippy-box[data-theme~=sa11y-theme] [tabindex="-1"]:focus-visible,.tippy-box[data-theme~=sa11y-theme] a:focus-visible,.tippy-box[data-theme~=sa11y-theme] button:focus-visible{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}@media screen and (forced-colors:active){#outline-toggle:focus,#settings-toggle:focus{border:3px solid transparent}#container [tabindex="-1"]:focus,#container [tabindex="0"]:focus,#container a:focus,#container button:focus,#container select:focus,.close-btn:focus,.tippy-box[data-theme~=sa11y-theme] [tabindex="-1"]:focus,.tippy-box[data-theme~=sa11y-theme] a:focus,.tippy-box[data-theme~=sa11y-theme] button:focus{outline:3px solid transparent!important}}
\ No newline at end of file
+.visually-hidden{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);display:block;height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}[hidden]{display:none!important}.header-text,.header-text-inline,h2{color:var(--sa11y-panel-primary);display:block;font-size:var(--sa11y-large-text);font-weight:600;margin-bottom:3px}.header-text-inline{display:inline-block!important}code{font-family:monospace!important}.kbd,code,kbd{background-color:var(--sa11y-panel-badge);border-radius:3.2px;color:var(--sa11y-panel-primary);padding:1.6px 4.8px}.bold{font-weight:600}.red-text{color:var(--sa11y-red-text)}.red-text,.yellow-text{font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text)}.yellow-text{color:var(--sa11y-yellow-text)}.close-btn{background:var(--sa11y-panel-bg-secondary);border:2px solid var(--sa11y-button-outline);border-radius:50%;color:var(--sa11y-panel-primary);cursor:pointer;float:var(--sa11y-float-rtl);font-size:var(--sa11y-normal-text);font-weight:400;height:32px;margin:0;position:relative;transition:all .2s ease-in-out;width:32px}.close-btn:focus,.close-btn:hover{background-color:var(--sa11y-shortcut-hover)}.close-btn:after{background:var(--sa11y-setting-switch-bg-off);bottom:-7px;content:"";left:-7px;-webkit-mask:var(--sa11y-close-btn-svg) center no-repeat;mask:var(--sa11y-close-btn-svg) center no-repeat;position:absolute;right:-7px;top:-7px}@media screen and (forced-colors:active){.close-btn:after{filter:invert(1)}}#container [tabindex="-1"]:focus,#container [tabindex="0"]:focus,#container a:focus,#container button:not(#settings-toggle):not(#outline-toggle):not(.switch):focus,#container select:focus{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}#container #outline-toggle:focus,#container #settings-toggle:focus,#container .switch:focus{box-shadow:inset 0 0 0 4px var(--sa11y-focus-color);outline:0}.tippy-box[data-theme~=sa11y-theme] [tabindex="-1"]:focus,.tippy-box[data-theme~=sa11y-theme] a:focus,.tippy-box[data-theme~=sa11y-theme] button:active,.tippy-box[data-theme~=sa11y-theme] button:focus{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}#container #outline-toggle:focus:not(:focus-visible),#container #settings-toggle:focus:not(:focus-visible),#container [tabindex="-1"]:focus:not(:focus-visible),#container [tabindex="0"]:focus:not(:focus-visible),#container button:focus:not(:focus-visible),#container select:focus:not(:focus-visible){box-shadow:none;outline:0}.tippy-box[data-theme~=sa11y-theme] [tabindex="-1"]:focus:not(:focus-visible),.tippy-box[data-theme~=sa11y-theme] a:focus:not(:focus-visible),.tippy-box[data-theme~=sa11y-theme] button:focus:not(:focus-visible){box-shadow:none;outline:0}#container [tabindex="-1"]:focus-visible,#container [tabindex="0"]:focus-visible,#container a:focus-visible,#container button:not(#settings-toggle):not(#outline-toggle):not(.switch):focus-visible,#container select:focus-visible{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}#container #outline-toggle:focus-visible,#container #settings-toggle:focus-visible,#container .switch:focus-visible{box-shadow:inset 0 0 0 4px var(--sa11y-focus-color);outline:0}.tippy-box[data-theme~=sa11y-theme] [tabindex="-1"]:focus-visible,.tippy-box[data-theme~=sa11y-theme] a:focus-visible,.tippy-box[data-theme~=sa11y-theme] button:focus-visible{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}@media screen and (forced-colors:active){#outline-toggle:focus,#settings-toggle:focus{border:3px solid transparent}#container [tabindex="-1"]:focus,#container [tabindex="0"]:focus,#container a:focus,#container button:focus,#container select:focus,.close-btn:focus,.tippy-box[data-theme~=sa11y-theme] [tabindex="-1"]:focus,.tippy-box[data-theme~=sa11y-theme] a:focus,.tippy-box[data-theme~=sa11y-theme] button:focus{outline:3px solid transparent!important}}
\ No newline at end of file
diff --git a/assets/dist/css/tooltips.css b/assets/dist/css/tooltips.css
index 6340646..b21de91 100644
--- a/assets/dist/css/tooltips.css
+++ b/assets/dist/css/tooltips.css
@@ -158,6 +158,7 @@ div {
}
.tippy-box[data-theme~=sa11y-theme] code {
font-family: monospace;
+ font-size: calc(var(--sa11y-normal-text) - 1px);
}
.tippy-box[data-theme~=sa11y-theme] code,
.tippy-box[data-theme~=sa11y-theme] kbd {
@@ -183,10 +184,8 @@ div {
position: relative;
padding: 0;
margin: 0;
- -webkit-margin-after: 0;
- margin-block-end: 0;
- -webkit-margin-before: 0;
- margin-block-start: 0;
+ margin-block-end: 0;
+ margin-block-start: 0;
}
.tippy-box[data-theme~=sa11y-theme] li {
display: list-item;
@@ -222,7 +221,7 @@ div {
color: var(--sa11y-panel-primary);
cursor: pointer;
background: var(--sa11y-panel-bg-secondary);
- border: 1px solid var(--sa11y-button-outline);
+ border: 2px solid var(--sa11y-button-outline);
border-radius: 5px;
}
.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]:hover, .tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]:focus {
diff --git a/assets/dist/css/tooltips.min.css b/assets/dist/css/tooltips.min.css
index d6009ce..2cad498 100644
--- a/assets/dist/css/tooltips.min.css
+++ b/assets/dist/css/tooltips.min.css
@@ -1 +1 @@
-a,button,code,div,h1,h2,kbd,li,ol,p,span,strong,svg,ul{all:unset;box-sizing:border-box!important}div{display:block}:after,:before{all:unset}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}@media (forced-colors:active){[data-tippy-root]{border:2px solid transparent;border-radius:5px}}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{border-top-color:initial;border-width:8px 8px 0;bottom:-7px;left:0;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:initial;border-width:0 8px 8px;left:0;top:-7px;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-left-color:initial;border-width:8px 0 8px 8px;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{border-right-color:initial;border-width:8px 8px 8px 0;left:-7px;transform-origin:center right}.tippy-arrow{color:#333;height:16px;width:16px}.tippy-arrow:before{border-color:transparent;border-style:solid;content:"";position:absolute}.tippy-content{padding:5px 9px;position:relative;z-index:1}.tippy-box[data-theme~=sa11y-theme][role=tooltip]{box-sizing:border-box!important}.tippy-box[data-theme~=sa11y-theme][role=tooltip][data-animation=fade][data-state=hidden]{opacity:0}.tippy-box[data-theme~=sa11y-theme][role=tooltip][data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}[role=dialog]{min-width:300px;text-align:start}[role=tooltip]{min-width:185px;text-align:center}.tippy-box[data-theme~=sa11y-theme]{-webkit-font-smoothing:auto;background-color:var(--sa11y-panel-bg);border-radius:4px;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15)!important;color:var(--sa11y-panel-primary);display:block;font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text);font-weight:400;letter-spacing:normal;line-height:22px;outline:0;padding:8px;position:relative;transition-property:transform,visibility,opacity}.tippy-box[data-theme~=sa11y-theme] code{font-family:monospace}.tippy-box[data-theme~=sa11y-theme] code,.tippy-box[data-theme~=sa11y-theme] kbd{-webkit-font-smoothing:auto;background-color:var(--sa11y-panel-badge);border-radius:3.2px;color:var(--sa11y-panel-primary);letter-spacing:normal;line-height:22px;padding:1.6px 4.8px}.tippy-box[data-theme~=sa11y-theme][data-placement^=top]{text-align:center}.tippy-box[data-theme~=sa11y-theme] .tippy-content{padding:5px 9px}.tippy-box[data-theme~=sa11y-theme] sub,.tippy-box[data-theme~=sa11y-theme] sup{font-size:var(--sa11y-small-text)}.tippy-box[data-theme~=sa11y-theme] ul{-webkit-margin-after:0;-webkit-margin-before:0;margin:0;margin-block-end:0;margin-block-start:0;padding:0;position:relative}.tippy-box[data-theme~=sa11y-theme] li{display:list-item;margin:5px 10px 0 20px;padding-bottom:5px}.tippy-box[data-theme~=sa11y-theme] a{color:var(--sa11y-hyperlink);cursor:pointer;text-decoration:underline}.tippy-box[data-theme~=sa11y-theme] a:focus,.tippy-box[data-theme~=sa11y-theme] a:hover{text-decoration:none}.tippy-box[data-theme~=sa11y-theme] strong{font-weight:600}.tippy-box[data-theme~=sa11y-theme] hr{background:var(--sa11y-panel-bg-splitter);border:none;height:1px;margin:10px 0;opacity:1;padding:0}.tippy-box[data-theme~=sa11y-theme] button.close-btn{margin:0}.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]{background:var(--sa11y-panel-bg-secondary);border:1px solid var(--sa11y-button-outline);border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;display:block;margin:10px 5px 5px 0;padding:4px 8px}.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]:focus,.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]:hover{background:var(--sa11y-shortcut-hover)}.tippy-box[data-theme~=sa11y-theme][data-placement^=top]>.tippy-arrow:before{border-top-color:var(--sa11y-panel-bg)}.tippy-box[data-theme~=sa11y-theme][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:var(--sa11y-panel-bg)}.tippy-box[data-theme~=sa11y-theme][data-placement^=left]>.tippy-arrow:before{border-left-color:var(--sa11y-panel-bg)}.tippy-box[data-theme~=sa11y-theme][data-placement^=right]>.tippy-arrow:before{border-right-color:var(--sa11y-panel-bg)}@media (forced-colors:active){.tippy-box[data-theme~=sa11y-theme][data-placement^=bottom]>.tippy-arrow:before,.tippy-box[data-theme~=sa11y-theme][data-placement^=left]>.tippy-arrow:before,.tippy-box[data-theme~=sa11y-theme][data-placement^=right]>.tippy-arrow:before,.tippy-box[data-theme~=sa11y-theme][data-placement^=top]>.tippy-arrow:before{filter:invert(1);forced-color-adjust:none}.tippy-box[data-theme~=sa11y-theme] .tippy-arrow{z-index:-1}}
\ No newline at end of file
+a,button,code,div,h1,h2,kbd,li,ol,p,span,strong,svg,ul{all:unset;box-sizing:border-box!important}div{display:block}:after,:before{all:unset}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}@media (forced-colors:active){[data-tippy-root]{border:2px solid transparent;border-radius:5px}}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{border-top-color:initial;border-width:8px 8px 0;bottom:-7px;left:0;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:initial;border-width:0 8px 8px;left:0;top:-7px;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-left-color:initial;border-width:8px 0 8px 8px;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{border-right-color:initial;border-width:8px 8px 8px 0;left:-7px;transform-origin:center right}.tippy-arrow{color:#333;height:16px;width:16px}.tippy-arrow:before{border-color:transparent;border-style:solid;content:"";position:absolute}.tippy-content{padding:5px 9px;position:relative;z-index:1}.tippy-box[data-theme~=sa11y-theme][role=tooltip]{box-sizing:border-box!important}.tippy-box[data-theme~=sa11y-theme][role=tooltip][data-animation=fade][data-state=hidden]{opacity:0}.tippy-box[data-theme~=sa11y-theme][role=tooltip][data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}[role=dialog]{min-width:300px;text-align:start}[role=tooltip]{min-width:185px;text-align:center}.tippy-box[data-theme~=sa11y-theme]{-webkit-font-smoothing:auto;background-color:var(--sa11y-panel-bg);border-radius:4px;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15)!important;color:var(--sa11y-panel-primary);display:block;font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text);font-weight:400;letter-spacing:normal;line-height:22px;outline:0;padding:8px;position:relative;transition-property:transform,visibility,opacity}.tippy-box[data-theme~=sa11y-theme] code{font-family:monospace;font-size:calc(var(--sa11y-normal-text) - 1px)}.tippy-box[data-theme~=sa11y-theme] code,.tippy-box[data-theme~=sa11y-theme] kbd{-webkit-font-smoothing:auto;background-color:var(--sa11y-panel-badge);border-radius:3.2px;color:var(--sa11y-panel-primary);letter-spacing:normal;line-height:22px;padding:1.6px 4.8px}.tippy-box[data-theme~=sa11y-theme][data-placement^=top]{text-align:center}.tippy-box[data-theme~=sa11y-theme] .tippy-content{padding:5px 9px}.tippy-box[data-theme~=sa11y-theme] sub,.tippy-box[data-theme~=sa11y-theme] sup{font-size:var(--sa11y-small-text)}.tippy-box[data-theme~=sa11y-theme] ul{margin:0;margin-block-end:0;margin-block-start:0;padding:0;position:relative}.tippy-box[data-theme~=sa11y-theme] li{display:list-item;margin:5px 10px 0 20px;padding-bottom:5px}.tippy-box[data-theme~=sa11y-theme] a{color:var(--sa11y-hyperlink);cursor:pointer;text-decoration:underline}.tippy-box[data-theme~=sa11y-theme] a:focus,.tippy-box[data-theme~=sa11y-theme] a:hover{text-decoration:none}.tippy-box[data-theme~=sa11y-theme] strong{font-weight:600}.tippy-box[data-theme~=sa11y-theme] hr{background:var(--sa11y-panel-bg-splitter);border:none;height:1px;margin:10px 0;opacity:1;padding:0}.tippy-box[data-theme~=sa11y-theme] button.close-btn{margin:0}.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]{background:var(--sa11y-panel-bg-secondary);border:2px solid var(--sa11y-button-outline);border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;display:block;margin:10px 5px 5px 0;padding:4px 8px}.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]:focus,.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]:hover{background:var(--sa11y-shortcut-hover)}.tippy-box[data-theme~=sa11y-theme][data-placement^=top]>.tippy-arrow:before{border-top-color:var(--sa11y-panel-bg)}.tippy-box[data-theme~=sa11y-theme][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:var(--sa11y-panel-bg)}.tippy-box[data-theme~=sa11y-theme][data-placement^=left]>.tippy-arrow:before{border-left-color:var(--sa11y-panel-bg)}.tippy-box[data-theme~=sa11y-theme][data-placement^=right]>.tippy-arrow:before{border-right-color:var(--sa11y-panel-bg)}@media (forced-colors:active){.tippy-box[data-theme~=sa11y-theme][data-placement^=bottom]>.tippy-arrow:before,.tippy-box[data-theme~=sa11y-theme][data-placement^=left]>.tippy-arrow:before,.tippy-box[data-theme~=sa11y-theme][data-placement^=right]>.tippy-arrow:before,.tippy-box[data-theme~=sa11y-theme][data-placement^=top]>.tippy-arrow:before{filter:invert(1);forced-color-adjust:none}.tippy-box[data-theme~=sa11y-theme] .tippy-arrow{z-index:-1}}
\ No newline at end of file
diff --git a/assets/dist/js/lang/bg.js b/assets/dist/js/lang/bg.js
new file mode 100644
index 0000000..49d61f3
--- /dev/null
+++ b/assets/dist/js/lang/bg.js
@@ -0,0 +1,232 @@
+
+/*!
+ * Sa11y, the accessibility quality assurance assistant.
+ * @version 3.0.6
+ * @author Adam Chaboryk, Toronto Metropolitan University
+ * @license GPL-2.0-or-later
+ * @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
+ * @contact adam.chaboryk@torontomu.ca
+ * GitHub: git+https://github.com/ryersondmp/sa11y.git | Website: https://sa11y.netlify.app
+ * For all acknowledgements, please visit: https://sa11y.netlify.app/acknowledgements/
+ * The above copyright notice shall be included in all copies or substantial portions of the Software.
+**/
+/*! WARNING: This is a machine-generated translation and may contain errors or inaccuracies. */
+var bg = {
+ // Bulgarian
+ strings: {
+ LANG_CODE: 'bg',
+ MAIN_TOGGLE_LABEL: 'Проверка на достъпността',
+ CONTAINER_LABEL: 'Проверка за достъпност',
+ ERROR: 'Грешка',
+ ERRORS: 'Грешки',
+ WARNING: 'Предупреждение',
+ WARNINGS: 'Предупреждения',
+ GOOD: 'Добър',
+ ON: 'На',
+ OFF: 'Изключено',
+ ALERT_TEXT: 'Предупреждение',
+ ALERT_CLOSE: 'Затвори',
+ OUTLINE: 'Конспект на страницата',
+ PAGE_ISSUES: 'Проблеми на страницата',
+ SETTINGS: 'Настройки',
+ CONTRAST: 'Контраст',
+ FORM_LABELS: 'Етикети на формуляри',
+ LINKS_ADVANCED: 'Връзки (за напреднали)',
+ DARK_MODE: 'Тъмният режим',
+ SHORTCUT_SCREEN_READER: 'Преминете към въпроса. Бърза клавишна комбинация: Alt S',
+ SHORTCUT_TOOLTIP: 'Преминаване към въпроса',
+ NEW_TAB: 'Отваря нов раздел',
+ PANEL_HEADING: 'Проверка на достъпността',
+ PANEL_STATUS_NONE: 'Не са открити грешки.',
+ PANEL_ICON_WARNINGS: 'намерени предупреждения.',
+ PANEL_ICON_TOTAL: 'общ брой намерени проблеми.',
+ NOT_VISIBLE_ALERT: 'Елементът, който се опитвате да видите, не е видим; може да е скрит или да се намира в компонент на акордеон или таб. Ето един преглед:',
+ ERROR_MISSING_ROOT_TARGET: 'Цялата страница беше проверена за достъпност, тъй като целевата област %(root)
не съществува.',
+ HEADING_NOT_VISIBLE_ALERT: 'Заглавието не е видимо; то може да е скрито или да се намира в компонент на акордеон или таб.',
+ SKIP_TO_PAGE_ISSUES: 'Преминаване към страница Проблеми',
+ CONSOLE_ERROR_MESSAGE: 'Съжаляваме, но има проблем с проверката за достъпност на тази страница. Можете ли да го докладвате чрез този формуляр или на GitHub?',
+
+ // Dismiss
+ PANEL_DISMISS_BUTTON: 'Показване на %(dismissCount) отхвърлени предупреждения',
+ DISMISS: 'Отхвърляне на',
+ DISMISSED: 'Отхвърлени предупреждения',
+ DISMISS_REMINDER: 'Моля, обърнете внимание, че предупрежденията се отхвърлят само временно. Изчистването на историята на браузъра и бисквитките ще възстанови всички отхвърлени преди това предупреждения във всички страници.',
+
+ // Export
+ DATE: 'Дата',
+ PAGE_TITLE: 'Заглавие на страницата',
+ RESULTS: 'Резултати',
+ EXPORT_RESULTS: 'Износ на резултати',
+ GENERATED: 'Резултатите са генерирани с %(tool).',
+ PREVIEW: 'Преглед',
+ ELEMENT: 'Елемент',
+ PATH: 'Път',
+
+ // Colour filters
+ COLOUR_FILTER: 'Цветен филтър',
+ PROTANOPIA: 'Protanopia',
+ DEUTERANOPIA: 'Deuteranopia',
+ TRITANOPIA: 'Tritanopia',
+ MONOCHROMACY: 'Монохромност',
+ COLOUR_FILTER_MESSAGE: 'Проверете за елементи, които са трудни за възприемане или разграничаване от други цветове.',
+ RED_EYE: 'Червени слепи.',
+ GREEN_EYE: 'Зелена щора.',
+ BLUE_EYE: 'Синя сляпа.',
+ MONO_EYE: 'Червени, сини и зелени слепи.',
+ COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Цветните филтри не работят в режим на висок контраст.',
+
+ // Alternative text stop words
+ SUSPICIOUS_ALT_STOPWORDS: [
+ 'изображение',
+ 'графичен',
+ 'снимка',
+ 'снимка',
+ ],
+ PLACEHOLDER_ALT_STOPWORDS: [
+ 'alt',
+ 'изображение',
+ 'снимка',
+ 'Декоративен',
+ 'заместител',
+ 'заместващо изображение',
+ 'Разделител',
+ ],
+ PARTIAL_ALT_STOPWORDS: [
+ 'кликнете върху',
+ 'Кликнете тук',
+ 'кликнете тук за повече',
+ 'Кликнете тук, за да научите повече',
+ 'като кликнете тук',
+ 'разгледайте',
+ 'Подробности тук',
+ 'изтегляне',
+ 'Изтегляне от тук',
+ 'разберете',
+ 'Научете повече',
+ 'формуляр',
+ 'тук',
+ 'информация',
+ 'информация',
+ 'връзка',
+ 'научете',
+ 'научете повече',
+ 'да се научите да',
+ 'повече',
+ 'страница',
+ 'хартия',
+ 'прочетете повече',
+ 'прочетете',
+ 'прочетете това',
+ 'този',
+ 'тази страница',
+ 'този уебсайт',
+ 'Преглед на',
+ 'разгледайте нашите',
+ 'уебсайт',
+ ],
+ WARNING_ALT_STOPWORDS: [
+ 'Кликнете тук',
+ ],
+ NEW_WINDOW_PHRASES: [
+ 'външен',
+ 'нов раздел',
+ 'нов прозорец',
+ 'изскачащи прозорци',
+ 'изскачащи',
+ ],
+ FILE_TYPE_PHRASES: [
+ 'документ',
+ 'електронна таблица',
+ 'изчислителен лист',
+ 'компресиран файл',
+ 'архивиран файл',
+ 'работен лист',
+ 'PowerPoint',
+ 'презентация',
+ 'инсталиране на',
+ 'видео',
+ 'аудио',
+ 'pdf',
+ ],
+ LANG_READABILITY: 'Четивност',
+ LANG_AVG_SENTENCE: 'Средна стойност на думите в изречение:',
+ LANG_COMPLEX_WORDS: 'Сложни думи:',
+ LANG_TOTAL_WORDS: 'Думи:',
+ LANG_VERY_DIFFICULT: 'Много трудно',
+ LANG_DIFFICULT: 'Трудно',
+ LANG_FAIRLY_DIFFICULT: 'Доста трудно',
+ LANG_GOOD: 'Добър',
+ READABILITY_NO_P_OR_LI_MESSAGE: 'Невъзможно е да се изчисли оценката за четимост. Не е намерен параграф <p>
или съдържание на списък <li>
.',
+ READABILITY_NOT_ENOUGH_CONTENT_MESSAGE: 'Недостатъчно съдържание за изчисляване на оценката за четимост.',
+ HEADING_NON_CONSECUTIVE_LEVEL: 'Използвано е непоследователно ниво на заглавието. Заглавията никога не трябва да прескачат нива или да преминават от Heading %(prevLevel) към Heading %(level).',
+ HEADING_EMPTY: 'Намерено е празно заглавие! За да го поправите, изтрийте този ред или променете формата му от Heading %(level) на Normal или Paragraph.',
+ HEADING_LONG: 'Курсът е дълъг! Заглавията трябва да се използват за организиране на съдържанието и предаване на структурата. Те трябва да са кратки, информативни и уникални. Моля, запазете заглавията по-малко от 160 знака (не повече от едно изречение).
aria-hidden="true"
, но все още може да се фокусира с клавиатурата. Ако намерите, че връзката е излишна или дублирана, добавете също tabindex="-1"
.',
+ LINK_IMAGE_NO_ALT_TEXT: 'Изображението в линка е маркирано като декоративно и няма текст на линка. Моля, добавете alt текст към изображението, който описва предназначението на връзката.',
+ LINK_IMAGE_HAS_TEXT: 'Изображението е маркирано като декоративно, въпреки че връзката използва околния текст като описателен етикет.',
+ LINK_IMAGE_LONG_ALT: 'Описанието на Alt текста на свързано изображение е прекалено дълго. Alt текстът на свързаните изображения трябва да описва мястото, до което води връзката, а не буквално описание на изображението. Помислете за използване на заглавието на страницата, към която води връзката, като алт текст. for
към етикета, който съответства на id
на този вход. id
към този вход и добавете съответстващ атрибут for
към етикета.',
+ EMBED_VIDEO: 'Моля, уверете се, че всички видеоклипове имат затворени субтитри. Осигуряването на субтитри за цялото аудио и видео съдържание е задължително изискване на ниво А. Субтитрите подпомагат хората с D/глухота или с увреден слух.',
+ EMBED_AUDIO: 'Моля, уверете се, че предоставяте препис за всички подкастове. Предоставянето на преписи за аудиосъдържание е задължително изискване на ниво А. Транскрипциите подпомагат хората с Г/глухота или с увреден слух, но могат да бъдат от полза за всички. Помислете за поставяне на транскрипцията под или в панел с хармоника.',
+ EMBED_DATA_VIZ: 'Подобни уиджети за визуализация на данни често са проблематични за хора, които използват клавиатура или екранен четец за навигация, и могат да създадат значителни трудности за хора със слабо зрение или цветна слепота. Препоръчително е да предоставите същата информация в алтернативен формат (текст или таблица) под уиджета. title
или aria-label
на елемента iframe
. Научете повече за iFrames..',
+ EMBED_GENERAL_WARNING: 'Невъзможно е да се провери вграденото съдържание. Моля, уверете се, че изображенията имат alt текст, видеоклиповете имат надписи, текстът е достатъчно контрастен, а интерактивните компоненти са достъпни от клавиатурата.',
+ EMBED_UNFOCUSABLE: '<iframe>
с фокусируеми елементи не трябва да има tabindex="-1"
. Вграденото съдържание няма да бъде достъпно с клавиатурата.',
+ QA_BAD_LINK: 'Открита е лоша връзка. Изглежда, че връзката сочи към среда за разработка. <strong>
strong importance</strong>
или <em>
emphasis</em>
.',
+ QA_SUBSCRIPT_WARNING: 'Опциите за форматиране на долни и горни индекси трябва да се използват само за промяна на позицията на текста за типографски конвенции или стандарти. Те не трябва да се използват единствено за целите на представянето или външния вид. Форматирането на цели изречения създава проблеми с четливостта. Подходящите случаи на употреба включват показване на експоненти, редови числа, като например 4th вместо fourth, и химически формули (например H2O).',
+ TABLES_MISSING_HEADINGS: 'Липсват заглавия на таблици! Достъпните таблици се нуждаят от HTML маркировка, която обозначава клетките със заглавия и клетките с данни и определя тяхната връзка. Тази информация осигурява контекст за хората, които използват помощни технологии. Таблиците трябва да се използват само за таблични данни. <th>
. %(root)
не съществува.',
+ HEADING_NOT_VISIBLE_ALERT: 'Заглавието не е видимо; то може да е скрито или да се намира в компонент на акордеон или таб.',
+ SKIP_TO_PAGE_ISSUES: 'Преминаване към страница Проблеми',
+ CONSOLE_ERROR_MESSAGE: 'Съжаляваме, но има проблем с проверката за достъпност на тази страница. Можете ли да го докладвате чрез този формуляр или на GitHub?',
+
+ // Dismiss
+ PANEL_DISMISS_BUTTON: 'Показване на %(dismissCount) отхвърлени предупреждения',
+ DISMISS: 'Отхвърляне на',
+ DISMISSED: 'Отхвърлени предупреждения',
+ DISMISS_REMINDER: 'Моля, обърнете внимание, че предупрежденията се отхвърлят само временно. Изчистването на историята на браузъра и бисквитките ще възстанови всички отхвърлени преди това предупреждения във всички страници.',
+
+ // Export
+ DATE: 'Дата',
+ PAGE_TITLE: 'Заглавие на страницата',
+ RESULTS: 'Резултати',
+ EXPORT_RESULTS: 'Износ на резултати',
+ GENERATED: 'Резултатите са генерирани с %(tool).',
+ PREVIEW: 'Преглед',
+ ELEMENT: 'Елемент',
+ PATH: 'Път',
+
+ // Colour filters
+ COLOUR_FILTER: 'Цветен филтър',
+ PROTANOPIA: 'Protanopia',
+ DEUTERANOPIA: 'Deuteranopia',
+ TRITANOPIA: 'Tritanopia',
+ MONOCHROMACY: 'Монохромност',
+ COLOUR_FILTER_MESSAGE: 'Проверете за елементи, които са трудни за възприемане или разграничаване от други цветове.',
+ RED_EYE: 'Червени слепи.',
+ GREEN_EYE: 'Зелена щора.',
+ BLUE_EYE: 'Синя сляпа.',
+ MONO_EYE: 'Червени, сини и зелени слепи.',
+ COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Цветните филтри не работят в режим на висок контраст.',
+
+ // Alternative text stop words
+ SUSPICIOUS_ALT_STOPWORDS: [
+ 'изображение',
+ 'графичен',
+ 'снимка',
+ 'снимка',
+ ],
+ PLACEHOLDER_ALT_STOPWORDS: [
+ 'alt',
+ 'изображение',
+ 'снимка',
+ 'Декоративен',
+ 'заместител',
+ 'заместващо изображение',
+ 'Разделител',
+ ],
+ PARTIAL_ALT_STOPWORDS: [
+ 'кликнете върху',
+ 'Кликнете тук',
+ 'кликнете тук за повече',
+ 'Кликнете тук, за да научите повече',
+ 'като кликнете тук',
+ 'разгледайте',
+ 'Подробности тук',
+ 'изтегляне',
+ 'Изтегляне от тук',
+ 'разберете',
+ 'Научете повече',
+ 'формуляр',
+ 'тук',
+ 'информация',
+ 'информация',
+ 'връзка',
+ 'научете',
+ 'научете повече',
+ 'да се научите да',
+ 'повече',
+ 'страница',
+ 'хартия',
+ 'прочетете повече',
+ 'прочетете',
+ 'прочетете това',
+ 'този',
+ 'тази страница',
+ 'този уебсайт',
+ 'Преглед на',
+ 'разгледайте нашите',
+ 'уебсайт',
+ ],
+ WARNING_ALT_STOPWORDS: [
+ 'Кликнете тук',
+ ],
+ NEW_WINDOW_PHRASES: [
+ 'външен',
+ 'нов раздел',
+ 'нов прозорец',
+ 'изскачащи прозорци',
+ 'изскачащи',
+ ],
+ FILE_TYPE_PHRASES: [
+ 'документ',
+ 'електронна таблица',
+ 'изчислителен лист',
+ 'компресиран файл',
+ 'архивиран файл',
+ 'работен лист',
+ 'PowerPoint',
+ 'презентация',
+ 'инсталиране на',
+ 'видео',
+ 'аудио',
+ 'pdf',
+ ],
+ LANG_READABILITY: 'Четивност',
+ LANG_AVG_SENTENCE: 'Средна стойност на думите в изречение:',
+ LANG_COMPLEX_WORDS: 'Сложни думи:',
+ LANG_TOTAL_WORDS: 'Думи:',
+ LANG_VERY_DIFFICULT: 'Много трудно',
+ LANG_DIFFICULT: 'Трудно',
+ LANG_FAIRLY_DIFFICULT: 'Доста трудно',
+ LANG_GOOD: 'Добър',
+ READABILITY_NO_P_OR_LI_MESSAGE: 'Невъзможно е да се изчисли оценката за четимост. Не е намерен параграф <p>
или съдържание на списък <li>
.',
+ READABILITY_NOT_ENOUGH_CONTENT_MESSAGE: 'Недостатъчно съдържание за изчисляване на оценката за четимост.',
+ HEADING_NON_CONSECUTIVE_LEVEL: 'Използвано е непоследователно ниво на заглавието. Заглавията никога не трябва да прескачат нива или да преминават от Heading %(prevLevel) към Heading %(level).',
+ HEADING_EMPTY: 'Намерено е празно заглавие! За да го поправите, изтрийте този ред или променете формата му от Heading %(level) на Normal или Paragraph.',
+ HEADING_LONG: 'Курсът е дълъг! Заглавията трябва да се използват за организиране на съдържанието и предаване на структурата. Те трябва да са кратки, информативни и уникални. Моля, запазете заглавията по-малко от 160 знака (не повече от едно изречение). aria-hidden="true"
, но все още може да се фокусира с клавиатурата. Ако намерите, че връзката е излишна или дублирана, добавете също tabindex="-1"
.',
+ LINK_IMAGE_NO_ALT_TEXT: 'Изображението в линка е маркирано като декоративно и няма текст на линка. Моля, добавете alt текст към изображението, който описва предназначението на връзката.',
+ LINK_IMAGE_HAS_TEXT: 'Изображението е маркирано като декоративно, въпреки че връзката използва околния текст като описателен етикет.',
+ LINK_IMAGE_LONG_ALT: 'Описанието на Alt текста на свързано изображение е прекалено дълго. Alt текстът на свързаните изображения трябва да описва мястото, до което води връзката, а не буквално описание на изображението. Помислете за използване на заглавието на страницата, към която води връзката, като алт текст. for
към етикета, който съответства на id
на този вход. id
към този вход и добавете съответстващ атрибут for
към етикета.',
+ EMBED_VIDEO: 'Моля, уверете се, че всички видеоклипове имат затворени субтитри. Осигуряването на субтитри за цялото аудио и видео съдържание е задължително изискване на ниво А. Субтитрите подпомагат хората с D/глухота или с увреден слух.',
+ EMBED_AUDIO: 'Моля, уверете се, че предоставяте препис за всички подкастове. Предоставянето на преписи за аудиосъдържание е задължително изискване на ниво А. Транскрипциите подпомагат хората с Г/глухота или с увреден слух, но могат да бъдат от полза за всички. Помислете за поставяне на транскрипцията под или в панел с хармоника.',
+ EMBED_DATA_VIZ: 'Подобни уиджети за визуализация на данни често са проблематични за хора, които използват клавиатура или екранен четец за навигация, и могат да създадат значителни трудности за хора със слабо зрение или цветна слепота. Препоръчително е да предоставите същата информация в алтернативен формат (текст или таблица) под уиджета. title
или aria-label
на елемента iframe
. Научете повече за iFrames..',
+ EMBED_GENERAL_WARNING: 'Невъзможно е да се провери вграденото съдържание. Моля, уверете се, че изображенията имат alt текст, видеоклиповете имат надписи, текстът е достатъчно контрастен, а интерактивните компоненти са достъпни от клавиатурата.',
+ EMBED_UNFOCUSABLE: '<iframe>
с фокусируеми елементи не трябва да има tabindex="-1"
. Вграденото съдържание няма да бъде достъпно с клавиатурата.',
+ QA_BAD_LINK: 'Открита е лоша връзка. Изглежда, че връзката сочи към среда за разработка. <strong>
strong importance</strong>
или <em>
emphasis</em>
.',
+ QA_SUBSCRIPT_WARNING: 'Опциите за форматиране на долни и горни индекси трябва да се използват само за промяна на позицията на текста за типографски конвенции или стандарти. Те не трябва да се използват единствено за целите на представянето или външния вид. Форматирането на цели изречения създава проблеми с четливостта. Подходящите случаи на употреба включват показване на експоненти, редови числа, като например 4th вместо fourth, и химически формули (например H2O).',
+ TABLES_MISSING_HEADINGS: 'Липсват заглавия на таблици! Достъпните таблици се нуждаят от HTML маркировка, която обозначава клетките със заглавия и клетките с данни и определя тяхната връзка. Тази информация осигурява контекст за хората, които използват помощни технологии. Таблиците трябва да се използват само за таблични данни. <th>
. aria-hidden="true"
, ale je stále zaostřitelný z klávesnice. Pokud máte v úmyslu skrýt nadbytečný nebo duplicitní odkaz, přidejte také tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Odkaz má aria-hidden="true"
, ale stále je dostupný pomocí klávesnice. Pokud plánujete skrýt nadbytečný nebo duplicitní odkaz, přidejte také tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Obrázek v odkazu je označen jako dekorativní a není v něm žádný text odkazu. Přidejte prosím k obrázku text alt, který popisuje cíl odkazu.',
LINK_IMAGE_HAS_TEXT: 'Obrázek je označen jako dekorativní, ačkoli odkaz používá okolní text jako popisek.',
LINK_IMAGE_LONG_ALT: 'Popis Alt textu u odkazovaného obrázku je příliš dlouhý. Text alt u odkazovaných obrázků by měl popisovat, kam odkaz vede, nikoli doslovný popis obrázku. Zvažte, zda jako alt text nepoužít název stránky, na kterou odkazuje. for
ke štítku, který odpovídá id
tohoto vstupu. id
a ke štítku přidejte odpovídající atribut for
.',
EMBED_VIDEO: 'Zajistěte, aby všechna videa byla opatřena skrytými titulky. Poskytování titulků pro veškerý audio a video obsah je povinným požadavkem úrovně A. Titulky podporují osoby s postižením D/neslyšící nebo nedoslýchavé.',
EMBED_AUDIO: 'Ujistěte se prosím, že jste poskytli přepis všech podcastů. Poskytování přepisů zvukového obsahu je povinným požadavkem úrovně A. Přepisy podporují osoby s poruchou sluchu nebo neslyšící, ale mohou být přínosem pro všechny. Zvažte umístění přepisu pod nebo v rámci akordeonového panelu.',
EMBED_DATA_VIZ: 'Widgety pro vizualizaci dat, jako je tento, jsou často problematické pro lidi, kteří k navigaci používají klávesnici nebo čtečku obrazovky, a mohou představovat značné potíže pro lidi se slabým zrakem nebo barvoslepostí. Doporučujeme poskytovat stejné informace v alternativním (textovém nebo tabulkovém) formátu pod widgetem. title
nebo aria-label
na elementu iframe
. Další informace o iFrame..',
+ EMBED_MISSING_TITLE: 'Vložený obsah vyžaduje přístupný název, který popisuje jeho obsah. Uveďte jedinečný atribut title
nebo aria-label
na elementu iframe
. Další informace o iFrame..',
EMBED_GENERAL_WARNING: 'Nelze zkontrolovat vložený obsah. Ujistěte se prosím, že obrázky mají alt text, videa mají titulky, text je dostatečně kontrastní a interaktivní komponenty jsou přístupné z klávesnice..',
+ EMBED_UNFOCUSABLE: '<iframe>
s nezaměřitelnými prvky by nemělo mít tabindex="-1"
. Vložený obsah nebude přístupný klávesnicí.',
QA_BAD_LINK: 'Nalezen špatný odkaz. Zdá se, že odkaz vede na vývojové prostředí. aria-hidden="true"
, ale je stále zaostřitelný z klávesnice. Pokud máte v úmyslu skrýt nadbytečný nebo duplicitní odkaz, přidejte také tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Odkaz má aria-hidden="true"
, ale stále je dostupný pomocí klávesnice. Pokud plánujete skrýt nadbytečný nebo duplicitní odkaz, přidejte také tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Obrázek v odkazu je označen jako dekorativní a není v něm žádný text odkazu. Přidejte prosím k obrázku text alt, který popisuje cíl odkazu.',
LINK_IMAGE_HAS_TEXT: 'Obrázek je označen jako dekorativní, ačkoli odkaz používá okolní text jako popisek.',
LINK_IMAGE_LONG_ALT: 'Popis Alt textu u odkazovaného obrázku je příliš dlouhý. Text alt u odkazovaných obrázků by měl popisovat, kam odkaz vede, nikoli doslovný popis obrázku. Zvažte, zda jako alt text nepoužít název stránky, na kterou odkazuje. for
ke štítku, který odpovídá id
tohoto vstupu. id
a ke štítku přidejte odpovídající atribut for
.',
EMBED_VIDEO: 'Zajistěte, aby všechna videa byla opatřena skrytými titulky. Poskytování titulků pro veškerý audio a video obsah je povinným požadavkem úrovně A. Titulky podporují osoby s postižením D/neslyšící nebo nedoslýchavé.',
EMBED_AUDIO: 'Ujistěte se prosím, že jste poskytli přepis všech podcastů. Poskytování přepisů zvukového obsahu je povinným požadavkem úrovně A. Přepisy podporují osoby s poruchou sluchu nebo neslyšící, ale mohou být přínosem pro všechny. Zvažte umístění přepisu pod nebo v rámci akordeonového panelu.',
EMBED_DATA_VIZ: 'Widgety pro vizualizaci dat, jako je tento, jsou často problematické pro lidi, kteří k navigaci používají klávesnici nebo čtečku obrazovky, a mohou představovat značné potíže pro lidi se slabým zrakem nebo barvoslepostí. Doporučujeme poskytovat stejné informace v alternativním (textovém nebo tabulkovém) formátu pod widgetem. title
nebo aria-label
na elementu iframe
. Další informace o iFrame..',
+ EMBED_MISSING_TITLE: 'Vložený obsah vyžaduje přístupný název, který popisuje jeho obsah. Uveďte jedinečný atribut title
nebo aria-label
na elementu iframe
. Další informace o iFrame..',
EMBED_GENERAL_WARNING: 'Nelze zkontrolovat vložený obsah. Ujistěte se prosím, že obrázky mají alt text, videa mají titulky, text je dostatečně kontrastní a interaktivní komponenty jsou přístupné z klávesnice..',
+ EMBED_UNFOCUSABLE: '<iframe>
s nezaměřitelnými prvky by nemělo mít tabindex="-1"
. Vložený obsah nebude přístupný klávesnicí.',
QA_BAD_LINK: 'Nalezen špatný odkaz. Zdá se, že odkaz vede na vývojové prostředí. aria-hidden="true"
, men er stadig tastaturfokuserbart. Hvis du har til hensigt at skjule et overflødigt eller duplikeret link, skal du også tilføje tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Linket har aria-hidden="true"
, men er stadig tastaturfokuserbar. Hvis du har til hensigt at skjule en overflødig eller duplisert lenke, legg til tabindex="-1"
også.',
LINK_IMAGE_NO_ALT_TEXT: 'Billedet i linket er markeret som dekorativt, og der er ingen linktekst. Tilføj venligst alt-tekst til billedet, der beskriver linkets destination.',
LINK_IMAGE_HAS_TEXT: 'Billedet er markeret som dekorativt, selvom linket bruger den omgivende tekst som en beskrivende label.',
LINK_IMAGE_LONG_ALT: 'Alt-tekstbeskrivelsen på et linket billede er for lang. Alt-teksten på linkede billeder skal beskrive, hvor linket fører dig hen, ikke en bogstavelig beskrivelse af billedet. Overvej at bruge titlen på den side, der linkes til, som alt-tekst. for
-attribut til den label, der matcher id
for dette input. id
til dette input, og tilføj en matchende for
-attribut til etiketten.',
EMBED_VIDEO: 'Sørg for, at alle videoer har undertekster. Det er et obligatorisk krav på niveau A at levere undertekster til alt lyd- og videoindhold. Undertekster støtter mennesker, der er døve eller hørehæmmede.',
EMBED_AUDIO: 'Sørg for at levere en udskrift til alle podcasts. At levere udskrifter til lydindhold er et obligatorisk niveau A-krav. Udskrifter hjælper mennesker, der er døve eller hørehæmmede, men kan være til gavn for alle. Overvej at placere udskriften nedenfor eller i et harmonika-panel.',
EMBED_DATA_VIZ: 'Datavisualiseringswidgets som denne er ofte problematiske for folk, der bruger et tastatur eller en skærmlæser til at navigere, og kan udgøre betydelige vanskeligheder for folk, der er svagtseende eller farveblinde. Det anbefales at give de samme oplysninger i et alternativt format (tekst eller tabel) under widgetten. title
eller aria-label
attribut på iframe
-elementet. Få mere at vide om iFrames.',
+ EMBED_MISSING_TITLE: 'Indlejret indhold kræver et tilgængeligt navn, der beskriver dets indhold. Angiv venligst en unik title
eller aria-label
attribut på iframe
-elementet. Få mere at vide om iFrames.',
EMBED_GENERAL_WARNING: 'Kan ikke kontrollere indlejret indhold. Sørg for, at billeder har alt-tekst, videoer har undertekster, tekst har tilstrækkelig kontrast, og interaktive komponenter er tilgængelige via tastaturet.',
+ EMBED_UNFOCUSABLE: '<iframe>
med ikke-fokuserbare elementer bør ikke have tabindex="-1"
. Det indlejrede indhold vil ikke være tilgængeligt med tastaturet.',
QA_BAD_LINK: 'Dårligt link fundet. Linket ser ud til at pege på et udviklingsmiljø. aria-hidden="true"
, men er stadig tastaturfokuserbart. Hvis du har til hensigt at skjule et overflødigt eller duplikeret link, skal du også tilføje tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Linket har aria-hidden="true"
, men er stadig tastaturfokuserbar. Hvis du har til hensigt at skjule en overflødig eller duplisert lenke, legg til tabindex="-1"
også.',
LINK_IMAGE_NO_ALT_TEXT: 'Billedet i linket er markeret som dekorativt, og der er ingen linktekst. Tilføj venligst alt-tekst til billedet, der beskriver linkets destination.',
LINK_IMAGE_HAS_TEXT: 'Billedet er markeret som dekorativt, selvom linket bruger den omgivende tekst som en beskrivende label.',
LINK_IMAGE_LONG_ALT: 'Alt-tekstbeskrivelsen på et linket billede er for lang. Alt-teksten på linkede billeder skal beskrive, hvor linket fører dig hen, ikke en bogstavelig beskrivelse af billedet. Overvej at bruge titlen på den side, der linkes til, som alt-tekst. for
-attribut til den label, der matcher id
for dette input. id
til dette input, og tilføj en matchende for
-attribut til etiketten.',
EMBED_VIDEO: 'Sørg for, at alle videoer har undertekster. Det er et obligatorisk krav på niveau A at levere undertekster til alt lyd- og videoindhold. Undertekster støtter mennesker, der er døve eller hørehæmmede.',
EMBED_AUDIO: 'Sørg for at levere en udskrift til alle podcasts. At levere udskrifter til lydindhold er et obligatorisk niveau A-krav. Udskrifter hjælper mennesker, der er døve eller hørehæmmede, men kan være til gavn for alle. Overvej at placere udskriften nedenfor eller i et harmonika-panel.',
EMBED_DATA_VIZ: 'Datavisualiseringswidgets som denne er ofte problematiske for folk, der bruger et tastatur eller en skærmlæser til at navigere, og kan udgøre betydelige vanskeligheder for folk, der er svagtseende eller farveblinde. Det anbefales at give de samme oplysninger i et alternativt format (tekst eller tabel) under widgetten. title
eller aria-label
attribut på iframe
-elementet. Få mere at vide om iFrames.',
+ EMBED_MISSING_TITLE: 'Indlejret indhold kræver et tilgængeligt navn, der beskriver dets indhold. Angiv venligst en unik title
eller aria-label
attribut på iframe
-elementet. Få mere at vide om iFrames.',
EMBED_GENERAL_WARNING: 'Kan ikke kontrollere indlejret indhold. Sørg for, at billeder har alt-tekst, videoer har undertekster, tekst har tilstrækkelig kontrast, og interaktive komponenter er tilgængelige via tastaturet.',
+ EMBED_UNFOCUSABLE: '<iframe>
med ikke-fokuserbare elementer bør ikke have tabindex="-1"
. Det indlejrede indhold vil ikke være tilgængeligt med tastaturet.',
QA_BAD_LINK: 'Dårligt link fundet. Linket ser ud til at pege på et udviklingsmiljø. aria-hidden="true"
, ist aber immer noch mit der Tastatur fokussierbar. Wenn Du einen redundanten oder doppelten Link ausblenden willst, füge tabindex="-1"
hinzu.',
+ LINK_HIDDEN_FOCUSABLE: 'Der Link hat aria-hidden="true"
, ist aber trotzdem tastaturfokussierbar. Wenn du beabsichtigst, einen überflüssigen oder doppelten Link zu verbergen, füge auch tabindex="-1"
hinzu.',
LINK_IMAGE_NO_ALT_TEXT: 'Das Bild innerhalb des Links ist als dekorativ gekennzeichnet und es gibt keinen Linktext. Bitte füge dem Bild einen Alt-Text hinzu, der das Ziel des Links beschreibt.',
LINK_IMAGE_HAS_TEXT: 'Das Bild ist als dekorativ gekennzeichnet, obwohl der Link den umgebenden Text als beschreibende Bezeichnung verwendet.',
LINK_IMAGE_LONG_ALT: 'Alt-Text-Beschreibung auf einem verlinkten Bild ist zu lang. Der Alt-Text von verlinkten Bildern sollte beschreiben, wohin der Link führt, und nicht eine wörtliche Beschreibung des Bildes enthalten. Erwäge, den Titel der Seite, auf die verlinkt wird, als Alt-Text zu verwenden. for
-Attribut hinzu, das der id
dieser Eingabe entspricht. id
hinzu und füge dem Label ein passendes for
-Attribut hinzu.',
@@ -192,8 +203,9 @@ var de = {
EMBED_VIDEO: 'Bitte stelle sicher, dass alle Videos Untertitel haben. Das Bereitstellen von Untertiteln für alle Audio- und Videoinhalte ist eine obligatorische Anforderung der Stufe-A. Bildunterschriften unterstützen Menschen, die Taub oder schwerhörig sind.',
EMBED_AUDIO: 'Bitte stelle sicher, dass Du ein Transkript für alle Podcasts bereitstellst. Das Bereitstellen von Transkripten für Audioinhalte ist eine obligatorische Anforderung der Stufe-A. Transkripte unterstützen Menschen, die gehörlos oder schwerhörig sind, können aber allen zugute kommen. Erwäge, das Transkript unter- oder innerhalb eines Akkordeonfelds zu platzieren.',
EMBED_DATA_VIZ: 'Datenvisualisierungs-Widgets wie dieses sind oft problematisch für Menschen, die eine Tastatur oder einen Bildschirmleser zum Navigieren verwenden, und können für Menschen mit Sehbehinderung oder Farbenblindheit erhebliche Schwierigkeiten darstellen. Es wird empfohlen, dieselben Informationen in einem alternativen (Text- oder Tabellen-)Format unterhalb des Widgets bereitzustellen. title
- oder aria-label
-Attribut für das iframe
-Element an. Erfahre mehr über iFrames.',
+ EMBED_MISSING_TITLE: 'Eingebetteter Inhalt erfordert einen zugänglichen Namen, der seinen Inhalt beschreibt. Bitte gib ein eindeutiges title
- oder aria-label
-Attribut für das iframe
-Element an. Erfahre mehr über iFrames.',
EMBED_GENERAL_WARNING: 'Eingebetteter Inhalt kann nicht überprüft werden. Bitte stelle sicher, dass Bilder Alt-Text haben, Videos Untertitel haben, Text einen ausreichenden Kontrast hat und interaktive Komponenten mit der Tastatur zugänglich sind.',
+ EMBED_UNFOCUSABLE: '<iframe>
mit nicht fokussierbaren Elementen sollte kein tabindex="-1"
haben. Der eingebettete Inhalt wird nicht mit der Tastatur erreichbar sein.',
// Quality assurance
QA_BAD_LINK: 'Ungültiger Link gefunden. Link scheint auf eine Entwicklungsumgebung zu verweisen. aria-hidden="true"
, ist aber immer noch mit der Tastatur fokussierbar. Wenn Du einen redundanten oder doppelten Link ausblenden willst, füge tabindex="-1"
hinzu.',
+ LINK_HIDDEN_FOCUSABLE: 'Der Link hat aria-hidden="true"
, ist aber trotzdem tastaturfokussierbar. Wenn du beabsichtigst, einen überflüssigen oder doppelten Link zu verbergen, füge auch tabindex="-1"
hinzu.',
LINK_IMAGE_NO_ALT_TEXT: 'Das Bild innerhalb des Links ist als dekorativ gekennzeichnet und es gibt keinen Linktext. Bitte füge dem Bild einen Alt-Text hinzu, der das Ziel des Links beschreibt.',
LINK_IMAGE_HAS_TEXT: 'Das Bild ist als dekorativ gekennzeichnet, obwohl der Link den umgebenden Text als beschreibende Bezeichnung verwendet.',
LINK_IMAGE_LONG_ALT: 'Alt-Text-Beschreibung auf einem verlinkten Bild ist zu lang. Der Alt-Text von verlinkten Bildern sollte beschreiben, wohin der Link führt, und nicht eine wörtliche Beschreibung des Bildes enthalten. Erwäge, den Titel der Seite, auf die verlinkt wird, als Alt-Text zu verwenden. for
-Attribut hinzu, das der id
dieser Eingabe entspricht. id
hinzu und füge dem Label ein passendes for
-Attribut hinzu.',
@@ -198,8 +209,9 @@
EMBED_VIDEO: 'Bitte stelle sicher, dass alle Videos Untertitel haben. Das Bereitstellen von Untertiteln für alle Audio- und Videoinhalte ist eine obligatorische Anforderung der Stufe-A. Bildunterschriften unterstützen Menschen, die Taub oder schwerhörig sind.',
EMBED_AUDIO: 'Bitte stelle sicher, dass Du ein Transkript für alle Podcasts bereitstellst. Das Bereitstellen von Transkripten für Audioinhalte ist eine obligatorische Anforderung der Stufe-A. Transkripte unterstützen Menschen, die gehörlos oder schwerhörig sind, können aber allen zugute kommen. Erwäge, das Transkript unter- oder innerhalb eines Akkordeonfelds zu platzieren.',
EMBED_DATA_VIZ: 'Datenvisualisierungs-Widgets wie dieses sind oft problematisch für Menschen, die eine Tastatur oder einen Bildschirmleser zum Navigieren verwenden, und können für Menschen mit Sehbehinderung oder Farbenblindheit erhebliche Schwierigkeiten darstellen. Es wird empfohlen, dieselben Informationen in einem alternativen (Text- oder Tabellen-)Format unterhalb des Widgets bereitzustellen. title
- oder aria-label
-Attribut für das iframe
-Element an. Erfahre mehr über iFrames.',
+ EMBED_MISSING_TITLE: 'Eingebetteter Inhalt erfordert einen zugänglichen Namen, der seinen Inhalt beschreibt. Bitte gib ein eindeutiges title
- oder aria-label
-Attribut für das iframe
-Element an. Erfahre mehr über iFrames.',
EMBED_GENERAL_WARNING: 'Eingebetteter Inhalt kann nicht überprüft werden. Bitte stelle sicher, dass Bilder Alt-Text haben, Videos Untertitel haben, Text einen ausreichenden Kontrast hat und interaktive Komponenten mit der Tastatur zugänglich sind.',
+ EMBED_UNFOCUSABLE: '<iframe>
mit nicht fokussierbaren Elementen sollte kein tabindex="-1"
haben. Der eingebettete Inhalt wird nicht mit der Tastatur erreichbar sein.',
// Quality assurance
QA_BAD_LINK: 'Ungültiger Link gefunden. Link scheint auf eine Entwicklungsumgebung zu verweisen. aria-hidden="true"
αλλά εξακολουθεί να είναι δυνατή η εστίαση στο πληκτρολόγιο. Αν σκοπεύετε να αποκρύψετε έναν περιττό ή διπλό σύνδεσμο, προσθέστε επίσης tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Ο σύνδεσμος έχει aria-hidden="true"
αλλά εξακολουθεί να είναι προσβάσιμος με το πληκτρολόγιο. Αν σκοπεύετε να κρύψετε έναν περιττό ή διπλό σύνδεσμο, προσθέστε επίσης tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Η εικόνα εντός του συνδέσμου χαρακτηρίζεται ως διακοσμητική και δεν υπάρχει κείμενο συνδέσμου. Προσθέστε κείμενο alt στην εικόνα που περιγράφει τον προορισμό του συνδέσμου.',
LINK_IMAGE_HAS_TEXT: 'Η εικόνα χαρακτηρίζεται ως διακοσμητική, αν και ο σύνδεσμος χρησιμοποιεί το περιβάλλον κείμενο ως περιγραφική ετικέτα.',
LINK_IMAGE_LONG_ALT: 'Η περιγραφή του κειμένου Alt σε μια συνδεδεμένη εικόνα είναι υπερβολικά μεγάλη. Το κείμενο alt σε εικόνες που συνδέονται με συνδέσμους θα πρέπει να περιγράφει πού σας οδηγεί ο σύνδεσμος και όχι μια κυριολεκτική περιγραφή της εικόνας. Σκεφτείτε να χρησιμοποιήσετε τον τίτλο της σελίδας στην οποία παραπέμπει ως κείμενο alt. for
στην ετικέτα που ταιριάζει με το id
αυτής της εισόδου. id
σε αυτή την είσοδο και προσθέστε ένα αντίστοιχο χαρακτηριστικό for
στην ετικέτα.',
EMBED_VIDEO: 'Παρακαλούμε βεβαιωθείτε ότι όλα τα βίντεο διαθέτουν κλειστούς υπότιτλους. Η παροχή υπότιτλων για όλο το περιεχόμενο ήχου και βίντεο αποτελεί υποχρεωτική απαίτηση του επιπέδου Α. Οι λεζάντες υποστηρίζουν τα άτομα που είναι κωφά ή βαρήκοα.',
EMBED_AUDIO: 'Βεβαιωθείτε ότι παρέχετε μεταγραφή για όλα τα podcasts. Η παροχή μεταγραφής για ηχητικό περιεχόμενο αποτελεί υποχρεωτική απαίτηση του επιπέδου Α. Οι απομαγνητοφωνήσεις υποστηρίζουν τα άτομα με κώφωση ή βαρηκοΐα, αλλά μπορούν να ωφελήσουν όλους. Εξετάστε το ενδεχόμενο να τοποθετήσετε την απομαγνητοφώνηση παρακάτω ή μέσα σε ένα πάνελ ακορντεόν.',
EMBED_DATA_VIZ: 'Τέτοια widgets απεικόνισης δεδομένων είναι συχνά προβληματικά για άτομα που χρησιμοποιούν πληκτρολόγιο ή πρόγραμμα ανάγνωσης οθόνης για να πλοηγηθούν και μπορεί να παρουσιάσουν σημαντικές δυσκολίες για άτομα με χαμηλή όραση ή αχρωματοψία. Συνιστάται η παροχή των ίδιων πληροφοριών σε εναλλακτική μορφή (κείμενο ή πίνακας) κάτω από το widget. title
ή aria-label
στο στοιχείο iframe
. Μάθετε περισσότερα για τα iFrames.',
+ EMBED_MISSING_TITLE: 'Το ενσωματωμένο περιεχόμενο απαιτεί ένα προσβάσιμο όνομα που περιγράφει το περιεχόμενό του. Παρακαλείστε να δώσετε ένα μοναδικό χαρακτηριστικό title
ή aria-label
στο στοιχείο iframe
. Μάθετε περισσότερα για τα iFrames.',
EMBED_GENERAL_WARNING: 'Δεν είναι δυνατός ο έλεγχος του ενσωματωμένου περιεχομένου. Παρακαλούμε βεβαιωθείτε ότι οι εικόνες έχουν alt κείμενο, τα βίντεο έχουν λεζάντες, το κείμενο έχει επαρκή αντίθεση και τα διαδραστικά στοιχεία είναι προσβάσιμα στο πληκτρολόγιο.',
+ EMBED_UNFOCUSABLE: 'Το <iframe>
με στοιχεία που δεν είναι εστιασμένα δεν πρέπει να έχει tabindex="-1"
. Το ενσωματωμένο περιεχόμενο δεν θα είναι προσβάσιμο με το πληκτρολόγιο.',
QA_BAD_LINK: 'Βρέθηκε κακός σύνδεσμος. Ο σύνδεσμος φαίνεται να δείχνει σε περιβάλλον ανάπτυξης. aria-hidden="true"
αλλά εξακολουθεί να είναι δυνατή η εστίαση στο πληκτρολόγιο. Αν σκοπεύετε να αποκρύψετε έναν περιττό ή διπλό σύνδεσμο, προσθέστε επίσης tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Ο σύνδεσμος έχει aria-hidden="true"
αλλά εξακολουθεί να είναι προσβάσιμος με το πληκτρολόγιο. Αν σκοπεύετε να κρύψετε έναν περιττό ή διπλό σύνδεσμο, προσθέστε επίσης tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Η εικόνα εντός του συνδέσμου χαρακτηρίζεται ως διακοσμητική και δεν υπάρχει κείμενο συνδέσμου. Προσθέστε κείμενο alt στην εικόνα που περιγράφει τον προορισμό του συνδέσμου.',
LINK_IMAGE_HAS_TEXT: 'Η εικόνα χαρακτηρίζεται ως διακοσμητική, αν και ο σύνδεσμος χρησιμοποιεί το περιβάλλον κείμενο ως περιγραφική ετικέτα.',
LINK_IMAGE_LONG_ALT: 'Η περιγραφή του κειμένου Alt σε μια συνδεδεμένη εικόνα είναι υπερβολικά μεγάλη. Το κείμενο alt σε εικόνες που συνδέονται με συνδέσμους θα πρέπει να περιγράφει πού σας οδηγεί ο σύνδεσμος και όχι μια κυριολεκτική περιγραφή της εικόνας. Σκεφτείτε να χρησιμοποιήσετε τον τίτλο της σελίδας στην οποία παραπέμπει ως κείμενο alt. for
στην ετικέτα που ταιριάζει με το id
αυτής της εισόδου. id
σε αυτή την είσοδο και προσθέστε ένα αντίστοιχο χαρακτηριστικό for
στην ετικέτα.',
EMBED_VIDEO: 'Παρακαλούμε βεβαιωθείτε ότι όλα τα βίντεο διαθέτουν κλειστούς υπότιτλους. Η παροχή υπότιτλων για όλο το περιεχόμενο ήχου και βίντεο αποτελεί υποχρεωτική απαίτηση του επιπέδου Α. Οι λεζάντες υποστηρίζουν τα άτομα που είναι κωφά ή βαρήκοα.',
EMBED_AUDIO: 'Βεβαιωθείτε ότι παρέχετε μεταγραφή για όλα τα podcasts. Η παροχή μεταγραφής για ηχητικό περιεχόμενο αποτελεί υποχρεωτική απαίτηση του επιπέδου Α. Οι απομαγνητοφωνήσεις υποστηρίζουν τα άτομα με κώφωση ή βαρηκοΐα, αλλά μπορούν να ωφελήσουν όλους. Εξετάστε το ενδεχόμενο να τοποθετήσετε την απομαγνητοφώνηση παρακάτω ή μέσα σε ένα πάνελ ακορντεόν.',
EMBED_DATA_VIZ: 'Τέτοια widgets απεικόνισης δεδομένων είναι συχνά προβληματικά για άτομα που χρησιμοποιούν πληκτρολόγιο ή πρόγραμμα ανάγνωσης οθόνης για να πλοηγηθούν και μπορεί να παρουσιάσουν σημαντικές δυσκολίες για άτομα με χαμηλή όραση ή αχρωματοψία. Συνιστάται η παροχή των ίδιων πληροφοριών σε εναλλακτική μορφή (κείμενο ή πίνακας) κάτω από το widget. title
ή aria-label
στο στοιχείο iframe
. Μάθετε περισσότερα για τα iFrames.',
+ EMBED_MISSING_TITLE: 'Το ενσωματωμένο περιεχόμενο απαιτεί ένα προσβάσιμο όνομα που περιγράφει το περιεχόμενό του. Παρακαλείστε να δώσετε ένα μοναδικό χαρακτηριστικό title
ή aria-label
στο στοιχείο iframe
. Μάθετε περισσότερα για τα iFrames.',
EMBED_GENERAL_WARNING: 'Δεν είναι δυνατός ο έλεγχος του ενσωματωμένου περιεχομένου. Παρακαλούμε βεβαιωθείτε ότι οι εικόνες έχουν alt κείμενο, τα βίντεο έχουν λεζάντες, το κείμενο έχει επαρκή αντίθεση και τα διαδραστικά στοιχεία είναι προσβάσιμα στο πληκτρολόγιο.',
+ EMBED_UNFOCUSABLE: 'Το <iframe>
με στοιχεία που δεν είναι εστιασμένα δεν πρέπει να έχει tabindex="-1"
. Το ενσωματωμένο περιεχόμενο δεν θα είναι προσβάσιμο με το πληκτρολόγιο.',
QA_BAD_LINK: 'Βρέθηκε κακός σύνδεσμος. Ο σύνδεσμος φαίνεται να δείχνει σε περιβάλλον ανάπτυξης. aria-hidden="true"
but is still keyboard focusable. If you are intending to hide a redundant or duplicate link, add tabindex="-1"
as well.',
+ LINK_HIDDEN_FOCUSABLE: 'Link has aria-hidden="true"
but is still keyboard focusable. If you are intending to hide a redundant or duplicate link, add tabindex="-1"
as well.',
LINK_IMAGE_NO_ALT_TEXT: 'Image within link is marked as decorative and there is no link text. Please add alt text to the image that describes the destination of the link.',
LINK_IMAGE_HAS_TEXT: 'Image is marked as decorative, although the link is using the surrounding text as a descriptive label.',
LINK_IMAGE_LONG_ALT: 'Alt text description on a linked image is too long. The alt text on linked images should describe where the link takes you, not a literal description of the image. Consider using the title of the page it links to as the alt text. for
attribute to the label that matches the id
of this input. id
to this input, and add a matching for
attribute to the label.',
@@ -172,8 +185,9 @@ var en = {
EMBED_VIDEO: 'Please ensure all videos have closed captioning. Providing captions for all audio and video content is a mandatory Level A requirement. Captions support people who are D/deaf or hard-of-hearing.',
EMBED_AUDIO: 'Please ensure to provide a transcript for all podcasts. Providing transcripts for audio content is a mandatory Level A requirement. Transcripts support people who are D/deaf or hard-of-hearing, but can benefit everyone. Consider placing the transcript below or within an accordion panel.',
EMBED_DATA_VIZ: 'Data visualization widgets like this are often problematic for people who use a keyboard or screen reader to navigate, and can present significant difficulties for people who have low vision or colourblindness. It\'s recommended to provide the same information in an alternative (text or table) format below the widget. title
or aria-label
attribute on the iframe
element. Learn more about iFrames.',
+ EMBED_MISSING_TITLE: 'Embedded content requires an accessible name that describes its contents. Please provide a unique title
or aria-label
attribute on the iframe
element. Learn more about iFrames.',
EMBED_GENERAL_WARNING: 'Unable to check embedded content. Please make sure that images have alt text, videos have captions, text has sufficient contrast, and interactive components are keyboard accessible.',
+ EMBED_UNFOCUSABLE: '<iframe>
with focusable elements should not have tabindex="-1"
. The embedded content will not be keyboard accessible.',
// Quality assurance
QA_BAD_LINK: 'Bad link found. Link appears to point to a development environment. aria-hidden="true"
but is still keyboard focusable. If you are intending to hide a redundant or duplicate link, add tabindex="-1"
as well.',
+ LINK_HIDDEN_FOCUSABLE: 'Link has aria-hidden="true"
but is still keyboard focusable. If you are intending to hide a redundant or duplicate link, add tabindex="-1"
as well.',
LINK_IMAGE_NO_ALT_TEXT: 'Image within link is marked as decorative and there is no link text. Please add alt text to the image that describes the destination of the link.',
LINK_IMAGE_HAS_TEXT: 'Image is marked as decorative, although the link is using the surrounding text as a descriptive label.',
LINK_IMAGE_LONG_ALT: 'Alt text description on a linked image is too long. The alt text on linked images should describe where the link takes you, not a literal description of the image. Consider using the title of the page it links to as the alt text. for
attribute to the label that matches the id
of this input. id
to this input, and add a matching for
attribute to the label.',
@@ -178,8 +191,9 @@
EMBED_VIDEO: 'Please ensure all videos have closed captioning. Providing captions for all audio and video content is a mandatory Level A requirement. Captions support people who are D/deaf or hard-of-hearing.',
EMBED_AUDIO: 'Please ensure to provide a transcript for all podcasts. Providing transcripts for audio content is a mandatory Level A requirement. Transcripts support people who are D/deaf or hard-of-hearing, but can benefit everyone. Consider placing the transcript below or within an accordion panel.',
EMBED_DATA_VIZ: 'Data visualization widgets like this are often problematic for people who use a keyboard or screen reader to navigate, and can present significant difficulties for people who have low vision or colourblindness. It\'s recommended to provide the same information in an alternative (text or table) format below the widget. title
or aria-label
attribute on the iframe
element. Learn more about iFrames.',
+ EMBED_MISSING_TITLE: 'Embedded content requires an accessible name that describes its contents. Please provide a unique title
or aria-label
attribute on the iframe
element. Learn more about iFrames.',
EMBED_GENERAL_WARNING: 'Unable to check embedded content. Please make sure that images have alt text, videos have captions, text has sufficient contrast, and interactive components are keyboard accessible.',
+ EMBED_UNFOCUSABLE: '<iframe>
with focusable elements should not have tabindex="-1"
. The embedded content will not be keyboard accessible.',
// Quality assurance
QA_BAD_LINK: 'Bad link found. Link appears to point to a development environment. aria-hidden="true"
but is still keyboard focusable. If you are intending to hide a redundant or duplicate link, add tabindex="-1"
as well.',
+ LINK_HIDDEN_FOCUSABLE: 'Link has aria-hidden="true"
but is still keyboard focusable. If you are intending to hide a redundant or duplicate link, add tabindex="-1"
as well.',
LINK_IMAGE_NO_ALT_TEXT: 'Image within link is marked as decorative and there is no link text. Please add alt text to the image that describes the destination of the link.',
LINK_IMAGE_HAS_TEXT: 'Image is marked as decorative, although the link is using the surrounding text as a descriptive label.',
LINK_IMAGE_LONG_ALT: 'Alt text description on a linked image is too long. The alt text on linked images should describe where the link takes you, not a literal description of the image. Consider using the title of the page it links to as the alt text. for
attribute to the label that matches the id
of this input. id
to this input, and add a matching for
attribute to the label.',
@@ -172,8 +185,9 @@ var enUS = {
EMBED_VIDEO: 'Please ensure all videos have closed captioning. Providing captions for all audio and video content is a mandatory Level A requirement. Captions support people who are D/deaf or hard-of-hearing.',
EMBED_AUDIO: 'Please ensure to provide a transcript for all podcasts. Providing transcripts for audio content is a mandatory Level A requirement. Transcripts support people who are D/deaf or hard-of-hearing, but can benefit everyone. Consider placing the transcript below or within an accordion panel.',
EMBED_DATA_VIZ: 'Data visualization widgets like this are often problematic for people who use a keyboard or screen reader to navigate, and can present significant difficulties for people who have low vision or colorblindness. It\'s recommended to provide the same information in an alternative (text or table) format below the widget. title
or aria-label
attribute on the iframe
element. Learn more about iFrames.',
+ EMBED_MISSING_TITLE: 'Embedded content requires an accessible name that describes its contents. Please provide a unique title
or aria-label
attribute on the iframe
element. Learn more about iFrames.',
EMBED_GENERAL_WARNING: 'Unable to check embedded content. Please make sure that images have alt text, videos have captions, text has sufficient contrast, and interactive components are keyboard accessible.',
+ EMBED_UNFOCUSABLE: '<iframe>
with focusable elements should not have tabindex="-1"
. The embedded content will not be keyboard accessible.',
// Quality assurance
QA_BAD_LINK: 'Bad link found. Link appears to point to a development environment. aria-hidden="true"
but is still keyboard focusable. If you are intending to hide a redundant or duplicate link, add tabindex="-1"
as well.',
+ LINK_HIDDEN_FOCUSABLE: 'Link has aria-hidden="true"
but is still keyboard focusable. If you are intending to hide a redundant or duplicate link, add tabindex="-1"
as well.',
LINK_IMAGE_NO_ALT_TEXT: 'Image within link is marked as decorative and there is no link text. Please add alt text to the image that describes the destination of the link.',
LINK_IMAGE_HAS_TEXT: 'Image is marked as decorative, although the link is using the surrounding text as a descriptive label.',
LINK_IMAGE_LONG_ALT: 'Alt text description on a linked image is too long. The alt text on linked images should describe where the link takes you, not a literal description of the image. Consider using the title of the page it links to as the alt text. for
attribute to the label that matches the id
of this input. id
to this input, and add a matching for
attribute to the label.',
@@ -178,8 +191,9 @@
EMBED_VIDEO: 'Please ensure all videos have closed captioning. Providing captions for all audio and video content is a mandatory Level A requirement. Captions support people who are D/deaf or hard-of-hearing.',
EMBED_AUDIO: 'Please ensure to provide a transcript for all podcasts. Providing transcripts for audio content is a mandatory Level A requirement. Transcripts support people who are D/deaf or hard-of-hearing, but can benefit everyone. Consider placing the transcript below or within an accordion panel.',
EMBED_DATA_VIZ: 'Data visualization widgets like this are often problematic for people who use a keyboard or screen reader to navigate, and can present significant difficulties for people who have low vision or colorblindness. It\'s recommended to provide the same information in an alternative (text or table) format below the widget. title
or aria-label
attribute on the iframe
element. Learn more about iFrames.',
+ EMBED_MISSING_TITLE: 'Embedded content requires an accessible name that describes its contents. Please provide a unique title
or aria-label
attribute on the iframe
element. Learn more about iFrames.',
EMBED_GENERAL_WARNING: 'Unable to check embedded content. Please make sure that images have alt text, videos have captions, text has sufficient contrast, and interactive components are keyboard accessible.',
+ EMBED_UNFOCUSABLE: '<iframe>
with focusable elements should not have tabindex="-1"
. The embedded content will not be keyboard accessible.',
// Quality assurance
QA_BAD_LINK: 'Bad link found. Link appears to point to a development environment. aria-hidden="true"
pero aún se puede enfocar con el teclado. Si tiene la intención de ocultar un enlace redundante o duplicado, agregue tabindex="-1"
también.',
+ LINK_HIDDEN_FOCUSABLE: 'El enlace tiene aria-hidden="true"
pero sigue siendo enfocable por el teclado. Si tienes la intención de ocultar un enlace redundante o duplicado, añade también tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'La imagen dentro del enlace está marcada como decorativa y no hay texto de enlace. Agregue texto alternativo a la imagen que describa el destino del enlace.',
LINK_IMAGE_HAS_TEXT: 'La imagen está marcada como decorativa, aunque el enlace utiliza el texto circundante como etiqueta descriptiva.',
LINK_IMAGE_LONG_ALT: 'La descripción del texto alternativo en una imagen vinculada es demasiado larga. El texto alternativo en las imágenes vinculadas debe describir a dónde lo lleva el enlace, no una descripción literal de la imagen. Considere usar el título de la página a la que enlaza como texto alternativo. for
a la etiqueta que coincida con el id
de esta entrada. id
a esta entrada y agregue un atributo for
coincidente a la etiqueta.',
@@ -172,8 +183,10 @@ var es = {
EMBED_VIDEO: 'Asegúrese de que todos los videos tengan subtítulos. Proporcionar subtítulos para todo el contenido de audio y video es un requisito obligatorio de nivel A. Los subtítulos ayudan a las personas sordas o con dificultades auditivas.',
EMBED_AUDIO: 'Asegúrese de proporcionar una transcripción para todos los podcasts. Proporcionar transcripciones para el contenido de audio es un requisito obligatorio de nivel A. Las transcripciones ayudan a las personas sordas o con dificultades auditivas, pero pueden beneficiar a todos. Considere colocar la transcripción debajo o dentro de un panel de acordeón.',
EMBED_DATA_VIZ: 'Los widgets de visualización de datos como este a menudo son problemáticos para las personas que usan un teclado o un lector de pantalla para navegar, y pueden presentar dificultades significativas para las personas con problemas de visión o daltónicos. Se recomienda proporcionar la misma información en un formato alternativo (texto o tabla) debajo del widget. title
o aria-label
en el elemento iframe
. Más información sobre iFrames.',
+ EMBED_MISSING_TITLE: 'El contenido incrustado requiere un nombre accesible que describa su contenido. Proporcione un atributo único title
o aria-label
en el elemento iframe
. Más información sobre iFrames.',
EMBED_GENERAL_WARNING: 'No se puede comprobar el contenido incrustado. Asegúrese de que las imágenes tengan texto alternativo, los videos tengan subtítulos, el texto tenga suficiente contraste y los componentes interactivos sean accesibles mediante teclado.',
+ EMBED_FOCUSABLE: '<iframe>
with focusable elements should not have tabindex="-1"
. The embedded content will not be keyboard accessible.',
+ EMBED_UNFOCUSABLE: '<iframe>
con elementos no enfocables no debe tener tabindex="-1"
. El contenido incrustado no será accesible mediante el teclado.',
// Quality assurance
QA_BAD_LINK: 'Enlace incorrecto encontrado. El enlace parece apuntar a un entorno de desarrollo. aria-hidden="true"
pero aún se puede enfocar con el teclado. Si tiene la intención de ocultar un enlace redundante o duplicado, agregue tabindex="-1"
también.',
+ LINK_HIDDEN_FOCUSABLE: 'El enlace tiene aria-hidden="true"
pero sigue siendo enfocable por el teclado. Si tienes la intención de ocultar un enlace redundante o duplicado, añade también tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'La imagen dentro del enlace está marcada como decorativa y no hay texto de enlace. Agregue texto alternativo a la imagen que describa el destino del enlace.',
LINK_IMAGE_HAS_TEXT: 'La imagen está marcada como decorativa, aunque el enlace utiliza el texto circundante como etiqueta descriptiva.',
LINK_IMAGE_LONG_ALT: 'La descripción del texto alternativo en una imagen vinculada es demasiado larga. El texto alternativo en las imágenes vinculadas debe describir a dónde lo lleva el enlace, no una descripción literal de la imagen. Considere usar el título de la página a la que enlaza como texto alternativo. for
a la etiqueta que coincida con el id
de esta entrada. id
a esta entrada y agregue un atributo for
coincidente a la etiqueta.',
@@ -178,8 +189,10 @@
EMBED_VIDEO: 'Asegúrese de que todos los videos tengan subtítulos. Proporcionar subtítulos para todo el contenido de audio y video es un requisito obligatorio de nivel A. Los subtítulos ayudan a las personas sordas o con dificultades auditivas.',
EMBED_AUDIO: 'Asegúrese de proporcionar una transcripción para todos los podcasts. Proporcionar transcripciones para el contenido de audio es un requisito obligatorio de nivel A. Las transcripciones ayudan a las personas sordas o con dificultades auditivas, pero pueden beneficiar a todos. Considere colocar la transcripción debajo o dentro de un panel de acordeón.',
EMBED_DATA_VIZ: 'Los widgets de visualización de datos como este a menudo son problemáticos para las personas que usan un teclado o un lector de pantalla para navegar, y pueden presentar dificultades significativas para las personas con problemas de visión o daltónicos. Se recomienda proporcionar la misma información en un formato alternativo (texto o tabla) debajo del widget. title
o aria-label
en el elemento iframe
. Más información sobre iFrames.',
+ EMBED_MISSING_TITLE: 'El contenido incrustado requiere un nombre accesible que describa su contenido. Proporcione un atributo único title
o aria-label
en el elemento iframe
. Más información sobre iFrames.',
EMBED_GENERAL_WARNING: 'No se puede comprobar el contenido incrustado. Asegúrese de que las imágenes tengan texto alternativo, los videos tengan subtítulos, el texto tenga suficiente contraste y los componentes interactivos sean accesibles mediante teclado.',
+ EMBED_FOCUSABLE: '<iframe>
with focusable elements should not have tabindex="-1"
. The embedded content will not be keyboard accessible.',
+ EMBED_UNFOCUSABLE: '<iframe>
con elementos no enfocables no debe tener tabindex="-1"
. El contenido incrustado no será accesible mediante el teclado.',
// Quality assurance
QA_BAD_LINK: 'Enlace incorrecto encontrado. El enlace parece apuntar a un entorno de desarrollo. aria-hidden="true"
, kuid on siiski klaviatuuri fookuses. Kui kavatsete peita üleliigset või dubleerivat linki, lisage ka tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Lingil on aria-hidden="true"
, kuid see on ikkagi klaviatuuriga fookuses. Kui kavatsete peita ülearuse või topeltlingi, lisage ka tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Linki sees olev pilt on märgitud dekoratiivseks ja lingi tekst puudub. Palun lisage pildile alt-tekst, mis kirjeldab lingi sihtkohta.',
LINK_IMAGE_HAS_TEXT: 'Pilt on märgitud dekoratiivseks, kuigi link kasutab ümbritsevat teksti kirjeldava märgisena.',
LINK_IMAGE_LONG_ALT: 'Lingitud pildi Alt-teksti kirjeldus on liiga pikk. Lingitud piltide alt-tekst peaks kirjeldama, kuhu link viib, mitte pildi sõna-sõnaline kirjeldus. Võta arvesse, et kasuta alt-tekstina selle lehekülje pealkirja, millele see viitab. for
atribuut, mis vastab selle sisendi id
. id
ja lisage sildile vastav for
atribuut.',
EMBED_VIDEO: 'Palun veenduge, et kõik millisel videol on kinnised subtiitrid. Kogu heli- ja videosisu puhul on subtiitrite esitamine kohustuslik A-taseme nõue. Üleskirjutused toetavad kurte ja vaegkuuljaid inimesi, kes on kurdid või vaegkuuljad.',
EMBED_AUDIO: 'Veenduge, et kõigi podcastide kohta esitatakse transkriptsioon. Audiosisu transkriptsiooni esitamine on kohustuslik A-taseme nõue. Transkriptsioonid toetavad kurte ja vaegkuuljaid, kuid neist on kasu kõigile. Kaaluge transkriptsiooni paigutamist allapoole või akordionpaneeli sisse.',
EMBED_DATA_VIZ: 'Sellised andmete visualiseerimise vidinad on sageli problemaatilised inimestele, kes kasutavad navigeerimiseks klaviatuuri või ekraanilugejat, ning võivad tekitada märkimisväärseid raskusi inimestele, kellel on madal nägemine või värvipimedus. Soovitatav on esitada sama teave alternatiivses (teksti või tabeli) vormis vidina all. iframe
elemendile tiitle
või aria-label
atribuut unikaalne tiitle
või aria-label
. Lisateave iFrame\'i kohta.',
+ EMBED_MISSING_TITLE: 'Varjatud sisu vajab juurdepääsetavat nime, mis kirjeldab selle sisu. Andke iframe
elemendile tiitle
või aria-label
atribuut unikaalne tiitle
või aria-label
. Lisateave iFrame\'i kohta.',
EMBED_GENERAL_WARNING: 'Ei saa kontrollida varjatud sisu. Palun veenduge, et piltidel on alt-tekst, videote pealkirjad, tekst on piisavalt kontrastne ja interaktiivsed komponendid on tahvlile juurdepääsetavad..',
+ EMBED_UNFOCUSABLE: '<iframe>
koos fookustamata elementidega ei tohiks olla tabindex="-1"
. Manustatud sisu ei ole klaviatuuriga juurdepääsetav.',
QA_BAD_LINK: 'Leitud halb link. Link näib viitavat arenduskeskkonnale. aria-hidden="true"
, kuid on siiski klaviatuuri fookuses. Kui kavatsete peita üleliigset või dubleerivat linki, lisage ka tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Lingil on aria-hidden="true"
, kuid see on ikkagi klaviatuuriga fookuses. Kui kavatsete peita ülearuse või topeltlingi, lisage ka tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Linki sees olev pilt on märgitud dekoratiivseks ja lingi tekst puudub. Palun lisage pildile alt-tekst, mis kirjeldab lingi sihtkohta.',
LINK_IMAGE_HAS_TEXT: 'Pilt on märgitud dekoratiivseks, kuigi link kasutab ümbritsevat teksti kirjeldava märgisena.',
LINK_IMAGE_LONG_ALT: 'Lingitud pildi Alt-teksti kirjeldus on liiga pikk. Lingitud piltide alt-tekst peaks kirjeldama, kuhu link viib, mitte pildi sõna-sõnaline kirjeldus. Võta arvesse, et kasuta alt-tekstina selle lehekülje pealkirja, millele see viitab. for
atribuut, mis vastab selle sisendi id
. id
ja lisage sildile vastav for
atribuut.',
EMBED_VIDEO: 'Palun veenduge, et kõik millisel videol on kinnised subtiitrid. Kogu heli- ja videosisu puhul on subtiitrite esitamine kohustuslik A-taseme nõue. Üleskirjutused toetavad kurte ja vaegkuuljaid inimesi, kes on kurdid või vaegkuuljad.',
EMBED_AUDIO: 'Veenduge, et kõigi podcastide kohta esitatakse transkriptsioon. Audiosisu transkriptsiooni esitamine on kohustuslik A-taseme nõue. Transkriptsioonid toetavad kurte ja vaegkuuljaid, kuid neist on kasu kõigile. Kaaluge transkriptsiooni paigutamist allapoole või akordionpaneeli sisse.',
EMBED_DATA_VIZ: 'Sellised andmete visualiseerimise vidinad on sageli problemaatilised inimestele, kes kasutavad navigeerimiseks klaviatuuri või ekraanilugejat, ning võivad tekitada märkimisväärseid raskusi inimestele, kellel on madal nägemine või värvipimedus. Soovitatav on esitada sama teave alternatiivses (teksti või tabeli) vormis vidina all. iframe
elemendile tiitle
või aria-label
atribuut unikaalne tiitle
või aria-label
. Lisateave iFrame\'i kohta.',
+ EMBED_MISSING_TITLE: 'Varjatud sisu vajab juurdepääsetavat nime, mis kirjeldab selle sisu. Andke iframe
elemendile tiitle
või aria-label
atribuut unikaalne tiitle
või aria-label
. Lisateave iFrame\'i kohta.',
EMBED_GENERAL_WARNING: 'Ei saa kontrollida varjatud sisu. Palun veenduge, et piltidel on alt-tekst, videote pealkirjad, tekst on piisavalt kontrastne ja interaktiivsed komponendid on tahvlile juurdepääsetavad..',
+ EMBED_UNFOCUSABLE: '<iframe>
koos fookustamata elementidega ei tohiks olla tabindex="-1"
. Manustatud sisu ei ole klaviatuuriga juurdepääsetav.',
QA_BAD_LINK: 'Leitud halb link. Link näib viitavat arenduskeskkonnale. aria-hidden="true"
, mutta on silti näppäimistön tarkennettavissa. Jos aiot piilottaa turhan tai päällekkäisen linkin, lisää myös tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Linkillä on aria-hidden="true"
, mutta se on edelleen näppäimistöllä valittavissa. Jos aiot piilottaa tarpeettoman tai kaksoiskappaleen linkin, lisää myös tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Linkissä oleva kuva on merkitty koristeeksi, eikä linkkitekstiä ole. Lisää kuvaan alt-teksti, joka kuvaa linkin kohdetta.',
LINK_IMAGE_HAS_TEXT: 'Kuva on merkitty koristeelliseksi, vaikka linkki käyttää ympäröivää tekstiä kuvaavana merkintänä.',
LINK_IMAGE_LONG_ALT: 'Linkitetyn kuvan Alt-tekstin kuvaus on liian pitkä. Linkitettyjen kuvien alt-tekstin tulisi kuvata, minne linkki vie, ei kirjaimellista kuvausta kuvasta. Harkitse sen sivun otsikon käyttämistä alt-tekstinä, johon linkki johtaa. for
-attribuutti labeliin, joka vastaa tämän syötteen id
:tä. id
ja lisää labeliin vastaava for
-attribuutti.',
EMBED_VIDEO: 'Varmista, että kaikissa videoissa on kuvatekstit. Kaiken ääni- ja videosisällön tekstittäminen on pakollinen A-tason vaatimus. Kuvatekstit tukevat kuuroja ja huonokuuloisia.',
EMBED_AUDIO: 'Varmista, että kaikista podcasteista toimitetaan käännös. Äänisisällön käännösten toimittaminen on pakollinen tason A vaatimus. Jäljennökset tukevat kuuroja ja huonokuuloisia, mutta niistä on hyötyä kaikille. Harkitse transkriptin sijoittamista alapuolelle tai harmonikkapaneeliin.',
EMBED_DATA_VIZ: 'Tämänkaltaiset tiedon visualisoinnin widgetit ovat usein ongelmallisia henkilöille, jotka käyttävät näppäimistöä tai ruudunlukijaa navigointiin, ja ne voivat aiheuttaa huomattavia vaikeuksia henkilöille, joilla on heikkonäköisyys tai värisokeus. On suositeltavaa tarjota samat tiedot vaihtoehtoisessa (teksti- tai taulukkomuodossa) widgetin alapuolella. iframe
-elementille yksilöllinen title
- tai aria-label
-attribuutti. Lisätietoja iFrameista.',
+ EMBED_MISSING_TITLE: 'Sulautettu sisältö edellyttää sen sisältöä kuvaavaa nimeä. Anna iframe
-elementille yksilöllinen title
- tai aria-label
-attribuutti. Lisätietoja iFrameista.',
EMBED_GENERAL_WARNING: 'Upotetun sisällön tarkistaminen ei onnistu. Varmista, että kuvissa on alt-teksti, videoissa on kuvateksti, tekstissä on riittävä kontrasti ja vuorovaikutteiset komponentit ovat näppäimistöllä käytettävissä..',
+ EMBED_UNFOCUSABLE: '<iframe>
jossa ei ole fokusointikelpoisia elementtejä, ei pitäisi olla tabindex="-1"
. Upotettu sisältö ei ole näppäimistöllä saavutettavissa.',
QA_BAD_LINK: 'Huono linkki löytyi. Linkki näyttää osoittavan kehitysympäristöön. aria-hidden="true"
, mutta on silti näppäimistön tarkennettavissa. Jos aiot piilottaa turhan tai päällekkäisen linkin, lisää myös tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Linkillä on aria-hidden="true"
, mutta se on edelleen näppäimistöllä valittavissa. Jos aiot piilottaa tarpeettoman tai kaksoiskappaleen linkin, lisää myös tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Linkissä oleva kuva on merkitty koristeeksi, eikä linkkitekstiä ole. Lisää kuvaan alt-teksti, joka kuvaa linkin kohdetta.',
LINK_IMAGE_HAS_TEXT: 'Kuva on merkitty koristeelliseksi, vaikka linkki käyttää ympäröivää tekstiä kuvaavana merkintänä.',
LINK_IMAGE_LONG_ALT: 'Linkitetyn kuvan Alt-tekstin kuvaus on liian pitkä. Linkitettyjen kuvien alt-tekstin tulisi kuvata, minne linkki vie, ei kirjaimellista kuvausta kuvasta. Harkitse sen sivun otsikon käyttämistä alt-tekstinä, johon linkki johtaa. for
-attribuutti labeliin, joka vastaa tämän syötteen id
:tä. id
ja lisää labeliin vastaava for
-attribuutti.',
EMBED_VIDEO: 'Varmista, että kaikissa videoissa on kuvatekstit. Kaiken ääni- ja videosisällön tekstittäminen on pakollinen A-tason vaatimus. Kuvatekstit tukevat kuuroja ja huonokuuloisia.',
EMBED_AUDIO: 'Varmista, että kaikista podcasteista toimitetaan käännös. Äänisisällön käännösten toimittaminen on pakollinen tason A vaatimus. Jäljennökset tukevat kuuroja ja huonokuuloisia, mutta niistä on hyötyä kaikille. Harkitse transkriptin sijoittamista alapuolelle tai harmonikkapaneeliin.',
EMBED_DATA_VIZ: 'Tämänkaltaiset tiedon visualisoinnin widgetit ovat usein ongelmallisia henkilöille, jotka käyttävät näppäimistöä tai ruudunlukijaa navigointiin, ja ne voivat aiheuttaa huomattavia vaikeuksia henkilöille, joilla on heikkonäköisyys tai värisokeus. On suositeltavaa tarjota samat tiedot vaihtoehtoisessa (teksti- tai taulukkomuodossa) widgetin alapuolella. iframe
-elementille yksilöllinen title
- tai aria-label
-attribuutti. Lisätietoja iFrameista.',
+ EMBED_MISSING_TITLE: 'Sulautettu sisältö edellyttää sen sisältöä kuvaavaa nimeä. Anna iframe
-elementille yksilöllinen title
- tai aria-label
-attribuutti. Lisätietoja iFrameista.',
EMBED_GENERAL_WARNING: 'Upotetun sisällön tarkistaminen ei onnistu. Varmista, että kuvissa on alt-teksti, videoissa on kuvateksti, tekstissä on riittävä kontrasti ja vuorovaikutteiset komponentit ovat näppäimistöllä käytettävissä..',
+ EMBED_UNFOCUSABLE: '<iframe>
jossa ei ole fokusointikelpoisia elementtejä, ei pitäisi olla tabindex="-1"
. Upotettu sisältö ei ole näppäimistöllä saavutettavissa.',
QA_BAD_LINK: 'Huono linkki löytyi. Linkki näyttää osoittavan kehitysympäristöön. %(root)
n\'existe pas.',
+ ERROR_MISSING_ROOT_TARGET: 'L\'accessibilité de la page entière a été vérifiée, car la zone cible %(root)
n\'existe pas.',
HEADING_NOT_VISIBLE_ALERT: 'L\'en-tête n\'est pas visible ; il peut être caché ou à l\'intérieur d\'un accordéon ou d\'un composant d\'onglet.',
SKIP_TO_PAGE_ISSUES: 'Passer aux problèmes de page',
- CONSOLE_ERROR_MESSAGE: 'Désolé, mais il y a un problème avec le vérificateur d\'accessibilité sur cette page.Pouvez-vous s\'il vous plaît le signaler via ce formulaire ou sur GitHub ?',
+ CONSOLE_ERROR_MESSAGE: 'Désolé, mais il y a un problème avec le vérificateur d\'accessibilité sur cette page. Pouvez-vous s\'il vous plaît le signaler via ce formulaire ou sur GitHub ?',
+
+ // Export
+ DATE: 'Date',
+ PAGE_TITLE: 'Titre de la page',
+ RESULTS: 'Résultats',
+ EXPORT_RESULTS: 'Exporter les résultats',
+ GENERATED: 'Résultats générés avec %(tool).',
+ PREVIEW: 'Aperçu',
+ ELEMENT: 'Élément',
+ PATH: 'Chemin',
// Dismiss
PANEL_DISMISS_BUTTON: 'Afficher %(dismissCount) avertissements ignorés',
@@ -51,7 +61,7 @@ var fr = {
DISMISSED: 'Avertissements ignorés',
DISMISS_REMINDER: 'Veuillez noter que les avertissements ne sont ignorés que temporairement. Effacer l\'historique de votre navigateur et les cookies rétablira tous les avertissements précédemment ignorés sur toutes les pages.',
- // Color filters
+ // Colour filters
COLOUR_FILTER: 'Filtre de couleur',
PROTANOPIA: 'Protanopie',
DEUTERANOPIA: 'Deutéranopie',
@@ -64,7 +74,7 @@ var fr = {
MONO_EYE: 'Daltonisme rouge, vert et bleu.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Les filtres de couleur ne fonctionnent pas en mode contraste élevé.',
- // Alternative text module stop words
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: ['image', 'illustration', 'photo', 'photographie', 'graphic'],
PLACEHOLDER_ALT_STOPWORDS: ['alt', 'image', 'photographie', 'décorative', 'photographie', 'support d’affichage', 'support d’affichage d’image', 'séparateur'],
PARTIAL_ALT_STOPWORDS: [
@@ -122,6 +132,7 @@ var fr = {
HEADING_MISSING_ONE: 'En-tête 1 manquant. L’en-tête 1 doit débuter dans la zone principale de contenu, il est l’en-tête principal qui décrit l’objectif global de la page. En savoir plus sur La Structure Des En-têtes.',
HEADING_EMPTY_WITH_IMAGE: 'L’en-tête ne contient pas de texte, mais seulement une image. Si ce n’est pas un en-tête, veuillez changer son format pour L’en-tête %(level) à Normal ou Paragraphe. Sinon, veuillez ajouter du texte de remplacement à l’image si elle n’est pas décorative.',
PANEL_HEADING_MISSING_ONE: 'En-tête 1 manquant!',
+ PANEL_NO_HEADINGS: 'Aucun titre trouvé.',
// Links
LINK_EMPTY: 'Retirer les liens vides sans texte.',
@@ -141,18 +152,18 @@ var fr = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'L’image est utilisé en tant que lien avec un texte autour, alors que l’attribut de rem-placement doit être signalé comme décoratif ou nul.',
MISSING_ALT_LINK_MESSAGE: 'L’image est utilisée en tant que lien mais manque de texte de remplacement! Veuillez vous assurer que le texte de remplacement décrit où le lien vous mène.',
MISSING_ALT_MESSAGE: 'Texte de remplacement manquant! Si l’image transmet un message, une émotion ou des informations importantes - assurez-vous d’ajouter une description de l’image.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'L’extension du fichier trouvé à l’intérieur du texte de remplacement. Assurez-vous que le texte de remplacement décrit la destination du lien pas une description complète de l’image. Retirer: %(error).
Texte de remplacement: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'L’extension du fichier trouvé à l’intérieur du texte de remplacement. Assurez-vous que le texte de remplacement décrit la destination du lien pas une description complète de l’image. Retirer: %(error).
Texte de remplacement: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Texte de remplacement non-descriptif ou séparateur trouvé dans une image. Assurez-vous que le texte de remplacement décrit la destination du lien, pas une description compète de l’image. Remplacer le texte de remplacement suivant: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'La technologie d’assistance indiquer déjà que c’est une image, donc "%(error)" pourrait être redondant. Assurez-vous que le texte de remplacement décrit la destination du lien, pas la des-cription complète de l’image.
Texte de remplacement: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'L’extension du fichier trouvé à l’intérieur du texte de remplacement. Si l’image trans-met un message, une émotion ou une information importante - assurez-vous d’ajouter une description de l’image. Retirer: %(error).
Texte de remplacement: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'L’extension du fichier trouvé à l’intérieur du texte de remplacement. Si l’image trans-met un message, une émotion ou une information importante - assurez-vous d’ajouter une description de l’image. Retirer: %(error).
Texte de remplacement: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Texte de remplacement non-descriptif ou séparateur trouvé dans une image. Modifier le texte de remplacement suivant pour le rendre plus significatif: %(altText)',
ALT_HAS_SUS_WORD: 'Les technologies d’assistances indiquent déjà qu’il s’agit d’une image, donc "%(error)" peut être redondant.
Texte de remplacement: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Le lien autour de l’image a aria-hidden="true"
mais est toujours accessible au clavier. Si vous tentez de masquer un lien redondant ou dupliqué, ajouter tabindex="-1"
aussi.',
+ LINK_HIDDEN_FOCUSABLE: 'Le lien a aria-hidden="true"
mais reste focusable au clavier. Si vous avez l\'intention de cacher un lien redondant ou en double, ajoutez également tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'L’image dans le lien est marquée comme décorative et il n’y a pas de lien de texte. Veuillez ajouter du texte de remplacement à l’image qui décrit la destination du lien.',
LINK_IMAGE_HAS_TEXT: 'L’image est marqué comme étant décorative, bien que le lien utilise le texte autour en tant que description.',
LINK_IMAGE_LONG_ALT: 'La description du texte de remplacement sur l’image lié est trop longue. Le texte de remplacement sur l’image liée devrait décrire où le lien vous mène, pas une description complète de l’image. Utilisez le titre de l’image en tant que lien du texte de remplacement.
Texte de remplacement: (%(altLength) caractères): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Le lien vers l\'image contient un texte de remplacement. Le texte de remplacement décrit- il la destination du lien? Pensez à utiliser le titre de la page à laquelle le lien renvoie comme texte de remplacement.
Texte de remplacement: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Le lien de l’image contient du texte de remplacement et du texte à l’entour. Si cette image est décorative et est utilisé en tant que lien qui mène à une autre page, envisagez marquer l’image en tant que décorative, ou nulle - les liens texte autour de-vraient suffire.
Texte de remplacement: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Le lien de l’image contient du texte de remplacement et du texte à l’entour. Si cette image est décorative et est utilisé en tant que lien qui mène à une autre page, envisagez marquer l’image en tant que décorative, ou nulle - les liens texte autour de-vraient suffire.
Texte de remplacement: %(altText)
Lien de l’étiquette: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'L’image est perçue de manière décorative décorative et sera ignorée par la technologie d’assistance.
Bien qu’une légende est fournie, l’image devrait aussi avoir du texte de remplacement dans la plupart des cas.- Le texte de remplacement devrait fournir une description précise de l’image.
- La légende devrait fournir habituellement le contexte lié à l’image derrière le contenu environnant ou prêter attention à un élément d’information.
En savoir plus: alt versus figcaption (légende de la figure).',
IMAGE_FIGURE_DUPLICATE_ALT: 'Ne pas utiliser le même mot pour la légende et le texte de remplacement. Les lecteurs d’écrans vont annoncer l’information en double.- Le texte de remplacement devrait fournir une description précise de l’image.
- La légende devrait fournir habituellement le contexte lié à l’image derrière le contenu environnant ou prêter attention à un élément d’information.
En savoir plus: alt versus figcaption (légende de la figure).
Texte de remplacement: %(altText)',
IMAGE_DECORATIVE: 'L’image est perçue de manière décorative et sera ignorée par la technologie d’assistance. Si l’image transmet un message, une émotion ou une information importante - assurez-vous d’ajouter le texte de rempla-cement.',
@@ -162,7 +173,7 @@ var fr = {
// Labels
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Le bouton de l’image manque un texte de remplacement. Veuillez ajouter un texte de remplacement pour fournir un nom accessible. Par exemple: Rechercher ou Soumettre.',
LABELS_INPUT_RESET_MESSAGE: 'Le bouton réinitialiser ne devrait pas être utiliser sauf en cas de besoin spécifique, car il est facile de l’activer par erreur.
Conseil! En savoir plus sur les problèmes liés aux boutons Réinitialiser et Annuler.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'L’entrée a un nom accessible, assurez-vouer qu’il y a aussi une étiquette visible.
Le nom accessible pour cette entrée est: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'L’entrée a un nom accessible, assurez-vouer qu’il y a aussi une étiquette visible.
Étiquette d\'entrée : %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Il n’y a pas d’étiquette associée à cette entrée. Ajouter en un pour
l’attribut de l’étiquette qui correspond id
à l’id(identifiant) de cette entrée.
L’ID (L’identifiant) de cette entrée est: id="%(id)"
',
LABELS_MISSING_LABEL_MESSAGE: 'Il n’y a pas d’étiquette associée à cette entrée. Veuillez ajouter un id
id (identifiant) à cette entrée et ajouter un for
attribut correspondant à l’étiquette.',
@@ -172,6 +183,7 @@ var fr = {
EMBED_DATA_VIZ: 'Les gadgets logiciels de visualisation de données comme ceci sont souvent problématiques pour les gens qui utilisent un clavier ou un lecteur d’écran lors de la navigation et peuvent présenter d’importante difficultés pour les gens qui ont une malvoyance ou du daltonisme. Il est recommandé de fournir la même information de remplacement (texte ou tableau) dans le format ci-dessous du gadget logiciel.
En savoir plus sur les images complexes.',
EMBED_MISSING_TITLE: 'Le contenu intégré requiert un nom accessible qui décrit le contenu. Veuillez fournir un titre (title
) unique ou aria-label
un attribut à l’élément iframe
. En savoir plus sur les iFrames.',
EMBED_GENERAL_WARNING: 'Impossible de vérifier le contenu intégré. Assurez-vous que les images ont du texte de remplacement, les vidéos ont des sous-titres, le texte est suffisamment contrasté et que les éléments interactifs sont accessible par le clavier.',
+ EMBED_UNFOCUSABLE: 'Les <iframe>
avec des éléments non focusables ne doivent pas avoir de tabindex="-1"
. Le contenu incorporé ne sera pas accessible au clavier.',
// Quality assurance
QA_BAD_LINK: 'Lien incorrect trouvé. Le lien semble diriger vers un environnement de développement. Assurez vous que le lien ne contient pas dev ou wp-admin dans l’adresse URL.
Le lien dirige vers:
%(el)',
diff --git a/assets/dist/js/lang/fr.umd.js b/assets/dist/js/lang/fr.umd.js
index 0665eb9..ae5242a 100644
--- a/assets/dist/js/lang/fr.umd.js
+++ b/assets/dist/js/lang/fr.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -46,10 +46,20 @@
PANEL_ICON_WARNINGS: 'avertissement(s) trouvé(s).',
PANEL_ICON_TOTAL: 'problème(s) trouvé(s) au total.',
NOT_VISIBLE_ALERT: 'L’élément que vous tentez de consulter n’est pas visible; il peut être masqué, à l’intérieur de l’accordéon ou dans le volet de l’onglet. Voir l’aperçu:',
- ERROR_MISSING_ROOT_TARGET: 'L\'accessibilité de la page entière a été vérifiée, car la zone cible %(root)
n\'existe pas.',
+ ERROR_MISSING_ROOT_TARGET: 'L\'accessibilité de la page entière a été vérifiée, car la zone cible %(root)
n\'existe pas.',
HEADING_NOT_VISIBLE_ALERT: 'L\'en-tête n\'est pas visible ; il peut être caché ou à l\'intérieur d\'un accordéon ou d\'un composant d\'onglet.',
SKIP_TO_PAGE_ISSUES: 'Passer aux problèmes de page',
- CONSOLE_ERROR_MESSAGE: 'Désolé, mais il y a un problème avec le vérificateur d\'accessibilité sur cette page.Pouvez-vous s\'il vous plaît le signaler via ce formulaire ou sur GitHub ?',
+ CONSOLE_ERROR_MESSAGE: 'Désolé, mais il y a un problème avec le vérificateur d\'accessibilité sur cette page. Pouvez-vous s\'il vous plaît le signaler via ce formulaire ou sur GitHub ?',
+
+ // Export
+ DATE: 'Date',
+ PAGE_TITLE: 'Titre de la page',
+ RESULTS: 'Résultats',
+ EXPORT_RESULTS: 'Exporter les résultats',
+ GENERATED: 'Résultats générés avec %(tool).',
+ PREVIEW: 'Aperçu',
+ ELEMENT: 'Élément',
+ PATH: 'Chemin',
// Dismiss
PANEL_DISMISS_BUTTON: 'Afficher %(dismissCount) avertissements ignorés',
@@ -57,7 +67,7 @@
DISMISSED: 'Avertissements ignorés',
DISMISS_REMINDER: 'Veuillez noter que les avertissements ne sont ignorés que temporairement. Effacer l\'historique de votre navigateur et les cookies rétablira tous les avertissements précédemment ignorés sur toutes les pages.',
- // Color filters
+ // Colour filters
COLOUR_FILTER: 'Filtre de couleur',
PROTANOPIA: 'Protanopie',
DEUTERANOPIA: 'Deutéranopie',
@@ -70,7 +80,7 @@
MONO_EYE: 'Daltonisme rouge, vert et bleu.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Les filtres de couleur ne fonctionnent pas en mode contraste élevé.',
- // Alternative text module stop words
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: ['image', 'illustration', 'photo', 'photographie', 'graphic'],
PLACEHOLDER_ALT_STOPWORDS: ['alt', 'image', 'photographie', 'décorative', 'photographie', 'support d’affichage', 'support d’affichage d’image', 'séparateur'],
PARTIAL_ALT_STOPWORDS: [
@@ -128,6 +138,7 @@
HEADING_MISSING_ONE: 'En-tête 1 manquant. L’en-tête 1 doit débuter dans la zone principale de contenu, il est l’en-tête principal qui décrit l’objectif global de la page. En savoir plus sur La Structure Des En-têtes.',
HEADING_EMPTY_WITH_IMAGE: 'L’en-tête ne contient pas de texte, mais seulement une image. Si ce n’est pas un en-tête, veuillez changer son format pour L’en-tête %(level) à Normal ou Paragraphe. Sinon, veuillez ajouter du texte de remplacement à l’image si elle n’est pas décorative.',
PANEL_HEADING_MISSING_ONE: 'En-tête 1 manquant!',
+ PANEL_NO_HEADINGS: 'Aucun titre trouvé.',
// Links
LINK_EMPTY: 'Retirer les liens vides sans texte.',
@@ -147,18 +158,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'L’image est utilisé en tant que lien avec un texte autour, alors que l’attribut de rem-placement doit être signalé comme décoratif ou nul.',
MISSING_ALT_LINK_MESSAGE: 'L’image est utilisée en tant que lien mais manque de texte de remplacement! Veuillez vous assurer que le texte de remplacement décrit où le lien vous mène.',
MISSING_ALT_MESSAGE: 'Texte de remplacement manquant! Si l’image transmet un message, une émotion ou des informations importantes - assurez-vous d’ajouter une description de l’image.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'L’extension du fichier trouvé à l’intérieur du texte de remplacement. Assurez-vous que le texte de remplacement décrit la destination du lien pas une description complète de l’image. Retirer: %(error).
Texte de remplacement: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'L’extension du fichier trouvé à l’intérieur du texte de remplacement. Assurez-vous que le texte de remplacement décrit la destination du lien pas une description complète de l’image. Retirer: %(error).
Texte de remplacement: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Texte de remplacement non-descriptif ou séparateur trouvé dans une image. Assurez-vous que le texte de remplacement décrit la destination du lien, pas une description compète de l’image. Remplacer le texte de remplacement suivant: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'La technologie d’assistance indiquer déjà que c’est une image, donc "%(error)" pourrait être redondant. Assurez-vous que le texte de remplacement décrit la destination du lien, pas la des-cription complète de l’image.
Texte de remplacement: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'L’extension du fichier trouvé à l’intérieur du texte de remplacement. Si l’image trans-met un message, une émotion ou une information importante - assurez-vous d’ajouter une description de l’image. Retirer: %(error).
Texte de remplacement: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'L’extension du fichier trouvé à l’intérieur du texte de remplacement. Si l’image trans-met un message, une émotion ou une information importante - assurez-vous d’ajouter une description de l’image. Retirer: %(error).
Texte de remplacement: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Texte de remplacement non-descriptif ou séparateur trouvé dans une image. Modifier le texte de remplacement suivant pour le rendre plus significatif: %(altText)',
ALT_HAS_SUS_WORD: 'Les technologies d’assistances indiquent déjà qu’il s’agit d’une image, donc "%(error)" peut être redondant.
Texte de remplacement: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Le lien autour de l’image a aria-hidden="true"
mais est toujours accessible au clavier. Si vous tentez de masquer un lien redondant ou dupliqué, ajouter tabindex="-1"
aussi.',
+ LINK_HIDDEN_FOCUSABLE: 'Le lien a aria-hidden="true"
mais reste focusable au clavier. Si vous avez l\'intention de cacher un lien redondant ou en double, ajoutez également tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'L’image dans le lien est marquée comme décorative et il n’y a pas de lien de texte. Veuillez ajouter du texte de remplacement à l’image qui décrit la destination du lien.',
LINK_IMAGE_HAS_TEXT: 'L’image est marqué comme étant décorative, bien que le lien utilise le texte autour en tant que description.',
LINK_IMAGE_LONG_ALT: 'La description du texte de remplacement sur l’image lié est trop longue. Le texte de remplacement sur l’image liée devrait décrire où le lien vous mène, pas une description complète de l’image. Utilisez le titre de l’image en tant que lien du texte de remplacement.
Texte de remplacement: (%(altLength) caractères): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Le lien vers l\'image contient un texte de remplacement. Le texte de remplacement décrit- il la destination du lien? Pensez à utiliser le titre de la page à laquelle le lien renvoie comme texte de remplacement.
Texte de remplacement: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Le lien de l’image contient du texte de remplacement et du texte à l’entour. Si cette image est décorative et est utilisé en tant que lien qui mène à une autre page, envisagez marquer l’image en tant que décorative, ou nulle - les liens texte autour de-vraient suffire.
Texte de remplacement: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Le lien de l’image contient du texte de remplacement et du texte à l’entour. Si cette image est décorative et est utilisé en tant que lien qui mène à une autre page, envisagez marquer l’image en tant que décorative, ou nulle - les liens texte autour de-vraient suffire.
Texte de remplacement: %(altText)
Lien de l’étiquette: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'L’image est perçue de manière décorative décorative et sera ignorée par la technologie d’assistance.
Bien qu’une légende est fournie, l’image devrait aussi avoir du texte de remplacement dans la plupart des cas.- Le texte de remplacement devrait fournir une description précise de l’image.
- La légende devrait fournir habituellement le contexte lié à l’image derrière le contenu environnant ou prêter attention à un élément d’information.
En savoir plus: alt versus figcaption (légende de la figure).',
IMAGE_FIGURE_DUPLICATE_ALT: 'Ne pas utiliser le même mot pour la légende et le texte de remplacement. Les lecteurs d’écrans vont annoncer l’information en double.- Le texte de remplacement devrait fournir une description précise de l’image.
- La légende devrait fournir habituellement le contexte lié à l’image derrière le contenu environnant ou prêter attention à un élément d’information.
En savoir plus: alt versus figcaption (légende de la figure).
Texte de remplacement: %(altText)',
IMAGE_DECORATIVE: 'L’image est perçue de manière décorative et sera ignorée par la technologie d’assistance. Si l’image transmet un message, une émotion ou une information importante - assurez-vous d’ajouter le texte de rempla-cement.',
@@ -168,7 +179,7 @@
// Labels
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Le bouton de l’image manque un texte de remplacement. Veuillez ajouter un texte de remplacement pour fournir un nom accessible. Par exemple: Rechercher ou Soumettre.',
LABELS_INPUT_RESET_MESSAGE: 'Le bouton réinitialiser ne devrait pas être utiliser sauf en cas de besoin spécifique, car il est facile de l’activer par erreur.
Conseil! En savoir plus sur les problèmes liés aux boutons Réinitialiser et Annuler.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'L’entrée a un nom accessible, assurez-vouer qu’il y a aussi une étiquette visible.
Le nom accessible pour cette entrée est: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'L’entrée a un nom accessible, assurez-vouer qu’il y a aussi une étiquette visible.
Étiquette d\'entrée : %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Il n’y a pas d’étiquette associée à cette entrée. Ajouter en un pour
l’attribut de l’étiquette qui correspond id
à l’id(identifiant) de cette entrée.
L’ID (L’identifiant) de cette entrée est: id="%(id)"
',
LABELS_MISSING_LABEL_MESSAGE: 'Il n’y a pas d’étiquette associée à cette entrée. Veuillez ajouter un id
id (identifiant) à cette entrée et ajouter un for
attribut correspondant à l’étiquette.',
@@ -178,6 +189,7 @@
EMBED_DATA_VIZ: 'Les gadgets logiciels de visualisation de données comme ceci sont souvent problématiques pour les gens qui utilisent un clavier ou un lecteur d’écran lors de la navigation et peuvent présenter d’importante difficultés pour les gens qui ont une malvoyance ou du daltonisme. Il est recommandé de fournir la même information de remplacement (texte ou tableau) dans le format ci-dessous du gadget logiciel.
En savoir plus sur les images complexes.',
EMBED_MISSING_TITLE: 'Le contenu intégré requiert un nom accessible qui décrit le contenu. Veuillez fournir un titre (title
) unique ou aria-label
un attribut à l’élément iframe
. En savoir plus sur les iFrames.',
EMBED_GENERAL_WARNING: 'Impossible de vérifier le contenu intégré. Assurez-vous que les images ont du texte de remplacement, les vidéos ont des sous-titres, le texte est suffisamment contrasté et que les éléments interactifs sont accessible par le clavier.',
+ EMBED_UNFOCUSABLE: 'Les <iframe>
avec des éléments non focusables ne doivent pas avoir de tabindex="-1"
. Le contenu incorporé ne sera pas accessible au clavier.',
// Quality assurance
QA_BAD_LINK: 'Lien incorrect trouvé. Le lien semble diriger vers un environnement de développement. Assurez vous que le lien ne contient pas dev ou wp-admin dans l’adresse URL.
Le lien dirige vers:
%(el)',
diff --git a/assets/dist/js/lang/hu.js b/assets/dist/js/lang/hu.js
new file mode 100644
index 0000000..0564847
--- /dev/null
+++ b/assets/dist/js/lang/hu.js
@@ -0,0 +1,232 @@
+
+/*!
+ * Sa11y, the accessibility quality assurance assistant.
+ * @version 3.0.6
+ * @author Adam Chaboryk, Toronto Metropolitan University
+ * @license GPL-2.0-or-later
+ * @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
+ * @contact adam.chaboryk@torontomu.ca
+ * GitHub: git+https://github.com/ryersondmp/sa11y.git | Website: https://sa11y.netlify.app
+ * For all acknowledgements, please visit: https://sa11y.netlify.app/acknowledgements/
+ * The above copyright notice shall be included in all copies or substantial portions of the Software.
+**/
+/*! WARNING: This is a machine-generated translation and may contain errors or inaccuracies. */
+var hu = {
+ // Hungarian
+ strings: {
+ LANG_CODE: 'hu',
+ MAIN_TOGGLE_LABEL: 'Ellenőrizze az elérhetőséget',
+ CONTAINER_LABEL: 'Akadálymentesítési ellenőrző',
+ ERROR: 'Hiba',
+ ERRORS: 'Hibák',
+ WARNING: 'Figyelmeztetés',
+ WARNINGS: 'Figyelmeztetések',
+ GOOD: 'Jó',
+ ON: 'A oldalon.',
+ OFF: 'Off',
+ ALERT_TEXT: 'Riasztás',
+ ALERT_CLOSE: 'Zárja be a',
+ OUTLINE: 'Oldalvázlat',
+ PAGE_ISSUES: 'Oldalproblémák',
+ SETTINGS: 'Beállítások',
+ CONTRAST: 'Kontraszt',
+ FORM_LABELS: 'Nyomtatványcímkék',
+ LINKS_ADVANCED: 'Linkek (haladó)',
+ DARK_MODE: 'Sötét üzemmód',
+ SHORTCUT_SCREEN_READER: 'Ugrás a kérdésre. Billentyűzet gyorsbillentyű: S',
+ SHORTCUT_TOOLTIP: 'Ugrás a kérdésre',
+ NEW_TAB: 'Új lap megnyitása',
+ PANEL_HEADING: 'Hozzáférhetőségi ellenőrzés',
+ PANEL_STATUS_NONE: 'Nem találtunk hibát.',
+ PANEL_ICON_WARNINGS: 'figyelmeztetéseket találtak.',
+ PANEL_ICON_TOTAL: 'összes talált probléma.',
+ NOT_VISIBLE_ALERT: 'A megjeleníteni kívánt elem nem látható; lehet, hogy el van rejtve, vagy egy harmonika- vagy lapkomponens belsejében van. Itt egy előnézet:',
+ ERROR_MISSING_ROOT_TARGET: 'A teljes oldal elérhetőségi ellenőrzése azért történt, mert a célterület %(root)
nem létezik.',
+ HEADING_NOT_VISIBLE_ALERT: 'A fejléc nem látható; lehet rejtett vagy egy harmonika- vagy fülkomponens belsejében.',
+ SKIP_TO_PAGE_ISSUES: 'Ugrás az oldalra problémák',
+ CONSOLE_ERROR_MESSAGE: 'Sajnáljuk, de probléma van az oldal hozzáférhetőségi ellenőrzőjével. Megtenné, hogy bejelenti ezen az űrlapon vagy a GitHubon?',
+
+ // Dismiss
+ PANEL_DISMISS_BUTTON: 'Mutasd %(dismissCount) elbocsátott figyelmeztetéseket',
+ DISMISS: 'Elutasíthatod',
+ DISMISSED: 'Elutasított figyelmeztetések',
+ DISMISS_REMINDER: 'Felhívjuk figyelmét, hogy a figyelmeztetések csak időlegesen kerülnek elutasításra. A böngésző előzményeinek és cookie-jainak törlése visszaállítja a korábban elutasított figyelmeztetéseket az összes oldalon.',
+
+ // Export
+ DATE: 'Dátum',
+ PAGE_TITLE: 'Oldalcím',
+ RESULTS: 'Eredmények',
+ EXPORT_RESULTS: 'Eredmények exportálása',
+ GENERATED: 'Eredmények generálva %(tool)-vel.',
+ PREVIEW: 'Előnézet',
+ ELEMENT: 'Elem',
+ PATH: 'Útvonal',
+
+ // Colour filters
+ COLOUR_FILTER: 'Színes szűrő',
+ PROTANOPIA: 'Protanopia',
+ DEUTERANOPIA: 'Deuteranopia',
+ TRITANOPIA: 'Tritanopia',
+ MONOCHROMACY: 'Monokrómia',
+ COLOUR_FILTER_MESSAGE: 'Ellenőrizze, hogy vannak-e olyan elemek, amelyeket nehéz érzékelni vagy megkülönböztetni más színektől.',
+ RED_EYE: 'Vörös vak.',
+ GREEN_EYE: 'Zöld vak.',
+ BLUE_EYE: 'Kék vak.',
+ MONO_EYE: 'Vörös, kék és zöld vakok.',
+ COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'A színszűrők nem működnek nagy kontrasztú üzemmódban.',
+
+ // Alternative text stop words
+ SUSPICIOUS_ALT_STOPWORDS: [
+ 'kép',
+ 'grafika',
+ 'kép',
+ 'fotó',
+ ],
+ PLACEHOLDER_ALT_STOPWORDS: [
+ 'alt',
+ 'kép',
+ 'fotó',
+ 'dekoratív',
+ 'helytartó',
+ 'helyőrző kép',
+ 'távtartó',
+ ],
+ PARTIAL_ALT_STOPWORDS: [
+ 'kattints a címre.',
+ 'kattintson ide',
+ 'kattints ide további információkért',
+ 'kattintson ide, ha többet szeretne megtudni',
+ 'ide kattintva',
+ 'nézd meg',
+ 'részletesen itt',
+ 'letöltés',
+ 'letöltés itt',
+ 'megtudni',
+ 'Tudjon meg többet',
+ 'űrlap',
+ 'itt',
+ 'info',
+ 'információ',
+ 'link',
+ 'tanulni',
+ 'többet megtudni',
+ 'megtanulni',
+ 'további',
+ 'oldal',
+ 'papír',
+ 'tovább',
+ 'olvasd el',
+ 'olvassa el ezt',
+ 'ez',
+ 'ez az oldal',
+ 'ez a weboldal',
+ 'megtekintés',
+ 'nézze meg a',
+ 'weboldal',
+ ],
+ WARNING_ALT_STOPWORDS: [
+ 'kattintson ide',
+ ],
+ NEW_WINDOW_PHRASES: [
+ 'külső',
+ 'új lap',
+ 'új ablak',
+ 'pop-up',
+ 'felbukkan',
+ ],
+ FILE_TYPE_PHRASES: [
+ 'dokumentum',
+ 'táblázat',
+ 'számítási lap',
+ 'tömörített fájl',
+ 'archivált fájl',
+ 'munkalap',
+ 'powerpoint',
+ 'prezentáció',
+ 'telepítse a',
+ 'videó',
+ 'audio',
+ 'pdf',
+ ],
+ LANG_READABILITY: 'Olvashatóság',
+ LANG_AVG_SENTENCE: 'Átlagos szó/mondat:',
+ LANG_COMPLEX_WORDS: 'Összetett szavak:',
+ LANG_TOTAL_WORDS: 'Szavak:',
+ LANG_VERY_DIFFICULT: 'Nagyon nehéz',
+ LANG_DIFFICULT: 'Nehéz',
+ LANG_FAIRLY_DIFFICULT: 'Elég nehéz',
+ LANG_GOOD: 'Jó',
+ READABILITY_NO_P_OR_LI_MESSAGE: 'Nem lehet kiszámítani az olvashatósági pontszámot. Nem találtunk bekezdést <p>
vagy listatartalmat <li>
.',
+ READABILITY_NOT_ENOUGH_CONTENT_MESSAGE: 'Nem elég tartalom az olvashatósági pontszám kiszámításához.',
+ HEADING_NON_CONSECUTIVE_LEVEL: 'Nem egymást követő címsorszintet használtak. A fejlécek soha nem ugorhatnak szinteket, vagy nem mehetnek Felirat %(prevLevel)-ről Felirat %(level)-ra.',
+ HEADING_EMPTY: 'Üres fejlécet találtunk! A javításhoz törölje ezt a sort, vagy változtassa meg a formátumát Felirat %(szint)-ról Normál vagy Paragraph formátumra.',
+ HEADING_LONG: 'A fejléc hosszú! A címsorokat a tartalom rendszerezésére és a szerkezet közvetítésére kell használni. Rövidnek, informatívnak és egyedinek kell lenniük. Kérjük, hogy a címsorokat 160 karakternél (egy mondatnál nem több) rövidebbre tartsa.
Karakterek száma: %(headingLength)',
+ HEADING_FIRST: 'Az oldal első címsorának általában az 1. vagy a 2. címsornak kell lennie. Az 1. címsornak kell a fő tartalmi rész kezdetének lennie, és ez a fő címsor írja le az oldal általános célját. Tudjon meg többet a Feliratszerkezet.-ról.',
+ HEADING_MISSING_ONE: 'Hiányzik az 1. címsor. Az 1. címsornak kell a fő tartalmi terület kezdetének lennie, és ez a főcím, amely leírja az oldal általános célját. Tudjon meg többet a Főcímek szerkezete.-ről.',
+ HEADING_EMPTY_WITH_IMAGE: 'A fejlécnek nincs szövege, de tartalmaz egy képet. Ha ez nem egy címsor, változtassa meg a formátumát Felirat %(szint)-ról Normál vagy Paragraph formátumra. Ellenkező esetben kérjük, adjon alt szöveget a képhez, ha az nem dekoratív.',
+ PANEL_HEADING_MISSING_ONE: 'Hiányzik az 1. címsor!',
+ PANEL_NO_HEADINGS: 'Nem találtunk címszavakat.',
+ LINK_EMPTY: 'Szöveg nélküli üres linkek eltávolítása.',
+ LINK_EMPTY_LINK_NO_LABEL: 'A link nem rendelkezik olyan szöveggel, amely a képernyőolvasók és más segítő technológiák számára is látható. A javításhoz: - Adjon hozzá egy tömör szöveget, amely leírja, hogy hová vezet a link.
- Ha ikonos link vagy SVG, akkor valószínűleg hiányzik egy leíró felirat.
- Ha úgy gondolja, hogy ez a link egy másolási/beillesztési hiba miatt hibás, akkor fontolja meg a törlését.
.',
+ LINK_LABEL: 'Link címke: %(sanitizedText)',
+ LINK_STOPWORD: 'Előfordulhat, hogy a link szövege kontextuson kívül nem elég leíró: %(hiba)
Tipp! A linkszövegnek mindig világosnak, egyedinek és értelmesnek kell lennie. Kerülje az olyan gyakori szavakat, mint a "kattintson ide" vagy a "tudjon meg többet";',
+ LINK_BEST_PRACTICES: 'Fontolja meg a link szövegének cseréjét: %(hiba)
- "Kattintson ide" az egér mechanikájára helyezi a hangsúlyt, holott sokan nem használnak egeret, vagy esetleg mobileszközön nézik a weboldalt. Fontolja meg egy másik, a feladathoz kapcsolódó ige használatát.
- Kerülje a HTML szimbólumok használatát cselekvéshívóként, kivéve, ha azok a segédtechnológiák számára rejtve vannak.
',
+ LINK_URL: 'A linkszövegként használt hosszabb, kevésbé érthető URL-címek nehezen érthetők a segítő technológiával. A legtöbb esetben jobb, ha az URL helyett ember által olvasható szöveget használ. A rövid URL-címek (például egy webhely kezdőlapja) rendben vannak.
Tipp! A linkszövegnek mindig világosnak, egyedinek és értelmesnek kell lennie, hogy kontextuson kívül is érthető legyen.',
+ LINK_DOI: 'Weboldalak vagy kizárólag online elérhető források esetében az APA Style guide leíró linkek használatát javasolja, a mű URL-jét vagy DOI-ját a cím köré tekerve. A linkszövegként használt hosszabb, kevésbé érthető URL-címek nehezen érthetőek lehetnek a segédeszközökkel.',
+ NEW_TAB_WARNING: 'A link figyelmeztetés nélkül új lapon vagy ablakban nyílik meg. Ez zavaró lehet, különösen azok számára, akik nehezen érzékelik a vizuális tartalmakat. Másodszor, nem mindig jó gyakorlat, ha valakinek az élményét irányítjuk, vagy döntéseket hozunk helyettük. Jelezze, hogy a link új ablakban nyílik meg a link szövegében
Tipp! Ismerje meg a legjobb gyakorlatokat: Hivatkozások megnyitása új böngészőablakban és lapon.',
+ FILE_TYPE_WARNING: 'A link figyelmeztetés nélkül PDF vagy letölthető fájlra (pl. MP3, Zip, Word Doc) mutat. A hivatkozás szövegében tüntesse fel a fájl típusát. Ha nagyméretű fájlról van szó, fontolja meg a fájlméret feltüntetését.
Példa: Vezetői jelentés (PDF, 3MB)',
+ LINK_IDENTICAL_NAME: 'A link szövege megegyezik egy másik link szövegével, bár egy másik oldalra mutat. A több azonos szövegű hivatkozás zavart okozhat a képernyőolvasót használó emberek számára.
Figyeljen arra, hogy a következő hivatkozás leíróbb legyen, hogy jobban megkülönböztethető legyen a többi hivatkozástól: %(sanitizedText)',
+ MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'A képet linkként használják a körülötte lévő szöveggel, bár az alt attribútumot dekoratívnak vagy nullának kell jelölni.',
+ MISSING_ALT_LINK_MESSAGE: 'A képet linkként használják, de hiányzik az alt szöveg! Kérjük, gondoskodjon arról, hogy az alt szöveg leírja, hová vezet a link.',
+ MISSING_ALT_MESSAGE: 'Hiányzó alt szöveg! Ha a kép történetet, hangulatot vagy fontos információt közvetít - mindenképpen írja le a képet.',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Fájlkiterjesztés az alt szövegben található. Győződjön meg róla, hogy az alt szöveg a link célját írja le, nem pedig a kép szó szerinti leírását. Távolítsa el: %(hiba).
Alt szöveg: %(altText)',
+ LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Nem leíró vagy helyőrző alt szöveg a linkelt képen belül. Győződjön meg róla, hogy az alt szöveg a link célját írja le, nem pedig a kép szó szerinti leírását. Cserélje ki a következő alt szöveget: %(altText)',
+ LINK_IMAGE_SUS_ALT_MESSAGE: 'A segítő technológiák már jelzik, hogy ez egy kép, így a "%(hiba)" felesleges lehet. Győződjön meg róla, hogy az alt szöveg a link célját írja le, nem pedig a kép szó szerinti leírását.
Alt szöveg: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Fájlkiterjesztés az alt szövegben található. Ha a kép történetet, hangulatot vagy fontos információt közvetít - mindenképpen írja le a képet. Távolítsa el: %(hiba).
Alt szöveg: %(altText)',
+ ALT_PLACEHOLDER_MESSAGE: 'Nem leíró vagy helyőrző alt szöveg található. Cserélje ki a következő alt szöveget valami értelmesebbre: %(altText)',
+ ALT_HAS_SUS_WORD: 'A segítő technológiák már jelzik, hogy ez egy kép, így a "%(hiba)" felesleges lehet.
Alt szöveg: %(altText)',
+ LINK_HIDDEN_FOCUSABLE: 'A hivatkozásnak van aria-hidden="true"
tulajdonsága, de még mindig billentyűzettel fókuszálható. Ha felesleges vagy duplikált hivatkozást szeretnél elrejteni, adj hozzá tabindex="-1"
tulajdonságot is.',
+ LINK_IMAGE_NO_ALT_TEXT: 'A linkben lévő kép dekoratívnak van jelölve, és nincs linkszöveg. Kérjük, adjon a képhez alt szöveget, amely leírja a link célját.',
+ LINK_IMAGE_HAS_TEXT: 'A kép dekoratívként van megjelölve, bár a link a környező szöveget használja leíró címkeként.',
+ LINK_IMAGE_LONG_ALT: 'A linkelt kép Alt szöveges leírása túl hosszú. A linkelt képek alt szövegének azt kell leírnia, hogy hová vezet a link, nem pedig a kép szó szerinti leírását. Figyeljen arra, hogy alt szövegként a linkelt oldal címét használja.
Alt szöveg (%(altLength) karakterek): %(altText)',
+ LINK_IMAGE_ALT_WARNING: 'A kép linkje alt szöveget tartalmaz. Az alt szöveg leírja, hogy hová vezet a link? Figyeljen arra, hogy alt szövegként annak az oldalnak a címét használja, amelyre a link mutat.
Alt szöveg: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'A kép linkje mind az alt szöveget, mind a környező linkszöveget tartalmazza. Ha ez a kép dekoratív, és egy másik oldalra mutató funkcionális linkként használják, fontolja meg a kép dekoratív vagy nullás megjelölését - a környező linkszövegnek elegendőnek kell lennie.
Alt szöveg: %(altText)
Link címke: %(sanitizedText)',
+ IMAGE_FIGURE_DECORATIVE: 'A kép dekoratívnak van jelölve, és a segítő technológia figyelmen kívül hagyja.
Bár feliratot adtunk meg, a képnek a legtöbb esetben alt szöveggel is rendelkeznie kell. - Az alt szövegnek tömör leírást kell adnia arról, hogy mi található a képen.
- A feliratnak általában kontextust kell biztosítania, hogy a képet a környező tartalomhoz kapcsolja, vagy egy adott információra hívja fel a figyelmet.
Tudjon meg többet: alt versus figcaption.',
+ IMAGE_FIGURE_DUPLICATE_ALT: 'Ne használja pontosan ugyanazokat a szavakat az alt és a felirat szövegében. A képernyőolvasók kétszer fogják bemondani az információt.- Az alt szövegnek tömör leírást kell adnia arról, hogy mi van a képen.
- A feliratnak általában kontextust kell nyújtania, hogy a képet a környező tartalomhoz kapcsolja, vagy felhívja a figyelmet egy adott információra.
További információ: alt versus figcaption.
Alt szöveg: %(altText)',
+ IMAGE_DECORATIVE: 'A kép dekoratívnak van jelölve, és a segítő technológia figyelmen kívül hagyja. Ha a kép történetet, hangulatot vagy fontos információt közvetít - mindenképpen adjon hozzá alt szöveget.',
+ IMAGE_ALT_TOO_LONG: 'Az Alt szöveges leírás túl hosszú. Az Alt szövegnek tömörnek, mégis értelmesnek kell lennie, mint egy tweet (kb. 100 karakter). Ha összetett képről vagy grafikonról van szó, fontolja meg, hogy a kép hosszú leírását az alatta lévő szövegben vagy egy harmonika komponensben helyezze el.
Alt szöveg (%(altLength) karakterek): %(altText)',
+ IMAGE_PASS: 'Alt szöveg: %(altText)',
+ LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'A képgombból hiányzik az alt szöveg. Kérjük, adjon hozzá alt szöveget, hogy elérhető nevet adjon. Például: Keresés vagy Submit.',
+ LABELS_INPUT_RESET_MESSAGE: 'A visszaállító gombokat nem szabad használni, hacsak nem kifejezetten szükséges, mert könnyen aktiválhatók tévedésből.
Tipp! Tudja meg, hogy a A visszaállítás és a törlés gombok miért jelentenek használhatósági problémát.',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'A bemenetnek elérhető neve van, de kérjük, gondoskodjon arról, hogy a címke is látható legyen.
Bemeneti címke: %(sanitizedText)',
+ LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Ehhez a bemenethez nincs címke társítva. Adjon hozzá egy for
attribútumot a címkéhez, amely megfelel a bemenet id
azonosítójának.
Ennek a bemenetnek az azonosítója a következő: id="%(id)"',
+ LABELS_MISSING_LABEL_MESSAGE: 'Ehhez a bemenethez nincs címke társítva. Kérjük, adjon hozzá egy id
-t ehhez a bemenethez, és adjon hozzá egy megfelelő for
attribútumot a címkéhez.',
+ EMBED_VIDEO: 'Kérjük, gondoskodjon arról, hogy minden videó feliratozással legyen ellátva. A feliratozás biztosítása minden hang- és videotartalomhoz kötelező A-szintű követelmény. A feliratozás a siket vagy nagyothalló embereket támogatja.',
+ EMBED_AUDIO: 'Kérjük, gondoskodjon arról, hogy minden podcasthoz átiratot adjon. A hanganyag átiratának megadása kötelező A-szintű követelmény. Az átiratok a siket/süket vagy nagyothalló embereket támogatják, de mindenki számára hasznosak lehetnek. Fontolja meg az átirat elhelyezését alul vagy egy harmonika panelen belül.',
+ EMBED_DATA_VIZ: 'Az ilyen adatvizualizációs widgetek gyakran problémát jelentenek azok számára, akik billentyűzetet vagy képernyőolvasót használnak a navigáláshoz, és jelentős nehézségeket okozhatnak a gyengén látók vagy színvakok számára. Javasoljuk, hogy ugyanezt az információt alternatív (szöveges vagy táblázatos) formátumban adjuk meg a widget alatt.
Tudjon meg többet a komplex képekről.',
+ EMBED_MISSING_TITLE: 'A beágyazott tartalomnak olyan hozzáférhető névre van szüksége, amely leírja a tartalmát. Kérjük, adjon meg egy egyedi title
vagy aria-label
attribútumot a iframe
elemen. Tudjon meg többet a iFrames.-ről.',
+ EMBED_GENERAL_WARNING: 'Beágyazott tartalom ellenőrzése nem lehetséges. Kérjük, győződjön meg róla, hogy a képek alt szöveggel, a videók felirattal, a szöveg megfelelő kontraszttal és az interaktív komponensek billentyűzettel elérhetőek.',
+ EMBED_UNFOCUSABLE: 'Azoknak a <iframe>
-nek, amelyek nem fókuszálható elemekkel rendelkeznek, nem kell tabindex="-1"
tulajdonságot rendelni. A beágyazott tartalom nem lesz billentyűzettel elérhető.',
+ QA_BAD_LINK: 'Rossz linket találtunk. Úgy tűnik, hogy a link egy fejlesztői környezetre mutat.
Ez a link a következőre mutat:
%(el)',
+ QA_BAD_ITALICS: 'A vastag és dőlt betűs címkéknek szemantikai jelentésük van, és nem szabad egész bekezdések kiemelésére használni őket. A félkövérrel kiemelt szöveget egy szó vagy kifejezés erős kiemelésére kell használni. A dőlt betűt a tulajdonnevek (pl. könyv- és cikkcímek), idegen szavak, idézőjelek kiemelésére kell használni. A hosszú idézeteket blokkidézetként kell formázni.',
+ QA_PDF: 'Nem lehet ellenőrizni a PDF-ek hozzáférhetőségét. A PDF-ek webes tartalomnak minősülnek, és azokat is hozzáférhetővé kell tenni. A PDF-ek gyakran tartalmaznak problémákat a képernyőolvasót használók (hiányzó szerkezeti címkék vagy hiányzó űrlapmező-címkék) és a gyengén látók (a szöveg nagyításkor nem folyik vissza) számára. - Ha ez egy űrlap, fontolja meg egy hozzáférhető HTML űrlap használatát alternatívaként.
- Ha ez egy dokumentum, fontolja meg a weboldallá alakítását.
Máskülönben ellenőrizze a PDF hozzáférhetőségét az Acrobat DC-ben.Megközelíthetőségét az PDF-ben..',
+ QA_DOCUMENT: 'Nem lehet ellenőrizni a dokumentum hozzáférhetőségét. A hivatkozott dokumentumok webes tartalomnak minősülnek, és azokat is hozzáférhetővé kell tenni. Kérjük, kézzel ellenőrizze a dokumentumot. - Tegye hozzáférhetőbbé Google Workspace dokumentumát vagy prezentációját.
- Tegye hozzáférhetőbbé Office-dokumentumait.
.',
+ QA_PAGE_LANGUAGE: 'Az oldal nyelve nincs megadva! Kérjük, declare language on HTML tag.',
+ QA_PAGE_TITLE: 'Hiányzik az oldal címe! Kérjük, adjon meg egy oldal címet.',
+ QA_BLOCKQUOTE_MESSAGE: 'Ez egy címszó? %(sanitizedText)
A blokkos idézőjeleket csak idézőjeleknél kell használni. Ha ez egy fejlécnek szánja, akkor ezt a blokkidézetet változtassa meg egy szemantikus fejlécre (pl. Fejléc 2 vagy Fejléc 3).',
+ QA_FAKE_HEADING: 'Ez egy címszó? %(boldtext)
Egy félkövér vagy nagyméretű szövegsor címnek tűnhet, de a képernyőolvasót használó személy nem tudja megállapítani, hogy ez fontos, vagy nem tud a tartalmára ugrani. A félkövér vagy nagyméretű szöveg soha nem helyettesítheti a szemantikus címsorokat (Címsor 2-től a Címsor 6-ig).',
+ QA_SHOULD_BE_LIST: 'Megpróbál listát készíteni? Lehetséges listaelemet találtunk: %(firstPrefix)
Győződjön meg róla, hogy szemantikus listákat használ, és használja helyette a felsorolás- vagy számformázó gombokat. Szemantikus lista használata esetén a segédtechnológiák képesek olyan információkat közvetíteni, mint az elemek teljes száma és az egyes elemek relatív pozíciója a listában. További információ a szemantikus listákról.',
+ QA_UPPERCASE_WARNING: 'Találtam minden nagybetűt. Egyes képernyőolvasók a csupa nagybetűs szöveget betűszónak értelmezhetik, és minden egyes betűt külön-külön olvasnak. Ezenkívül egyesek nehezebben olvashatónak találják a csupa nagybetűs szöveget, és úgy tűnhet, mintha kiabálnának.',
+ QA_DUPLICATE_ID: 'Találtunk duplikált azonosítót. A duplikált azonosító hibák köztudottan problémákat okoznak a segítő technológiák számára, amikor azok megpróbálnak interakcióba lépni a tartalommal.
Kérjük, távolítsa el vagy változtassa meg a következő azonosítót: %(id)',
+ QA_TEXT_UNDERLINE_WARNING: 'Az aláhúzott szöveg összetéveszthető a linkekkel. Fontolja meg egy másik stílus használatát, például <strong>
strong fontosság</strong>
vagy <em>
emphasis</em>
.',
+ QA_SUBSCRIPT_WARNING: 'Az alul- és felülírás formázási beállításokat csak a szöveg pozíciójának tipográfiai konvenciók vagy szabványok szerinti megváltoztatására szabad használni. Nem szabad nem kizárólag megjelenítési vagy megjelenési célokra használni. Teljes mondatok formázása olvashatósági problémákat vet fel. Megfelelő felhasználási esetek közé tartozhat az exponensek, rendszámok, például 4th helyett 4th, és kémiai képletek (pl. H2O) megjelenítése.',
+ TABLES_MISSING_HEADINGS: 'Hiányzó táblázatfejlécek! A hozzáférhető táblázatokhoz olyan HTML-jelölésre van szükség, amely jelzi a fejléccellákat és az adatcellákat, amelyek meghatározzák a kapcsolatukat. Ez az információ kontextust biztosít a segítő technológiát használó emberek számára. A táblázatokat csak táblázatos adatokhoz szabad használni.
Tudjon meg többet a hozzáférhető táblázatokról.',
+ TABLES_SEMANTIC_HEADING: 'Az olyan szemantikus címsorokat, mint a Heading 2 vagy Heading 3, csak a tartalmi részeknél szabad használni; nem a HTML táblázatokban. A táblázatcímeket ehelyett a <th>
elemmel jelezze.
Tudjon meg többet a elérhető táblázatokról.',
+ TABLES_EMPTY_HEADING: 'Üres asztali fejlécet találtunk! A táblázat fejlécének soha nem szabad üresnek lennie. Fontos a sor- és/vagy oszlopfejlécek kijelölése a kapcsolatuk érzékeltetése érdekében. Ez az információ kontextust biztosít a segítő technológiát használó emberek számára. Ne feledje, hogy a táblázatok csak táblázatos adatokhoz használhatók.
Tudjon meg többet a elérhető táblázatokról.',
+ CONTRAST_ERROR: 'Ez a szöveg nem elég kontrasztos a háttérrel szemben. A kontrasztaránynak normál szöveg esetén legalább 4,5:1, nagyméretű szöveg esetén pedig 3:1 arányúnak kell lennie.
A kontrasztarány %(cratio) a következő szöveg esetében: %(sanitizedText)',
+ CONTRAST_WARNING: 'Ennek a szövegnek a kontrasztja ismeretlen, és kézzel kell ellenőrizni. Biztosítsa, hogy a szöveg és a háttér színei erősen kontrasztosak legyenek. A kontrasztaránynak normál szöveg esetén legalább 4,5:1, nagyméretű szöveg esetén pedig 3:1 arányúnak kell lennie.
Kérem, vizsgálja felül: %(sanitizedText)',
+ CONTRAST_INPUT_ERROR: 'A szövegnek ebben a bevitelben nincs elég kontrasztja a háttérrel. A kontrasztaránynak normál szöveg esetén legalább 4,5:1, nagyméretű szöveg esetén pedig 3:1 arányúnak kell lennie.
Kontrasztarány: %(cratio)',
+ },
+};
+
+export { hu as default };
diff --git a/assets/dist/js/lang/hu.umd.js b/assets/dist/js/lang/hu.umd.js
new file mode 100644
index 0000000..637486a
--- /dev/null
+++ b/assets/dist/js/lang/hu.umd.js
@@ -0,0 +1,240 @@
+
+/*!
+ * Sa11y, the accessibility quality assurance assistant.
+ * @version 3.0.6
+ * @author Adam Chaboryk, Toronto Metropolitan University
+ * @license GPL-2.0-or-later
+ * @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
+ * @contact adam.chaboryk@torontomu.ca
+ * GitHub: git+https://github.com/ryersondmp/sa11y.git | Website: https://sa11y.netlify.app
+ * For all acknowledgements, please visit: https://sa11y.netlify.app/acknowledgements/
+ * The above copyright notice shall be included in all copies or substantial portions of the Software.
+**/
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Sa11yLangHu = factory());
+})(this, (function () { 'use strict';
+
+ /*! WARNING: This is a machine-generated translation and may contain errors or inaccuracies. */
+ var hu = {
+ // Hungarian
+ strings: {
+ LANG_CODE: 'hu',
+ MAIN_TOGGLE_LABEL: 'Ellenőrizze az elérhetőséget',
+ CONTAINER_LABEL: 'Akadálymentesítési ellenőrző',
+ ERROR: 'Hiba',
+ ERRORS: 'Hibák',
+ WARNING: 'Figyelmeztetés',
+ WARNINGS: 'Figyelmeztetések',
+ GOOD: 'Jó',
+ ON: 'A oldalon.',
+ OFF: 'Off',
+ ALERT_TEXT: 'Riasztás',
+ ALERT_CLOSE: 'Zárja be a',
+ OUTLINE: 'Oldalvázlat',
+ PAGE_ISSUES: 'Oldalproblémák',
+ SETTINGS: 'Beállítások',
+ CONTRAST: 'Kontraszt',
+ FORM_LABELS: 'Nyomtatványcímkék',
+ LINKS_ADVANCED: 'Linkek (haladó)',
+ DARK_MODE: 'Sötét üzemmód',
+ SHORTCUT_SCREEN_READER: 'Ugrás a kérdésre. Billentyűzet gyorsbillentyű: S',
+ SHORTCUT_TOOLTIP: 'Ugrás a kérdésre',
+ NEW_TAB: 'Új lap megnyitása',
+ PANEL_HEADING: 'Hozzáférhetőségi ellenőrzés',
+ PANEL_STATUS_NONE: 'Nem találtunk hibát.',
+ PANEL_ICON_WARNINGS: 'figyelmeztetéseket találtak.',
+ PANEL_ICON_TOTAL: 'összes talált probléma.',
+ NOT_VISIBLE_ALERT: 'A megjeleníteni kívánt elem nem látható; lehet, hogy el van rejtve, vagy egy harmonika- vagy lapkomponens belsejében van. Itt egy előnézet:',
+ ERROR_MISSING_ROOT_TARGET: 'A teljes oldal elérhetőségi ellenőrzése azért történt, mert a célterület %(root)
nem létezik.',
+ HEADING_NOT_VISIBLE_ALERT: 'A fejléc nem látható; lehet rejtett vagy egy harmonika- vagy fülkomponens belsejében.',
+ SKIP_TO_PAGE_ISSUES: 'Ugrás az oldalra problémák',
+ CONSOLE_ERROR_MESSAGE: 'Sajnáljuk, de probléma van az oldal hozzáférhetőségi ellenőrzőjével. Megtenné, hogy bejelenti ezen az űrlapon vagy a GitHubon?',
+
+ // Dismiss
+ PANEL_DISMISS_BUTTON: 'Mutasd %(dismissCount) elbocsátott figyelmeztetéseket',
+ DISMISS: 'Elutasíthatod',
+ DISMISSED: 'Elutasított figyelmeztetések',
+ DISMISS_REMINDER: 'Felhívjuk figyelmét, hogy a figyelmeztetések csak időlegesen kerülnek elutasításra. A böngésző előzményeinek és cookie-jainak törlése visszaállítja a korábban elutasított figyelmeztetéseket az összes oldalon.',
+
+ // Export
+ DATE: 'Dátum',
+ PAGE_TITLE: 'Oldalcím',
+ RESULTS: 'Eredmények',
+ EXPORT_RESULTS: 'Eredmények exportálása',
+ GENERATED: 'Eredmények generálva %(tool)-vel.',
+ PREVIEW: 'Előnézet',
+ ELEMENT: 'Elem',
+ PATH: 'Útvonal',
+
+ // Colour filters
+ COLOUR_FILTER: 'Színes szűrő',
+ PROTANOPIA: 'Protanopia',
+ DEUTERANOPIA: 'Deuteranopia',
+ TRITANOPIA: 'Tritanopia',
+ MONOCHROMACY: 'Monokrómia',
+ COLOUR_FILTER_MESSAGE: 'Ellenőrizze, hogy vannak-e olyan elemek, amelyeket nehéz érzékelni vagy megkülönböztetni más színektől.',
+ RED_EYE: 'Vörös vak.',
+ GREEN_EYE: 'Zöld vak.',
+ BLUE_EYE: 'Kék vak.',
+ MONO_EYE: 'Vörös, kék és zöld vakok.',
+ COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'A színszűrők nem működnek nagy kontrasztú üzemmódban.',
+
+ // Alternative text stop words
+ SUSPICIOUS_ALT_STOPWORDS: [
+ 'kép',
+ 'grafika',
+ 'kép',
+ 'fotó',
+ ],
+ PLACEHOLDER_ALT_STOPWORDS: [
+ 'alt',
+ 'kép',
+ 'fotó',
+ 'dekoratív',
+ 'helytartó',
+ 'helyőrző kép',
+ 'távtartó',
+ ],
+ PARTIAL_ALT_STOPWORDS: [
+ 'kattints a címre.',
+ 'kattintson ide',
+ 'kattints ide további információkért',
+ 'kattintson ide, ha többet szeretne megtudni',
+ 'ide kattintva',
+ 'nézd meg',
+ 'részletesen itt',
+ 'letöltés',
+ 'letöltés itt',
+ 'megtudni',
+ 'Tudjon meg többet',
+ 'űrlap',
+ 'itt',
+ 'info',
+ 'információ',
+ 'link',
+ 'tanulni',
+ 'többet megtudni',
+ 'megtanulni',
+ 'további',
+ 'oldal',
+ 'papír',
+ 'tovább',
+ 'olvasd el',
+ 'olvassa el ezt',
+ 'ez',
+ 'ez az oldal',
+ 'ez a weboldal',
+ 'megtekintés',
+ 'nézze meg a',
+ 'weboldal',
+ ],
+ WARNING_ALT_STOPWORDS: [
+ 'kattintson ide',
+ ],
+ NEW_WINDOW_PHRASES: [
+ 'külső',
+ 'új lap',
+ 'új ablak',
+ 'pop-up',
+ 'felbukkan',
+ ],
+ FILE_TYPE_PHRASES: [
+ 'dokumentum',
+ 'táblázat',
+ 'számítási lap',
+ 'tömörített fájl',
+ 'archivált fájl',
+ 'munkalap',
+ 'powerpoint',
+ 'prezentáció',
+ 'telepítse a',
+ 'videó',
+ 'audio',
+ 'pdf',
+ ],
+ LANG_READABILITY: 'Olvashatóság',
+ LANG_AVG_SENTENCE: 'Átlagos szó/mondat:',
+ LANG_COMPLEX_WORDS: 'Összetett szavak:',
+ LANG_TOTAL_WORDS: 'Szavak:',
+ LANG_VERY_DIFFICULT: 'Nagyon nehéz',
+ LANG_DIFFICULT: 'Nehéz',
+ LANG_FAIRLY_DIFFICULT: 'Elég nehéz',
+ LANG_GOOD: 'Jó',
+ READABILITY_NO_P_OR_LI_MESSAGE: 'Nem lehet kiszámítani az olvashatósági pontszámot. Nem találtunk bekezdést <p>
vagy listatartalmat <li>
.',
+ READABILITY_NOT_ENOUGH_CONTENT_MESSAGE: 'Nem elég tartalom az olvashatósági pontszám kiszámításához.',
+ HEADING_NON_CONSECUTIVE_LEVEL: 'Nem egymást követő címsorszintet használtak. A fejlécek soha nem ugorhatnak szinteket, vagy nem mehetnek Felirat %(prevLevel)-ről Felirat %(level)-ra.',
+ HEADING_EMPTY: 'Üres fejlécet találtunk! A javításhoz törölje ezt a sort, vagy változtassa meg a formátumát Felirat %(szint)-ról Normál vagy Paragraph formátumra.',
+ HEADING_LONG: 'A fejléc hosszú! A címsorokat a tartalom rendszerezésére és a szerkezet közvetítésére kell használni. Rövidnek, informatívnak és egyedinek kell lenniük. Kérjük, hogy a címsorokat 160 karakternél (egy mondatnál nem több) rövidebbre tartsa.
Karakterek száma: %(headingLength)',
+ HEADING_FIRST: 'Az oldal első címsorának általában az 1. vagy a 2. címsornak kell lennie. Az 1. címsornak kell a fő tartalmi rész kezdetének lennie, és ez a fő címsor írja le az oldal általános célját. Tudjon meg többet a Feliratszerkezet.-ról.',
+ HEADING_MISSING_ONE: 'Hiányzik az 1. címsor. Az 1. címsornak kell a fő tartalmi terület kezdetének lennie, és ez a főcím, amely leírja az oldal általános célját. Tudjon meg többet a Főcímek szerkezete.-ről.',
+ HEADING_EMPTY_WITH_IMAGE: 'A fejlécnek nincs szövege, de tartalmaz egy képet. Ha ez nem egy címsor, változtassa meg a formátumát Felirat %(szint)-ról Normál vagy Paragraph formátumra. Ellenkező esetben kérjük, adjon alt szöveget a képhez, ha az nem dekoratív.',
+ PANEL_HEADING_MISSING_ONE: 'Hiányzik az 1. címsor!',
+ PANEL_NO_HEADINGS: 'Nem találtunk címszavakat.',
+ LINK_EMPTY: 'Szöveg nélküli üres linkek eltávolítása.',
+ LINK_EMPTY_LINK_NO_LABEL: 'A link nem rendelkezik olyan szöveggel, amely a képernyőolvasók és más segítő technológiák számára is látható. A javításhoz: - Adjon hozzá egy tömör szöveget, amely leírja, hogy hová vezet a link.
- Ha ikonos link vagy SVG, akkor valószínűleg hiányzik egy leíró felirat.
- Ha úgy gondolja, hogy ez a link egy másolási/beillesztési hiba miatt hibás, akkor fontolja meg a törlését.
.',
+ LINK_LABEL: 'Link címke: %(sanitizedText)',
+ LINK_STOPWORD: 'Előfordulhat, hogy a link szövege kontextuson kívül nem elég leíró: %(hiba)
Tipp! A linkszövegnek mindig világosnak, egyedinek és értelmesnek kell lennie. Kerülje az olyan gyakori szavakat, mint a "kattintson ide" vagy a "tudjon meg többet";',
+ LINK_BEST_PRACTICES: 'Fontolja meg a link szövegének cseréjét: %(hiba)
- "Kattintson ide" az egér mechanikájára helyezi a hangsúlyt, holott sokan nem használnak egeret, vagy esetleg mobileszközön nézik a weboldalt. Fontolja meg egy másik, a feladathoz kapcsolódó ige használatát.
- Kerülje a HTML szimbólumok használatát cselekvéshívóként, kivéve, ha azok a segédtechnológiák számára rejtve vannak.
',
+ LINK_URL: 'A linkszövegként használt hosszabb, kevésbé érthető URL-címek nehezen érthetők a segítő technológiával. A legtöbb esetben jobb, ha az URL helyett ember által olvasható szöveget használ. A rövid URL-címek (például egy webhely kezdőlapja) rendben vannak.
Tipp! A linkszövegnek mindig világosnak, egyedinek és értelmesnek kell lennie, hogy kontextuson kívül is érthető legyen.',
+ LINK_DOI: 'Weboldalak vagy kizárólag online elérhető források esetében az APA Style guide leíró linkek használatát javasolja, a mű URL-jét vagy DOI-ját a cím köré tekerve. A linkszövegként használt hosszabb, kevésbé érthető URL-címek nehezen érthetőek lehetnek a segédeszközökkel.',
+ NEW_TAB_WARNING: 'A link figyelmeztetés nélkül új lapon vagy ablakban nyílik meg. Ez zavaró lehet, különösen azok számára, akik nehezen érzékelik a vizuális tartalmakat. Másodszor, nem mindig jó gyakorlat, ha valakinek az élményét irányítjuk, vagy döntéseket hozunk helyettük. Jelezze, hogy a link új ablakban nyílik meg a link szövegében
Tipp! Ismerje meg a legjobb gyakorlatokat: Hivatkozások megnyitása új böngészőablakban és lapon.',
+ FILE_TYPE_WARNING: 'A link figyelmeztetés nélkül PDF vagy letölthető fájlra (pl. MP3, Zip, Word Doc) mutat. A hivatkozás szövegében tüntesse fel a fájl típusát. Ha nagyméretű fájlról van szó, fontolja meg a fájlméret feltüntetését.
Példa: Vezetői jelentés (PDF, 3MB)',
+ LINK_IDENTICAL_NAME: 'A link szövege megegyezik egy másik link szövegével, bár egy másik oldalra mutat. A több azonos szövegű hivatkozás zavart okozhat a képernyőolvasót használó emberek számára.
Figyeljen arra, hogy a következő hivatkozás leíróbb legyen, hogy jobban megkülönböztethető legyen a többi hivatkozástól: %(sanitizedText)',
+ MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'A képet linkként használják a körülötte lévő szöveggel, bár az alt attribútumot dekoratívnak vagy nullának kell jelölni.',
+ MISSING_ALT_LINK_MESSAGE: 'A képet linkként használják, de hiányzik az alt szöveg! Kérjük, gondoskodjon arról, hogy az alt szöveg leírja, hová vezet a link.',
+ MISSING_ALT_MESSAGE: 'Hiányzó alt szöveg! Ha a kép történetet, hangulatot vagy fontos információt közvetít - mindenképpen írja le a képet.',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Fájlkiterjesztés az alt szövegben található. Győződjön meg róla, hogy az alt szöveg a link célját írja le, nem pedig a kép szó szerinti leírását. Távolítsa el: %(hiba).
Alt szöveg: %(altText)',
+ LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Nem leíró vagy helyőrző alt szöveg a linkelt képen belül. Győződjön meg róla, hogy az alt szöveg a link célját írja le, nem pedig a kép szó szerinti leírását. Cserélje ki a következő alt szöveget: %(altText)',
+ LINK_IMAGE_SUS_ALT_MESSAGE: 'A segítő technológiák már jelzik, hogy ez egy kép, így a "%(hiba)" felesleges lehet. Győződjön meg róla, hogy az alt szöveg a link célját írja le, nem pedig a kép szó szerinti leírását.
Alt szöveg: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Fájlkiterjesztés az alt szövegben található. Ha a kép történetet, hangulatot vagy fontos információt közvetít - mindenképpen írja le a képet. Távolítsa el: %(hiba).
Alt szöveg: %(altText)',
+ ALT_PLACEHOLDER_MESSAGE: 'Nem leíró vagy helyőrző alt szöveg található. Cserélje ki a következő alt szöveget valami értelmesebbre: %(altText)',
+ ALT_HAS_SUS_WORD: 'A segítő technológiák már jelzik, hogy ez egy kép, így a "%(hiba)" felesleges lehet.
Alt szöveg: %(altText)',
+ LINK_HIDDEN_FOCUSABLE: 'A hivatkozásnak van aria-hidden="true"
tulajdonsága, de még mindig billentyűzettel fókuszálható. Ha felesleges vagy duplikált hivatkozást szeretnél elrejteni, adj hozzá tabindex="-1"
tulajdonságot is.',
+ LINK_IMAGE_NO_ALT_TEXT: 'A linkben lévő kép dekoratívnak van jelölve, és nincs linkszöveg. Kérjük, adjon a képhez alt szöveget, amely leírja a link célját.',
+ LINK_IMAGE_HAS_TEXT: 'A kép dekoratívként van megjelölve, bár a link a környező szöveget használja leíró címkeként.',
+ LINK_IMAGE_LONG_ALT: 'A linkelt kép Alt szöveges leírása túl hosszú. A linkelt képek alt szövegének azt kell leírnia, hogy hová vezet a link, nem pedig a kép szó szerinti leírását. Figyeljen arra, hogy alt szövegként a linkelt oldal címét használja.
Alt szöveg (%(altLength) karakterek): %(altText)',
+ LINK_IMAGE_ALT_WARNING: 'A kép linkje alt szöveget tartalmaz. Az alt szöveg leírja, hogy hová vezet a link? Figyeljen arra, hogy alt szövegként annak az oldalnak a címét használja, amelyre a link mutat.
Alt szöveg: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'A kép linkje mind az alt szöveget, mind a környező linkszöveget tartalmazza. Ha ez a kép dekoratív, és egy másik oldalra mutató funkcionális linkként használják, fontolja meg a kép dekoratív vagy nullás megjelölését - a környező linkszövegnek elegendőnek kell lennie.
Alt szöveg: %(altText)
Link címke: %(sanitizedText)',
+ IMAGE_FIGURE_DECORATIVE: 'A kép dekoratívnak van jelölve, és a segítő technológia figyelmen kívül hagyja.
Bár feliratot adtunk meg, a képnek a legtöbb esetben alt szöveggel is rendelkeznie kell. - Az alt szövegnek tömör leírást kell adnia arról, hogy mi található a képen.
- A feliratnak általában kontextust kell biztosítania, hogy a képet a környező tartalomhoz kapcsolja, vagy egy adott információra hívja fel a figyelmet.
Tudjon meg többet: alt versus figcaption.',
+ IMAGE_FIGURE_DUPLICATE_ALT: 'Ne használja pontosan ugyanazokat a szavakat az alt és a felirat szövegében. A képernyőolvasók kétszer fogják bemondani az információt.- Az alt szövegnek tömör leírást kell adnia arról, hogy mi van a képen.
- A feliratnak általában kontextust kell nyújtania, hogy a képet a környező tartalomhoz kapcsolja, vagy felhívja a figyelmet egy adott információra.
További információ: alt versus figcaption.
Alt szöveg: %(altText)',
+ IMAGE_DECORATIVE: 'A kép dekoratívnak van jelölve, és a segítő technológia figyelmen kívül hagyja. Ha a kép történetet, hangulatot vagy fontos információt közvetít - mindenképpen adjon hozzá alt szöveget.',
+ IMAGE_ALT_TOO_LONG: 'Az Alt szöveges leírás túl hosszú. Az Alt szövegnek tömörnek, mégis értelmesnek kell lennie, mint egy tweet (kb. 100 karakter). Ha összetett képről vagy grafikonról van szó, fontolja meg, hogy a kép hosszú leírását az alatta lévő szövegben vagy egy harmonika komponensben helyezze el.
Alt szöveg (%(altLength) karakterek): %(altText)',
+ IMAGE_PASS: 'Alt szöveg: %(altText)',
+ LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'A képgombból hiányzik az alt szöveg. Kérjük, adjon hozzá alt szöveget, hogy elérhető nevet adjon. Például: Keresés vagy Submit.',
+ LABELS_INPUT_RESET_MESSAGE: 'A visszaállító gombokat nem szabad használni, hacsak nem kifejezetten szükséges, mert könnyen aktiválhatók tévedésből.
Tipp! Tudja meg, hogy a A visszaállítás és a törlés gombok miért jelentenek használhatósági problémát.',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'A bemenetnek elérhető neve van, de kérjük, gondoskodjon arról, hogy a címke is látható legyen.
Bemeneti címke: %(sanitizedText)',
+ LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Ehhez a bemenethez nincs címke társítva. Adjon hozzá egy for
attribútumot a címkéhez, amely megfelel a bemenet id
azonosítójának.
Ennek a bemenetnek az azonosítója a következő: id="%(id)"',
+ LABELS_MISSING_LABEL_MESSAGE: 'Ehhez a bemenethez nincs címke társítva. Kérjük, adjon hozzá egy id
-t ehhez a bemenethez, és adjon hozzá egy megfelelő for
attribútumot a címkéhez.',
+ EMBED_VIDEO: 'Kérjük, gondoskodjon arról, hogy minden videó feliratozással legyen ellátva. A feliratozás biztosítása minden hang- és videotartalomhoz kötelező A-szintű követelmény. A feliratozás a siket vagy nagyothalló embereket támogatja.',
+ EMBED_AUDIO: 'Kérjük, gondoskodjon arról, hogy minden podcasthoz átiratot adjon. A hanganyag átiratának megadása kötelező A-szintű követelmény. Az átiratok a siket/süket vagy nagyothalló embereket támogatják, de mindenki számára hasznosak lehetnek. Fontolja meg az átirat elhelyezését alul vagy egy harmonika panelen belül.',
+ EMBED_DATA_VIZ: 'Az ilyen adatvizualizációs widgetek gyakran problémát jelentenek azok számára, akik billentyűzetet vagy képernyőolvasót használnak a navigáláshoz, és jelentős nehézségeket okozhatnak a gyengén látók vagy színvakok számára. Javasoljuk, hogy ugyanezt az információt alternatív (szöveges vagy táblázatos) formátumban adjuk meg a widget alatt.
Tudjon meg többet a komplex képekről.',
+ EMBED_MISSING_TITLE: 'A beágyazott tartalomnak olyan hozzáférhető névre van szüksége, amely leírja a tartalmát. Kérjük, adjon meg egy egyedi title
vagy aria-label
attribútumot a iframe
elemen. Tudjon meg többet a iFrames.-ről.',
+ EMBED_GENERAL_WARNING: 'Beágyazott tartalom ellenőrzése nem lehetséges. Kérjük, győződjön meg róla, hogy a képek alt szöveggel, a videók felirattal, a szöveg megfelelő kontraszttal és az interaktív komponensek billentyűzettel elérhetőek.',
+ EMBED_UNFOCUSABLE: 'Azoknak a <iframe>
-nek, amelyek nem fókuszálható elemekkel rendelkeznek, nem kell tabindex="-1"
tulajdonságot rendelni. A beágyazott tartalom nem lesz billentyűzettel elérhető.',
+ QA_BAD_LINK: 'Rossz linket találtunk. Úgy tűnik, hogy a link egy fejlesztői környezetre mutat.
Ez a link a következőre mutat:
%(el)',
+ QA_BAD_ITALICS: 'A vastag és dőlt betűs címkéknek szemantikai jelentésük van, és nem szabad egész bekezdések kiemelésére használni őket. A félkövérrel kiemelt szöveget egy szó vagy kifejezés erős kiemelésére kell használni. A dőlt betűt a tulajdonnevek (pl. könyv- és cikkcímek), idegen szavak, idézőjelek kiemelésére kell használni. A hosszú idézeteket blokkidézetként kell formázni.',
+ QA_PDF: 'Nem lehet ellenőrizni a PDF-ek hozzáférhetőségét. A PDF-ek webes tartalomnak minősülnek, és azokat is hozzáférhetővé kell tenni. A PDF-ek gyakran tartalmaznak problémákat a képernyőolvasót használók (hiányzó szerkezeti címkék vagy hiányzó űrlapmező-címkék) és a gyengén látók (a szöveg nagyításkor nem folyik vissza) számára. - Ha ez egy űrlap, fontolja meg egy hozzáférhető HTML űrlap használatát alternatívaként.
- Ha ez egy dokumentum, fontolja meg a weboldallá alakítását.
Máskülönben ellenőrizze a PDF hozzáférhetőségét az Acrobat DC-ben.Megközelíthetőségét az PDF-ben..',
+ QA_DOCUMENT: 'Nem lehet ellenőrizni a dokumentum hozzáférhetőségét. A hivatkozott dokumentumok webes tartalomnak minősülnek, és azokat is hozzáférhetővé kell tenni. Kérjük, kézzel ellenőrizze a dokumentumot. - Tegye hozzáférhetőbbé Google Workspace dokumentumát vagy prezentációját.
- Tegye hozzáférhetőbbé Office-dokumentumait.
.',
+ QA_PAGE_LANGUAGE: 'Az oldal nyelve nincs megadva! Kérjük, declare language on HTML tag.',
+ QA_PAGE_TITLE: 'Hiányzik az oldal címe! Kérjük, adjon meg egy oldal címet.',
+ QA_BLOCKQUOTE_MESSAGE: 'Ez egy címszó? %(sanitizedText)
A blokkos idézőjeleket csak idézőjeleknél kell használni. Ha ez egy fejlécnek szánja, akkor ezt a blokkidézetet változtassa meg egy szemantikus fejlécre (pl. Fejléc 2 vagy Fejléc 3).',
+ QA_FAKE_HEADING: 'Ez egy címszó? %(boldtext)
Egy félkövér vagy nagyméretű szövegsor címnek tűnhet, de a képernyőolvasót használó személy nem tudja megállapítani, hogy ez fontos, vagy nem tud a tartalmára ugrani. A félkövér vagy nagyméretű szöveg soha nem helyettesítheti a szemantikus címsorokat (Címsor 2-től a Címsor 6-ig).',
+ QA_SHOULD_BE_LIST: 'Megpróbál listát készíteni? Lehetséges listaelemet találtunk: %(firstPrefix)
Győződjön meg róla, hogy szemantikus listákat használ, és használja helyette a felsorolás- vagy számformázó gombokat. Szemantikus lista használata esetén a segédtechnológiák képesek olyan információkat közvetíteni, mint az elemek teljes száma és az egyes elemek relatív pozíciója a listában. További információ a szemantikus listákról.',
+ QA_UPPERCASE_WARNING: 'Találtam minden nagybetűt. Egyes képernyőolvasók a csupa nagybetűs szöveget betűszónak értelmezhetik, és minden egyes betűt külön-külön olvasnak. Ezenkívül egyesek nehezebben olvashatónak találják a csupa nagybetűs szöveget, és úgy tűnhet, mintha kiabálnának.',
+ QA_DUPLICATE_ID: 'Találtunk duplikált azonosítót. A duplikált azonosító hibák köztudottan problémákat okoznak a segítő technológiák számára, amikor azok megpróbálnak interakcióba lépni a tartalommal.
Kérjük, távolítsa el vagy változtassa meg a következő azonosítót: %(id)',
+ QA_TEXT_UNDERLINE_WARNING: 'Az aláhúzott szöveg összetéveszthető a linkekkel. Fontolja meg egy másik stílus használatát, például <strong>
strong fontosság</strong>
vagy <em>
emphasis</em>
.',
+ QA_SUBSCRIPT_WARNING: 'Az alul- és felülírás formázási beállításokat csak a szöveg pozíciójának tipográfiai konvenciók vagy szabványok szerinti megváltoztatására szabad használni. Nem szabad nem kizárólag megjelenítési vagy megjelenési célokra használni. Teljes mondatok formázása olvashatósági problémákat vet fel. Megfelelő felhasználási esetek közé tartozhat az exponensek, rendszámok, például 4th helyett 4th, és kémiai képletek (pl. H2O) megjelenítése.',
+ TABLES_MISSING_HEADINGS: 'Hiányzó táblázatfejlécek! A hozzáférhető táblázatokhoz olyan HTML-jelölésre van szükség, amely jelzi a fejléccellákat és az adatcellákat, amelyek meghatározzák a kapcsolatukat. Ez az információ kontextust biztosít a segítő technológiát használó emberek számára. A táblázatokat csak táblázatos adatokhoz szabad használni.
Tudjon meg többet a hozzáférhető táblázatokról.',
+ TABLES_SEMANTIC_HEADING: 'Az olyan szemantikus címsorokat, mint a Heading 2 vagy Heading 3, csak a tartalmi részeknél szabad használni; nem a HTML táblázatokban. A táblázatcímeket ehelyett a <th>
elemmel jelezze.
Tudjon meg többet a elérhető táblázatokról.',
+ TABLES_EMPTY_HEADING: 'Üres asztali fejlécet találtunk! A táblázat fejlécének soha nem szabad üresnek lennie. Fontos a sor- és/vagy oszlopfejlécek kijelölése a kapcsolatuk érzékeltetése érdekében. Ez az információ kontextust biztosít a segítő technológiát használó emberek számára. Ne feledje, hogy a táblázatok csak táblázatos adatokhoz használhatók.
Tudjon meg többet a elérhető táblázatokról.',
+ CONTRAST_ERROR: 'Ez a szöveg nem elég kontrasztos a háttérrel szemben. A kontrasztaránynak normál szöveg esetén legalább 4,5:1, nagyméretű szöveg esetén pedig 3:1 arányúnak kell lennie.
A kontrasztarány %(cratio) a következő szöveg esetében: %(sanitizedText)',
+ CONTRAST_WARNING: 'Ennek a szövegnek a kontrasztja ismeretlen, és kézzel kell ellenőrizni. Biztosítsa, hogy a szöveg és a háttér színei erősen kontrasztosak legyenek. A kontrasztaránynak normál szöveg esetén legalább 4,5:1, nagyméretű szöveg esetén pedig 3:1 arányúnak kell lennie.
Kérem, vizsgálja felül: %(sanitizedText)',
+ CONTRAST_INPUT_ERROR: 'A szövegnek ebben a bevitelben nincs elég kontrasztja a háttérrel. A kontrasztaránynak normál szöveg esetén legalább 4,5:1, nagyméretű szöveg esetén pedig 3:1 arányúnak kell lennie.
Kontrasztarány: %(cratio)',
+ },
+ };
+
+ return hu;
+
+}));
diff --git a/assets/dist/js/lang/id.js b/assets/dist/js/lang/id.js
index 94588d4..ecedf38 100644
--- a/assets/dist/js/lang/id.js
+++ b/assets/dist/js/lang/id.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var id = {
HEADING_NOT_VISIBLE_ALERT: 'Judul tidak terlihat; judul mungkin tersembunyi atau berada di dalam komponen akordeon atau tab.',
SKIP_TO_PAGE_ISSUES: 'Loncat ke Halaman Masalah',
CONSOLE_ERROR_MESSAGE: 'Maaf, ada masalah dengan pemeriksa aksesibilitas di halaman ini. Bisakah Anda melaporkannya melalui formulir ini atau di GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Tampilkan %(dismissCount) peringatan yang diberhentikan',
DISMISS: 'Bubarkan.',
DISMISSED: 'Peringatan yang diabaikan',
DISMISS_REMINDER: 'Harap diperhatikan bahwa peringatan hanya bersifat sementara. Menghapus riwayat browser dan cookie Anda akan mengembalikan semua peringatan yang sebelumnya diberhentikan di semua halaman.',
+
+ // Export
+ DATE: 'Tanggal',
+ PAGE_TITLE: 'Judul Halaman',
+ RESULTS: 'Hasil',
+ EXPORT_RESULTS: 'Ekspor hasil',
+ GENERATED: 'Hasil dihasilkan dengan %(tool).',
+ PREVIEW: 'Pratinjau',
+ ELEMENT: 'Elemen',
+ PATH: 'Jalur',
+
+ // Colour filters
COLOUR_FILTER: 'Filter warna',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -60,6 +74,8 @@ var id = {
BLUE_EYE: 'Biru buta.',
MONO_EYE: 'Buta merah, biru, dan hijau.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Filter warna tidak berfungsi dalam mode kontras tinggi.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'gambar',
'grafik',
@@ -141,6 +157,7 @@ var id = {
HEADING_MISSING_ONE: 'Heading 1. Heading 1 seharusnya menjadi awal dari area konten utama, dan merupakan heading utama yang menjelaskan tujuan keseluruhan halaman. Pelajari lebih lanjut tentang Struktur Judul.',
HEADING_EMPTY_WITH_IMAGE: 'Judul tidak memiliki teks, namun berisi gambar. Jika ini bukan judul, ubah formatnya dari Judul %(level) ke Normal atau Paragraf. Jika tidak, tambahkan teks alt ke gambar jika tidak bersifat dekoratif.',
PANEL_HEADING_MISSING_ONE: 'Hilang Heading 1!',
+ PANEL_NO_HEADINGS: 'Tidak ada judul ditemukan.',
LINK_EMPTY: 'Hapus tautan kosong tanpa teks apa pun.',
LINK_EMPTY_LINK_NO_LABEL: 'Tautan tidak memiliki teks yang dapat dilihat oleh pembaca layar dan teknologi bantuan lainnya. Untuk memperbaiki: - Tambahkan beberapa teks ringkas yang menjelaskan ke mana tautan tersebut membawa Anda.
- Jika tautan tersebut adalah tautan ikon atau SVG, kemungkinan besar tautan tersebut tidak memiliki label deskriptif.
- Jika Anda merasa tautan tersebut merupakan kesalahan akibat bug salin/tempel, pertimbangkan untuk menghapusnya.
',
LINK_LABEL: 'Label tautan: %(sanitizedText)',
@@ -154,18 +171,18 @@ var id = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Gambar digunakan sebagai tautan dengan teks di sekitarnya, meskipun atribut alt harus ditandai sebagai dekoratif atau nol.',
MISSING_ALT_LINK_MESSAGE: 'Gambar digunakan sebagai tautan tetapi tidak memiliki teks alt! Pastikan teks alt menjelaskan ke mana tautan tersebut membawa Anda.',
MISSING_ALT_MESSAGE: 'Teks alt yang hilang! Jika gambar menyampaikan suatu cerita, suasana hati, atau informasi penting - pastikan untuk mendeskripsikan gambar tersebut.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Ekstensi file dalam teks alt ditemukan. Pastikan teks alt menjelaskan tujuan tautan, bukan deskripsi harfiah dari gambar. Hapus: %(error).
Alt text: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Ekstensi file dalam teks alt ditemukan. Pastikan teks alt menjelaskan tujuan tautan, bukan deskripsi harfiah dari gambar. Hapus: %(error).
Alt text: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Teks alt non-deskripsi atau placeholder dalam gambar yang ditautkan ditemukan. Pastikan teks alt mendeskripsikan tujuan tautan, bukan deskripsi harfiah gambar. Ganti teks alt berikut ini: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Teknologi bantuan sudah menunjukkan bahwa ini adalah gambar, jadi "%(error)" mungkin berlebihan. Pastikan teks alt menjelaskan tujuan tautan, bukan deskripsi harfiah dari gambar.
Alt text: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Ekstensi file dalam teks alt ditemukan. Jika gambar menyampaikan cerita, suasana hati, atau informasi penting - pastikan untuk mendeskripsikan gambar. Hapus: %(error).
Alt text: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Ekstensi file dalam teks alt ditemukan. Jika gambar menyampaikan cerita, suasana hati, atau informasi penting - pastikan untuk mendeskripsikan gambar. Hapus: %(error).
Alt text: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Teks alt non-deskripsi atau placeholder ditemukan. Ganti teks alt berikut dengan sesuatu yang lebih bermakna: %(altText)',
ALT_HAS_SUS_WORD: 'Teknologi bantuan sudah menunjukkan bahwa ini adalah gambar, jadi "%(error)" mungkin berlebihan.
Alt text: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Tautan di sekitar gambar memiliki aria-hidden="true" namun masih dapat difokuskan dengan keyboard. Jika Anda bermaksud menyembunyikan tautan yang berlebihan atau duplikat, tambahkan tabindex="-1"
juga.',
+ LINK_HIDDEN_FOCUSABLE: 'Tautan memiliki aria-hidden="true"
tetapi masih dapat difokuskan menggunakan keyboard. Jika Anda bermaksud menyembunyikan tautan yang redundan atau duplikat, tambahkan juga tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Gambar di dalam tautan ditandai sebagai dekoratif dan tidak ada teks tautan. Tambahkan teks alt ke gambar yang menjelaskan tujuan tautan.',
LINK_IMAGE_HAS_TEXT: 'Gambar ditandai sebagai dekoratif, meskipun tautannya menggunakan teks di sekelilingnya sebagai label deskriptif.',
LINK_IMAGE_LONG_ALT: 'Deskripsi teks alt pada gambar yang ditautkan terlalu panjang. Teks alt pada gambar yang ditautkan harus menjelaskan ke mana tautan tersebut membawa Anda, bukan deskripsi harfiah dari gambar tersebut. Pertimbangkan untuk menggunakan judul halaman yang ditautkan sebagai teks alt.
Teks alt (%(panjang alt) karakter):%(altText)',
LINK_IMAGE_ALT_WARNING: 'Tautan gambar berisi teks alt. Apakah teks alt menjelaskan ke mana tautan tersebut membawa Anda? Pertimbangkan untuk menggunakan judul halaman yang ditautkan sebagai teks alt.
Alt text: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Tautan gambar berisi teks alt dan teks tautan di sekitarnya. Jika gambar ini bersifat dekoratif dan digunakan sebagai tautan fungsional ke halaman lain, pertimbangkan untuk menandai gambar tersebut sebagai dekoratif atau nol - teks tautan di sekitarnya sudah cukup.
Alt text: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Tautan gambar berisi teks alt dan teks tautan di sekitarnya. Jika gambar ini bersifat dekoratif dan digunakan sebagai tautan fungsional ke halaman lain, pertimbangkan untuk menandai gambar tersebut sebagai dekoratif atau nol - teks tautan di sekitarnya sudah cukup.
Alt text: %(altText)
Label tautan: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Gambar ditandai sebagai dekoratif dan akan diabaikan oleh teknologi bantuan.
Meskipun caption disediakan, gambar juga harus memiliki teks alt dalam banyak kasus. - Teks alt harus memberikan deskripsi ringkas tentang apa yang ada di dalam gambar.
- Teks keterangan biasanya harus memberikan konteks untuk menghubungkan gambar kembali ke konten di sekitarnya, atau memberikan perhatian pada bagian informasi tertentu.
Pelajari lebih lanjut: alt versus keterangan gambar.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Jangan gunakan kata-kata yang sama persis untuk teks alt dan teks keterangan. Pembaca layar akan mengumumkan informasi tersebut dua kali.- Teks alt harus memberikan deskripsi ringkas tentang apa yang ada dalam gambar.
- Teks keterangan biasanya harus memberikan konteks untuk menghubungkan gambar kembali ke konten di sekitarnya, atau memberikan perhatian pada bagian informasi tertentu.
Pelajari lebih lanjut: alt versus keterangan gambar.
Alt text: %(altText)',
IMAGE_DECORATIVE: 'Gambar ditandai sebagai dekoratif dan akan diabaikan oleh teknologi bantuan. Jika gambar menyampaikan cerita, suasana hati, atau informasi penting - pastikan untuk menambahkan teks alternatif.',
@@ -173,14 +190,15 @@ var id = {
IMAGE_PASS: 'Alt text: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Tombol gambar tidak memiliki teks alt. Tambahkan teks alt untuk memberikan nama yang dapat diakses. Sebagai contoh: Cari atau Kirim.',
LABELS_INPUT_RESET_MESSAGE: 'Tombol Reset sebaiknya tidak digunakan kecuali jika secara khusus diperlukan karena mudah diaktifkan secara tidak sengaja.
Tip! Pelajari mengapa tombol Reset dan Batal menimbulkan masalah dalam hal kegunaan.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Input memiliki nama yang dapat diakses, meskipun pastikan ada label yang terlihat juga.
Nama yang dapat diakses untuk input ini adalah: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Input memiliki nama yang dapat diakses, meskipun pastikan ada label yang terlihat juga.
Label masukan: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Tidak ada label yang terkait dengan input ini. Tambahkan atribut untuk ke label yang sesuai dengan id input ini.
ID untuk input ini adalah: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Tidak ada label yang terkait dengan input ini. Tambahkan id ke input ini, dan tambahkan atribut untuk yang sesuai ke label.',
EMBED_VIDEO: 'Pastikan semua video memiliki teks tertutup. Menyediakan teks untuk semua konten audio dan video adalah persyaratan Level A wajib. Teks mendukung orang-orang yang tuli atau sulit mendengar.',
EMBED_AUDIO: 'Pastikan untuk menyediakan transkrip untuk semua podcast. Menyediakan transkrip untuk konten audio adalah persyaratan Level A wajib. Transkrip membantu orang-orang yang tuli atau sulit mendengar, tetapi dapat bermanfaat bagi semua orang. Pertimbangkan untuk menempatkan transkrip di bawah atau di dalam panel akordeon.',
EMBED_DATA_VIZ: 'Widget visualisasi data seperti ini sering menjadi masalah bagi orang yang menggunakan keyboard atau pembaca layar untuk menavigasi, dan dapat menimbulkan kesulitan yang signifikan bagi orang yang memiliki penglihatan rendah atau buta warna. Disarankan untuk memberikan informasi yang sama dalam format alternatif (teks atau tabel) di bawah widget.
Pelajari lebih lanjut tentang gambar kompleks.',
- EMBED_MISSING_TITLE: 'Konten yang disematkan memerlukan nama yang dapat diakses yang menjelaskan isinya. Berikan atribut judul atau label-aria yang unik pada elemen iframe . Pelajari lebih lanjut tentang iFrames.',
+ EMBED_MISSING_TITLE: 'Konten yang disematkan memerlukan nama yang dapat diakses yang menjelaskan isinya. Berikan atribut judul atau label-aria yang unik pada elemen iframe . Pelajari lebih lanjut tentang iFrames.',
EMBED_GENERAL_WARNING: 'Tidak dapat memeriksa konten yang disematkan. Pastikan gambar memiliki teks alt, video memiliki keterangan, teks memiliki kontras yang memadai, dan komponen interaktif dapat diakses dengan keyboard.',
+ EMBED_UNFOCUSABLE: '<iframe>
dengan elemen yang tidak dapat difokuskan seharusnya tidak memiliki tabindex="-1"
. Konten yang disematkan tidak akan dapat diakses menggunakan keyboard.',
QA_BAD_LINK: 'Tautan buruk ditemukan. Tautan yang muncul mengarah ke lingkungan pengembangan.
Tautan ini mengarah ke:
%(el)',
QA_BAD_ITALICS: 'Tag cetak tebal dan miring memiliki makna semantik, dan tidak boleh digunakan untuk menyorot seluruh paragraf. Teks yang dicetak tebal harus digunakan untuk memberikan penekanan yang kuat pada sebuah kata atau frasa. Huruf miring harus digunakan untuk menyoroti nama diri (misalnya judul buku dan artikel), kata-kata asing, kutipan. Kutipan panjang harus diformat sebagai kutipan blok.',
QA_PDF: 'Tidak dapat memeriksa aksesibilitas PDF. PDF dianggap sebagai konten web dan harus dapat diakses juga. PDF sering kali mengandung masalah bagi orang yang menggunakan pembaca layar (tag struktural yang hilang atau label bidang formulir yang hilang) dan orang yang memiliki penglihatan rendah (teks tidak dapat dilihat ketika diperbesar). - Jika ini adalah formulir, pertimbangkan untuk menggunakan formulir HTML yang dapat diakses sebagai alternatif.
- Jika ini adalah dokumen, pertimbangkan untuk mengonversinya menjadi halaman web.
Jika tidak, periksa PDF untuk aksesibilitas di Acrobat DC.',
diff --git a/assets/dist/js/lang/id.umd.js b/assets/dist/js/lang/id.umd.js
index c889106..e058b58 100644
--- a/assets/dist/js/lang/id.umd.js
+++ b/assets/dist/js/lang/id.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: 'Judul tidak terlihat; judul mungkin tersembunyi atau berada di dalam komponen akordeon atau tab.',
SKIP_TO_PAGE_ISSUES: 'Loncat ke Halaman Masalah',
CONSOLE_ERROR_MESSAGE: 'Maaf, ada masalah dengan pemeriksa aksesibilitas di halaman ini. Bisakah Anda melaporkannya melalui formulir ini atau di GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Tampilkan %(dismissCount) peringatan yang diberhentikan',
DISMISS: 'Bubarkan.',
DISMISSED: 'Peringatan yang diabaikan',
DISMISS_REMINDER: 'Harap diperhatikan bahwa peringatan hanya bersifat sementara. Menghapus riwayat browser dan cookie Anda akan mengembalikan semua peringatan yang sebelumnya diberhentikan di semua halaman.',
+
+ // Export
+ DATE: 'Tanggal',
+ PAGE_TITLE: 'Judul Halaman',
+ RESULTS: 'Hasil',
+ EXPORT_RESULTS: 'Ekspor hasil',
+ GENERATED: 'Hasil dihasilkan dengan %(tool).',
+ PREVIEW: 'Pratinjau',
+ ELEMENT: 'Elemen',
+ PATH: 'Jalur',
+
+ // Colour filters
COLOUR_FILTER: 'Filter warna',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -66,6 +80,8 @@
BLUE_EYE: 'Biru buta.',
MONO_EYE: 'Buta merah, biru, dan hijau.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Filter warna tidak berfungsi dalam mode kontras tinggi.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'gambar',
'grafik',
@@ -147,6 +163,7 @@
HEADING_MISSING_ONE: 'Heading 1. Heading 1 seharusnya menjadi awal dari area konten utama, dan merupakan heading utama yang menjelaskan tujuan keseluruhan halaman. Pelajari lebih lanjut tentang Struktur Judul.',
HEADING_EMPTY_WITH_IMAGE: 'Judul tidak memiliki teks, namun berisi gambar. Jika ini bukan judul, ubah formatnya dari Judul %(level) ke Normal atau Paragraf. Jika tidak, tambahkan teks alt ke gambar jika tidak bersifat dekoratif.',
PANEL_HEADING_MISSING_ONE: 'Hilang Heading 1!',
+ PANEL_NO_HEADINGS: 'Tidak ada judul ditemukan.',
LINK_EMPTY: 'Hapus tautan kosong tanpa teks apa pun.',
LINK_EMPTY_LINK_NO_LABEL: 'Tautan tidak memiliki teks yang dapat dilihat oleh pembaca layar dan teknologi bantuan lainnya. Untuk memperbaiki: - Tambahkan beberapa teks ringkas yang menjelaskan ke mana tautan tersebut membawa Anda.
- Jika tautan tersebut adalah tautan ikon atau SVG, kemungkinan besar tautan tersebut tidak memiliki label deskriptif.
- Jika Anda merasa tautan tersebut merupakan kesalahan akibat bug salin/tempel, pertimbangkan untuk menghapusnya.
',
LINK_LABEL: 'Label tautan: %(sanitizedText)',
@@ -160,18 +177,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Gambar digunakan sebagai tautan dengan teks di sekitarnya, meskipun atribut alt harus ditandai sebagai dekoratif atau nol.',
MISSING_ALT_LINK_MESSAGE: 'Gambar digunakan sebagai tautan tetapi tidak memiliki teks alt! Pastikan teks alt menjelaskan ke mana tautan tersebut membawa Anda.',
MISSING_ALT_MESSAGE: 'Teks alt yang hilang! Jika gambar menyampaikan suatu cerita, suasana hati, atau informasi penting - pastikan untuk mendeskripsikan gambar tersebut.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Ekstensi file dalam teks alt ditemukan. Pastikan teks alt menjelaskan tujuan tautan, bukan deskripsi harfiah dari gambar. Hapus: %(error).
Alt text: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Ekstensi file dalam teks alt ditemukan. Pastikan teks alt menjelaskan tujuan tautan, bukan deskripsi harfiah dari gambar. Hapus: %(error).
Alt text: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Teks alt non-deskripsi atau placeholder dalam gambar yang ditautkan ditemukan. Pastikan teks alt mendeskripsikan tujuan tautan, bukan deskripsi harfiah gambar. Ganti teks alt berikut ini: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Teknologi bantuan sudah menunjukkan bahwa ini adalah gambar, jadi "%(error)" mungkin berlebihan. Pastikan teks alt menjelaskan tujuan tautan, bukan deskripsi harfiah dari gambar.
Alt text: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Ekstensi file dalam teks alt ditemukan. Jika gambar menyampaikan cerita, suasana hati, atau informasi penting - pastikan untuk mendeskripsikan gambar. Hapus: %(error).
Alt text: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Ekstensi file dalam teks alt ditemukan. Jika gambar menyampaikan cerita, suasana hati, atau informasi penting - pastikan untuk mendeskripsikan gambar. Hapus: %(error).
Alt text: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Teks alt non-deskripsi atau placeholder ditemukan. Ganti teks alt berikut dengan sesuatu yang lebih bermakna: %(altText)',
ALT_HAS_SUS_WORD: 'Teknologi bantuan sudah menunjukkan bahwa ini adalah gambar, jadi "%(error)" mungkin berlebihan.
Alt text: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Tautan di sekitar gambar memiliki aria-hidden="true" namun masih dapat difokuskan dengan keyboard. Jika Anda bermaksud menyembunyikan tautan yang berlebihan atau duplikat, tambahkan tabindex="-1"
juga.',
+ LINK_HIDDEN_FOCUSABLE: 'Tautan memiliki aria-hidden="true"
tetapi masih dapat difokuskan menggunakan keyboard. Jika Anda bermaksud menyembunyikan tautan yang redundan atau duplikat, tambahkan juga tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Gambar di dalam tautan ditandai sebagai dekoratif dan tidak ada teks tautan. Tambahkan teks alt ke gambar yang menjelaskan tujuan tautan.',
LINK_IMAGE_HAS_TEXT: 'Gambar ditandai sebagai dekoratif, meskipun tautannya menggunakan teks di sekelilingnya sebagai label deskriptif.',
LINK_IMAGE_LONG_ALT: 'Deskripsi teks alt pada gambar yang ditautkan terlalu panjang. Teks alt pada gambar yang ditautkan harus menjelaskan ke mana tautan tersebut membawa Anda, bukan deskripsi harfiah dari gambar tersebut. Pertimbangkan untuk menggunakan judul halaman yang ditautkan sebagai teks alt.
Teks alt (%(panjang alt) karakter):%(altText)',
LINK_IMAGE_ALT_WARNING: 'Tautan gambar berisi teks alt. Apakah teks alt menjelaskan ke mana tautan tersebut membawa Anda? Pertimbangkan untuk menggunakan judul halaman yang ditautkan sebagai teks alt.
Alt text: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Tautan gambar berisi teks alt dan teks tautan di sekitarnya. Jika gambar ini bersifat dekoratif dan digunakan sebagai tautan fungsional ke halaman lain, pertimbangkan untuk menandai gambar tersebut sebagai dekoratif atau nol - teks tautan di sekitarnya sudah cukup.
Alt text: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Tautan gambar berisi teks alt dan teks tautan di sekitarnya. Jika gambar ini bersifat dekoratif dan digunakan sebagai tautan fungsional ke halaman lain, pertimbangkan untuk menandai gambar tersebut sebagai dekoratif atau nol - teks tautan di sekitarnya sudah cukup.
Alt text: %(altText)
Label tautan: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Gambar ditandai sebagai dekoratif dan akan diabaikan oleh teknologi bantuan.
Meskipun caption disediakan, gambar juga harus memiliki teks alt dalam banyak kasus. - Teks alt harus memberikan deskripsi ringkas tentang apa yang ada di dalam gambar.
- Teks keterangan biasanya harus memberikan konteks untuk menghubungkan gambar kembali ke konten di sekitarnya, atau memberikan perhatian pada bagian informasi tertentu.
Pelajari lebih lanjut: alt versus keterangan gambar.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Jangan gunakan kata-kata yang sama persis untuk teks alt dan teks keterangan. Pembaca layar akan mengumumkan informasi tersebut dua kali.- Teks alt harus memberikan deskripsi ringkas tentang apa yang ada dalam gambar.
- Teks keterangan biasanya harus memberikan konteks untuk menghubungkan gambar kembali ke konten di sekitarnya, atau memberikan perhatian pada bagian informasi tertentu.
Pelajari lebih lanjut: alt versus keterangan gambar.
Alt text: %(altText)',
IMAGE_DECORATIVE: 'Gambar ditandai sebagai dekoratif dan akan diabaikan oleh teknologi bantuan. Jika gambar menyampaikan cerita, suasana hati, atau informasi penting - pastikan untuk menambahkan teks alternatif.',
@@ -179,14 +196,15 @@
IMAGE_PASS: 'Alt text: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Tombol gambar tidak memiliki teks alt. Tambahkan teks alt untuk memberikan nama yang dapat diakses. Sebagai contoh: Cari atau Kirim.',
LABELS_INPUT_RESET_MESSAGE: 'Tombol Reset sebaiknya tidak digunakan kecuali jika secara khusus diperlukan karena mudah diaktifkan secara tidak sengaja.
Tip! Pelajari mengapa tombol Reset dan Batal menimbulkan masalah dalam hal kegunaan.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Input memiliki nama yang dapat diakses, meskipun pastikan ada label yang terlihat juga.
Nama yang dapat diakses untuk input ini adalah: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Input memiliki nama yang dapat diakses, meskipun pastikan ada label yang terlihat juga.
Label masukan: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Tidak ada label yang terkait dengan input ini. Tambahkan atribut untuk ke label yang sesuai dengan id input ini.
ID untuk input ini adalah: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Tidak ada label yang terkait dengan input ini. Tambahkan id ke input ini, dan tambahkan atribut untuk yang sesuai ke label.',
EMBED_VIDEO: 'Pastikan semua video memiliki teks tertutup. Menyediakan teks untuk semua konten audio dan video adalah persyaratan Level A wajib. Teks mendukung orang-orang yang tuli atau sulit mendengar.',
EMBED_AUDIO: 'Pastikan untuk menyediakan transkrip untuk semua podcast. Menyediakan transkrip untuk konten audio adalah persyaratan Level A wajib. Transkrip membantu orang-orang yang tuli atau sulit mendengar, tetapi dapat bermanfaat bagi semua orang. Pertimbangkan untuk menempatkan transkrip di bawah atau di dalam panel akordeon.',
EMBED_DATA_VIZ: 'Widget visualisasi data seperti ini sering menjadi masalah bagi orang yang menggunakan keyboard atau pembaca layar untuk menavigasi, dan dapat menimbulkan kesulitan yang signifikan bagi orang yang memiliki penglihatan rendah atau buta warna. Disarankan untuk memberikan informasi yang sama dalam format alternatif (teks atau tabel) di bawah widget.
Pelajari lebih lanjut tentang gambar kompleks.',
- EMBED_MISSING_TITLE: 'Konten yang disematkan memerlukan nama yang dapat diakses yang menjelaskan isinya. Berikan atribut judul atau label-aria yang unik pada elemen iframe . Pelajari lebih lanjut tentang iFrames.',
+ EMBED_MISSING_TITLE: 'Konten yang disematkan memerlukan nama yang dapat diakses yang menjelaskan isinya. Berikan atribut judul atau label-aria yang unik pada elemen iframe . Pelajari lebih lanjut tentang iFrames.',
EMBED_GENERAL_WARNING: 'Tidak dapat memeriksa konten yang disematkan. Pastikan gambar memiliki teks alt, video memiliki keterangan, teks memiliki kontras yang memadai, dan komponen interaktif dapat diakses dengan keyboard.',
+ EMBED_UNFOCUSABLE: '<iframe>
dengan elemen yang tidak dapat difokuskan seharusnya tidak memiliki tabindex="-1"
. Konten yang disematkan tidak akan dapat diakses menggunakan keyboard.',
QA_BAD_LINK: 'Tautan buruk ditemukan. Tautan yang muncul mengarah ke lingkungan pengembangan.
Tautan ini mengarah ke:
%(el)',
QA_BAD_ITALICS: 'Tag cetak tebal dan miring memiliki makna semantik, dan tidak boleh digunakan untuk menyorot seluruh paragraf. Teks yang dicetak tebal harus digunakan untuk memberikan penekanan yang kuat pada sebuah kata atau frasa. Huruf miring harus digunakan untuk menyoroti nama diri (misalnya judul buku dan artikel), kata-kata asing, kutipan. Kutipan panjang harus diformat sebagai kutipan blok.',
QA_PDF: 'Tidak dapat memeriksa aksesibilitas PDF. PDF dianggap sebagai konten web dan harus dapat diakses juga. PDF sering kali mengandung masalah bagi orang yang menggunakan pembaca layar (tag struktural yang hilang atau label bidang formulir yang hilang) dan orang yang memiliki penglihatan rendah (teks tidak dapat dilihat ketika diperbesar). - Jika ini adalah formulir, pertimbangkan untuk menggunakan formulir HTML yang dapat diakses sebagai alternatif.
- Jika ini adalah dokumen, pertimbangkan untuk mengonversinya menjadi halaman web.
Jika tidak, periksa PDF untuk aksesibilitas di Acrobat DC.',
diff --git a/assets/dist/js/lang/it.js b/assets/dist/js/lang/it.js
index 68cdff9..0be96a3 100644
--- a/assets/dist/js/lang/it.js
+++ b/assets/dist/js/lang/it.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var it = {
HEADING_NOT_VISIBLE_ALERT: "L'intestazione non è visibile; può essere nascosta o all'interno di un componente fisarmonica o scheda.",
SKIP_TO_PAGE_ISSUES: 'Vai alla pagina Problemi',
CONSOLE_ERROR_MESSAGE: "Siamo spiacenti, ma c'è un problema con il verificatore di accessibilità di questa pagina. Puoi per favore riportarlo attraverso questo modulo o su GitHub?",
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Mostra %(dismissCount) gli avvisi respinti',
DISMISS: 'Congedo',
DISMISSED: 'Avvertenze respinte',
DISMISS_REMINDER: 'Si noti che gli avvisi vengono eliminati solo temporaneamente. La cancellazione della cronologia e dei cookie del browser ripristinerà tutti gli avvisi precedentemente eliminati in tutte le pagine.',
+
+ // Export
+ DATE: 'Data',
+ PAGE_TITLE: 'Titolo della pagina',
+ RESULTS: 'Risultati',
+ EXPORT_RESULTS: 'Esporta risultati',
+ GENERATED: 'Risultati generati con %(tool).',
+ PREVIEW: 'Anteprima',
+ ELEMENT: 'Elemento',
+ PATH: 'Percorso',
+
+ // Colour filters
COLOUR_FILTER: 'Filtro colore',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -60,6 +74,8 @@ var it = {
BLUE_EYE: 'Cieco blu.',
MONO_EYE: 'Cieco rosso, blu e verde.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'I filtri colore non funzionano in modalità alto contrasto.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'immagine',
'grafico',
@@ -140,6 +156,7 @@ var it = {
HEADING_MISSING_ONE: "Manca l'intestazione 1. L'intestazione 1 dovrebbe essere l'inizio dell'area di contenuto principale ed è l'intestazione principale che descrive lo scopo generale della pagina. Per saperne di più Struttura delle intestazioni.",
HEADING_EMPTY_WITH_IMAGE: "L'intestazione non ha testo, ma contiene un'immagine. Se non si tratta di un titolo, cambiarne il formato da Testamento %(level) a Normale o Paragrafo. Altrimenti, aggiungere un testo alt all'immagine, se non è decorativo.",
PANEL_HEADING_MISSING_ONE: "Manca l'intestazione 1!",
+ PANEL_NO_HEADINGS: 'Nessun titolo trovato.',
LINK_EMPTY: 'Rimuovere i link vuoti senza testo.',
LINK_EMPTY_LINK_NO_LABEL: "Il link non ha un testo distinguibile che sia visibile agli screen reader e ad altre tecnologie assistive. Per risolvere il problema: - Aggiungi un testo conciso che descriva dove porta il link.
- Se si tratta di un collegamento a un'icona o a un SVG, è probabile che manchi un'etichetta descrittiva.
- Se pensi che questo link sia un errore dovuto a un bug di copia/incolla, prendi in considerazione l'idea di cancellarlo.
",
LINK_LABEL: 'Etichetta del link: %(sanitizedText)',
@@ -153,18 +170,18 @@ var it = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: "L'immagine viene utilizzata come link con testo circostante, anche se l'attributo alt dovrebbe essere contrassegnato come decorativo o nullo.",
MISSING_ALT_LINK_MESSAGE: "L'immagine viene utilizzata come link ma manca il testo alt! Assicurarsi che il testo alt descriva dove porta il link.",
MISSING_ALT_MESSAGE: "Manca il testo alt! Se l'immagine trasmette una storia, uno stato d'animo o un'informazione importante, assicuratevi di descrivere l'immagine.",
- LINK_IMAGE_BAD_ALT_MESSAGE: "Estensione del file nel testo alt trovata. Assicurarsi che il testo alt descriva la destinazione del link e non una descrizione letterale dell'immagine. Rimuovere: %(error).
Testo alt: %(altText)",
+ LINK_ALT_HAS_FILE_EXTENSION: "Estensione del file nel testo alt trovata. Assicurarsi che il testo alt descriva la destinazione del link e non una descrizione letterale dell'immagine. Rimuovere: %(error).
Testo alt: %(altText)",
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: "Trovato testo alt non descrittivo o segnaposto in un'immagine collegata. Assicurarsi che il testo alt descriva la destinazione del link e non una descrizione letterale dell'immagine. Sostituire il seguente testo alt: %(altText)",
LINK_IMAGE_SUS_ALT_MESSAGE: "Le tecnologie assistive indicano già che si tratta di un'immagine, quindi "%(error)" potrebbe essere ridondante. Assicuratevi che il testo alt descriva la destinazione del link e non una descrizione letterale dell'immagine.
Testo alt: %(altText)",
- LINK_ALT_HAS_BAD_WORD_MESSAGE: "Estensione del file nel testo alt trovato. Se l'immagine trasmette una storia, uno stato d'animo o un'informazione importante, assicuratevi di descrivere l'immagine. Rimuovere: %(error).
Testo alt: %(altText)",
+ ALT_HAS_FILE_EXTENSION: "Estensione del file nel testo alt trovato. Se l'immagine trasmette una storia, uno stato d'animo o un'informazione importante, assicuratevi di descrivere l'immagine. Rimuovere: %(error).
Testo alt: %(altText)",
ALT_PLACEHOLDER_MESSAGE: 'Trovato testo alt non descrittivo o segnaposto. Sostituire il seguente testo alt con qualcosa di più significativo: %(altText)',
ALT_HAS_SUS_WORD: "Le tecnologie assistive indicano già che si tratta di un'immagine, quindi "%(error)" potrebbe essere ridondante.
Testo alternativo: %(altText)",
- LINK_IMAGE_ARIA_HIDDEN: "Il collegamento intorno all'immagine ha aria-hidden="true"
ma è ancora focalizzabile da tastiera. Se si intende nascondere un collegamento ridondante o duplicato, aggiungere anche tabindex="-1"
.",
+ LINK_HIDDEN_FOCUSABLE: 'Il link ha aria-hidden="true"
ma è comunque selezionabile dalla tastiera. Se hai l\'intenzione di nascondere un link ridondante o duplicato, aggiungi anche tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: "L'immagine all'interno del link è contrassegnata come decorativa e non c'è testo di collegamento. Aggiungere all'immagine un testo alt che descriva la destinazione del link.",
LINK_IMAGE_HAS_TEXT: "L'immagine è contrassegnata come decorativa, anche se il link utilizza il testo circostante come etichetta descrittiva.",
LINK_IMAGE_LONG_ALT: "La descrizione del testo alt su un'immagine collegata è troppo lunga. Il testo alt sulle immagini collegate dovrebbe descrivere dove porta il link, non una descrizione letterale dell'immagine. Considerate di usare il titolo della pagina a cui rimanda come testo alt.
Testo alt (%(altLength) caratteri): %(altText)",
LINK_IMAGE_ALT_WARNING: "Il link all'immagine contiene un testo alt. Il testo alt descrive dove porta il link? Considerate la possibilità di utilizzare come testo alt il titolo della pagina a cui rimanda.
Testo alt: %(altText)",
- LINK_IMAGE_ALT_AND_TEXT_WARNING: "Il link all'immagine contiene sia il testo alt che il testo del link circostante. Se l'immagine è decorativa e viene utilizzata come link funzionale a un'altra pagina, si consideri di contrassegnare l'immagine come decorativa o nulla - il testo del link circostante dovrebbe essere sufficiente.
Testo alt: %(altText)",
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: "Il link all'immagine contiene sia il testo alt che il testo del link circostante. Se l'immagine è decorativa e viene utilizzata come link funzionale a un'altra pagina, si consideri di contrassegnare l'immagine come decorativa o nulla - il testo del link circostante dovrebbe essere sufficiente.
Testo alt: %(altText)
Etichetta del link: %(sanitizedText)",
IMAGE_FIGURE_DECORATIVE: "L'immagine è contrassegnata come decorativa e sarà ignorata dalle tecnologie assistive.
Sebbene sia stata fornita una caption, nella maggior parte dei casi l'immagine dovrebbe avere anche un testo alt. - Il testo alt dovrebbe fornire una descrizione concisa di ciò che è contenuto nell'immagine.
- La didascalia dovrebbe solitamente fornire un contesto per mettere in relazione l'immagine con il contenuto circostante, o dare attenzione a un particolare pezzo di informazione.
Per saperne di più: alt contro figcaption.",
IMAGE_FIGURE_DUPLICATE_ALT: "Non utilizzare le stesse parole sia per il testo alt che per la didascalia. Gli screen reader annunceranno le informazioni due volte.- Il testo alt dovrebbe fornire una descrizione concisa di ciò che è presente nell'immagine.
- La didascalia dovrebbe solitamente fornire un contesto per ricollegare l'immagine al contenuto circostante, o dare attenzione a un particolare pezzo di informazione.
Per saperne di più: alt contro figcaption.
Testo alt: %(altText)",
IMAGE_DECORATIVE: "L'immagine è contrassegnata come decorativa e sarà ignorata dalle tecnologie assistive. Se l'immagine trasmette una storia, uno stato d'animo o un'informazione importante, assicuratevi di aggiungere il testo alt.",
@@ -172,14 +189,15 @@ var it = {
IMAGE_PASS: 'Testo alt: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: "Il pulsante dell'immagine manca del testo alt. Aggiungere il testo alt per fornire un nome accessibile. Ad esempio: Cerca o Invio.",
LABELS_INPUT_RESET_MESSAGE: 'I pulsanti di reset non dovrebbero essere utilizzati se non specificamente necessari, perché è facile che si attivino per errore.
Tip! Scoprite perché i pulsanti Reset e Cancel pongono problemi di usabilità.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: "L'input ha un nome accessibile, anche se bisogna assicurarsi che ci sia anche un'etichetta visibile.
Il nome accessibile per questo input è: %(sanitizedText).",
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: "L'input ha un nome accessibile, anche se bisogna assicurarsi che ci sia anche un'etichetta visibile.
Etichetta input: %(sanitizedText)",
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: "Non c'è un'etichetta associata a questo input. Aggiungere un attributo for
all'etichetta che corrisponda all'id
di questo input.
L'ID di questo input è: id="%(id)".",
LABELS_MISSING_LABEL_MESSAGE: "Non c'è un'etichetta associata a questo input. Aggiungere un id
a questo input e aggiungere un attributo for
corrispondente all'etichetta.",
EMBED_VIDEO: 'Assicuratevi che tutti i video abbiano le didascalie chiuse. Fornire didascalie per tutti i contenuti audio e video è un requisito obbligatorio di livello A. Le didascalie aiutano le persone non udenti o con problemi di udito.',
EMBED_AUDIO: 'Assicuratevi di fornire una trascrizione per tutti i podcast. Fornire trascrizioni per i contenuti audio è un requisito obbligatorio di Livello A. Le trascrizioni sono di supporto alle persone sorde o con problemi di udito, ma possono essere utili a tutti. Considerate la possibilità di inserire la trascrizione in basso o in un pannello a fisarmonica.',
EMBED_DATA_VIZ: 'I widget di visualizzazione dei dati come questo sono spesso problematici per le persone che utilizzano una tastiera o uno screen reader per navigare e possono presentare notevoli difficoltà per le persone ipovedenti o daltoniche. Si consiglia di fornire le stesse informazioni in un formato alternativo (testo o tabella) sotto il widget.
Per saperne di più su immagini complesse.',
- EMBED_MISSING_TITLE: "Il contenuto incorporato richiede un nome accessibile che ne descriva il contenuto. Si prega di fornire un attributo unico title
o aria-label
sull'elemento iframe
. Per saperne di più su iFrames.",
+ EMBED_MISSING_TITLE: "Il contenuto incorporato richiede un nome accessibile che ne descriva il contenuto. Si prega di fornire un attributo unico title
o aria-label
sull'elemento iframe
. Per saperne di più su iFrames.",
EMBED_GENERAL_WARNING: 'Impossibile controllare il contenuto incorporato. Assicuratevi che le immagini abbiano un testo alt, che i video abbiano didascalie, che il testo abbia un contrasto sufficiente e che i componenti interattivi siano accessibili alla tastiera.',
+ EMBED_UNFOCUSABLE: 'Gli <iframe>
con elementi non focalizzabili non devono avere tabindex="-1"
. Il contenuto incorporato non sarà accessibile tramite tastiera.',
QA_BAD_LINK: 'Trovato un link errato. Il link sembra puntare a un ambiente di sviluppo.
Questo link punta a:
%(el)',
QA_BAD_ITALICS: 'I tag grassetto e corsivo hanno un significato semantico e non devono essere usati per evidenziare interi paragrafi. Il testo in grassetto deve essere usato per dare un forte enfasi su una parola o una frase. Il corsivo deve essere usato per evidenziare nomi propri (ad esempio, titoli di libri e articoli), parole straniere e citazioni. Le citazioni lunghe devono essere formattate come blockquote.',
QA_PDF: "Impossibile verificare l'accessibilità dei PDF. I PDF sono considerati contenuti web e devono essere resi accessibili. I PDF spesso presentano problemi per le persone che utilizzano gli screen reader (tag strutturali mancanti o etichette dei campi del modulo mancanti) e per le persone ipovedenti (il testo non scorre quando viene ingrandito). - Se si tratta di un modulo, considerare l'utilizzo di un modulo HTML accessibile come alternativa.
- Se si tratta di un documento, considerare la conversione in una pagina web.
Altrimenti, controllare PDF per l'accessibilità in Acrobat DC.",
diff --git a/assets/dist/js/lang/it.umd.js b/assets/dist/js/lang/it.umd.js
index 37636d1..fa866e9 100644
--- a/assets/dist/js/lang/it.umd.js
+++ b/assets/dist/js/lang/it.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: "L'intestazione non è visibile; può essere nascosta o all'interno di un componente fisarmonica o scheda.",
SKIP_TO_PAGE_ISSUES: 'Vai alla pagina Problemi',
CONSOLE_ERROR_MESSAGE: "Siamo spiacenti, ma c'è un problema con il verificatore di accessibilità di questa pagina. Puoi per favore riportarlo attraverso questo modulo o su GitHub?",
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Mostra %(dismissCount) gli avvisi respinti',
DISMISS: 'Congedo',
DISMISSED: 'Avvertenze respinte',
DISMISS_REMINDER: 'Si noti che gli avvisi vengono eliminati solo temporaneamente. La cancellazione della cronologia e dei cookie del browser ripristinerà tutti gli avvisi precedentemente eliminati in tutte le pagine.',
+
+ // Export
+ DATE: 'Data',
+ PAGE_TITLE: 'Titolo della pagina',
+ RESULTS: 'Risultati',
+ EXPORT_RESULTS: 'Esporta risultati',
+ GENERATED: 'Risultati generati con %(tool).',
+ PREVIEW: 'Anteprima',
+ ELEMENT: 'Elemento',
+ PATH: 'Percorso',
+
+ // Colour filters
COLOUR_FILTER: 'Filtro colore',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -66,6 +80,8 @@
BLUE_EYE: 'Cieco blu.',
MONO_EYE: 'Cieco rosso, blu e verde.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'I filtri colore non funzionano in modalità alto contrasto.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'immagine',
'grafico',
@@ -146,6 +162,7 @@
HEADING_MISSING_ONE: "Manca l'intestazione 1. L'intestazione 1 dovrebbe essere l'inizio dell'area di contenuto principale ed è l'intestazione principale che descrive lo scopo generale della pagina. Per saperne di più Struttura delle intestazioni.",
HEADING_EMPTY_WITH_IMAGE: "L'intestazione non ha testo, ma contiene un'immagine. Se non si tratta di un titolo, cambiarne il formato da Testamento %(level) a Normale o Paragrafo. Altrimenti, aggiungere un testo alt all'immagine, se non è decorativo.",
PANEL_HEADING_MISSING_ONE: "Manca l'intestazione 1!",
+ PANEL_NO_HEADINGS: 'Nessun titolo trovato.',
LINK_EMPTY: 'Rimuovere i link vuoti senza testo.',
LINK_EMPTY_LINK_NO_LABEL: "Il link non ha un testo distinguibile che sia visibile agli screen reader e ad altre tecnologie assistive. Per risolvere il problema: - Aggiungi un testo conciso che descriva dove porta il link.
- Se si tratta di un collegamento a un'icona o a un SVG, è probabile che manchi un'etichetta descrittiva.
- Se pensi che questo link sia un errore dovuto a un bug di copia/incolla, prendi in considerazione l'idea di cancellarlo.
",
LINK_LABEL: 'Etichetta del link: %(sanitizedText)',
@@ -159,18 +176,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: "L'immagine viene utilizzata come link con testo circostante, anche se l'attributo alt dovrebbe essere contrassegnato come decorativo o nullo.",
MISSING_ALT_LINK_MESSAGE: "L'immagine viene utilizzata come link ma manca il testo alt! Assicurarsi che il testo alt descriva dove porta il link.",
MISSING_ALT_MESSAGE: "Manca il testo alt! Se l'immagine trasmette una storia, uno stato d'animo o un'informazione importante, assicuratevi di descrivere l'immagine.",
- LINK_IMAGE_BAD_ALT_MESSAGE: "Estensione del file nel testo alt trovata. Assicurarsi che il testo alt descriva la destinazione del link e non una descrizione letterale dell'immagine. Rimuovere: %(error).
Testo alt: %(altText)",
+ LINK_ALT_HAS_FILE_EXTENSION: "Estensione del file nel testo alt trovata. Assicurarsi che il testo alt descriva la destinazione del link e non una descrizione letterale dell'immagine. Rimuovere: %(error).
Testo alt: %(altText)",
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: "Trovato testo alt non descrittivo o segnaposto in un'immagine collegata. Assicurarsi che il testo alt descriva la destinazione del link e non una descrizione letterale dell'immagine. Sostituire il seguente testo alt: %(altText)",
LINK_IMAGE_SUS_ALT_MESSAGE: "Le tecnologie assistive indicano già che si tratta di un'immagine, quindi "%(error)" potrebbe essere ridondante. Assicuratevi che il testo alt descriva la destinazione del link e non una descrizione letterale dell'immagine.
Testo alt: %(altText)",
- LINK_ALT_HAS_BAD_WORD_MESSAGE: "Estensione del file nel testo alt trovato. Se l'immagine trasmette una storia, uno stato d'animo o un'informazione importante, assicuratevi di descrivere l'immagine. Rimuovere: %(error).
Testo alt: %(altText)",
+ ALT_HAS_FILE_EXTENSION: "Estensione del file nel testo alt trovato. Se l'immagine trasmette una storia, uno stato d'animo o un'informazione importante, assicuratevi di descrivere l'immagine. Rimuovere: %(error).
Testo alt: %(altText)",
ALT_PLACEHOLDER_MESSAGE: 'Trovato testo alt non descrittivo o segnaposto. Sostituire il seguente testo alt con qualcosa di più significativo: %(altText)',
ALT_HAS_SUS_WORD: "Le tecnologie assistive indicano già che si tratta di un'immagine, quindi "%(error)" potrebbe essere ridondante.
Testo alternativo: %(altText)",
- LINK_IMAGE_ARIA_HIDDEN: "Il collegamento intorno all'immagine ha aria-hidden="true"
ma è ancora focalizzabile da tastiera. Se si intende nascondere un collegamento ridondante o duplicato, aggiungere anche tabindex="-1"
.",
+ LINK_HIDDEN_FOCUSABLE: 'Il link ha aria-hidden="true"
ma è comunque selezionabile dalla tastiera. Se hai l\'intenzione di nascondere un link ridondante o duplicato, aggiungi anche tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: "L'immagine all'interno del link è contrassegnata come decorativa e non c'è testo di collegamento. Aggiungere all'immagine un testo alt che descriva la destinazione del link.",
LINK_IMAGE_HAS_TEXT: "L'immagine è contrassegnata come decorativa, anche se il link utilizza il testo circostante come etichetta descrittiva.",
LINK_IMAGE_LONG_ALT: "La descrizione del testo alt su un'immagine collegata è troppo lunga. Il testo alt sulle immagini collegate dovrebbe descrivere dove porta il link, non una descrizione letterale dell'immagine. Considerate di usare il titolo della pagina a cui rimanda come testo alt.
Testo alt (%(altLength) caratteri): %(altText)",
LINK_IMAGE_ALT_WARNING: "Il link all'immagine contiene un testo alt. Il testo alt descrive dove porta il link? Considerate la possibilità di utilizzare come testo alt il titolo della pagina a cui rimanda.
Testo alt: %(altText)",
- LINK_IMAGE_ALT_AND_TEXT_WARNING: "Il link all'immagine contiene sia il testo alt che il testo del link circostante. Se l'immagine è decorativa e viene utilizzata come link funzionale a un'altra pagina, si consideri di contrassegnare l'immagine come decorativa o nulla - il testo del link circostante dovrebbe essere sufficiente.
Testo alt: %(altText)",
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: "Il link all'immagine contiene sia il testo alt che il testo del link circostante. Se l'immagine è decorativa e viene utilizzata come link funzionale a un'altra pagina, si consideri di contrassegnare l'immagine come decorativa o nulla - il testo del link circostante dovrebbe essere sufficiente.
Testo alt: %(altText)
Etichetta del link: %(sanitizedText)",
IMAGE_FIGURE_DECORATIVE: "L'immagine è contrassegnata come decorativa e sarà ignorata dalle tecnologie assistive.
Sebbene sia stata fornita una caption, nella maggior parte dei casi l'immagine dovrebbe avere anche un testo alt. - Il testo alt dovrebbe fornire una descrizione concisa di ciò che è contenuto nell'immagine.
- La didascalia dovrebbe solitamente fornire un contesto per mettere in relazione l'immagine con il contenuto circostante, o dare attenzione a un particolare pezzo di informazione.
Per saperne di più: alt contro figcaption.",
IMAGE_FIGURE_DUPLICATE_ALT: "Non utilizzare le stesse parole sia per il testo alt che per la didascalia. Gli screen reader annunceranno le informazioni due volte.- Il testo alt dovrebbe fornire una descrizione concisa di ciò che è presente nell'immagine.
- La didascalia dovrebbe solitamente fornire un contesto per ricollegare l'immagine al contenuto circostante, o dare attenzione a un particolare pezzo di informazione.
Per saperne di più: alt contro figcaption.
Testo alt: %(altText)",
IMAGE_DECORATIVE: "L'immagine è contrassegnata come decorativa e sarà ignorata dalle tecnologie assistive. Se l'immagine trasmette una storia, uno stato d'animo o un'informazione importante, assicuratevi di aggiungere il testo alt.",
@@ -178,14 +195,15 @@
IMAGE_PASS: 'Testo alt: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: "Il pulsante dell'immagine manca del testo alt. Aggiungere il testo alt per fornire un nome accessibile. Ad esempio: Cerca o Invio.",
LABELS_INPUT_RESET_MESSAGE: 'I pulsanti di reset non dovrebbero essere utilizzati se non specificamente necessari, perché è facile che si attivino per errore.
Tip! Scoprite perché i pulsanti Reset e Cancel pongono problemi di usabilità.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: "L'input ha un nome accessibile, anche se bisogna assicurarsi che ci sia anche un'etichetta visibile.
Il nome accessibile per questo input è: %(sanitizedText).",
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: "L'input ha un nome accessibile, anche se bisogna assicurarsi che ci sia anche un'etichetta visibile.
Etichetta input: %(sanitizedText)",
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: "Non c'è un'etichetta associata a questo input. Aggiungere un attributo for
all'etichetta che corrisponda all'id
di questo input.
L'ID di questo input è: id="%(id)".",
LABELS_MISSING_LABEL_MESSAGE: "Non c'è un'etichetta associata a questo input. Aggiungere un id
a questo input e aggiungere un attributo for
corrispondente all'etichetta.",
EMBED_VIDEO: 'Assicuratevi che tutti i video abbiano le didascalie chiuse. Fornire didascalie per tutti i contenuti audio e video è un requisito obbligatorio di livello A. Le didascalie aiutano le persone non udenti o con problemi di udito.',
EMBED_AUDIO: 'Assicuratevi di fornire una trascrizione per tutti i podcast. Fornire trascrizioni per i contenuti audio è un requisito obbligatorio di Livello A. Le trascrizioni sono di supporto alle persone sorde o con problemi di udito, ma possono essere utili a tutti. Considerate la possibilità di inserire la trascrizione in basso o in un pannello a fisarmonica.',
EMBED_DATA_VIZ: 'I widget di visualizzazione dei dati come questo sono spesso problematici per le persone che utilizzano una tastiera o uno screen reader per navigare e possono presentare notevoli difficoltà per le persone ipovedenti o daltoniche. Si consiglia di fornire le stesse informazioni in un formato alternativo (testo o tabella) sotto il widget.
Per saperne di più su immagini complesse.',
- EMBED_MISSING_TITLE: "Il contenuto incorporato richiede un nome accessibile che ne descriva il contenuto. Si prega di fornire un attributo unico title
o aria-label
sull'elemento iframe
. Per saperne di più su iFrames.",
+ EMBED_MISSING_TITLE: "Il contenuto incorporato richiede un nome accessibile che ne descriva il contenuto. Si prega di fornire un attributo unico title
o aria-label
sull'elemento iframe
. Per saperne di più su iFrames.",
EMBED_GENERAL_WARNING: 'Impossibile controllare il contenuto incorporato. Assicuratevi che le immagini abbiano un testo alt, che i video abbiano didascalie, che il testo abbia un contrasto sufficiente e che i componenti interattivi siano accessibili alla tastiera.',
+ EMBED_UNFOCUSABLE: 'Gli <iframe>
con elementi non focalizzabili non devono avere tabindex="-1"
. Il contenuto incorporato non sarà accessibile tramite tastiera.',
QA_BAD_LINK: 'Trovato un link errato. Il link sembra puntare a un ambiente di sviluppo.
Questo link punta a:
%(el)',
QA_BAD_ITALICS: 'I tag grassetto e corsivo hanno un significato semantico e non devono essere usati per evidenziare interi paragrafi. Il testo in grassetto deve essere usato per dare un forte enfasi su una parola o una frase. Il corsivo deve essere usato per evidenziare nomi propri (ad esempio, titoli di libri e articoli), parole straniere e citazioni. Le citazioni lunghe devono essere formattate come blockquote.',
QA_PDF: "Impossibile verificare l'accessibilità dei PDF. I PDF sono considerati contenuti web e devono essere resi accessibili. I PDF spesso presentano problemi per le persone che utilizzano gli screen reader (tag strutturali mancanti o etichette dei campi del modulo mancanti) e per le persone ipovedenti (il testo non scorre quando viene ingrandito). - Se si tratta di un modulo, considerare l'utilizzo di un modulo HTML accessibile come alternativa.
- Se si tratta di un documento, considerare la conversione in una pagina web.
Altrimenti, controllare PDF per l'accessibilità in Acrobat DC.",
diff --git a/assets/dist/js/lang/ja.js b/assets/dist/js/lang/ja.js
index 1467673..ac6242c 100644
--- a/assets/dist/js/lang/ja.js
+++ b/assets/dist/js/lang/ja.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var ja = {
HEADING_NOT_VISIBLE_ALERT: '見出しは表示されません。非表示になっていたり、アコーディオンやタブコンポーネントの中に入っていたりすることがあります。',
SKIP_TO_PAGE_ISSUES: 'ページの先頭へ戻る',
CONSOLE_ERROR_MESSAGE: '申し訳ありませんが、このページのアクセシビリティチェッカーに問題があります。このフォームまたはGitHubで報告していただけませんでしょうか',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: '%(dismissCount)棄却された警告を表示する。',
DISMISS: '却下',
DISMISSED: '解除された警告',
DISMISS_REMINDER: '警告は一時的に解除されるだけですのでご注意ください。ブラウザの履歴とクッキーを削除すると、すべてのページで警告が解除された状態に戻ります。',
+
+ // Export
+ DATE: '日付',
+ PAGE_TITLE: 'ページタイトル',
+ RESULTS: '結果',
+ EXPORT_RESULTS: '結果のエクスポート',
+ GENERATED: '%(tool) で生成された結果。',
+ PREVIEW: 'プレビュー',
+ ELEMENT: '要素',
+ PATH: 'パス',
+
+ // Colour filters
COLOUR_FILTER: 'カラーフィルター',
PROTANOPIA: 'プロタノピア',
DEUTERANOPIA: 'デューテラノピア',
@@ -60,6 +74,8 @@ var ja = {
BLUE_EYE: 'ブルーブラインドです。',
MONO_EYE: '赤、青、緑のブラインド。',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'ハイコントラストモードでは、カラーフィルターは機能しません。',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'イマージュ',
'グラフィック',
@@ -147,6 +163,7 @@ var ja = {
HEADING_MISSING_ONE: '見出し1がない。 見出し1はメインコンテンツエリアの始まりであるべきで、ページの全体的な目的を説明する主要な見出しである。見出しの構造について詳しくはこちら。',
HEADING_EMPTY_WITH_IMAGE: '見出しにはテキストがなく、画像が含まれています。これが見出しでない場合は、そのフォーマットを見出し %(level)から通常またはパラグラフに変更してください。それ以外の場合、画像に装飾がない場合は、altテキストを追加してください。',
PANEL_HEADING_MISSING_ONE: '見出しの欠落 1!',
+ PANEL_NO_HEADINGS: '見出しはありません。',
LINK_EMPTY: 'テキストのない空のリンクを削除する。',
LINK_EMPTY_LINK_NO_LABEL: 'リンクに、スクリーンリーダーやその他の支援技術で表示可能な識別可能なテキストがない。修正するには- リンクの行き先を説明する簡潔なテキストを追加する。
- アイコン リンクまたは SVGである場合、説明用のラベルがない可能性があります。
- このリンクがコピー/ペーストのバグによるエラーと考えられる場合は、削除を検討してください。
',
LINK_LABEL: 'リンクラベル: %(sanitizedText)',
@@ -160,18 +177,18 @@ var ja = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: '画像は装飾としてマークされる必要がありますが、画像は周囲のテキストへのリンクとして使用されています。',
MISSING_ALT_LINK_MESSAGE: '画像がリンクとして使用されていますが、altテキストが不足しています!altテキストにリンク先が記載されていることを確認してください。',
MISSING_ALT_MESSAGE: 'altテキストがない!画像がストーリーや雰囲気、重要な情報を伝えるものであれば、必ず画像を説明すること。',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'altテキスト内のファイル拡張子が見つかりました。altテキストは、画像の文字通りの説明ではなく、リンク先を説明するものであることを確認してください。削除してください:%(error).
alt属性: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'altテキスト内のファイル拡張子が見つかりました。altテキストは、画像の文字通りの説明ではなく、リンク先を説明するものであることを確認してください。削除してください:%(error).
alt属性: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'リンクされた画像内のaltテキストが非記述またはプレースホルダーであることが判明しました。altテキストが、画像の文字通りの説明ではなく、リンク先を記述していることを確認してください。以下のaltテキストを置き換えてください:%(altText)とします。',
LINK_IMAGE_SUS_ALT_MESSAGE: '支援技術はすでにこれが画像であることを示すので、"%(error)" は冗長であるかもしれません。altテキストは、画像の文字通りの説明ではなく、リンク先を説明するようにします。
altテキスト: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: '見つかったaltテキスト内のファイル拡張子。画像がストーリーや雰囲気、重要な情報を伝えている場合は、必ず画像を説明してください。削除してください:%(error).
alt属性: %(altText)',
+ ALT_HAS_FILE_EXTENSION: '見つかったaltテキスト内のファイル拡張子。画像がストーリーや雰囲気、重要な情報を伝えている場合は、必ず画像を説明してください。削除してください:%(error).
alt属性: %(altText)',
ALT_PLACEHOLDER_MESSAGE: '非デスクリプトまたはプレースホルダーのaltテキストが見つかりました。以下のaltテキストを、より意味のあるものに置き換えてください:%(altText)となります。',
ALT_HAS_SUS_WORD: '支援技術はすでにこれが画像であることを示すので、"%(error)" は冗長であるかもしれません。
オルトテキスト: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: '画像の周りのリンクはaria-hidden="true"
ですが、キーボードフォーカスは可能です。冗長なリンクや重複したリンクを隠す場合は、tabindex="-1"
も追加してください。',
+ LINK_HIDDEN_FOCUSABLE: 'リンクにはaria-hidden="true"
がありますが、キーボードでまだフォーカス可能です。冗長なまたは重複したリンクを非表示にする場合は、tabindex="-1"
も追加してください。',
LINK_IMAGE_NO_ALT_TEXT: 'リンク内の画像は装飾と表示され、リンクテキストがありません。リンク先を示すaltテキストを画像に追加してください。',
LINK_IMAGE_HAS_TEXT: 'リンク先では周囲のテキストを説明用のラベルとして使用していますが、画像は装飾としてマークされています。',
LINK_IMAGE_LONG_ALT: 'リンク先画像のaltテキスト記述が長すぎるです。リンク先の画像のaltテキストは、画像の文字通りの説明ではなく、リンク先がどこなのかを説明する必要があります。リンク先のページのタイトルをaltテキストとして使用することを検討してください。
altテキスト (%(altLength) characters): %(altText)',
LINK_IMAGE_ALT_WARNING: '画像リンクにaltテキストが含まれています。altテキストは、リンク先について説明していますか?リンク先のページのタイトルをaltテキストとして使用することを検討してください。
altテキスト: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: '画像リンクには、altテキストと周囲のリンクテキストの両方が含まれています。この画像が装飾的で、別のページへの機能的なリンクとして使用されている場合、画像を装飾または無効としてマークすることを検討してください -周囲のリンクテキストで十分なはずです。
altテキスト: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: '画像リンクには、altテキストと周囲のリンクテキストの両方が含まれています。この画像が装飾的で、別のページへの機能的なリンクとして使用されている場合、画像を装飾または無効としてマークすることを検討してください -周囲のリンクテキストで十分なはずです。
altテキスト: %(altText)
リンクラベル: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: '画像はdecorativeとマークされており、支援技術によって無視されます。
キャプションが提供されましたが、ほとんどの場合、画像にはaltテキストもあるべきです。- altテキストは、画像に何が写っているかを簡潔に説明する必要があります。
- キャプションは通常、画像を周囲のコンテンツと関連付けるためのコンテキストを提供するか、特定の情報の一部に注目させる必要があります。
もっと学ぶ:alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'altテキストとcaptionテキストの両方に全く同じ単語を使用しないでください。スクリーン リーダは情報を 2 回通知します。- alt テキストは、画像に何が写っているかを簡潔に説明する必要があります。
- キャプションは通常、画像を周囲のコンテンツと関連付けるためのコンテキストを提供するか、特定の情報の一部に注目させます。
詳細はこちら:alt versus figcaption.
オルトテキスト: %(altText)',
IMAGE_DECORATIVE: '画像はdecorativeとマークされ、支援技術によって無視されることになります。画像がストーリーや雰囲気、重要な情報を伝えるものであれば、必ずaltテキストを追加してください。',
@@ -179,14 +196,15 @@ var ja = {
IMAGE_PASS: 'オルトテキスト: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: '画像ボタンにaltテキストがありません。アクセシブルな名称を提供するために、altテキストを追加してください。例えば、以下のようなものです:検索または送信。',
LABELS_INPUT_RESET_MESSAGE: 'リセット ボタンは、間違って起動しやすいので、特に必要な場合を除き、使用すべきではありません。
ヒント! リセットボタンとキャンセルボタンがユーザビリティの問題を引き起こす理由を学びましょう。',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: '入力にはアクセシブルな名前がついていますが、目に見えるラベルもつけてください。
この入力のアクセシブルネームは次のとおりです:%(sanitizedText)です。',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: '入力にはアクセシブルな名前がついていますが、目に見えるラベルもつけてください。
入力ラベル: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'この入力に関連するラベルはありません。この入力のid
に一致するラベルにfor
属性を追加してください。
この入力のIDは次のとおりです:id="%(id)" です。',
LABELS_MISSING_LABEL_MESSAGE: 'この入力に関連するラベルはありません。この入力に id
を追加し、ラベルに一致する for
属性を追加してください。',
EMBED_VIDEO: 'すべてのビデオにクローズドキャプションがあることを確認してください。すべてのオーディオおよびビデオコンテンツにキャプションを提供することは、レベルAの必須要件です。キャプションは、聴覚障害者をサポートします。',
EMBED_AUDIO: 'すべてのポッドキャストにトランスクリプトを提供するようにしてください。オーディオコンテンツにトランスクリプトを提供することは、レベルAの必須要件です。トランスクリプトは、ろう者や難聴者をサポートするものですが、誰にとっても有益なものです。トランスクリプトを下またはアコーディオンパネルに配置することを検討してください。',
EMBED_DATA_VIZ: 'このようなデータ可視化ウィジェットは、キーボードやスクリーンリーダーを使って操作する人にとって問題があることが多く、弱視や色覚異常の人にとっては大きな障害となることがあります。ウィジェットの下に、同じ情報を別の形式(テキストまたは表)で提供することが推奨されます。複雑な画像についてもっと詳しく知る。',
- EMBED_MISSING_TITLE: '埋め込みコンテンツには、その内容を説明するアクセシブルネームが必要です。iframe
要素にユニークな title
または aria-label
属性を指定してください。iFrame.について詳しくはこちら。',
+ EMBED_MISSING_TITLE: '埋め込みコンテンツには、その内容を説明するアクセシブルネームが必要です。iframe
要素にユニークな title
または aria-label
属性を指定してください。iFrame.について詳しくはこちら。',
EMBED_GENERAL_WARNING: '埋め込みコンテンツを確認することができません。画像にはaltテキスト、動画にはキャプション、テキストには十分なコントラスト、インタラクティブなコンポーネントにはキーボードアクセス可能であることを確認してください。',
+ EMBED_UNFOCUSABLE: 'フォーカスできない要素を含む<iframe>
にはtabindex="-1"
を指定しないでください。埋め込まれたコンテンツはキーボードではアクセスできません。',
QA_BAD_LINK: '不正なリンクが見つかりました。リンクは開発環境を指しているようです。
このリンクは、次の場所を指しています:
%(el)。',
QA_BAD_ITALICS: '太字と斜体のタグは意味上の意味があり、段落全体を強調するために使用すべきではありません。太字は、単語やフレーズを強く強調するために使用されるべきです。イタリックは、固有名詞(例:書籍や記事のタイトル)、外国語、引用を強調するために使用されるべきです。長い引用文は、ブロッククオートとしてフォーマットされるべきである。',
QA_PDF: 'PDFのアクセシビリティをチェックできない。PDFはウェブコンテンツとみなされ、同様にアクセシビリティを確保する必要があります。PDFには、スクリーンリーダーを使用する人(構造タグがない、フォームフィールドラベルがない)や弱視の人(拡大してもテキストがリフローしない)にとって問題があることがよくあります。- これがフォームの場合は、アクセシブルな HTML フォームを代替として使用することを検討してください。
- これが文書の場合は、Web ページへの変換を検討してください。
その他、PDF を Acrobat DC. でアクセス可能か確認してください。',
diff --git a/assets/dist/js/lang/ja.umd.js b/assets/dist/js/lang/ja.umd.js
index 7ccc67b..aa21a1a 100644
--- a/assets/dist/js/lang/ja.umd.js
+++ b/assets/dist/js/lang/ja.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: '見出しは表示されません。非表示になっていたり、アコーディオンやタブコンポーネントの中に入っていたりすることがあります。',
SKIP_TO_PAGE_ISSUES: 'ページの先頭へ戻る',
CONSOLE_ERROR_MESSAGE: '申し訳ありませんが、このページのアクセシビリティチェッカーに問題があります。このフォームまたはGitHubで報告していただけませんでしょうか',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: '%(dismissCount)棄却された警告を表示する。',
DISMISS: '却下',
DISMISSED: '解除された警告',
DISMISS_REMINDER: '警告は一時的に解除されるだけですのでご注意ください。ブラウザの履歴とクッキーを削除すると、すべてのページで警告が解除された状態に戻ります。',
+
+ // Export
+ DATE: '日付',
+ PAGE_TITLE: 'ページタイトル',
+ RESULTS: '結果',
+ EXPORT_RESULTS: '結果のエクスポート',
+ GENERATED: '%(tool) で生成された結果。',
+ PREVIEW: 'プレビュー',
+ ELEMENT: '要素',
+ PATH: 'パス',
+
+ // Colour filters
COLOUR_FILTER: 'カラーフィルター',
PROTANOPIA: 'プロタノピア',
DEUTERANOPIA: 'デューテラノピア',
@@ -66,6 +80,8 @@
BLUE_EYE: 'ブルーブラインドです。',
MONO_EYE: '赤、青、緑のブラインド。',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'ハイコントラストモードでは、カラーフィルターは機能しません。',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'イマージュ',
'グラフィック',
@@ -153,6 +169,7 @@
HEADING_MISSING_ONE: '見出し1がない。 見出し1はメインコンテンツエリアの始まりであるべきで、ページの全体的な目的を説明する主要な見出しである。見出しの構造について詳しくはこちら。',
HEADING_EMPTY_WITH_IMAGE: '見出しにはテキストがなく、画像が含まれています。これが見出しでない場合は、そのフォーマットを見出し %(level)から通常またはパラグラフに変更してください。それ以外の場合、画像に装飾がない場合は、altテキストを追加してください。',
PANEL_HEADING_MISSING_ONE: '見出しの欠落 1!',
+ PANEL_NO_HEADINGS: '見出しはありません。',
LINK_EMPTY: 'テキストのない空のリンクを削除する。',
LINK_EMPTY_LINK_NO_LABEL: 'リンクに、スクリーンリーダーやその他の支援技術で表示可能な識別可能なテキストがない。修正するには- リンクの行き先を説明する簡潔なテキストを追加する。
- アイコン リンクまたは SVGである場合、説明用のラベルがない可能性があります。
- このリンクがコピー/ペーストのバグによるエラーと考えられる場合は、削除を検討してください。
',
LINK_LABEL: 'リンクラベル: %(sanitizedText)',
@@ -166,18 +183,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: '画像は装飾としてマークされる必要がありますが、画像は周囲のテキストへのリンクとして使用されています。',
MISSING_ALT_LINK_MESSAGE: '画像がリンクとして使用されていますが、altテキストが不足しています!altテキストにリンク先が記載されていることを確認してください。',
MISSING_ALT_MESSAGE: 'altテキストがない!画像がストーリーや雰囲気、重要な情報を伝えるものであれば、必ず画像を説明すること。',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'altテキスト内のファイル拡張子が見つかりました。altテキストは、画像の文字通りの説明ではなく、リンク先を説明するものであることを確認してください。削除してください:%(error).
alt属性: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'altテキスト内のファイル拡張子が見つかりました。altテキストは、画像の文字通りの説明ではなく、リンク先を説明するものであることを確認してください。削除してください:%(error).
alt属性: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'リンクされた画像内のaltテキストが非記述またはプレースホルダーであることが判明しました。altテキストが、画像の文字通りの説明ではなく、リンク先を記述していることを確認してください。以下のaltテキストを置き換えてください:%(altText)とします。',
LINK_IMAGE_SUS_ALT_MESSAGE: '支援技術はすでにこれが画像であることを示すので、"%(error)" は冗長であるかもしれません。altテキストは、画像の文字通りの説明ではなく、リンク先を説明するようにします。
altテキスト: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: '見つかったaltテキスト内のファイル拡張子。画像がストーリーや雰囲気、重要な情報を伝えている場合は、必ず画像を説明してください。削除してください:%(error).
alt属性: %(altText)',
+ ALT_HAS_FILE_EXTENSION: '見つかったaltテキスト内のファイル拡張子。画像がストーリーや雰囲気、重要な情報を伝えている場合は、必ず画像を説明してください。削除してください:%(error).
alt属性: %(altText)',
ALT_PLACEHOLDER_MESSAGE: '非デスクリプトまたはプレースホルダーのaltテキストが見つかりました。以下のaltテキストを、より意味のあるものに置き換えてください:%(altText)となります。',
ALT_HAS_SUS_WORD: '支援技術はすでにこれが画像であることを示すので、"%(error)" は冗長であるかもしれません。
オルトテキスト: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: '画像の周りのリンクはaria-hidden="true"
ですが、キーボードフォーカスは可能です。冗長なリンクや重複したリンクを隠す場合は、tabindex="-1"
も追加してください。',
+ LINK_HIDDEN_FOCUSABLE: 'リンクにはaria-hidden="true"
がありますが、キーボードでまだフォーカス可能です。冗長なまたは重複したリンクを非表示にする場合は、tabindex="-1"
も追加してください。',
LINK_IMAGE_NO_ALT_TEXT: 'リンク内の画像は装飾と表示され、リンクテキストがありません。リンク先を示すaltテキストを画像に追加してください。',
LINK_IMAGE_HAS_TEXT: 'リンク先では周囲のテキストを説明用のラベルとして使用していますが、画像は装飾としてマークされています。',
LINK_IMAGE_LONG_ALT: 'リンク先画像のaltテキスト記述が長すぎるです。リンク先の画像のaltテキストは、画像の文字通りの説明ではなく、リンク先がどこなのかを説明する必要があります。リンク先のページのタイトルをaltテキストとして使用することを検討してください。
altテキスト (%(altLength) characters): %(altText)',
LINK_IMAGE_ALT_WARNING: '画像リンクにaltテキストが含まれています。altテキストは、リンク先について説明していますか?リンク先のページのタイトルをaltテキストとして使用することを検討してください。
altテキスト: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: '画像リンクには、altテキストと周囲のリンクテキストの両方が含まれています。この画像が装飾的で、別のページへの機能的なリンクとして使用されている場合、画像を装飾または無効としてマークすることを検討してください -周囲のリンクテキストで十分なはずです。
altテキスト: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: '画像リンクには、altテキストと周囲のリンクテキストの両方が含まれています。この画像が装飾的で、別のページへの機能的なリンクとして使用されている場合、画像を装飾または無効としてマークすることを検討してください -周囲のリンクテキストで十分なはずです。
altテキスト: %(altText)
リンクラベル: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: '画像はdecorativeとマークされており、支援技術によって無視されます。
キャプションが提供されましたが、ほとんどの場合、画像にはaltテキストもあるべきです。- altテキストは、画像に何が写っているかを簡潔に説明する必要があります。
- キャプションは通常、画像を周囲のコンテンツと関連付けるためのコンテキストを提供するか、特定の情報の一部に注目させる必要があります。
もっと学ぶ:alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'altテキストとcaptionテキストの両方に全く同じ単語を使用しないでください。スクリーン リーダは情報を 2 回通知します。- alt テキストは、画像に何が写っているかを簡潔に説明する必要があります。
- キャプションは通常、画像を周囲のコンテンツと関連付けるためのコンテキストを提供するか、特定の情報の一部に注目させます。
詳細はこちら:alt versus figcaption.
オルトテキスト: %(altText)',
IMAGE_DECORATIVE: '画像はdecorativeとマークされ、支援技術によって無視されることになります。画像がストーリーや雰囲気、重要な情報を伝えるものであれば、必ずaltテキストを追加してください。',
@@ -185,14 +202,15 @@
IMAGE_PASS: 'オルトテキスト: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: '画像ボタンにaltテキストがありません。アクセシブルな名称を提供するために、altテキストを追加してください。例えば、以下のようなものです:検索または送信。',
LABELS_INPUT_RESET_MESSAGE: 'リセット ボタンは、間違って起動しやすいので、特に必要な場合を除き、使用すべきではありません。
ヒント! リセットボタンとキャンセルボタンがユーザビリティの問題を引き起こす理由を学びましょう。',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: '入力にはアクセシブルな名前がついていますが、目に見えるラベルもつけてください。
この入力のアクセシブルネームは次のとおりです:%(sanitizedText)です。',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: '入力にはアクセシブルな名前がついていますが、目に見えるラベルもつけてください。
入力ラベル: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'この入力に関連するラベルはありません。この入力のid
に一致するラベルにfor
属性を追加してください。
この入力のIDは次のとおりです:id="%(id)" です。',
LABELS_MISSING_LABEL_MESSAGE: 'この入力に関連するラベルはありません。この入力に id
を追加し、ラベルに一致する for
属性を追加してください。',
EMBED_VIDEO: 'すべてのビデオにクローズドキャプションがあることを確認してください。すべてのオーディオおよびビデオコンテンツにキャプションを提供することは、レベルAの必須要件です。キャプションは、聴覚障害者をサポートします。',
EMBED_AUDIO: 'すべてのポッドキャストにトランスクリプトを提供するようにしてください。オーディオコンテンツにトランスクリプトを提供することは、レベルAの必須要件です。トランスクリプトは、ろう者や難聴者をサポートするものですが、誰にとっても有益なものです。トランスクリプトを下またはアコーディオンパネルに配置することを検討してください。',
EMBED_DATA_VIZ: 'このようなデータ可視化ウィジェットは、キーボードやスクリーンリーダーを使って操作する人にとって問題があることが多く、弱視や色覚異常の人にとっては大きな障害となることがあります。ウィジェットの下に、同じ情報を別の形式(テキストまたは表)で提供することが推奨されます。複雑な画像についてもっと詳しく知る。',
- EMBED_MISSING_TITLE: '埋め込みコンテンツには、その内容を説明するアクセシブルネームが必要です。iframe
要素にユニークな title
または aria-label
属性を指定してください。iFrame.について詳しくはこちら。',
+ EMBED_MISSING_TITLE: '埋め込みコンテンツには、その内容を説明するアクセシブルネームが必要です。iframe
要素にユニークな title
または aria-label
属性を指定してください。iFrame.について詳しくはこちら。',
EMBED_GENERAL_WARNING: '埋め込みコンテンツを確認することができません。画像にはaltテキスト、動画にはキャプション、テキストには十分なコントラスト、インタラクティブなコンポーネントにはキーボードアクセス可能であることを確認してください。',
+ EMBED_UNFOCUSABLE: 'フォーカスできない要素を含む<iframe>
にはtabindex="-1"
を指定しないでください。埋め込まれたコンテンツはキーボードではアクセスできません。',
QA_BAD_LINK: '不正なリンクが見つかりました。リンクは開発環境を指しているようです。
このリンクは、次の場所を指しています:
%(el)。',
QA_BAD_ITALICS: '太字と斜体のタグは意味上の意味があり、段落全体を強調するために使用すべきではありません。太字は、単語やフレーズを強く強調するために使用されるべきです。イタリックは、固有名詞(例:書籍や記事のタイトル)、外国語、引用を強調するために使用されるべきです。長い引用文は、ブロッククオートとしてフォーマットされるべきである。',
QA_PDF: 'PDFのアクセシビリティをチェックできない。PDFはウェブコンテンツとみなされ、同様にアクセシビリティを確保する必要があります。PDFには、スクリーンリーダーを使用する人(構造タグがない、フォームフィールドラベルがない)や弱視の人(拡大してもテキストがリフローしない)にとって問題があることがよくあります。- これがフォームの場合は、アクセシブルな HTML フォームを代替として使用することを検討してください。
- これが文書の場合は、Web ページへの変換を検討してください。
その他、PDF を Acrobat DC. でアクセス可能か確認してください。',
diff --git a/assets/dist/js/lang/ko.js b/assets/dist/js/lang/ko.js
new file mode 100644
index 0000000..53eb9d1
--- /dev/null
+++ b/assets/dist/js/lang/ko.js
@@ -0,0 +1,232 @@
+
+/*!
+ * Sa11y, the accessibility quality assurance assistant.
+ * @version 3.0.6
+ * @author Adam Chaboryk, Toronto Metropolitan University
+ * @license GPL-2.0-or-later
+ * @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
+ * @contact adam.chaboryk@torontomu.ca
+ * GitHub: git+https://github.com/ryersondmp/sa11y.git | Website: https://sa11y.netlify.app
+ * For all acknowledgements, please visit: https://sa11y.netlify.app/acknowledgements/
+ * The above copyright notice shall be included in all copies or substantial portions of the Software.
+**/
+/*! WARNING: This is a machine-generated translation and may contain errors or inaccuracies. */
+var ko = {
+ // Korean
+ strings: {
+ LANG_CODE: 'ko',
+ MAIN_TOGGLE_LABEL: '접근성 확인',
+ CONTAINER_LABEL: '접근성 검사기',
+ ERROR: '오류',
+ ERRORS: '오류',
+ WARNING: '경고',
+ WARNINGS: '경고',
+ GOOD: '양호',
+ ON: '켜기',
+ OFF: '꺼짐',
+ ALERT_TEXT: '알림',
+ ALERT_CLOSE: '닫기',
+ OUTLINE: '페이지 개요',
+ PAGE_ISSUES: '페이지 문제',
+ SETTINGS: '설정',
+ CONTRAST: '대비',
+ FORM_LABELS: '양식 레이블',
+ LINKS_ADVANCED: '링크(고급)',
+ DARK_MODE: '다크 모드',
+ SHORTCUT_SCREEN_READER: '이슈로 건너뛰기. 키보드 단축키: Alt S',
+ SHORTCUT_TOOLTIP: '이슈로 건너뛰기',
+ NEW_TAB: '새 탭에서 열기',
+ PANEL_HEADING: '접근성 확인',
+ PANEL_STATUS_NONE: '오류를 찾을 수 없습니다.',
+ PANEL_ICON_WARNINGS: '경고가 발견되었습니다.',
+ PANEL_ICON_TOTAL: '발견된 총 문제 수입니다.',
+ NOT_VISIBLE_ALERT: '보려는 항목이 보이지 않거나 숨겨져 있거나 아코디언 또는 탭 구성 요소 안에 있을 수 있습니다. 다음은 미리 보기입니다:',
+ ERROR_MISSING_ROOT_TARGET: '대상 영역 <코드>%(root)코드>가 존재하지 않으므로 전체 페이지의 접근성을 확인하지 못했습니다.',
+ HEADING_NOT_VISIBLE_ALERT: '제목은 보이지 않거나 숨겨져 있거나 아코디언 또는 탭 구성 요소 안에 있을 수 있습니다.',
+ SKIP_TO_PAGE_ISSUES: '페이지로 건너뛰기 이슈',
+ CONSOLE_ERROR_MESSAGE: '죄송하지만 이 페이지의 접근성 검사기에 문제가 있습니다. 이 양식 또는 GitHub에서 신고해 주시겠어요?',
+
+ // Dismiss
+ PANEL_DISMISS_BUTTON: '%(dismissCount) 해제된 경고 표시',
+ DISMISS: '해지',
+ DISMISSED: '기각된 경고',
+ DISMISS_REMINDER: '경고는 일시적으로만 해제됩니다. 브라우저 기록과 쿠키를 지우면 모든 페이지에서 이전에 해제된 경고가 모두 복원됩니다.',
+
+ // Export
+ DATE: '날짜',
+ PAGE_TITLE: '페이지 제목',
+ RESULTS: '결과',
+ EXPORT_RESULTS: '결과 내보내기',
+ GENERATED: '%(tool)로 생성된 결과.',
+ PREVIEW: '미리보기',
+ ELEMENT: '요소',
+ PATH: '경로',
+
+ // Colour filters
+ COLOUR_FILTER: '컬러 필터',
+ PROTANOPIA: '프로타노피아',
+ DEUTERANOPIA: '듀테라노피아',
+ TRITANOPIA: '트리타노피아',
+ MONOCHROMACY: '단색',
+ COLOUR_FILTER_MESSAGE: '다른 색상과 구분하기 어렵거나 인지하기 어려운 요소가 있는지 확인하세요.',
+ RED_EYE: '레드 블라인드.',
+ GREEN_EYE: '녹색 블라인드.',
+ BLUE_EYE: '블루 블라인드.',
+ MONO_EYE: '빨간색, 파란색, 녹색 블라인드.',
+ COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: '고대비 모드에서는 컬러 필터가 작동하지 않습니다.',
+
+ // Alternative text stop words
+ SUSPICIOUS_ALT_STOPWORDS: [
+ '이미지',
+ '그래픽',
+ '사진',
+ '사진',
+ ],
+ PLACEHOLDER_ALT_STOPWORDS: [
+ 'alt',
+ '이미지',
+ '사진',
+ '장식',
+ '자리 표시자',
+ '플레이스홀더 이미지',
+ '스페이서',
+ ],
+ PARTIAL_ALT_STOPWORDS: [
+ '클릭',
+ '여기를 클릭하세요',
+ '자세한 내용을 보려면 여기를 클릭하세요.',
+ '자세히 알아보려면 여기를 클릭하세요.',
+ '여기를 클릭',
+ '체크 아웃',
+ '여기에서 자세히 보기',
+ '다운로드',
+ '여기에서 다운로드',
+ '자세히 알아보기',
+ '자세히 알아보기',
+ 'form',
+ '여기',
+ '정보',
+ '정보',
+ '링크',
+ '배우기',
+ '자세히 알아보기',
+ '다음을 배우십시오.',
+ '더 보기',
+ '페이지',
+ '종이',
+ '자세히 보기',
+ '읽기',
+ '이 글 읽기',
+ '이',
+ '이 페이지',
+ '이 웹사이트',
+ '보기',
+ '보기',
+ '웹사이트',
+ ],
+ WARNING_ALT_STOPWORDS: [
+ '여기를 클릭하세요',
+ ],
+ NEW_WINDOW_PHRASES: [
+ '외부',
+ '새 탭',
+ '새 창',
+ '팝업',
+ '팝업',
+ ],
+ FILE_TYPE_PHRASES: [
+ '문서',
+ '스프레드시트',
+ '계산 시트',
+ '압축 파일',
+ '보관된 파일',
+ '워크시트',
+ '파워포인트',
+ '프레젠테이션',
+ '설치',
+ '비디오',
+ '오디오',
+ 'pdf',
+ ],
+ LANG_READABILITY: '가독성',
+ LANG_AVG_SENTENCE: '문장당 평균 단어 수:',
+ LANG_COMPLEX_WORDS: '복잡한 단어:',
+ LANG_TOTAL_WORDS: '단어:',
+ LANG_VERY_DIFFICULT: '매우 어려움',
+ LANG_DIFFICULT: '어려움',
+ LANG_FAIRLY_DIFFICULT: '상당히 어려움',
+ LANG_GOOD: '양호',
+ READABILITY_NO_P_OR_LI_MESSAGE: '가독성 점수를 계산할 수 없습니다. 단락 <코드><p>코드> 또는 목록 콘텐츠 <코드><li>코드>를 찾을 수 없습니다.',
+ READABILITY_NOT_ENOUGH_CONTENT_MESSAGE: '가독성 점수를 계산할 콘텐츠가 충분하지 않습니다.',
+ HEADING_NON_CONSECUTIVE_LEVEL: '비연속적인 머리글 레벨이 사용되었습니다. 제목은 레벨을 건너뛰거나 헤딩 %(level)에서 헤딩 %(level)로 이동하지 않아야 합니다.',
+ HEADING_EMPTY: '빈 제목이 발견되었습니다! 수정하려면 이 줄을 삭제하거나 형식을 헤딩 %(level)에서 일반 또는 단락으로 변경하세요.',
+ HEADING_LONG: '제목이 길어요! 제목은 콘텐츠를 구성하고 구조를 전달하는 데 사용해야 합니다. 제목은 간결하고 유익하며 독창적이어야 합니다. 제목은 160자 이내(한 문장 이하)로 유지하세요.
글자 수입니다: %(headingLength)',
+ HEADING_FIRST: '페이지의 첫 번째 제목은 일반적으로 제목 1 또는 제목 2여야 합니다. 제목 1은 주요 콘텐츠 섹션의 시작 부분이어야 하며 페이지의 전반적인 목적을 설명하는 주요 제목입니다. 헤딩 구조에 대해 자세히 알아보기.',
+ HEADING_MISSING_ONE: '제목 1이 누락되었습니다. 제목 1은 주요 콘텐츠 영역의 시작 부분이어야 하며 페이지의 전반적인 목적을 설명하는 기본 제목입니다. 헤딩 구조에 대해 자세히 알아보기.',
+ HEADING_EMPTY_WITH_IMAGE: '제목에 텍스트가 없지만 이미지가 포함되어 있습니다. 제목이 아닌 경우 형식을 제목 %(level)에서 일반 또는 단락으로 변경합니다. 그렇지 않으면 장식용 이미지가 아닌 경우 이미지에 대체 텍스트를 추가하세요.',
+ PANEL_HEADING_MISSING_ONE: '제목 1이 없습니다!',
+ PANEL_NO_HEADINGS: '제목을 찾을 수 없습니다.',
+ LINK_EMPTY: '텍스트가 없는 빈 링크를 제거합니다.',
+ LINK_EMPTY_LINK_NO_LABEL: '링크에 화면 리더 및 기타 보조 기술에서 볼 수 있는 식별 가능한 텍스트가 없습니다. 수정하려면: - 링크가 어디로 연결되는지 설명하는 간결한 텍스트를 추가합니다.
- 이 링크가 아이콘 링크 또는 SVG인 경우 설명 레이블이 누락되었을 가능성이 높습니다.
- 복사/붙여넣기 버그로 인한 오류라고 생각되면 링크를 삭제하는 것이 좋습니다.
',
+ LINK_LABEL: '링크 레이블: %(sanitizedText)',
+ LINK_STOPWORD: "링크 텍스트가 문맥에 맞지 않게 충분히 설명적이지 않을 수 있습니다: %(error)
Tip! 링크 텍스트는 항상 명확하고 고유하며 의미 있는 것이어야 합니다. '여기를 클릭하세요' 또는 '자세히 알아보기'와 같은 일반적인 단어는 피하세요;",
+ LINK_BEST_PRACTICES: '링크 텍스트를 바꾸는 것이 좋습니다: %(error)
- "여기를 클릭하세요"는 마우스를 사용하지 않거나 모바일 장치에서 이 웹사이트를 볼 수 있는 많은 사람들을 위해 마우스 메커니즘에 중점을 둔 위치입니다. 작업과 관련된 다른 동사를 사용하는 것이 좋습니다.
- 보조 기술에 숨겨져 있지 않는 한 HTML 기호를 콜투액션으로 사용하지 마세요.
',
+ LINK_URL: '링크 텍스트로 사용되는 길고 이해하기 어려운 URL은 보조 기술로 이해하기 어려울 수 있습니다. 대부분의 경우 URL 대신 사람이 읽을 수 있는 텍스트를 사용하는 것이 좋습니다. 짧은 URL(예: 사이트 홈페이지)은 괜찮습니다.
Tip! 링크 텍스트는 항상 명확하고 고유하며 의미 있는 문맥을 통해 이해할 수 있어야 합니다.',
+ LINK_DOI: '웹 페이지 또는 온라인 전용 리소스의 경우 APA 스타일 가이드에서는 제목 주위에 저작물의 URL 또는 DOI를 감싸는 설명 링크를 사용할 것을 권장합니다. 링크 텍스트로 사용되는 길고 이해하기 어려운 URL은 보조 기술을 사용하여 이해하기 어려울 수 있습니다.',
+ NEW_TAB_WARNING: '경고 없이 새 탭 또는 새 창에서 링크가 열립니다. 특히 시각적 콘텐츠를 인식하는 데 어려움을 겪는 사람들에게는 혼란을 줄 수 있습니다. 둘째, 다른 사람의 경험을 통제하거나 대신 결정을 내리는 것은 항상 좋은 관행이 아닙니다. 링크 텍스트 내에 링크가 새 창에서 열림
팁! 모범 사례 알아보기임을 표시하세요: 새 브라우저 창 및 탭에서 링크 열기',
+ FILE_TYPE_WARNING: '링크는 경고 없이 PDF 또는 다운로드 가능한 파일(예: MP3, Zip, Word Doc)을 가리킵니다. 링크 텍스트에 파일 유형을 표시합니다. 대용량 파일인 경우 파일 크기를 포함하는 것이 좋습니다.
예시: 임원 보고서(PDF, 3MB)',
+ LINK_IDENTICAL_NAME: '다른 페이지를 가리키지만 링크의 텍스트가 다른 링크와 동일합니다. 동일한 텍스트의 링크가 여러 개 있으면 화면 리더를 사용하는 사용자에게 혼란을 줄 수 있습니다.
다음 링크를 다른 링크와 구분할 수 있도록 더 설명적으로 만드는 것을 고려하세요: %(sanitizedText)',
+ MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: '이미지가 주변 텍스트와 함께 링크로 사용되고 있지만 alt 속성은 장식용 또는 null로 표시되어야 합니다.',
+ MISSING_ALT_LINK_MESSAGE: '이미지가 링크로 사용 중이지만 대체 텍스트가 누락되었습니다! 링크가 어디로 연결되는지 설명하는 대체 텍스트를 입력하세요.',
+ MISSING_ALT_MESSAGE: '대체 텍스트가 누락되었습니다! 이미지가 스토리, 분위기 또는 중요한 정보를 전달하는 경우 이미지에 대한 설명을 반드시 기재하세요.',
+ LINK_ALT_HAS_FILE_EXTENSION: '대체 텍스트 내의 파일 확장자를 찾았습니다. 대체 텍스트가 이미지에 대한 문자 그대로의 설명이 아니라 링크의 목적지를 설명하는지 확인하세요. 제거합니다: %(error).
대체 텍스트: %(altText)',
+ LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: '링크된 이미지에 설명이 없거나 자리 표시자 대체 텍스트가 발견되었습니다. 대체 텍스트가 이미지에 대한 문자 그대로의 설명이 아니라 링크의 대상을 설명하는지 확인합니다. 다음 대체 텍스트를 교체합니다: %(altText)',
+ LINK_IMAGE_SUS_ALT_MESSAGE: '보조 기술은 이미 이미지임을 표시하므로 %(error)가 중복될 수 있습니다. 대체 텍스트가 이미지에 대한 문자 그대로의 설명이 아니라 링크의 목적지를 설명하는지 확인하세요.
대체 텍스트: %(altText)',
+ ALT_HAS_FILE_EXTENSION: '대체 텍스트 내의 파일 확장자를 찾았습니다. 이미지가 스토리, 분위기 또는 중요한 정보를 전달하는 경우 이미지를 설명해야 합니다. 제거합니다: %(error).
대체 텍스트: %(altText)',
+ ALT_PLACEHOLDER_MESSAGE: '설명이 없거나 자리 표시자 대체 텍스트가 발견되었습니다. 다음 대체 텍스트를 더 의미 있는 것으로 바꾸세요: %(altText)',
+ ALT_HAS_SUS_WORD: '보조 기술은 이미 이미지임을 표시하므로 %(error)가 중복될 수 있습니다.
대체 텍스트: %(altText)',
+ LINK_HIDDEN_FOCUSABLE: '링크에는 aria-hidden="true"
속성이 있지만 키보드로 여전히 초점을 맞출 수 있습니다. 중복되거나 불필요한 링크를 숨기려면 tabindex="-1"
도 추가하세요.',
+ LINK_IMAGE_NO_ALT_TEXT: '링크 내 이미지는 장식용으로 표시되어 있으며 링크 텍스트가 없습니다. 링크의 목적지를 설명하는 대체 텍스트를 이미지에 추가하세요.',
+ LINK_IMAGE_HAS_TEXT: '링크가 주변 텍스트를 설명 레이블로 사용하고 있지만 이미지는 장식용으로 표시됩니다.',
+ LINK_IMAGE_LONG_ALT: '링크된 이미지의 대체 텍스트 설명이 너무 깁니다. 링크된 이미지의 대체 텍스트는 이미지에 대한 문자 그대로의 설명이 아니라 링크를 통해 이동하는 위치를 설명해야 합니다. 링크되는 페이지의 제목을 대체 텍스트로 사용하는 것이 좋습니다.
대체 텍스트(%(altLength) 문자): %(altText)',
+ LINK_IMAGE_ALT_WARNING: '이미지 링크에 대체 텍스트가 포함되어 있습니다. 대체 텍스트에 링크가 어디로 연결되는지 설명되어 있나요? 링크하는 페이지의 제목을 대체 텍스트로 사용하는 것이 좋습니다.
대체 텍스트: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: '이미지 링크에 대체 텍스트와 주변 링크 텍스트가 모두 포함됨 이 이미지가 장식용이고 다른 페이지에 대한 기능적 링크로 사용되는 경우 이미지를 장식용으로 표시하거나 주변 링크 텍스트로 충분할 수 있도록 null로 표시하는 것을 고려하세요.
대체 텍스트: %(altText)
링크 레이블: %(sanitizedText)',
+ IMAGE_FIGURE_DECORATIVE: '이미지가 장식으로 표시되어 보조 기술에서 무시됩니다.
캡션이 제공되었더라도 이미지에는 대부분의 경우 대체 텍스트가 있어야 합니다. - 대체 텍스트는 이미지에 포함된 내용에 대한 간결한 설명을 제공해야 합니다.
- 캡션은 일반적으로 이미지를 주변 콘텐츠와 다시 연관시키거나 특정 정보에 주의를 기울일 수 있도록 맥락을 제공해야 합니다.
자세히 알아보기: 알트 대 그림 캡션.',
+ IMAGE_FIGURE_DUPLICATE_ALT: '대체 텍스트와 캡션 텍스트에 정확히 같은 단어를 사용하지 마세요. 화면 리더는 정보를 두 번 알립니다.- 대체 텍스트는 이미지에 포함된 내용에 대한 간결한 설명을 제공해야 합니다.
- 캡션은 일반적으로 이미지를 주변 콘텐츠와 다시 연관시키거나 특정 정보에 주목할 수 있도록 맥락을 제공해야 합니다.
자세히 알아보기: 알트 대 그림 캡션.
대체 텍스트: %(altText)',
+ IMAGE_DECORATIVE: "이미지는 '장식용'으로 표시되어 보조 기술에서 무시됩니다. 이미지가 스토리, 분위기 또는 중요한 정보를 전달하는 경우 대체 텍스트를 추가해야 합니다.",
+ IMAGE_ALT_TOO_LONG: '대체 텍스트 설명이 너무 깁니다. 대체 텍스트는 간결하면서도 트윗처럼 의미 있는 내용이어야 합니다(100자 내외). 복잡한 이미지나 그래프인 경우 이미지에 대한 긴 설명을 아래 텍스트나 아코디언 구성 요소에 넣는 것이 좋습니다.
대체 텍스트(%(altLength) 문자): %(altText)',
+ IMAGE_PASS: '대체 텍스트: %(altText)',
+ LABELS_MISSING_IMAGE_INPUT_MESSAGE: '이미지 버튼에 대체 텍스트가 없습니다. 접근 가능한 이름을 제공하기 위해 대체 텍스트를 추가하세요. 예: 검색 또는 제출.',
+ LABELS_INPUT_RESET_MESSAGE: '재설정 버튼은 실수로 활성화하기 쉬우므로 특별히 필요한 경우가 아니라면 사용하지 않는 것이 좋습니다.
Tip! 재설정 및 취소 버튼이 사용성 문제를 일으키는 이유에 대해 알아보세요.',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: '입력에 접근 가능한 이름이 있지만 레이블도 표시되어 있는지 확인하세요.
입력 레이블: %(sanitizedText)',
+ LABELS_NO_FOR_ATTRIBUTE_MESSAGE: '이 입력과 연결된 레이블이 없습니다. 이 입력의 <코드>ID코드>와 일치하는 레이블에 <코드>용코드> 속성을 추가합니다.
이 입력의 ID는 다음과 같습니다: id="%(id)"',
+ LABELS_MISSING_LABEL_MESSAGE: '이 입력과 연결된 레이블이 없습니다. 이 입력에 <코드>아이디코드>를 추가하고 레이블에 일치하는 <코드>용코드> 속성을 추가하세요.',
+ EMBED_VIDEO: '모든 동영상에 자막이 있는지 확인하세요. 모든 오디오 및 동영상 콘텐츠에 자막을 제공하는 것은 필수 레벨 A 요건입니다. 자막은 청각 장애가 있거나 난청인 사용자를 지원합니다.',
+ EMBED_AUDIO: '모든 팟캐스트에 대본을 제공해야 합니다. 오디오 콘텐츠에 대한 대본 제공은 필수 레벨 A 요건입니다. 대본은 청각 장애가 있거나 청각이 불편한 사람들을 지원하지만 모든 사람에게 도움이 될 수 있습니다. 대본을 아래 또는 아코디언 패널 안에 배치하는 것을 고려하세요.',
+ EMBED_DATA_VIZ: '이와 같은 데이터 시각화 위젯은 키보드나 화면 리더를 사용하여 탐색하는 사람들에게 종종 문제가 되며, 저시력자나 색맹인 사람들에게는 상당한 어려움을 초래할 수 있습니다. 위젯 아래에 동일한 정보를 다른 형식(텍스트 또는 표)으로 제공하는 것이 좋습니다.
복잡한 이미지에 대해 자세히 알아보기 컴플렉스 이미지.',
+ EMBED_MISSING_TITLE: '임베드된 콘텐츠에는 콘텐츠를 설명하는 접근 가능한 이름이 필요합니다. iframe
요소에 고유한 title
또는 aria-label
속성을 제공하세요. iFrames.에 대해 자세히 알아보기',
+ EMBED_GENERAL_WARNING: '삽입된 콘텐츠를 확인할 수 없습니다. 이미지에 대체 텍스트가 있는지, 동영상에 캡션이 있는지, 텍스트의 대비가 충분한지, 인터랙티브 구성 요소가 키보드에 액세스할 수 있는지 확인하세요.',
+ EMBED_UNFOCUSABLE: '포커스할 수 없는 요소를 포함한 <iframe>
은 tabindex="-1"
을 가져서는 안 됩니다. 포함된 콘텐츠는 키보드로 접근할 수 없습니다.',
+ QA_BAD_LINK: '잘못된 링크를 찾았습니다. 링크가 개발 환경을 가리키는 것으로 보입니다.
이 링크는 다음을 가리킵니다:
%(el)',
+ QA_BAD_ITALICS: '굵게 및 이탤릭체 태그는 의미론적 의미가 있으며, 전체 단락을 강조할 때는 <강함>이 아닌 <강함>을 사용해야 합니다. 굵은 텍스트는 단어나 문구에 강한 <강한> 강조를 제공할 때 사용해야 합니다. 고유명사(예: 책 및 기사 제목), 외래어, 따옴표는 이탤릭체로 강조 표시해야 합니다. 긴 따옴표는 블록 따옴표로 서식을 지정해야 합니다.',
+ QA_PDF: 'PDF의 접근성을 확인할 수 없습니다. PDF는 웹 콘텐츠로 간주되므로 접근성을 제공해야 합니다. PDF에는 화면 리더를 사용하는 사용자(구조 태그 누락 또는 양식 필드 레이블 누락)와 저시력 사용자(확대 시 텍스트가 리플로우되지 않음)를 위한 문제가 포함되어 있는 경우가 많습니다. - 양식인 경우 접근 가능한 HTML 양식을 대안으로 사용해 보십시오.
- 문서인 경우 웹 페이지로 변환해 보십시오.
그렇지 않은 경우 PDF의 접근성을 확인하십시오.를 확인하십시오.',
+ QA_DOCUMENT: '문서의 접근성을 확인할 수 없습니다. 링크된 문서는 웹 콘텐츠로 간주되므로 접근성을 제공해야 합니다. 이 문서를 수동으로 검토해 주세요. Google 스페이스 문서 또는 프레젠테이션에 더 쉽게 액세스할 수 있도록 설정하세요. Office 문서에 더 쉽게 액세스할 수 있도록 설정하세요. ',
+ QA_PAGE_LANGUAGE: '페이지 언어가 선언되지 않았습니다! HTML 태그에 언어를 선언하세요.',
+ QA_PAGE_TITLE: '페이지 제목이 누락되었습니다! 페이지 제목을 입력하세요.',
+ QA_BLOCKQUOTE_MESSAGE: '제목인가요? %(sanitizedText)
블록 따옴표는 따옴표로만 사용해야 합니다. 제목으로 사용하려는 경우 이 블록 따옴표를 의미론적 제목(예: 제목 2 또는 제목 3)으로 변경하세요.',
+ QA_FAKE_HEADING: '이것이 제목인가요? %(boldtext)
굵거나 큰 텍스트 한 줄은 제목처럼 보일 수 있지만 화면 리더를 사용하는 사람은 이 텍스트가 중요하다는 것을 알거나 해당 콘텐츠로 넘어갈 수 없습니다. 굵거나 큰 텍스트는 의미론적 제목(제목 2~제목 6)을 절대 대체해서는 안 됩니다.',
+ QA_SHOULD_BE_LIST: '목록을 만들려고 하나요? 가능한 목록 항목을 찾았습니다: %(firstPrefix)
대신 글머리 기호 또는 숫자 서식 지정 버튼을 사용하여 시맨틱 목록을 사용해야 합니다. 시맨틱 목록을 사용하는 경우 보조 기술은 총 항목 수 및 목록에서 각 항목의 상대적 위치와 같은 정보를 전달할 수 있습니다. 시맨틱 목록에 대해 자세히 알아보기 시맨틱 목록.',
+ QA_UPPERCASE_WARNING: '모든 대문자를 찾았습니다. 일부 화면 리더는 대문자 텍스트를 약어로 해석하여 각 문자를 개별적으로 읽을 수 있습니다. 또한 일부 사람들은 대문자를 더 읽기 어려워하며 소리치는 것처럼 보일 수 있습니다.',
+ QA_DUPLICATE_ID: '중복 ID를 찾았습니다. 중복 ID 오류는 보조 기술이 콘텐츠와 상호 작용할 때 문제를 일으키는 것으로 알려져 있습니다.
다음 ID를 제거하거나 변경하세요: %(id)',
+ QA_TEXT_UNDERLINE_WARNING: '밑줄 친 텍스트는 링크와 혼동될 수 있습니다. <strong>
강조</strong>
또는 <em>
강조</em>
와 같은 다른 스타일을 사용하는 것을 고려하세요.',
+ QA_SUBSCRIPT_WARNING: '아래 첨자 및 위 첨자 서식 옵션은 인쇄 규칙이나 표준에 따라 텍스트의 위치를 변경할 때만 사용해야 합니다. 프레젠테이션이나 외관을 위한 용도로만 사용해서는 안 됩니다. 문장 전체에 서식을 지정하면 가독성 문제가 발생할 수 있습니다. 적절한 사용 사례로는 지수 표시, 4번째 대신 4th와 같은 서수 표시, 화학식(예: H2O) 등이 있습니다.',
+ TABLES_MISSING_HEADINGS: '표 헤더가 누락되었습니다! 접근 가능한 표에는 머리글 셀과 데이터 셀의 관계를 정의하는 HTML 마크업이 필요합니다. 이 정보는 보조 기술을 사용하는 사람들에게 컨텍스트를 제공합니다. 표는 표 형식의 데이터에만 사용해야 합니다.
액세스 가능한 표에 대해 자세히 알아보기.',
+ TABLES_SEMANTIC_HEADING: '제목 2 또는 제목 3과 같은 시맨틱 제목은 콘텐츠 섹션에만 사용해야 하며, HTML 표에는 이 아닌을 사용해야 합니다. 대신 <th>
요소를 사용하여 표 제목을 표시하세요.
액세스 가능한 표에 대해 자세히 알아보기.',
+ TABLES_EMPTY_HEADING: '빈 테이블 헤더가 발견되었습니다! 테이블 헤더는 비어 있으면 안 됩니다. 행 및/또는 열 머리글을 지정하여 관계를 전달하는 것이 중요합니다. 이 정보는 보조 기술을 사용하는 사람들에게 맥락을 제공합니다. 표는 표 형식의 데이터에만 사용해야 한다는 점에 유의하세요.
액세스 가능한 테이블에 대해 자세히 알아보기.',
+ CONTRAST_ERROR: '이 텍스트는 배경과 대비가 충분하지 않습니다. 대비 비율은 일반 텍스트의 경우 4.5:1 이상, 큰 텍스트의 경우 3:1 이상이어야 합니다.
다음 텍스트의 대비 비율은 %(cratio)입니다: %(sanitizedText)',
+ CONTRAST_WARNING: '이 텍스트의 대비를 알 수 없으므로 수동으로 검토해야 합니다. 텍스트와 배경의 색상이 강하게 대비되는지 확인합니다. 대비 비율은 일반 텍스트의 경우 4.5:1 이상, 큰 텍스트의 경우 3:1 이상이어야 합니다.
검토해 주세요: %(sanitizedText)',
+ CONTRAST_INPUT_ERROR: '이 입력 내의 텍스트는 배경과 대비가 충분하지 않습니다. 대비 비율은 일반 텍스트의 경우 4.5:1 이상, 큰 텍스트의 경우 3:1 이상이어야 합니다.
대비 비율: %(cratio)',
+ },
+};
+
+export { ko as default };
diff --git a/assets/dist/js/lang/ko.umd.js b/assets/dist/js/lang/ko.umd.js
new file mode 100644
index 0000000..2119f14
--- /dev/null
+++ b/assets/dist/js/lang/ko.umd.js
@@ -0,0 +1,240 @@
+
+/*!
+ * Sa11y, the accessibility quality assurance assistant.
+ * @version 3.0.6
+ * @author Adam Chaboryk, Toronto Metropolitan University
+ * @license GPL-2.0-or-later
+ * @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
+ * @contact adam.chaboryk@torontomu.ca
+ * GitHub: git+https://github.com/ryersondmp/sa11y.git | Website: https://sa11y.netlify.app
+ * For all acknowledgements, please visit: https://sa11y.netlify.app/acknowledgements/
+ * The above copyright notice shall be included in all copies or substantial portions of the Software.
+**/
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Sa11yLangKo = factory());
+})(this, (function () { 'use strict';
+
+ /*! WARNING: This is a machine-generated translation and may contain errors or inaccuracies. */
+ var ko = {
+ // Korean
+ strings: {
+ LANG_CODE: 'ko',
+ MAIN_TOGGLE_LABEL: '접근성 확인',
+ CONTAINER_LABEL: '접근성 검사기',
+ ERROR: '오류',
+ ERRORS: '오류',
+ WARNING: '경고',
+ WARNINGS: '경고',
+ GOOD: '양호',
+ ON: '켜기',
+ OFF: '꺼짐',
+ ALERT_TEXT: '알림',
+ ALERT_CLOSE: '닫기',
+ OUTLINE: '페이지 개요',
+ PAGE_ISSUES: '페이지 문제',
+ SETTINGS: '설정',
+ CONTRAST: '대비',
+ FORM_LABELS: '양식 레이블',
+ LINKS_ADVANCED: '링크(고급)',
+ DARK_MODE: '다크 모드',
+ SHORTCUT_SCREEN_READER: '이슈로 건너뛰기. 키보드 단축키: Alt S',
+ SHORTCUT_TOOLTIP: '이슈로 건너뛰기',
+ NEW_TAB: '새 탭에서 열기',
+ PANEL_HEADING: '접근성 확인',
+ PANEL_STATUS_NONE: '오류를 찾을 수 없습니다.',
+ PANEL_ICON_WARNINGS: '경고가 발견되었습니다.',
+ PANEL_ICON_TOTAL: '발견된 총 문제 수입니다.',
+ NOT_VISIBLE_ALERT: '보려는 항목이 보이지 않거나 숨겨져 있거나 아코디언 또는 탭 구성 요소 안에 있을 수 있습니다. 다음은 미리 보기입니다:',
+ ERROR_MISSING_ROOT_TARGET: '대상 영역 <코드>%(root)코드>가 존재하지 않으므로 전체 페이지의 접근성을 확인하지 못했습니다.',
+ HEADING_NOT_VISIBLE_ALERT: '제목은 보이지 않거나 숨겨져 있거나 아코디언 또는 탭 구성 요소 안에 있을 수 있습니다.',
+ SKIP_TO_PAGE_ISSUES: '페이지로 건너뛰기 이슈',
+ CONSOLE_ERROR_MESSAGE: '죄송하지만 이 페이지의 접근성 검사기에 문제가 있습니다. 이 양식 또는 GitHub에서 신고해 주시겠어요?',
+
+ // Dismiss
+ PANEL_DISMISS_BUTTON: '%(dismissCount) 해제된 경고 표시',
+ DISMISS: '해지',
+ DISMISSED: '기각된 경고',
+ DISMISS_REMINDER: '경고는 일시적으로만 해제됩니다. 브라우저 기록과 쿠키를 지우면 모든 페이지에서 이전에 해제된 경고가 모두 복원됩니다.',
+
+ // Export
+ DATE: '날짜',
+ PAGE_TITLE: '페이지 제목',
+ RESULTS: '결과',
+ EXPORT_RESULTS: '결과 내보내기',
+ GENERATED: '%(tool)로 생성된 결과.',
+ PREVIEW: '미리보기',
+ ELEMENT: '요소',
+ PATH: '경로',
+
+ // Colour filters
+ COLOUR_FILTER: '컬러 필터',
+ PROTANOPIA: '프로타노피아',
+ DEUTERANOPIA: '듀테라노피아',
+ TRITANOPIA: '트리타노피아',
+ MONOCHROMACY: '단색',
+ COLOUR_FILTER_MESSAGE: '다른 색상과 구분하기 어렵거나 인지하기 어려운 요소가 있는지 확인하세요.',
+ RED_EYE: '레드 블라인드.',
+ GREEN_EYE: '녹색 블라인드.',
+ BLUE_EYE: '블루 블라인드.',
+ MONO_EYE: '빨간색, 파란색, 녹색 블라인드.',
+ COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: '고대비 모드에서는 컬러 필터가 작동하지 않습니다.',
+
+ // Alternative text stop words
+ SUSPICIOUS_ALT_STOPWORDS: [
+ '이미지',
+ '그래픽',
+ '사진',
+ '사진',
+ ],
+ PLACEHOLDER_ALT_STOPWORDS: [
+ 'alt',
+ '이미지',
+ '사진',
+ '장식',
+ '자리 표시자',
+ '플레이스홀더 이미지',
+ '스페이서',
+ ],
+ PARTIAL_ALT_STOPWORDS: [
+ '클릭',
+ '여기를 클릭하세요',
+ '자세한 내용을 보려면 여기를 클릭하세요.',
+ '자세히 알아보려면 여기를 클릭하세요.',
+ '여기를 클릭',
+ '체크 아웃',
+ '여기에서 자세히 보기',
+ '다운로드',
+ '여기에서 다운로드',
+ '자세히 알아보기',
+ '자세히 알아보기',
+ 'form',
+ '여기',
+ '정보',
+ '정보',
+ '링크',
+ '배우기',
+ '자세히 알아보기',
+ '다음을 배우십시오.',
+ '더 보기',
+ '페이지',
+ '종이',
+ '자세히 보기',
+ '읽기',
+ '이 글 읽기',
+ '이',
+ '이 페이지',
+ '이 웹사이트',
+ '보기',
+ '보기',
+ '웹사이트',
+ ],
+ WARNING_ALT_STOPWORDS: [
+ '여기를 클릭하세요',
+ ],
+ NEW_WINDOW_PHRASES: [
+ '외부',
+ '새 탭',
+ '새 창',
+ '팝업',
+ '팝업',
+ ],
+ FILE_TYPE_PHRASES: [
+ '문서',
+ '스프레드시트',
+ '계산 시트',
+ '압축 파일',
+ '보관된 파일',
+ '워크시트',
+ '파워포인트',
+ '프레젠테이션',
+ '설치',
+ '비디오',
+ '오디오',
+ 'pdf',
+ ],
+ LANG_READABILITY: '가독성',
+ LANG_AVG_SENTENCE: '문장당 평균 단어 수:',
+ LANG_COMPLEX_WORDS: '복잡한 단어:',
+ LANG_TOTAL_WORDS: '단어:',
+ LANG_VERY_DIFFICULT: '매우 어려움',
+ LANG_DIFFICULT: '어려움',
+ LANG_FAIRLY_DIFFICULT: '상당히 어려움',
+ LANG_GOOD: '양호',
+ READABILITY_NO_P_OR_LI_MESSAGE: '가독성 점수를 계산할 수 없습니다. 단락 <코드><p>코드> 또는 목록 콘텐츠 <코드><li>코드>를 찾을 수 없습니다.',
+ READABILITY_NOT_ENOUGH_CONTENT_MESSAGE: '가독성 점수를 계산할 콘텐츠가 충분하지 않습니다.',
+ HEADING_NON_CONSECUTIVE_LEVEL: '비연속적인 머리글 레벨이 사용되었습니다. 제목은 레벨을 건너뛰거나 헤딩 %(level)에서 헤딩 %(level)로 이동하지 않아야 합니다.',
+ HEADING_EMPTY: '빈 제목이 발견되었습니다! 수정하려면 이 줄을 삭제하거나 형식을 헤딩 %(level)에서 일반 또는 단락으로 변경하세요.',
+ HEADING_LONG: '제목이 길어요! 제목은 콘텐츠를 구성하고 구조를 전달하는 데 사용해야 합니다. 제목은 간결하고 유익하며 독창적이어야 합니다. 제목은 160자 이내(한 문장 이하)로 유지하세요.
글자 수입니다: %(headingLength)',
+ HEADING_FIRST: '페이지의 첫 번째 제목은 일반적으로 제목 1 또는 제목 2여야 합니다. 제목 1은 주요 콘텐츠 섹션의 시작 부분이어야 하며 페이지의 전반적인 목적을 설명하는 주요 제목입니다. 헤딩 구조에 대해 자세히 알아보기.',
+ HEADING_MISSING_ONE: '제목 1이 누락되었습니다. 제목 1은 주요 콘텐츠 영역의 시작 부분이어야 하며 페이지의 전반적인 목적을 설명하는 기본 제목입니다. 헤딩 구조에 대해 자세히 알아보기.',
+ HEADING_EMPTY_WITH_IMAGE: '제목에 텍스트가 없지만 이미지가 포함되어 있습니다. 제목이 아닌 경우 형식을 제목 %(level)에서 일반 또는 단락으로 변경합니다. 그렇지 않으면 장식용 이미지가 아닌 경우 이미지에 대체 텍스트를 추가하세요.',
+ PANEL_HEADING_MISSING_ONE: '제목 1이 없습니다!',
+ PANEL_NO_HEADINGS: '제목을 찾을 수 없습니다.',
+ LINK_EMPTY: '텍스트가 없는 빈 링크를 제거합니다.',
+ LINK_EMPTY_LINK_NO_LABEL: '링크에 화면 리더 및 기타 보조 기술에서 볼 수 있는 식별 가능한 텍스트가 없습니다. 수정하려면: - 링크가 어디로 연결되는지 설명하는 간결한 텍스트를 추가합니다.
- 이 링크가 아이콘 링크 또는 SVG인 경우 설명 레이블이 누락되었을 가능성이 높습니다.
- 복사/붙여넣기 버그로 인한 오류라고 생각되면 링크를 삭제하는 것이 좋습니다.
',
+ LINK_LABEL: '링크 레이블: %(sanitizedText)',
+ LINK_STOPWORD: "링크 텍스트가 문맥에 맞지 않게 충분히 설명적이지 않을 수 있습니다: %(error)
Tip! 링크 텍스트는 항상 명확하고 고유하며 의미 있는 것이어야 합니다. '여기를 클릭하세요' 또는 '자세히 알아보기'와 같은 일반적인 단어는 피하세요;",
+ LINK_BEST_PRACTICES: '링크 텍스트를 바꾸는 것이 좋습니다: %(error)
- "여기를 클릭하세요"는 마우스를 사용하지 않거나 모바일 장치에서 이 웹사이트를 볼 수 있는 많은 사람들을 위해 마우스 메커니즘에 중점을 둔 위치입니다. 작업과 관련된 다른 동사를 사용하는 것이 좋습니다.
- 보조 기술에 숨겨져 있지 않는 한 HTML 기호를 콜투액션으로 사용하지 마세요.
',
+ LINK_URL: '링크 텍스트로 사용되는 길고 이해하기 어려운 URL은 보조 기술로 이해하기 어려울 수 있습니다. 대부분의 경우 URL 대신 사람이 읽을 수 있는 텍스트를 사용하는 것이 좋습니다. 짧은 URL(예: 사이트 홈페이지)은 괜찮습니다.
Tip! 링크 텍스트는 항상 명확하고 고유하며 의미 있는 문맥을 통해 이해할 수 있어야 합니다.',
+ LINK_DOI: '웹 페이지 또는 온라인 전용 리소스의 경우 APA 스타일 가이드에서는 제목 주위에 저작물의 URL 또는 DOI를 감싸는 설명 링크를 사용할 것을 권장합니다. 링크 텍스트로 사용되는 길고 이해하기 어려운 URL은 보조 기술을 사용하여 이해하기 어려울 수 있습니다.',
+ NEW_TAB_WARNING: '경고 없이 새 탭 또는 새 창에서 링크가 열립니다. 특히 시각적 콘텐츠를 인식하는 데 어려움을 겪는 사람들에게는 혼란을 줄 수 있습니다. 둘째, 다른 사람의 경험을 통제하거나 대신 결정을 내리는 것은 항상 좋은 관행이 아닙니다. 링크 텍스트 내에 링크가 새 창에서 열림
팁! 모범 사례 알아보기임을 표시하세요: 새 브라우저 창 및 탭에서 링크 열기',
+ FILE_TYPE_WARNING: '링크는 경고 없이 PDF 또는 다운로드 가능한 파일(예: MP3, Zip, Word Doc)을 가리킵니다. 링크 텍스트에 파일 유형을 표시합니다. 대용량 파일인 경우 파일 크기를 포함하는 것이 좋습니다.
예시: 임원 보고서(PDF, 3MB)',
+ LINK_IDENTICAL_NAME: '다른 페이지를 가리키지만 링크의 텍스트가 다른 링크와 동일합니다. 동일한 텍스트의 링크가 여러 개 있으면 화면 리더를 사용하는 사용자에게 혼란을 줄 수 있습니다.
다음 링크를 다른 링크와 구분할 수 있도록 더 설명적으로 만드는 것을 고려하세요: %(sanitizedText)',
+ MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: '이미지가 주변 텍스트와 함께 링크로 사용되고 있지만 alt 속성은 장식용 또는 null로 표시되어야 합니다.',
+ MISSING_ALT_LINK_MESSAGE: '이미지가 링크로 사용 중이지만 대체 텍스트가 누락되었습니다! 링크가 어디로 연결되는지 설명하는 대체 텍스트를 입력하세요.',
+ MISSING_ALT_MESSAGE: '대체 텍스트가 누락되었습니다! 이미지가 스토리, 분위기 또는 중요한 정보를 전달하는 경우 이미지에 대한 설명을 반드시 기재하세요.',
+ LINK_ALT_HAS_FILE_EXTENSION: '대체 텍스트 내의 파일 확장자를 찾았습니다. 대체 텍스트가 이미지에 대한 문자 그대로의 설명이 아니라 링크의 목적지를 설명하는지 확인하세요. 제거합니다: %(error).
대체 텍스트: %(altText)',
+ LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: '링크된 이미지에 설명이 없거나 자리 표시자 대체 텍스트가 발견되었습니다. 대체 텍스트가 이미지에 대한 문자 그대로의 설명이 아니라 링크의 대상을 설명하는지 확인합니다. 다음 대체 텍스트를 교체합니다: %(altText)',
+ LINK_IMAGE_SUS_ALT_MESSAGE: '보조 기술은 이미 이미지임을 표시하므로 %(error)가 중복될 수 있습니다. 대체 텍스트가 이미지에 대한 문자 그대로의 설명이 아니라 링크의 목적지를 설명하는지 확인하세요.
대체 텍스트: %(altText)',
+ ALT_HAS_FILE_EXTENSION: '대체 텍스트 내의 파일 확장자를 찾았습니다. 이미지가 스토리, 분위기 또는 중요한 정보를 전달하는 경우 이미지를 설명해야 합니다. 제거합니다: %(error).
대체 텍스트: %(altText)',
+ ALT_PLACEHOLDER_MESSAGE: '설명이 없거나 자리 표시자 대체 텍스트가 발견되었습니다. 다음 대체 텍스트를 더 의미 있는 것으로 바꾸세요: %(altText)',
+ ALT_HAS_SUS_WORD: '보조 기술은 이미 이미지임을 표시하므로 %(error)가 중복될 수 있습니다.
대체 텍스트: %(altText)',
+ LINK_HIDDEN_FOCUSABLE: '링크에는 aria-hidden="true"
속성이 있지만 키보드로 여전히 초점을 맞출 수 있습니다. 중복되거나 불필요한 링크를 숨기려면 tabindex="-1"
도 추가하세요.',
+ LINK_IMAGE_NO_ALT_TEXT: '링크 내 이미지는 장식용으로 표시되어 있으며 링크 텍스트가 없습니다. 링크의 목적지를 설명하는 대체 텍스트를 이미지에 추가하세요.',
+ LINK_IMAGE_HAS_TEXT: '링크가 주변 텍스트를 설명 레이블로 사용하고 있지만 이미지는 장식용으로 표시됩니다.',
+ LINK_IMAGE_LONG_ALT: '링크된 이미지의 대체 텍스트 설명이 너무 깁니다. 링크된 이미지의 대체 텍스트는 이미지에 대한 문자 그대로의 설명이 아니라 링크를 통해 이동하는 위치를 설명해야 합니다. 링크되는 페이지의 제목을 대체 텍스트로 사용하는 것이 좋습니다.
대체 텍스트(%(altLength) 문자): %(altText)',
+ LINK_IMAGE_ALT_WARNING: '이미지 링크에 대체 텍스트가 포함되어 있습니다. 대체 텍스트에 링크가 어디로 연결되는지 설명되어 있나요? 링크하는 페이지의 제목을 대체 텍스트로 사용하는 것이 좋습니다.
대체 텍스트: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: '이미지 링크에 대체 텍스트와 주변 링크 텍스트가 모두 포함됨 이 이미지가 장식용이고 다른 페이지에 대한 기능적 링크로 사용되는 경우 이미지를 장식용으로 표시하거나 주변 링크 텍스트로 충분할 수 있도록 null로 표시하는 것을 고려하세요.
대체 텍스트: %(altText)
링크 레이블: %(sanitizedText)',
+ IMAGE_FIGURE_DECORATIVE: '이미지가 장식으로 표시되어 보조 기술에서 무시됩니다.
캡션이 제공되었더라도 이미지에는 대부분의 경우 대체 텍스트가 있어야 합니다. - 대체 텍스트는 이미지에 포함된 내용에 대한 간결한 설명을 제공해야 합니다.
- 캡션은 일반적으로 이미지를 주변 콘텐츠와 다시 연관시키거나 특정 정보에 주의를 기울일 수 있도록 맥락을 제공해야 합니다.
자세히 알아보기: 알트 대 그림 캡션.',
+ IMAGE_FIGURE_DUPLICATE_ALT: '대체 텍스트와 캡션 텍스트에 정확히 같은 단어를 사용하지 마세요. 화면 리더는 정보를 두 번 알립니다.- 대체 텍스트는 이미지에 포함된 내용에 대한 간결한 설명을 제공해야 합니다.
- 캡션은 일반적으로 이미지를 주변 콘텐츠와 다시 연관시키거나 특정 정보에 주목할 수 있도록 맥락을 제공해야 합니다.
자세히 알아보기: 알트 대 그림 캡션.
대체 텍스트: %(altText)',
+ IMAGE_DECORATIVE: "이미지는 '장식용'으로 표시되어 보조 기술에서 무시됩니다. 이미지가 스토리, 분위기 또는 중요한 정보를 전달하는 경우 대체 텍스트를 추가해야 합니다.",
+ IMAGE_ALT_TOO_LONG: '대체 텍스트 설명이 너무 깁니다. 대체 텍스트는 간결하면서도 트윗처럼 의미 있는 내용이어야 합니다(100자 내외). 복잡한 이미지나 그래프인 경우 이미지에 대한 긴 설명을 아래 텍스트나 아코디언 구성 요소에 넣는 것이 좋습니다.
대체 텍스트(%(altLength) 문자): %(altText)',
+ IMAGE_PASS: '대체 텍스트: %(altText)',
+ LABELS_MISSING_IMAGE_INPUT_MESSAGE: '이미지 버튼에 대체 텍스트가 없습니다. 접근 가능한 이름을 제공하기 위해 대체 텍스트를 추가하세요. 예: 검색 또는 제출.',
+ LABELS_INPUT_RESET_MESSAGE: '재설정 버튼은 실수로 활성화하기 쉬우므로 특별히 필요한 경우가 아니라면 사용하지 않는 것이 좋습니다.
Tip! 재설정 및 취소 버튼이 사용성 문제를 일으키는 이유에 대해 알아보세요.',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: '입력에 접근 가능한 이름이 있지만 레이블도 표시되어 있는지 확인하세요.
입력 레이블: %(sanitizedText)',
+ LABELS_NO_FOR_ATTRIBUTE_MESSAGE: '이 입력과 연결된 레이블이 없습니다. 이 입력의 <코드>ID코드>와 일치하는 레이블에 <코드>용코드> 속성을 추가합니다.
이 입력의 ID는 다음과 같습니다: id="%(id)"',
+ LABELS_MISSING_LABEL_MESSAGE: '이 입력과 연결된 레이블이 없습니다. 이 입력에 <코드>아이디코드>를 추가하고 레이블에 일치하는 <코드>용코드> 속성을 추가하세요.',
+ EMBED_VIDEO: '모든 동영상에 자막이 있는지 확인하세요. 모든 오디오 및 동영상 콘텐츠에 자막을 제공하는 것은 필수 레벨 A 요건입니다. 자막은 청각 장애가 있거나 난청인 사용자를 지원합니다.',
+ EMBED_AUDIO: '모든 팟캐스트에 대본을 제공해야 합니다. 오디오 콘텐츠에 대한 대본 제공은 필수 레벨 A 요건입니다. 대본은 청각 장애가 있거나 청각이 불편한 사람들을 지원하지만 모든 사람에게 도움이 될 수 있습니다. 대본을 아래 또는 아코디언 패널 안에 배치하는 것을 고려하세요.',
+ EMBED_DATA_VIZ: '이와 같은 데이터 시각화 위젯은 키보드나 화면 리더를 사용하여 탐색하는 사람들에게 종종 문제가 되며, 저시력자나 색맹인 사람들에게는 상당한 어려움을 초래할 수 있습니다. 위젯 아래에 동일한 정보를 다른 형식(텍스트 또는 표)으로 제공하는 것이 좋습니다.
복잡한 이미지에 대해 자세히 알아보기 컴플렉스 이미지.',
+ EMBED_MISSING_TITLE: '임베드된 콘텐츠에는 콘텐츠를 설명하는 접근 가능한 이름이 필요합니다. iframe
요소에 고유한 title
또는 aria-label
속성을 제공하세요. iFrames.에 대해 자세히 알아보기',
+ EMBED_GENERAL_WARNING: '삽입된 콘텐츠를 확인할 수 없습니다. 이미지에 대체 텍스트가 있는지, 동영상에 캡션이 있는지, 텍스트의 대비가 충분한지, 인터랙티브 구성 요소가 키보드에 액세스할 수 있는지 확인하세요.',
+ EMBED_UNFOCUSABLE: '포커스할 수 없는 요소를 포함한 <iframe>
은 tabindex="-1"
을 가져서는 안 됩니다. 포함된 콘텐츠는 키보드로 접근할 수 없습니다.',
+ QA_BAD_LINK: '잘못된 링크를 찾았습니다. 링크가 개발 환경을 가리키는 것으로 보입니다.
이 링크는 다음을 가리킵니다:
%(el)',
+ QA_BAD_ITALICS: '굵게 및 이탤릭체 태그는 의미론적 의미가 있으며, 전체 단락을 강조할 때는 <강함>이 아닌 <강함>을 사용해야 합니다. 굵은 텍스트는 단어나 문구에 강한 <강한> 강조를 제공할 때 사용해야 합니다. 고유명사(예: 책 및 기사 제목), 외래어, 따옴표는 이탤릭체로 강조 표시해야 합니다. 긴 따옴표는 블록 따옴표로 서식을 지정해야 합니다.',
+ QA_PDF: 'PDF의 접근성을 확인할 수 없습니다. PDF는 웹 콘텐츠로 간주되므로 접근성을 제공해야 합니다. PDF에는 화면 리더를 사용하는 사용자(구조 태그 누락 또는 양식 필드 레이블 누락)와 저시력 사용자(확대 시 텍스트가 리플로우되지 않음)를 위한 문제가 포함되어 있는 경우가 많습니다. - 양식인 경우 접근 가능한 HTML 양식을 대안으로 사용해 보십시오.
- 문서인 경우 웹 페이지로 변환해 보십시오.
그렇지 않은 경우 PDF의 접근성을 확인하십시오.를 확인하십시오.',
+ QA_DOCUMENT: '문서의 접근성을 확인할 수 없습니다. 링크된 문서는 웹 콘텐츠로 간주되므로 접근성을 제공해야 합니다. 이 문서를 수동으로 검토해 주세요. Google 스페이스 문서 또는 프레젠테이션에 더 쉽게 액세스할 수 있도록 설정하세요. Office 문서에 더 쉽게 액세스할 수 있도록 설정하세요. ',
+ QA_PAGE_LANGUAGE: '페이지 언어가 선언되지 않았습니다! HTML 태그에 언어를 선언하세요.',
+ QA_PAGE_TITLE: '페이지 제목이 누락되었습니다! 페이지 제목을 입력하세요.',
+ QA_BLOCKQUOTE_MESSAGE: '제목인가요? %(sanitizedText)
블록 따옴표는 따옴표로만 사용해야 합니다. 제목으로 사용하려는 경우 이 블록 따옴표를 의미론적 제목(예: 제목 2 또는 제목 3)으로 변경하세요.',
+ QA_FAKE_HEADING: '이것이 제목인가요? %(boldtext)
굵거나 큰 텍스트 한 줄은 제목처럼 보일 수 있지만 화면 리더를 사용하는 사람은 이 텍스트가 중요하다는 것을 알거나 해당 콘텐츠로 넘어갈 수 없습니다. 굵거나 큰 텍스트는 의미론적 제목(제목 2~제목 6)을 절대 대체해서는 안 됩니다.',
+ QA_SHOULD_BE_LIST: '목록을 만들려고 하나요? 가능한 목록 항목을 찾았습니다: %(firstPrefix)
대신 글머리 기호 또는 숫자 서식 지정 버튼을 사용하여 시맨틱 목록을 사용해야 합니다. 시맨틱 목록을 사용하는 경우 보조 기술은 총 항목 수 및 목록에서 각 항목의 상대적 위치와 같은 정보를 전달할 수 있습니다. 시맨틱 목록에 대해 자세히 알아보기 시맨틱 목록.',
+ QA_UPPERCASE_WARNING: '모든 대문자를 찾았습니다. 일부 화면 리더는 대문자 텍스트를 약어로 해석하여 각 문자를 개별적으로 읽을 수 있습니다. 또한 일부 사람들은 대문자를 더 읽기 어려워하며 소리치는 것처럼 보일 수 있습니다.',
+ QA_DUPLICATE_ID: '중복 ID를 찾았습니다. 중복 ID 오류는 보조 기술이 콘텐츠와 상호 작용할 때 문제를 일으키는 것으로 알려져 있습니다.
다음 ID를 제거하거나 변경하세요: %(id)',
+ QA_TEXT_UNDERLINE_WARNING: '밑줄 친 텍스트는 링크와 혼동될 수 있습니다. <strong>
강조</strong>
또는 <em>
강조</em>
와 같은 다른 스타일을 사용하는 것을 고려하세요.',
+ QA_SUBSCRIPT_WARNING: '아래 첨자 및 위 첨자 서식 옵션은 인쇄 규칙이나 표준에 따라 텍스트의 위치를 변경할 때만 사용해야 합니다. 프레젠테이션이나 외관을 위한 용도로만 사용해서는 안 됩니다. 문장 전체에 서식을 지정하면 가독성 문제가 발생할 수 있습니다. 적절한 사용 사례로는 지수 표시, 4번째 대신 4th와 같은 서수 표시, 화학식(예: H2O) 등이 있습니다.',
+ TABLES_MISSING_HEADINGS: '표 헤더가 누락되었습니다! 접근 가능한 표에는 머리글 셀과 데이터 셀의 관계를 정의하는 HTML 마크업이 필요합니다. 이 정보는 보조 기술을 사용하는 사람들에게 컨텍스트를 제공합니다. 표는 표 형식의 데이터에만 사용해야 합니다.
액세스 가능한 표에 대해 자세히 알아보기.',
+ TABLES_SEMANTIC_HEADING: '제목 2 또는 제목 3과 같은 시맨틱 제목은 콘텐츠 섹션에만 사용해야 하며, HTML 표에는 이 아닌을 사용해야 합니다. 대신 <th>
요소를 사용하여 표 제목을 표시하세요.
액세스 가능한 표에 대해 자세히 알아보기.',
+ TABLES_EMPTY_HEADING: '빈 테이블 헤더가 발견되었습니다! 테이블 헤더는 비어 있으면 안 됩니다. 행 및/또는 열 머리글을 지정하여 관계를 전달하는 것이 중요합니다. 이 정보는 보조 기술을 사용하는 사람들에게 맥락을 제공합니다. 표는 표 형식의 데이터에만 사용해야 한다는 점에 유의하세요.
액세스 가능한 테이블에 대해 자세히 알아보기.',
+ CONTRAST_ERROR: '이 텍스트는 배경과 대비가 충분하지 않습니다. 대비 비율은 일반 텍스트의 경우 4.5:1 이상, 큰 텍스트의 경우 3:1 이상이어야 합니다.
다음 텍스트의 대비 비율은 %(cratio)입니다: %(sanitizedText)',
+ CONTRAST_WARNING: '이 텍스트의 대비를 알 수 없으므로 수동으로 검토해야 합니다. 텍스트와 배경의 색상이 강하게 대비되는지 확인합니다. 대비 비율은 일반 텍스트의 경우 4.5:1 이상, 큰 텍스트의 경우 3:1 이상이어야 합니다.
검토해 주세요: %(sanitizedText)',
+ CONTRAST_INPUT_ERROR: '이 입력 내의 텍스트는 배경과 대비가 충분하지 않습니다. 대비 비율은 일반 텍스트의 경우 4.5:1 이상, 큰 텍스트의 경우 3:1 이상이어야 합니다.
대비 비율: %(cratio)',
+ },
+ };
+
+ return ko;
+
+}));
diff --git a/assets/dist/js/lang/lt.js b/assets/dist/js/lang/lt.js
index 5a7cdba..2f999df 100644
--- a/assets/dist/js/lang/lt.js
+++ b/assets/dist/js/lang/lt.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var lt = {
HEADING_NOT_VISIBLE_ALERT: 'Antraštė nėra matoma; ji gali būti paslėpta arba akordeono ar skirtuko komponento viduje.',
SKIP_TO_PAGE_ISSUES: 'Pereiti prie puslapio klausimų',
CONSOLE_ERROR_MESSAGE: 'Atsiprašome, bet šiame puslapyje yra problema su prieinamumo tikrintuvu. Ar galite apie tai pranešti per šią formą arba GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Rodyti %(dismissCount) atmestų įspėjimų',
DISMISS: 'Atmesti',
DISMISSED: 'Atmesti įspėjimai',
DISMISS_REMINDER: 'Atkreipkite dėmesį, kad įspėjimai atmetami tik laikinai. Išvalius naršyklės istoriją ir slapukus, bus atkurti visi anksčiau atmesti įspėjimai visuose puslapiuose.',
+
+ // Export
+ DATE: 'Data',
+ PAGE_TITLE: 'Puslapio pavadinimas',
+ RESULTS: 'Rezultatai',
+ EXPORT_RESULTS: 'Eksportuoti rezultatus',
+ GENERATED: 'Rezultatai sugeneruoti su %(tool).',
+ PREVIEW: 'Peržiūra',
+ ELEMENT: 'Elementas',
+ PATH: 'Kelias',
+
+ // Colour filters
COLOUR_FILTER: 'Spalvų filtras',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopija',
@@ -60,6 +74,8 @@ var lt = {
BLUE_EYE: 'Mėlyna aklina.',
MONO_EYE: 'Raudonas, mėlynas ir žalias aklasis.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Spalviniai filtrai neveikia didelio kontrasto režimu.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'vaizdas',
'grafinis',
@@ -143,6 +159,7 @@ var lt = {
HEADING_MISSING_ONE: 'Trūksta 1 antraštės. 1 antraštė turėtų būti pagrindinės turinio srities pradžia ir yra pagrindinė antraštė, apibūdinanti bendrą puslapio tikslą. Sužinokite daugiau apie Pavadinimų struktūrą.',
HEADING_EMPTY_WITH_IMAGE: 'Antraštėje nėra teksto, bet yra paveikslėlis. Jei tai nėra antraštė, pakeiskite jos formatą iš Heading %(level) į Normal arba Paragraph. Kitu atveju pridėkite paveikslėlio alt tekstą, jei jis nėra dekoratyvinis.',
PANEL_HEADING_MISSING_ONE: 'Trūksta 1 antraštės!',
+ PANEL_NO_HEADINGS: 'Antraščių nerasta.',
LINK_EMPTY: 'Pašalinkite tuščias nuorodas be jokio teksto.',
LINK_EMPTY_LINK_NO_LABEL: 'Nuorodoje nėra įskaitomo teksto, kuris būtų matomas ekrano skaitytuvams ir kitoms pagalbinėms technologijoms. Ištaisyti: Pridėkite glaustą tekstą, kuriame būtų aprašyta, kur nuoroda veda. Jeigu tai yra paveiksliuko arba SVG nuoroda, greičiausiai trūksta aprašomosios etiketės. Jeigu manote, kad ši nuoroda yra klaida dėl kopijavimo ir įkėlimo klaidos, apsvarstykite galimybę ją ištrinti. .',
LINK_LABEL: 'Etiketė su nuoroda: %(sanitizedText)',
@@ -156,18 +173,18 @@ var lt = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Paveikslas naudojamas kaip nuoroda su aplinkiniu tekstu, nors atributas alt turėtų būti pažymėtas kaip dekoratyvinis arba nulinis.',
MISSING_ALT_LINK_MESSAGE: 'Paveiksliukas naudojamas kaip nuoroda, bet nėra teksto alt! Užtikrinkite, kad alt tekste būtų aprašyta, kur nukreipia nuoroda.',
MISSING_ALT_MESSAGE: 'Trūksta alt teksto! Jei paveikslėlis perteikia istoriją, nuotaiką ar svarbią informaciją, būtinai jį aprašykite.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Rastas failo plėtinys alt tekste. Užtikrinkite, kad alt tekstas apibūdintų nuorodos paskirties vietą, o ne pažodinį paveikslėlio aprašymą. Pašalinti: %(error).
Alt tekstas: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Rastas failo plėtinys alt tekste. Užtikrinkite, kad alt tekstas apibūdintų nuorodos paskirties vietą, o ne pažodinį paveikslėlio aprašymą. Pašalinti: %(error).
Alt tekstas: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Rastas ne aprašomasis arba pakaitinis alt tekstas susietame paveikslėlyje. Užtikrinkite, kad alt tekstas apibūdintų nuorodos paskirties vietą, o ne pažodinį paveikslėlio aprašymą. Pakeiskite šį alt tekstą: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Pagalbinėse technologijose jau nurodoma, kad tai yra paveikslėlis, todėl "%(error)" gali būti nereikalingas. Užtikrinkite, kad alt tekstas apibūdintų nuorodos paskirties vietą, o ne pažodinį paveikslėlio aprašymą.
Alt tekstas: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Rastas failo plėtinys alt tekste. Jei vaizdas perteikia istoriją, nuotaiką ar svarbią informaciją, būtinai aprašykite vaizdą. Pašalinti: %(error).
Alt tekstas: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Rastas failo plėtinys alt tekste. Jei vaizdas perteikia istoriją, nuotaiką ar svarbią informaciją, būtinai aprašykite vaizdą. Pašalinti: %(error).
Alt tekstas: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Rastas neaprašytas arba pakaitinis alt tekstas. Pakeiskite šį alt tekstą į prasmingesnį: %(altText)',
ALT_HAS_SUS_WORD: 'Pagalbinėse technologijose jau nurodoma, kad tai yra paveikslėlis, todėl "%(error)" gali būti nereikalingas.
Alt tekstas: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Nuoroda aplink paveikslėlį turi aria-hidden="true"
, bet ją vis tiek galima fokusuoti klaviatūra. Jei ketinate paslėpti nereikalingą arba besidubliuojančią nuorodą, taip pat pridėkite tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Nuoroda turi aria-hidden="true"
, bet vis dar gali būti fokusuojama naudojant klaviatūrą. Jei ketinate paslėpti nereikalingą arba pasikartojantį nuorodą, taip pat pridėkite tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Nuorodoje esantis paveikslėlis pažymėtas kaip dekoratyvinis, o nuorodos teksto nėra. Prie paveikslėlio pridėkite alt tekstą, kuriame būtų aprašyta nuorodos paskirtis.',
LINK_IMAGE_HAS_TEXT: 'Paveikslas pažymėtas kaip dekoratyvinis, nors nuorodoje aplinkinis tekstas naudojamas kaip aprašomoji etiketė.',
LINK_IMAGE_LONG_ALT: 'Susieto paveikslėlio Alt teksto aprašymas yra per ilgas. Susietų paveikslėlių alt tekstas turėtų apibūdinti, kur nukreipia nuoroda, o ne pažodinis paveikslėlio aprašymas. Svarstykite galimybę kaip alt tekstą naudoti puslapio, į kurį nukreipia nuoroda, pavadinimą.
Alt tekstas (%(altLength) ženklai): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Paveikslėlio nuorodoje yra teksto alt. Ar alt tekste aprašoma, kur nukreipia nuoroda? Apsvarstykite galimybę kaip alt tekstą naudoti puslapio, į kurį nukreipia nuoroda, pavadinimą.
Alt tekstas: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Paveikslėlio nuorodoje yra ir alt tekstas, ir aplink esantis nuorodos tekstas. Jei šis paveikslėlis yra dekoratyvinis ir naudojamas kaip funkcinė nuoroda į kitą puslapį, apsvarstykite galimybę pažymėti paveikslėlį kaip dekoratyvinį arba nulinį - aplink esančio nuorodos teksto turėtų pakakti.
Alt tekstas: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Paveikslėlio nuorodoje yra ir alt tekstas, ir aplink esantis nuorodos tekstas. Jei šis paveikslėlis yra dekoratyvinis ir naudojamas kaip funkcinė nuoroda į kitą puslapį, apsvarstykite galimybę pažymėti paveikslėlį kaip dekoratyvinį arba nulinį - aplink esančio nuorodos teksto turėtų pakakti.
Alt tekstas: %(altText)
Etiketė su nuoroda: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Vaizdas pažymėtas kaip dekoratyvinis, todėl pagalbinės technologijos jį ignoruos.
Nors buvo pateikta antrašė, daugeliu atvejų paveikslėlis taip pat turėtų turėti alt tekstą. - Alt tekste turėtų būti glaustai aprašyta, kas yra paveikslėlyje.
- Paprastai antraštėje turėtų būti pateiktas kontekstas, kad paveikslėlis būtų susietas su aplinkiniu turiniu, arba atkreiptas dėmesys į tam tikrą informaciją.
Sužinokite daugiau: alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Nenaudokite tų pačių žodžių ir alt, ir antraštės tekstui. Ekrano skaitytuvai informaciją skelbs du kartus.- Alt tekste turėtų būti glaustai aprašyta, kas yra paveikslėlyje.
- Tapatybėje paprastai turėtų būti pateiktas kontekstas, kad paveikslėlis būtų susietas su aplinkiniu turiniu arba atkreiptas dėmesys į tam tikrą informaciją.
Sužinokite daugiau: alt versus figcaption.
Alt tekstas: %(altText)',
IMAGE_DECORATIVE: 'Vaizdas pažymėtas kaip dekoratyvinis, todėl pagalbinės technologijos jį ignoruos. Jei vaizdas perteikia istoriją, nuotaiką ar svarbią informaciją - būtinai pridėkite alt tekstą.',
@@ -175,14 +192,15 @@ var lt = {
IMAGE_PASS: 'Alt tekstas: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Nėra paveikslėlio mygtuko alt teksto. Pridėkite alt tekstą ir pateikite prieinamą pavadinimą. Pavyzdžiui: Ieškoti arba Pateikti.',
LABELS_INPUT_RESET_MESSAGE: 'Atstatymo mygtukai turėtų būti nenaudojami, nebent jų specialiai reikia, nes juos lengva įjungti per klaidą.
Tipas! Sužinokite, kodėl Mygtukai "Reset" ir "Cancel" kelia patogumo problemų.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Įvestis turi prieinamą pavadinimą, tačiau užtikrinkite, kad būtų matoma ir etiketė.
Šio įvesties įvesties prieinamas pavadinimas yra: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Įvestis turi prieinamą pavadinimą, tačiau užtikrinkite, kad būtų matoma ir etiketė.
Įvesties žymė: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Su šia įvestimi nėra susieta jokia etiketė. Pridėkite for
atributą prie etiketės, atitinkančios šios įvesties id
.
Šios įvesties ID yra: id="%(id)".',
LABELS_MISSING_LABEL_MESSAGE: 'Su šia įvestimi nėra susieta jokia etiketė. Pridėkite id
prie šios įvesties ir pridėkite atitinkamą for
atributą prie etiketės.',
EMBED_VIDEO: 'Užtikrinkite, kad visuose vaizdo įrašuose būtų uždaros antraštės. Visų garso ir vaizdo įrašų titrų pateikimas yra privalomas A lygio reikalavimas. Titrai padeda kurtiesiems ir neprigirdintiesiems.',
EMBED_AUDIO: 'Užtikrinkite, kad pateiktumėte visų podkastų transkripciją. Garso turinio transkripcijų pateikimas yra privalomas A lygio reikalavimas. Transkripcijos padeda kurtiesiems ir neprigirdintiesiems, tačiau jos gali būti naudingos visiems. Apsvarstykite galimybę transkripciją pateikti žemiau arba akordeono skydelyje.',
EMBED_DATA_VIZ: 'Tokie duomenų vizualizavimo valdikliai dažnai kelia problemų žmonėms, kurie naudojasi klaviatūra arba ekrano skaitytuvu, ir gali kelti didelių sunkumų silpnaregiams arba spalvinio aklumo žmonėms. Rekomenduojama tą pačią informaciją pateikti alternatyviu (teksto arba lentelės) formatu po valdikliu.
Sužinokite daugiau apie sudėtingus vaizdus.',
- EMBED_MISSING_TITLE: 'Įterptajam turiniui reikalingas prieinamas pavadinimas, apibūdinantis jo turinį. Elemente iframe
nurodykite unikalų title
arba aria-label
atributą. Sužinokite daugiau apie iRėmus..',
+ EMBED_MISSING_TITLE: 'Įterptajam turiniui reikalingas prieinamas pavadinimas, apibūdinantis jo turinį. Elemente iframe
nurodykite unikalų title
arba aria-label
atributą. Sužinokite daugiau apie iRėmus..',
EMBED_GENERAL_WARNING: 'Nepavyksta patikrinti įterpto turinio. Įsitikinkite, kad paveikslėliuose yra "alt" tekstas, vaizdo įrašuose - antraštės, tekstas pakankamai kontrastingas, o interaktyvūs komponentai yra prieinami klaviatūra.',
+ EMBED_UNFOCUSABLE: '<iframe>
su elementais, į kuriuos negalima sutelkti dėmesio, neturėtų turėti tabindex="-1"
. Įterptasis turinys nebus pasiekiamas naudojant klaviatūrą.',
QA_BAD_LINK: 'Rasta bloga nuoroda. Atrodo, kad nuoroda nukreipia į kūrimo aplinką.
Ši nuoroda nukreipia į:
%(el)',
QA_BAD_ITALICS: 'Paryškinimo ir kursyvo žymės turi semantinę reikšmę ir neturėtų būti naudojamos ne ištisoms pastraipoms paryškinti. Paryškintas tekstas turėtų būti naudojamas stipriai pabrėžti žodį ar frazę. Kursyvu reikėtų paryškinti tikruosius vardus (t. y. knygų ir straipsnių pavadinimus), svetimžodžius, kabutes. Ilgos citatos turėtų būti formatuojamos kaip blokinė citata.',
QA_PDF: 'Nepavyksta patikrinti PDF failų prieinamumo. PDF yra laikomi žiniatinklio turiniu, todėl jie taip pat turi būti prieinami. PDF dažnai kyla problemų žmonėms, kurie naudojasi ekrano skaitytuvais (trūksta struktūrinių žymų arba formos laukų etikečių), ir silpnaregiams (padidinus tekstą, jis neatsinaujina). - Jei tai yra forma, apsvarstykite galimybę kaip alternatyvą naudoti prieinamą HTML formą.
- Jei tai yra dokumentas, apsvarstykite galimybę jį konvertuoti į tinklalapį.
Kitu atveju patikrinkite PDF prieinamumą programoje "Acrobat DC".',
diff --git a/assets/dist/js/lang/lt.umd.js b/assets/dist/js/lang/lt.umd.js
index 5f4dd2d..1071578 100644
--- a/assets/dist/js/lang/lt.umd.js
+++ b/assets/dist/js/lang/lt.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: 'Antraštė nėra matoma; ji gali būti paslėpta arba akordeono ar skirtuko komponento viduje.',
SKIP_TO_PAGE_ISSUES: 'Pereiti prie puslapio klausimų',
CONSOLE_ERROR_MESSAGE: 'Atsiprašome, bet šiame puslapyje yra problema su prieinamumo tikrintuvu. Ar galite apie tai pranešti per šią formą arba GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Rodyti %(dismissCount) atmestų įspėjimų',
DISMISS: 'Atmesti',
DISMISSED: 'Atmesti įspėjimai',
DISMISS_REMINDER: 'Atkreipkite dėmesį, kad įspėjimai atmetami tik laikinai. Išvalius naršyklės istoriją ir slapukus, bus atkurti visi anksčiau atmesti įspėjimai visuose puslapiuose.',
+
+ // Export
+ DATE: 'Data',
+ PAGE_TITLE: 'Puslapio pavadinimas',
+ RESULTS: 'Rezultatai',
+ EXPORT_RESULTS: 'Eksportuoti rezultatus',
+ GENERATED: 'Rezultatai sugeneruoti su %(tool).',
+ PREVIEW: 'Peržiūra',
+ ELEMENT: 'Elementas',
+ PATH: 'Kelias',
+
+ // Colour filters
COLOUR_FILTER: 'Spalvų filtras',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopija',
@@ -66,6 +80,8 @@
BLUE_EYE: 'Mėlyna aklina.',
MONO_EYE: 'Raudonas, mėlynas ir žalias aklasis.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Spalviniai filtrai neveikia didelio kontrasto režimu.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'vaizdas',
'grafinis',
@@ -149,6 +165,7 @@
HEADING_MISSING_ONE: 'Trūksta 1 antraštės. 1 antraštė turėtų būti pagrindinės turinio srities pradžia ir yra pagrindinė antraštė, apibūdinanti bendrą puslapio tikslą. Sužinokite daugiau apie Pavadinimų struktūrą.',
HEADING_EMPTY_WITH_IMAGE: 'Antraštėje nėra teksto, bet yra paveikslėlis. Jei tai nėra antraštė, pakeiskite jos formatą iš Heading %(level) į Normal arba Paragraph. Kitu atveju pridėkite paveikslėlio alt tekstą, jei jis nėra dekoratyvinis.',
PANEL_HEADING_MISSING_ONE: 'Trūksta 1 antraštės!',
+ PANEL_NO_HEADINGS: 'Antraščių nerasta.',
LINK_EMPTY: 'Pašalinkite tuščias nuorodas be jokio teksto.',
LINK_EMPTY_LINK_NO_LABEL: 'Nuorodoje nėra įskaitomo teksto, kuris būtų matomas ekrano skaitytuvams ir kitoms pagalbinėms technologijoms. Ištaisyti: Pridėkite glaustą tekstą, kuriame būtų aprašyta, kur nuoroda veda. Jeigu tai yra paveiksliuko arba SVG nuoroda, greičiausiai trūksta aprašomosios etiketės. Jeigu manote, kad ši nuoroda yra klaida dėl kopijavimo ir įkėlimo klaidos, apsvarstykite galimybę ją ištrinti. .',
LINK_LABEL: 'Etiketė su nuoroda: %(sanitizedText)',
@@ -162,18 +179,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Paveikslas naudojamas kaip nuoroda su aplinkiniu tekstu, nors atributas alt turėtų būti pažymėtas kaip dekoratyvinis arba nulinis.',
MISSING_ALT_LINK_MESSAGE: 'Paveiksliukas naudojamas kaip nuoroda, bet nėra teksto alt! Užtikrinkite, kad alt tekste būtų aprašyta, kur nukreipia nuoroda.',
MISSING_ALT_MESSAGE: 'Trūksta alt teksto! Jei paveikslėlis perteikia istoriją, nuotaiką ar svarbią informaciją, būtinai jį aprašykite.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Rastas failo plėtinys alt tekste. Užtikrinkite, kad alt tekstas apibūdintų nuorodos paskirties vietą, o ne pažodinį paveikslėlio aprašymą. Pašalinti: %(error).
Alt tekstas: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Rastas failo plėtinys alt tekste. Užtikrinkite, kad alt tekstas apibūdintų nuorodos paskirties vietą, o ne pažodinį paveikslėlio aprašymą. Pašalinti: %(error).
Alt tekstas: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Rastas ne aprašomasis arba pakaitinis alt tekstas susietame paveikslėlyje. Užtikrinkite, kad alt tekstas apibūdintų nuorodos paskirties vietą, o ne pažodinį paveikslėlio aprašymą. Pakeiskite šį alt tekstą: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Pagalbinėse technologijose jau nurodoma, kad tai yra paveikslėlis, todėl "%(error)" gali būti nereikalingas. Užtikrinkite, kad alt tekstas apibūdintų nuorodos paskirties vietą, o ne pažodinį paveikslėlio aprašymą.
Alt tekstas: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Rastas failo plėtinys alt tekste. Jei vaizdas perteikia istoriją, nuotaiką ar svarbią informaciją, būtinai aprašykite vaizdą. Pašalinti: %(error).
Alt tekstas: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Rastas failo plėtinys alt tekste. Jei vaizdas perteikia istoriją, nuotaiką ar svarbią informaciją, būtinai aprašykite vaizdą. Pašalinti: %(error).
Alt tekstas: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Rastas neaprašytas arba pakaitinis alt tekstas. Pakeiskite šį alt tekstą į prasmingesnį: %(altText)',
ALT_HAS_SUS_WORD: 'Pagalbinėse technologijose jau nurodoma, kad tai yra paveikslėlis, todėl "%(error)" gali būti nereikalingas.
Alt tekstas: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Nuoroda aplink paveikslėlį turi aria-hidden="true"
, bet ją vis tiek galima fokusuoti klaviatūra. Jei ketinate paslėpti nereikalingą arba besidubliuojančią nuorodą, taip pat pridėkite tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Nuoroda turi aria-hidden="true"
, bet vis dar gali būti fokusuojama naudojant klaviatūrą. Jei ketinate paslėpti nereikalingą arba pasikartojantį nuorodą, taip pat pridėkite tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Nuorodoje esantis paveikslėlis pažymėtas kaip dekoratyvinis, o nuorodos teksto nėra. Prie paveikslėlio pridėkite alt tekstą, kuriame būtų aprašyta nuorodos paskirtis.',
LINK_IMAGE_HAS_TEXT: 'Paveikslas pažymėtas kaip dekoratyvinis, nors nuorodoje aplinkinis tekstas naudojamas kaip aprašomoji etiketė.',
LINK_IMAGE_LONG_ALT: 'Susieto paveikslėlio Alt teksto aprašymas yra per ilgas. Susietų paveikslėlių alt tekstas turėtų apibūdinti, kur nukreipia nuoroda, o ne pažodinis paveikslėlio aprašymas. Svarstykite galimybę kaip alt tekstą naudoti puslapio, į kurį nukreipia nuoroda, pavadinimą.
Alt tekstas (%(altLength) ženklai): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Paveikslėlio nuorodoje yra teksto alt. Ar alt tekste aprašoma, kur nukreipia nuoroda? Apsvarstykite galimybę kaip alt tekstą naudoti puslapio, į kurį nukreipia nuoroda, pavadinimą.
Alt tekstas: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Paveikslėlio nuorodoje yra ir alt tekstas, ir aplink esantis nuorodos tekstas. Jei šis paveikslėlis yra dekoratyvinis ir naudojamas kaip funkcinė nuoroda į kitą puslapį, apsvarstykite galimybę pažymėti paveikslėlį kaip dekoratyvinį arba nulinį - aplink esančio nuorodos teksto turėtų pakakti.
Alt tekstas: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Paveikslėlio nuorodoje yra ir alt tekstas, ir aplink esantis nuorodos tekstas. Jei šis paveikslėlis yra dekoratyvinis ir naudojamas kaip funkcinė nuoroda į kitą puslapį, apsvarstykite galimybę pažymėti paveikslėlį kaip dekoratyvinį arba nulinį - aplink esančio nuorodos teksto turėtų pakakti.
Alt tekstas: %(altText)
Etiketė su nuoroda: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Vaizdas pažymėtas kaip dekoratyvinis, todėl pagalbinės technologijos jį ignoruos.
Nors buvo pateikta antrašė, daugeliu atvejų paveikslėlis taip pat turėtų turėti alt tekstą. - Alt tekste turėtų būti glaustai aprašyta, kas yra paveikslėlyje.
- Paprastai antraštėje turėtų būti pateiktas kontekstas, kad paveikslėlis būtų susietas su aplinkiniu turiniu, arba atkreiptas dėmesys į tam tikrą informaciją.
Sužinokite daugiau: alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Nenaudokite tų pačių žodžių ir alt, ir antraštės tekstui. Ekrano skaitytuvai informaciją skelbs du kartus.- Alt tekste turėtų būti glaustai aprašyta, kas yra paveikslėlyje.
- Tapatybėje paprastai turėtų būti pateiktas kontekstas, kad paveikslėlis būtų susietas su aplinkiniu turiniu arba atkreiptas dėmesys į tam tikrą informaciją.
Sužinokite daugiau: alt versus figcaption.
Alt tekstas: %(altText)',
IMAGE_DECORATIVE: 'Vaizdas pažymėtas kaip dekoratyvinis, todėl pagalbinės technologijos jį ignoruos. Jei vaizdas perteikia istoriją, nuotaiką ar svarbią informaciją - būtinai pridėkite alt tekstą.',
@@ -181,14 +198,15 @@
IMAGE_PASS: 'Alt tekstas: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Nėra paveikslėlio mygtuko alt teksto. Pridėkite alt tekstą ir pateikite prieinamą pavadinimą. Pavyzdžiui: Ieškoti arba Pateikti.',
LABELS_INPUT_RESET_MESSAGE: 'Atstatymo mygtukai turėtų būti nenaudojami, nebent jų specialiai reikia, nes juos lengva įjungti per klaidą.
Tipas! Sužinokite, kodėl Mygtukai "Reset" ir "Cancel" kelia patogumo problemų.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Įvestis turi prieinamą pavadinimą, tačiau užtikrinkite, kad būtų matoma ir etiketė.
Šio įvesties įvesties prieinamas pavadinimas yra: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Įvestis turi prieinamą pavadinimą, tačiau užtikrinkite, kad būtų matoma ir etiketė.
Įvesties žymė: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Su šia įvestimi nėra susieta jokia etiketė. Pridėkite for
atributą prie etiketės, atitinkančios šios įvesties id
.
Šios įvesties ID yra: id="%(id)".',
LABELS_MISSING_LABEL_MESSAGE: 'Su šia įvestimi nėra susieta jokia etiketė. Pridėkite id
prie šios įvesties ir pridėkite atitinkamą for
atributą prie etiketės.',
EMBED_VIDEO: 'Užtikrinkite, kad visuose vaizdo įrašuose būtų uždaros antraštės. Visų garso ir vaizdo įrašų titrų pateikimas yra privalomas A lygio reikalavimas. Titrai padeda kurtiesiems ir neprigirdintiesiems.',
EMBED_AUDIO: 'Užtikrinkite, kad pateiktumėte visų podkastų transkripciją. Garso turinio transkripcijų pateikimas yra privalomas A lygio reikalavimas. Transkripcijos padeda kurtiesiems ir neprigirdintiesiems, tačiau jos gali būti naudingos visiems. Apsvarstykite galimybę transkripciją pateikti žemiau arba akordeono skydelyje.',
EMBED_DATA_VIZ: 'Tokie duomenų vizualizavimo valdikliai dažnai kelia problemų žmonėms, kurie naudojasi klaviatūra arba ekrano skaitytuvu, ir gali kelti didelių sunkumų silpnaregiams arba spalvinio aklumo žmonėms. Rekomenduojama tą pačią informaciją pateikti alternatyviu (teksto arba lentelės) formatu po valdikliu.
Sužinokite daugiau apie sudėtingus vaizdus.',
- EMBED_MISSING_TITLE: 'Įterptajam turiniui reikalingas prieinamas pavadinimas, apibūdinantis jo turinį. Elemente iframe
nurodykite unikalų title
arba aria-label
atributą. Sužinokite daugiau apie iRėmus..',
+ EMBED_MISSING_TITLE: 'Įterptajam turiniui reikalingas prieinamas pavadinimas, apibūdinantis jo turinį. Elemente iframe
nurodykite unikalų title
arba aria-label
atributą. Sužinokite daugiau apie iRėmus..',
EMBED_GENERAL_WARNING: 'Nepavyksta patikrinti įterpto turinio. Įsitikinkite, kad paveikslėliuose yra "alt" tekstas, vaizdo įrašuose - antraštės, tekstas pakankamai kontrastingas, o interaktyvūs komponentai yra prieinami klaviatūra.',
+ EMBED_UNFOCUSABLE: '<iframe>
su elementais, į kuriuos negalima sutelkti dėmesio, neturėtų turėti tabindex="-1"
. Įterptasis turinys nebus pasiekiamas naudojant klaviatūrą.',
QA_BAD_LINK: 'Rasta bloga nuoroda. Atrodo, kad nuoroda nukreipia į kūrimo aplinką.
Ši nuoroda nukreipia į:
%(el)',
QA_BAD_ITALICS: 'Paryškinimo ir kursyvo žymės turi semantinę reikšmę ir neturėtų būti naudojamos ne ištisoms pastraipoms paryškinti. Paryškintas tekstas turėtų būti naudojamas stipriai pabrėžti žodį ar frazę. Kursyvu reikėtų paryškinti tikruosius vardus (t. y. knygų ir straipsnių pavadinimus), svetimžodžius, kabutes. Ilgos citatos turėtų būti formatuojamos kaip blokinė citata.',
QA_PDF: 'Nepavyksta patikrinti PDF failų prieinamumo. PDF yra laikomi žiniatinklio turiniu, todėl jie taip pat turi būti prieinami. PDF dažnai kyla problemų žmonėms, kurie naudojasi ekrano skaitytuvais (trūksta struktūrinių žymų arba formos laukų etikečių), ir silpnaregiams (padidinus tekstą, jis neatsinaujina). - Jei tai yra forma, apsvarstykite galimybę kaip alternatyvą naudoti prieinamą HTML formą.
- Jei tai yra dokumentas, apsvarstykite galimybę jį konvertuoti į tinklalapį.
Kitu atveju patikrinkite PDF prieinamumą programoje "Acrobat DC".',
diff --git a/assets/dist/js/lang/lv.js b/assets/dist/js/lang/lv.js
index 7b4b29b..834ed12 100644
--- a/assets/dist/js/lang/lv.js
+++ b/assets/dist/js/lang/lv.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var lv = {
HEADING_NOT_VISIBLE_ALERT: 'Virsraksts nav redzams; tas var būt paslēpts vai akordeona vai cilnes komponenta iekšpusē.',
SKIP_TO_PAGE_ISSUES: 'Pāriet uz lapas jautājumiem',
CONSOLE_ERROR_MESSAGE: 'Atvainojiet, bet šajā lapā ir problēma ar pieejamības pārbaudītāju. Vai varat, lūdzu, ziņot par to, izmantojot šo formu vai GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Rādīt %(dismissCount) noraidīto brīdinājumu skaitu',
DISMISS: 'Atbrīvot',
DISMISSED: 'Noraidītie brīdinājumi',
DISMISS_REMINDER: 'Lūdzu, ņemiet vērā, ka brīdinājumi tiek atcelti tikai uz laiku. Iztīrot pārlūkprogrammas vēsturi un sīkfailus, tiks atjaunoti visi iepriekš noraidītie brīdinājumi visās lapās.',
+
+ // Export
+ DATE: 'Datums',
+ PAGE_TITLE: 'Lapas nosaukums',
+ RESULTS: 'Rezultāti',
+ EXPORT_RESULTS: 'Eksportēt rezultātus',
+ GENERATED: 'Rezultāti ģenerēti ar %(tool).',
+ PREVIEW: 'Priekšskatījums',
+ ELEMENT: 'Elements',
+ PATH: 'Ceļš',
+
+ // Colour filters
COLOUR_FILTER: 'Krāsu filtrs',
PROTANOPIA: 'Protanopija',
DEUTERANOPIA: 'Deuteranopija',
@@ -60,6 +74,8 @@ var lv = {
BLUE_EYE: 'Zilā žalūzija.',
MONO_EYE: 'Sarkans, zils un zaļš akls.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Krāsu filtri nedarbojas augsta kontrasta režīmā.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'attēls',
'grafikas',
@@ -139,6 +155,7 @@ var lv = {
HEADING_MISSING_ONE: 'Trūkst 1. virsraksta. 1. virsrakstam jābūt galvenā satura laukuma sākumam, un tas ir galvenais virsraksts, kas apraksta lapas vispārējo mērķi. Uzziniet vairāk par Galveno struktūru.',
HEADING_EMPTY_WITH_IMAGE: 'Virsrakstā nav teksta, bet ir attēls. Ja tas nav virsraksts, mainiet tā formātu no Virsraksts %(level) uz Normāls vai Apakšsadaļa. Pretējā gadījumā pievienojiet attēlam alt tekstu, ja tas nav dekoratīvs.',
PANEL_HEADING_MISSING_ONE: 'Trūkst 1. pozīcijas!',
+ PANEL_NO_HEADINGS: 'Virsraksti nav atrasti.',
LINK_EMPTY: 'Dzēst tukšas saites bez teksta.',
LINK_EMPTY_LINK_NO_LABEL: 'Saitei nav atpazīstama teksta, kas būtu redzams ekrānlasītājiem un citām palīgtehnoloģijām. Lai labotu: Pievienojiet īsu tekstu, kas apraksta, kur saite ved. Ja tā ir ikonas saite vai SVG,, tai, visticamāk, trūkst aprakstoša marķējuma. Ja domājat, ka šī saite ir kļūda, kas radusies kopēšanas/ielīmēšanas kļūdas dēļ, apsveriet tās dzēšanu. .',
LINK_LABEL: 'Saites etiķete: %(sanitizedText)',
@@ -152,18 +169,18 @@ var lv = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Attēls tiek izmantots kā saite ar apkārtējo tekstu, lai gan atribūtam alt jābūt atzīmētam kā dekoratīvam vai nulles atribūtam.',
MISSING_ALT_LINK_MESSAGE: 'Attēls tiek izmantots kā saite, bet tam trūkst teksta! Lūdzu, pārliecinieties, ka alt tekstā ir aprakstīts, uz kurieni jūs aizved saite.',
MISSING_ALT_MESSAGE: 'Trūkst alt teksta! Ja attēls ir stāsts, noskaņa vai svarīga informācija, noteikti aprakstiet attēlu.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Atrasts faila paplašinājums alt tekstā. Pārliecinieties, ka alt teksts apraksta saites galamērķi, nevis burtisku attēla aprakstu. Noņemt: %(error).
Alt teksts: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Atrasts faila paplašinājums alt tekstā. Pārliecinieties, ka alt teksts apraksta saites galamērķi, nevis burtisku attēla aprakstu. Noņemt: %(error).
Alt teksts: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Atrasts nenoteikts vai aizvietotājs alt teksts saistītajā attēlā. Pārliecinieties, ka alt teksts apraksta saites galamērķi, nevis burtisku attēla aprakstu. Aizstājiet šādu alt tekstu: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Palīgtehnoloģijas jau norāda, ka tas ir attēls, tāpēc "%(error)" var būt lieks. Pārliecinieties, ka alt teksts apraksta saites galamērķi, nevis burtisku attēla aprakstu.
Alt teksts: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Atrasts faila paplašinājums alt tekstā. Ja attēls ir stāsts, noskaņa vai svarīga informācija, noteikti aprakstiet attēlu. Noņemt: %(error).
Alt teksts: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Atrasts faila paplašinājums alt tekstā. Ja attēls ir stāsts, noskaņa vai svarīga informācija, noteikti aprakstiet attēlu. Noņemt: %(error).
Alt teksts: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Atrasts nenoteikts vai aizvietotājs alt teksts. Aizstājiet šādu alt tekstu ar jēgpilnāku: %(altText)',
ALT_HAS_SUS_WORD: 'Palīgtehnoloģijas jau norāda, ka tas ir attēls, tāpēc "%(error)" var būt lieks.
Altteksts: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Saitei ap attēlu ir aria-hidden="true"
, bet tā joprojām ir fokusējama no tastatūras. Ja vēlaties paslēpt lieku vai dublējošu saiti, pievienojiet arī tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Saitē ir aria-hidden="true"
, bet tā joprojām ir pieejama ar tastatūru. Ja vēlaties paslēpt atkārtotu vai dublētu saiti, pievienojiet arī tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Attēls saitē ir atzīmēts kā dekoratīvs, un saites teksta nav. Lūdzu, pievienojiet attēlam alt tekstu, kas apraksta saites galamērķi.',
LINK_IMAGE_HAS_TEXT: 'Attēls ir atzīmēts kā dekoratīvs, lai gan saite izmanto apkārtējo tekstu kā aprakstošu etiķeti.',
LINK_IMAGE_LONG_ALT: 'Alt teksta apraksts saistītajam attēlam ir pārāk garš. Saistīto attēlu alt tekstam ir jāapraksta, uz kurieni ved saite, nevis burtisks attēla apraksts. Vēlams kā alttekstu izmantot tās lapas virsrakstu, uz kuru ir saite.
Altteksts (%(altLength) rakstzīmes): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Attēla saitē ir ietverts alt teksts. Vai alt tekstā ir aprakstīts, uz kurieni jūs aizved saite? Apsveriet iespēju kā alt tekstu izmantot tās lapas nosaukumu, uz kuru ir saite.
Altteksts: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Attēla saitē ir gan alt teksts, gan apkārt esošais saites teksts. Ja šis attēls ir dekoratīvs un tiek izmantots kā funkcionāla saite uz citu lapu, apsveriet iespēju atzīmēt attēlu kā dekoratīvu vai nulles tekstu - pietiek ar apkārtējo saites tekstu.
Alt teksts: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Attēla saitē ir gan alt teksts, gan apkārt esošais saites teksts. Ja šis attēls ir dekoratīvs un tiek izmantots kā funkcionāla saite uz citu lapu, apsveriet iespēju atzīmēt attēlu kā dekoratīvu vai nulles tekstu - pietiek ar apkārtējo saites tekstu.
Alt teksts: %(altText)
Saites etiķete: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Attēls ir atzīmēts kā dekoratīvs, un palīgtehnoloģijas to ignorēs.
Lai gan ir sniegts uzraksts, vairumā gadījumu attēlam ir jābūt arī alt tekstam. - Alttekstam būtu jāsniedz īss attēlā redzamā apraksts.
- Parakstā parasti būtu jāsniedz konteksts, lai sasaistītu attēlu ar apkārtējo saturu vai pievērstu uzmanību kādai konkrētai informācijai.
Uzziniet vairāk: alt versus figcaption..',
IMAGE_FIGURE_DUPLICATE_ALT: 'Neizmantojiet tieši tos pašus vārdus gan alt, gan virsraksta tekstā. Ekrānlasītāji informāciju paziņos divreiz.- Alt tekstā būtu īsi jāapraksta, kas ir attēlā.
- Papildinājumā parasti būtu jāsniedz konteksts, lai attēls būtu saistīts ar apkārtējo saturu, vai jāpievērš uzmanība kādai konkrētai informācijai.
Uzziniet vairāk: alt versus figcaption.
Altteksts: %(altText)',
IMAGE_DECORATIVE: 'Attēls ir atzīmēts kā dekoratīvs, un palīgtehnoloģijas to ignorēs. Ja attēls atspoguļo stāstu, noskaņu vai svarīgu informāciju, noteikti pievienojiet alt tekstu.',
@@ -171,14 +188,15 @@ var lv = {
IMAGE_PASS: 'Altteksts: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Attēla pogai trūkst alt teksta. Lūdzu, pievienojiet alt tekstu, lai nodrošinātu pieejamu nosaukumu. Piemēram: Piemēram, Meklēšana vai Nosūtīt.',
LABELS_INPUT_RESET_MESSAGE: 'Atiestatīšanas pogas nevajadzētu izmantot, ja vien tas nav īpaši nepieciešams, jo tās var viegli aktivizēt kļūdas pēc.
Tip! Uzziniet, kāpēc Pārtraukšanas un atcelšanas pogas rada lietojamības problēmas.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Ievadei ir pieejams nosaukums, tomēr pārliecinieties, ka ir redzams arī marķējums.
Šī ievades pieejamais nosaukums ir: %(sanitizedText).',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Ievadei ir pieejams nosaukums, tomēr pārliecinieties, ka ir redzams arī marķējums.
Ievades etiķete: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Šim ievadam nav piesaistīta etiķete. Pievienojiet for
atribūtu etiķetei, kas atbilst šīs ievades id
.
Šīs ievades ID ir: id="%(id)".',
LABELS_MISSING_LABEL_MESSAGE: 'Šim ievadam nav piesaistīta etiķete. Lūdzu, pievienojiet šim ievadam id
un pievienojiet etiķetei atbilstošu atribūtu for
.',
EMBED_VIDEO: 'Lūdzu, pārliecinieties, ka visiem videoklipiem ir slēptie titri. Visu audio un video materiālu titru nodrošināšana ir obligāta A līmeņa prasība. Titri palīdz cilvēkiem, kuri ir nedzirdīgi vai vājdzirdīgi.',
EMBED_AUDIO: 'Lūdzu, nodrošiniet transkriptu visiem podkāstiem. Transkriptu nodrošināšana audio saturam ir obligāta A līmeņa prasība. Transkripcijas palīdz cilvēkiem, kuri ir nedzirdīgi vai vājdzirdīgi, taču tās var būt noderīgas ikvienam. Apsveriet iespēju transkriptu izvietot zem vai akordeona panelī.',
EMBED_DATA_VIZ: 'Šādi datu vizualizācijas logrīki bieži rada problēmas cilvēkiem, kuri navigācijai izmanto tastatūru vai ekrāna lasītāju, un var radīt ievērojamas grūtības cilvēkiem ar vāju redzi vai krāsu aklumu. Ieteicams to pašu informāciju sniegt alternatīvā (teksta vai tabulas) formātā zem logrīka.
Uzziniet vairāk par sarežģītiem attēliem.',
- EMBED_MISSING_TITLE: 'Iegultajam saturam ir nepieciešams pieejams nosaukums, kas raksturo tā saturu. Lūdzu, norādiet unikālu title
vai aria-label
atribūtu elementā iframe
. Uzziniet vairāk par iFrame..',
+ EMBED_MISSING_TITLE: 'Iegultajam saturam ir nepieciešams pieejams nosaukums, kas raksturo tā saturu. Lūdzu, norādiet unikālu title
vai aria-label
atribūtu elementā iframe
. Uzziniet vairāk par iFrame..',
EMBED_GENERAL_WARNING: 'Nevar pārbaudīt iegulto saturu. Lūdzu, pārliecinieties, ka attēliem ir alt teksts, videoklipiem ir uzraksti, tekstam ir pietiekams kontrasts un interaktīvie komponenti ir pieejami no tastatūras..',
+ EMBED_UNFOCUSABLE: '<iframe>
ar neuzmanāmiem elementiem nevajadzētu būt tabindex="-1"
. Iegultais saturs nebūs pieejams ar tastatūru.',
QA_BAD_LINK: 'Atrasta slikta saite. Šķiet, ka saite norāda uz izstrādes vidi.
Šī saite norāda uz:
%(el)',
QA_BAD_ITALICS: 'Trešraksta un slīpraksta tagiem ir semantiska nozīme, un tos nevajadzētu izmantot, lai izceltu veselas rindkopas. Teksts treknrakstā jāizmanto, lai uzsvērtu kādu vārdu vai frāzi. Kursīvs jāizmanto, lai izceltu īpašvārdus (piemēram, grāmatu un rakstu nosaukumus), svešvārdus, citātus. Garie citāti jānoformē kā bloka citāts.',
QA_PDF: 'Nevar pārbaudīt PDF failu pieejamību. PDF tiek uzskatīti par tīmekļa saturu, un arī tiem jābūt pieejamiem. PDF formātos bieži ir problēmas cilvēkiem, kas izmanto ekrānlasītājus (trūkst strukturālo tagu vai veidlapu lauku marķējumu), un cilvēkiem ar vāju redzi (teksts nepalielinās, kad tiek palielināts). - Ja tā ir veidlapa, apsveriet iespēju kā alternatīvu izmantot pieejamu HTML veidlapu.
- Ja tas ir dokuments, apsveriet iespēju to pārveidot par tīmekļa lapu.
Ja tas ir dokuments, apsveriet iespēju to pārveidot par tīmekļa vietni.Tādā gadījumā pārbaudiet PDF pieejamību programmā Acrobat DC..',
diff --git a/assets/dist/js/lang/lv.umd.js b/assets/dist/js/lang/lv.umd.js
index e347c7d..4e47ece 100644
--- a/assets/dist/js/lang/lv.umd.js
+++ b/assets/dist/js/lang/lv.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: 'Virsraksts nav redzams; tas var būt paslēpts vai akordeona vai cilnes komponenta iekšpusē.',
SKIP_TO_PAGE_ISSUES: 'Pāriet uz lapas jautājumiem',
CONSOLE_ERROR_MESSAGE: 'Atvainojiet, bet šajā lapā ir problēma ar pieejamības pārbaudītāju. Vai varat, lūdzu, ziņot par to, izmantojot šo formu vai GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Rādīt %(dismissCount) noraidīto brīdinājumu skaitu',
DISMISS: 'Atbrīvot',
DISMISSED: 'Noraidītie brīdinājumi',
DISMISS_REMINDER: 'Lūdzu, ņemiet vērā, ka brīdinājumi tiek atcelti tikai uz laiku. Iztīrot pārlūkprogrammas vēsturi un sīkfailus, tiks atjaunoti visi iepriekš noraidītie brīdinājumi visās lapās.',
+
+ // Export
+ DATE: 'Datums',
+ PAGE_TITLE: 'Lapas nosaukums',
+ RESULTS: 'Rezultāti',
+ EXPORT_RESULTS: 'Eksportēt rezultātus',
+ GENERATED: 'Rezultāti ģenerēti ar %(tool).',
+ PREVIEW: 'Priekšskatījums',
+ ELEMENT: 'Elements',
+ PATH: 'Ceļš',
+
+ // Colour filters
COLOUR_FILTER: 'Krāsu filtrs',
PROTANOPIA: 'Protanopija',
DEUTERANOPIA: 'Deuteranopija',
@@ -66,6 +80,8 @@
BLUE_EYE: 'Zilā žalūzija.',
MONO_EYE: 'Sarkans, zils un zaļš akls.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Krāsu filtri nedarbojas augsta kontrasta režīmā.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'attēls',
'grafikas',
@@ -145,6 +161,7 @@
HEADING_MISSING_ONE: 'Trūkst 1. virsraksta. 1. virsrakstam jābūt galvenā satura laukuma sākumam, un tas ir galvenais virsraksts, kas apraksta lapas vispārējo mērķi. Uzziniet vairāk par Galveno struktūru.',
HEADING_EMPTY_WITH_IMAGE: 'Virsrakstā nav teksta, bet ir attēls. Ja tas nav virsraksts, mainiet tā formātu no Virsraksts %(level) uz Normāls vai Apakšsadaļa. Pretējā gadījumā pievienojiet attēlam alt tekstu, ja tas nav dekoratīvs.',
PANEL_HEADING_MISSING_ONE: 'Trūkst 1. pozīcijas!',
+ PANEL_NO_HEADINGS: 'Virsraksti nav atrasti.',
LINK_EMPTY: 'Dzēst tukšas saites bez teksta.',
LINK_EMPTY_LINK_NO_LABEL: 'Saitei nav atpazīstama teksta, kas būtu redzams ekrānlasītājiem un citām palīgtehnoloģijām. Lai labotu: Pievienojiet īsu tekstu, kas apraksta, kur saite ved. Ja tā ir ikonas saite vai SVG,, tai, visticamāk, trūkst aprakstoša marķējuma. Ja domājat, ka šī saite ir kļūda, kas radusies kopēšanas/ielīmēšanas kļūdas dēļ, apsveriet tās dzēšanu. .',
LINK_LABEL: 'Saites etiķete: %(sanitizedText)',
@@ -158,18 +175,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Attēls tiek izmantots kā saite ar apkārtējo tekstu, lai gan atribūtam alt jābūt atzīmētam kā dekoratīvam vai nulles atribūtam.',
MISSING_ALT_LINK_MESSAGE: 'Attēls tiek izmantots kā saite, bet tam trūkst teksta! Lūdzu, pārliecinieties, ka alt tekstā ir aprakstīts, uz kurieni jūs aizved saite.',
MISSING_ALT_MESSAGE: 'Trūkst alt teksta! Ja attēls ir stāsts, noskaņa vai svarīga informācija, noteikti aprakstiet attēlu.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Atrasts faila paplašinājums alt tekstā. Pārliecinieties, ka alt teksts apraksta saites galamērķi, nevis burtisku attēla aprakstu. Noņemt: %(error).
Alt teksts: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Atrasts faila paplašinājums alt tekstā. Pārliecinieties, ka alt teksts apraksta saites galamērķi, nevis burtisku attēla aprakstu. Noņemt: %(error).
Alt teksts: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Atrasts nenoteikts vai aizvietotājs alt teksts saistītajā attēlā. Pārliecinieties, ka alt teksts apraksta saites galamērķi, nevis burtisku attēla aprakstu. Aizstājiet šādu alt tekstu: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Palīgtehnoloģijas jau norāda, ka tas ir attēls, tāpēc "%(error)" var būt lieks. Pārliecinieties, ka alt teksts apraksta saites galamērķi, nevis burtisku attēla aprakstu.
Alt teksts: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Atrasts faila paplašinājums alt tekstā. Ja attēls ir stāsts, noskaņa vai svarīga informācija, noteikti aprakstiet attēlu. Noņemt: %(error).
Alt teksts: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Atrasts faila paplašinājums alt tekstā. Ja attēls ir stāsts, noskaņa vai svarīga informācija, noteikti aprakstiet attēlu. Noņemt: %(error).
Alt teksts: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Atrasts nenoteikts vai aizvietotājs alt teksts. Aizstājiet šādu alt tekstu ar jēgpilnāku: %(altText)',
ALT_HAS_SUS_WORD: 'Palīgtehnoloģijas jau norāda, ka tas ir attēls, tāpēc "%(error)" var būt lieks.
Altteksts: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Saitei ap attēlu ir aria-hidden="true"
, bet tā joprojām ir fokusējama no tastatūras. Ja vēlaties paslēpt lieku vai dublējošu saiti, pievienojiet arī tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Saitē ir aria-hidden="true"
, bet tā joprojām ir pieejama ar tastatūru. Ja vēlaties paslēpt atkārtotu vai dublētu saiti, pievienojiet arī tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Attēls saitē ir atzīmēts kā dekoratīvs, un saites teksta nav. Lūdzu, pievienojiet attēlam alt tekstu, kas apraksta saites galamērķi.',
LINK_IMAGE_HAS_TEXT: 'Attēls ir atzīmēts kā dekoratīvs, lai gan saite izmanto apkārtējo tekstu kā aprakstošu etiķeti.',
LINK_IMAGE_LONG_ALT: 'Alt teksta apraksts saistītajam attēlam ir pārāk garš. Saistīto attēlu alt tekstam ir jāapraksta, uz kurieni ved saite, nevis burtisks attēla apraksts. Vēlams kā alttekstu izmantot tās lapas virsrakstu, uz kuru ir saite.
Altteksts (%(altLength) rakstzīmes): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Attēla saitē ir ietverts alt teksts. Vai alt tekstā ir aprakstīts, uz kurieni jūs aizved saite? Apsveriet iespēju kā alt tekstu izmantot tās lapas nosaukumu, uz kuru ir saite.
Altteksts: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Attēla saitē ir gan alt teksts, gan apkārt esošais saites teksts. Ja šis attēls ir dekoratīvs un tiek izmantots kā funkcionāla saite uz citu lapu, apsveriet iespēju atzīmēt attēlu kā dekoratīvu vai nulles tekstu - pietiek ar apkārtējo saites tekstu.
Alt teksts: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Attēla saitē ir gan alt teksts, gan apkārt esošais saites teksts. Ja šis attēls ir dekoratīvs un tiek izmantots kā funkcionāla saite uz citu lapu, apsveriet iespēju atzīmēt attēlu kā dekoratīvu vai nulles tekstu - pietiek ar apkārtējo saites tekstu.
Alt teksts: %(altText)
Saites etiķete: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Attēls ir atzīmēts kā dekoratīvs, un palīgtehnoloģijas to ignorēs.
Lai gan ir sniegts uzraksts, vairumā gadījumu attēlam ir jābūt arī alt tekstam. - Alttekstam būtu jāsniedz īss attēlā redzamā apraksts.
- Parakstā parasti būtu jāsniedz konteksts, lai sasaistītu attēlu ar apkārtējo saturu vai pievērstu uzmanību kādai konkrētai informācijai.
Uzziniet vairāk: alt versus figcaption..',
IMAGE_FIGURE_DUPLICATE_ALT: 'Neizmantojiet tieši tos pašus vārdus gan alt, gan virsraksta tekstā. Ekrānlasītāji informāciju paziņos divreiz.- Alt tekstā būtu īsi jāapraksta, kas ir attēlā.
- Papildinājumā parasti būtu jāsniedz konteksts, lai attēls būtu saistīts ar apkārtējo saturu, vai jāpievērš uzmanība kādai konkrētai informācijai.
Uzziniet vairāk: alt versus figcaption.
Altteksts: %(altText)',
IMAGE_DECORATIVE: 'Attēls ir atzīmēts kā dekoratīvs, un palīgtehnoloģijas to ignorēs. Ja attēls atspoguļo stāstu, noskaņu vai svarīgu informāciju, noteikti pievienojiet alt tekstu.',
@@ -177,14 +194,15 @@
IMAGE_PASS: 'Altteksts: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Attēla pogai trūkst alt teksta. Lūdzu, pievienojiet alt tekstu, lai nodrošinātu pieejamu nosaukumu. Piemēram: Piemēram, Meklēšana vai Nosūtīt.',
LABELS_INPUT_RESET_MESSAGE: 'Atiestatīšanas pogas nevajadzētu izmantot, ja vien tas nav īpaši nepieciešams, jo tās var viegli aktivizēt kļūdas pēc.
Tip! Uzziniet, kāpēc Pārtraukšanas un atcelšanas pogas rada lietojamības problēmas.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Ievadei ir pieejams nosaukums, tomēr pārliecinieties, ka ir redzams arī marķējums.
Šī ievades pieejamais nosaukums ir: %(sanitizedText).',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Ievadei ir pieejams nosaukums, tomēr pārliecinieties, ka ir redzams arī marķējums.
Ievades etiķete: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Šim ievadam nav piesaistīta etiķete. Pievienojiet for
atribūtu etiķetei, kas atbilst šīs ievades id
.
Šīs ievades ID ir: id="%(id)".',
LABELS_MISSING_LABEL_MESSAGE: 'Šim ievadam nav piesaistīta etiķete. Lūdzu, pievienojiet šim ievadam id
un pievienojiet etiķetei atbilstošu atribūtu for
.',
EMBED_VIDEO: 'Lūdzu, pārliecinieties, ka visiem videoklipiem ir slēptie titri. Visu audio un video materiālu titru nodrošināšana ir obligāta A līmeņa prasība. Titri palīdz cilvēkiem, kuri ir nedzirdīgi vai vājdzirdīgi.',
EMBED_AUDIO: 'Lūdzu, nodrošiniet transkriptu visiem podkāstiem. Transkriptu nodrošināšana audio saturam ir obligāta A līmeņa prasība. Transkripcijas palīdz cilvēkiem, kuri ir nedzirdīgi vai vājdzirdīgi, taču tās var būt noderīgas ikvienam. Apsveriet iespēju transkriptu izvietot zem vai akordeona panelī.',
EMBED_DATA_VIZ: 'Šādi datu vizualizācijas logrīki bieži rada problēmas cilvēkiem, kuri navigācijai izmanto tastatūru vai ekrāna lasītāju, un var radīt ievērojamas grūtības cilvēkiem ar vāju redzi vai krāsu aklumu. Ieteicams to pašu informāciju sniegt alternatīvā (teksta vai tabulas) formātā zem logrīka.
Uzziniet vairāk par sarežģītiem attēliem.',
- EMBED_MISSING_TITLE: 'Iegultajam saturam ir nepieciešams pieejams nosaukums, kas raksturo tā saturu. Lūdzu, norādiet unikālu title
vai aria-label
atribūtu elementā iframe
. Uzziniet vairāk par iFrame..',
+ EMBED_MISSING_TITLE: 'Iegultajam saturam ir nepieciešams pieejams nosaukums, kas raksturo tā saturu. Lūdzu, norādiet unikālu title
vai aria-label
atribūtu elementā iframe
. Uzziniet vairāk par iFrame..',
EMBED_GENERAL_WARNING: 'Nevar pārbaudīt iegulto saturu. Lūdzu, pārliecinieties, ka attēliem ir alt teksts, videoklipiem ir uzraksti, tekstam ir pietiekams kontrasts un interaktīvie komponenti ir pieejami no tastatūras..',
+ EMBED_UNFOCUSABLE: '<iframe>
ar neuzmanāmiem elementiem nevajadzētu būt tabindex="-1"
. Iegultais saturs nebūs pieejams ar tastatūru.',
QA_BAD_LINK: 'Atrasta slikta saite. Šķiet, ka saite norāda uz izstrādes vidi.
Šī saite norāda uz:
%(el)',
QA_BAD_ITALICS: 'Trešraksta un slīpraksta tagiem ir semantiska nozīme, un tos nevajadzētu izmantot, lai izceltu veselas rindkopas. Teksts treknrakstā jāizmanto, lai uzsvērtu kādu vārdu vai frāzi. Kursīvs jāizmanto, lai izceltu īpašvārdus (piemēram, grāmatu un rakstu nosaukumus), svešvārdus, citātus. Garie citāti jānoformē kā bloka citāts.',
QA_PDF: 'Nevar pārbaudīt PDF failu pieejamību. PDF tiek uzskatīti par tīmekļa saturu, un arī tiem jābūt pieejamiem. PDF formātos bieži ir problēmas cilvēkiem, kas izmanto ekrānlasītājus (trūkst strukturālo tagu vai veidlapu lauku marķējumu), un cilvēkiem ar vāju redzi (teksts nepalielinās, kad tiek palielināts). - Ja tā ir veidlapa, apsveriet iespēju kā alternatīvu izmantot pieejamu HTML veidlapu.
- Ja tas ir dokuments, apsveriet iespēju to pārveidot par tīmekļa lapu.
Ja tas ir dokuments, apsveriet iespēju to pārveidot par tīmekļa vietni.Tādā gadījumā pārbaudiet PDF pieejamību programmā Acrobat DC..',
diff --git a/assets/dist/js/lang/nb.js b/assets/dist/js/lang/nb.js
index 555f2a1..fb4abdc 100644
--- a/assets/dist/js/lang/nb.js
+++ b/assets/dist/js/lang/nb.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var nb = {
HEADING_NOT_VISIBLE_ALERT: 'Overskriften er ikke synlig; den kan være skjult eller inne i en trekkspill- eller fanekomponent.',
SKIP_TO_PAGE_ISSUES: 'Gå til sideproblemer',
CONSOLE_ERROR_MESSAGE: 'Beklager, men det er et problem med tilgjengelighetskontrollen på denne siden. Kan du rapportere det via dette skjemaet eller på GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Vis %(dismissCount) avviste advarsler',
DISMISS: 'Avvis',
DISMISSED: 'Avviste advarsler',
DISMISS_REMINDER: 'Vær oppmerksom på at advarsler bare avvises midlertidig. Hvis du sletter nettleserens historikk og informasjonskapsler, gjenopprettes alle tidligere avviste advarsler på alle sider.',
+
+ // Export
+ DATE: 'Dato',
+ PAGE_TITLE: 'Sidetittel',
+ RESULTS: 'Resultater',
+ EXPORT_RESULTS: 'Eksporter resultater',
+ GENERATED: 'Resultater generert med %(tool).',
+ PREVIEW: 'Forhåndsvisning',
+ ELEMENT: 'Element',
+ PATH: 'Sti',
+
+ // Colour filters
COLOUR_FILTER: 'Fargefilter',
PROTANOPIA: 'Protanopi',
DEUTERANOPIA: 'Deuteranopi',
@@ -60,6 +74,8 @@ var nb = {
BLUE_EYE: 'Blå persienne.',
MONO_EYE: 'Rød, blå og grønn blind.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Fargefiltre fungerer ikke i modus for høy kontrast.',
+
+ // Alternative text stopwords
SUSPICIOUS_ALT_STOPWORDS: [
'bilde',
'grafisk',
@@ -142,6 +158,7 @@ var nb = {
HEADING_MISSING_ONE: 'Manglende overskrift 1. Overskrift 1 skal være starten på hovedinnholdsområdet, og er hovedoverskriften som beskriver det overordnede formålet med siden. Les mer om Overskriftsstruktur..',
HEADING_EMPTY_WITH_IMAGE: 'Overskrift har ingen tekst, men inneholder et bilde. Hvis dette ikke er en overskrift, endrer du formatet fra Overskrift %(level) til Normal eller Avsnitt. Ellers kan du legge til alt-tekst til bildet hvis det ikke er dekorativt.',
PANEL_HEADING_MISSING_ONE: 'Manglende overskrift 1!',
+ PANEL_NO_HEADINGS: 'Ingen overskrifter funnet.',
LINK_EMPTY: 'Fjern tomme lenker uten tekst.',
LINK_EMPTY_LINK_NO_LABEL: 'Lenken har ikke tydelig tekst som er synlig for skjermlesere og andre hjelpemidler. Slik løser du problemet: - Legg til en kortfattet tekst som beskriver hvor lenken fører deg.
- Hvis det er en ikonlenke eller SVG, mangler den sannsynligvis en beskrivende etikett.
- Hvis du tror at denne lenken er en feil på grunn av en copy/paste-feil, bør du vurdere å slette den.
.',
LINK_LABEL: 'Lenketikett: %(sanitizedText)',
@@ -155,18 +172,18 @@ var nb = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Bildet brukes som lenke med omkringliggende tekst, selv om alt-attributtet skal være merket som dekorativt eller null.',
MISSING_ALT_LINK_MESSAGE: 'Bildet brukes som lenke, men mangler alt-tekst! Sørg for at alt-teksten beskriver hvor lenken fører deg.',
MISSING_ALT_MESSAGE: 'Manglende alt-tekst! Hvis bildet formidler en historie, en stemning eller viktig informasjon - sørg for å beskrive bildet.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Filendelsen i alt-teksten ble funnet. Sørg for at alt-teksten beskriver målet for lenken, ikke en bokstavelig beskrivelse av bildet. Fjern dette: %(error).
Alt-tekst: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Filendelsen i alt-teksten ble funnet. Sørg for at alt-teksten beskriver målet for lenken, ikke en bokstavelig beskrivelse av bildet. Fjern dette: %(error).
Alt-tekst: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Alt-tekst uten beskrivelse eller plassholder i et lenket bilde funnet. Sørg for at alt-teksten beskriver målet for lenken, ikke en bokstavelig beskrivelse av bildet. Erstatt følgende alt-tekst: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Hjelpemidler indikerer allerede at dette er et bilde, så "%(error)" kan være overflødig. Sørg for at alt-teksten beskriver målet for lenken, ikke en bokstavelig beskrivelse av bildet.
Alt-tekst: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Filtypen i alt-teksten som er funnet. Hvis bildet formidler en historie, en stemning eller viktig informasjon - husk å beskrive bildet. Fjern dette: %(error).
Alt-tekst: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Filtypen i alt-teksten som er funnet. Hvis bildet formidler en historie, en stemning eller viktig informasjon - husk å beskrive bildet. Fjern dette: %(error).
Alt-tekst: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Ikke-beskrivende alt-tekst eller plassholder-alt-tekst funnet. Erstatt følgende alt-tekst med noe mer meningsfylt: %(altText)',
ALT_HAS_SUS_WORD: 'Hjelpemidler indikerer allerede at dette er et bilde, så "%(error)" kan være overflødig.
Alt-tekst: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Lenken rundt bildet har aria-hidden="true"
, men kan fortsatt fokuseres med tastaturet. Hvis du vil skjule en overflødig eller duplisert lenke, kan du også legge til tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Lenken har aria-hidden="true"
, men er fortsatt tastaturfokuserbar. Hvis du har til hensikt å skjule en overflødig eller duplisert lenke, legg til tabindex="-1"
også.',
LINK_IMAGE_NO_ALT_TEXT: 'Bildet i lenken er merket som dekorativt, og det er ingen lenketekst. Legg til alt-tekst i bildet som beskriver lenkens destinasjon.',
LINK_IMAGE_HAS_TEXT: 'Bildet er merket som dekorativt, selv om lenken bruker den omkringliggende teksten som en beskrivende etikett.',
LINK_IMAGE_LONG_ALT: 'Alt-tekstbeskrivelsen på et lenket bilde er for lang. Alt-teksten på lenkede bilder bør beskrive hvor lenken tar deg, ikke en bokstavelig beskrivelse av bildet. Vurder å bruke tittelen på siden det lenkes til som alt-tekst.
Alt-tekst (%(altLength) tegn): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Bildelenken inneholder alt-tekst. Beskriver alt-teksten hvor lenken fører deg? Vurder å bruke tittelen på siden det lenkes til som alt-tekst.
Alt-tekst: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Bildelenken inneholder både alt-tekst og omkringliggende lenketekst. Hvis dette bildet er dekorativt og brukes som en funksjonell lenke til en annen side, bør du vurdere å merke bildet som dekorativt eller null - den omkringliggende lenketeksten bør være tilstrekkelig.
Alt-tekst: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Bildelenken inneholder både alt-tekst og omkringliggende lenketekst. Hvis dette bildet er dekorativt og brukes som en funksjonell lenke til en annen side, bør du vurdere å merke bildet som dekorativt eller null - den omkringliggende lenketeksten bør være tilstrekkelig.
Alt-tekst: %(altText)
Lenketikett: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Bildet er merket som dekorativt og vil bli ignorert av hjelpemidler.
Selv om det er oppgitt en caption, bør bildet også ha en alt-tekst i de fleste tilfeller. - Alternativteksten bør gi en kortfattet beskrivelse av hva som er i bildet.
- Bildeteksten bør vanligvis gi kontekst for å relatere bildet til det omkringliggende innholdet, eller gi oppmerksomhet til en bestemt del av informasjonen.
Lær mer: alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Ikke bruk nøyaktig de samme ordene i alt- og bildeteksten. Skjermlesere vil annonsere informasjonen to ganger.- Alt-teksten bør gi en kortfattet beskrivelse av hva som er i bildet.
- Bildeteksten bør vanligvis gi kontekst for å relatere bildet til det omkringliggende innholdet, eller gi oppmerksomhet til en bestemt del av informasjonen.
Les mer: alt versus figcaption.
Alt-tekst: %(altText)',
IMAGE_DECORATIVE: 'Bildet er merket som dekorativt og vil bli ignorert av hjelpemidler. Hvis bildet formidler en historie, en stemning eller viktig informasjon - husk å legge til alt-tekst.',
@@ -174,14 +191,15 @@ var nb = {
IMAGE_PASS: 'Alt-tekst: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Bildeknappen mangler alt-tekst. Legg til alt-tekst for å gi et tilgjengelig navn. For eksempel: Søk eller Send.',
LABELS_INPUT_RESET_MESSAGE: 'Tilbakestillingsknapper bør ikke brukes med mindre det er spesifikt behov for dem, fordi de lett kan aktiveres ved en feiltakelse.
Tips! Les mer om hvorfor Reset- og Cancel-knapper er problematiske for brukervennligheten.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Inndataene har et tilgjengelig navn, men sørg for at de også har en synlig etikett.
Det tilgjengelige navnet for denne inndataen er: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Inndataene har et tilgjengelig navn, men sørg for at de også har en synlig etikett.
Inndatalabel: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Det er ingen etikett knyttet til denne inndataen. Legg til et for
-attributt i etiketten som samsvarer med id
for denne inndataen.
ID-en for denne inndataen er: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Det er ingen etikett knyttet til denne inndataen. Legg til et id
til denne inndataen, og legg til et matchende for
-attributt til etiketten.',
EMBED_VIDEO: 'Sørg for at alle videoer er tekstet. Det er et obligatorisk nivå A-krav at alt lyd- og videoinnhold er tekstet. Teksting er til hjelp for personer som er døve eller har nedsatt hørsel.',
EMBED_AUDIO: 'Sørg for å levere en utskrift for alle podcaster. Det er et obligatorisk nivå A-krav å levere utskrifter for lydinnhold. Transkripsjoner er til hjelp for døve og hørselshemmede, men kan være til nytte for alle. Vurder å plassere transkripsjonen nedenfor eller i et trekkspillpanel.',
EMBED_DATA_VIZ: 'Datavisualiseringswidgets som dette er ofte problematiske for personer som bruker tastatur eller skjermleser for å navigere, og kan by på betydelige problemer for personer med nedsatt syn eller fargeblindhet. Det anbefales å gi den samme informasjonen i et alternativt format (tekst eller tabell) under widgeten.
Les mer om komplekse bilder.',
- EMBED_MISSING_TITLE: 'Innebygd innhold krever et tilgjengelig navn som beskriver innholdet. Oppgi et unikt title
eller aria-label
-attributt på iframe
-elementet. Finn ut mer om iFrames..',
+ EMBED_MISSING_TITLE: 'Innebygd innhold krever et tilgjengelig navn som beskriver innholdet. Oppgi et unikt title
eller aria-label
-attributt på iframe
-elementet. Finn ut mer om iFrames..',
EMBED_GENERAL_WARNING: 'Kunne ikke sjekke innebygd innhold. Kontroller at bilder har alt-tekst, videoer har bildetekster, tekst har tilstrekkelig kontrast og interaktive komponenter er tilgjengelige via tastaturet..',
+ EMBED_UNFOCUSABLE: '<iframe>
med ikke-fokuserbare elementer bør ikke ha tabindex="-1"
. Den innebygde innholdet vil ikke være tilgjengelig med tastaturet.',
QA_BAD_LINK: 'Feil lenke funnet. Lenken ser ut til å peke til et utviklingsmiljø.
Denne lenken peker til:
%(el)',
QA_BAD_ITALICS: 'Fet og kursiv har en semantisk betydning, og bør ikke brukes til å fremheve hele avsnitt. Fet skrift skal brukes til å fremheve et ord eller en frase. Kursiv skal brukes til å fremheve egennavn (f.eks. bok- og artikkeltitler), fremmedord og sitater. Lange sitater bør formateres som blokksitater.',
QA_PDF: 'Kan ikke sjekke om PDF-filer er tilgjengelige. PDF-filer regnes som nettinnhold og må også gjøres tilgjengelige. PDF-filer inneholder ofte problemer for personer som bruker skjermlesere (manglende strukturelle tagger eller manglende etiketter for skjemafelt) og personer med nedsatt syn (teksten flyter ikke ut igjen når den forstørres). - Hvis dette er et skjema, bør du vurdere å bruke et tilgjengelig HTML-skjema som et alternativ.
- Hvis dette er et dokument, bør du vurdere å konvertere det til en nettside.
Ellers kan du sjekke om PDF-en er tilgjengelig i Acrobat DC..',
diff --git a/assets/dist/js/lang/nb.umd.js b/assets/dist/js/lang/nb.umd.js
index c3a2ae9..8b67807 100644
--- a/assets/dist/js/lang/nb.umd.js
+++ b/assets/dist/js/lang/nb.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: 'Overskriften er ikke synlig; den kan være skjult eller inne i en trekkspill- eller fanekomponent.',
SKIP_TO_PAGE_ISSUES: 'Gå til sideproblemer',
CONSOLE_ERROR_MESSAGE: 'Beklager, men det er et problem med tilgjengelighetskontrollen på denne siden. Kan du rapportere det via dette skjemaet eller på GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Vis %(dismissCount) avviste advarsler',
DISMISS: 'Avvis',
DISMISSED: 'Avviste advarsler',
DISMISS_REMINDER: 'Vær oppmerksom på at advarsler bare avvises midlertidig. Hvis du sletter nettleserens historikk og informasjonskapsler, gjenopprettes alle tidligere avviste advarsler på alle sider.',
+
+ // Export
+ DATE: 'Dato',
+ PAGE_TITLE: 'Sidetittel',
+ RESULTS: 'Resultater',
+ EXPORT_RESULTS: 'Eksporter resultater',
+ GENERATED: 'Resultater generert med %(tool).',
+ PREVIEW: 'Forhåndsvisning',
+ ELEMENT: 'Element',
+ PATH: 'Sti',
+
+ // Colour filters
COLOUR_FILTER: 'Fargefilter',
PROTANOPIA: 'Protanopi',
DEUTERANOPIA: 'Deuteranopi',
@@ -66,6 +80,8 @@
BLUE_EYE: 'Blå persienne.',
MONO_EYE: 'Rød, blå og grønn blind.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Fargefiltre fungerer ikke i modus for høy kontrast.',
+
+ // Alternative text stopwords
SUSPICIOUS_ALT_STOPWORDS: [
'bilde',
'grafisk',
@@ -148,6 +164,7 @@
HEADING_MISSING_ONE: 'Manglende overskrift 1. Overskrift 1 skal være starten på hovedinnholdsområdet, og er hovedoverskriften som beskriver det overordnede formålet med siden. Les mer om Overskriftsstruktur..',
HEADING_EMPTY_WITH_IMAGE: 'Overskrift har ingen tekst, men inneholder et bilde. Hvis dette ikke er en overskrift, endrer du formatet fra Overskrift %(level) til Normal eller Avsnitt. Ellers kan du legge til alt-tekst til bildet hvis det ikke er dekorativt.',
PANEL_HEADING_MISSING_ONE: 'Manglende overskrift 1!',
+ PANEL_NO_HEADINGS: 'Ingen overskrifter funnet.',
LINK_EMPTY: 'Fjern tomme lenker uten tekst.',
LINK_EMPTY_LINK_NO_LABEL: 'Lenken har ikke tydelig tekst som er synlig for skjermlesere og andre hjelpemidler. Slik løser du problemet: - Legg til en kortfattet tekst som beskriver hvor lenken fører deg.
- Hvis det er en ikonlenke eller SVG, mangler den sannsynligvis en beskrivende etikett.
- Hvis du tror at denne lenken er en feil på grunn av en copy/paste-feil, bør du vurdere å slette den.
.',
LINK_LABEL: 'Lenketikett: %(sanitizedText)',
@@ -161,18 +178,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Bildet brukes som lenke med omkringliggende tekst, selv om alt-attributtet skal være merket som dekorativt eller null.',
MISSING_ALT_LINK_MESSAGE: 'Bildet brukes som lenke, men mangler alt-tekst! Sørg for at alt-teksten beskriver hvor lenken fører deg.',
MISSING_ALT_MESSAGE: 'Manglende alt-tekst! Hvis bildet formidler en historie, en stemning eller viktig informasjon - sørg for å beskrive bildet.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Filendelsen i alt-teksten ble funnet. Sørg for at alt-teksten beskriver målet for lenken, ikke en bokstavelig beskrivelse av bildet. Fjern dette: %(error).
Alt-tekst: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Filendelsen i alt-teksten ble funnet. Sørg for at alt-teksten beskriver målet for lenken, ikke en bokstavelig beskrivelse av bildet. Fjern dette: %(error).
Alt-tekst: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Alt-tekst uten beskrivelse eller plassholder i et lenket bilde funnet. Sørg for at alt-teksten beskriver målet for lenken, ikke en bokstavelig beskrivelse av bildet. Erstatt følgende alt-tekst: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Hjelpemidler indikerer allerede at dette er et bilde, så "%(error)" kan være overflødig. Sørg for at alt-teksten beskriver målet for lenken, ikke en bokstavelig beskrivelse av bildet.
Alt-tekst: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Filtypen i alt-teksten som er funnet. Hvis bildet formidler en historie, en stemning eller viktig informasjon - husk å beskrive bildet. Fjern dette: %(error).
Alt-tekst: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Filtypen i alt-teksten som er funnet. Hvis bildet formidler en historie, en stemning eller viktig informasjon - husk å beskrive bildet. Fjern dette: %(error).
Alt-tekst: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Ikke-beskrivende alt-tekst eller plassholder-alt-tekst funnet. Erstatt følgende alt-tekst med noe mer meningsfylt: %(altText)',
ALT_HAS_SUS_WORD: 'Hjelpemidler indikerer allerede at dette er et bilde, så "%(error)" kan være overflødig.
Alt-tekst: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Lenken rundt bildet har aria-hidden="true"
, men kan fortsatt fokuseres med tastaturet. Hvis du vil skjule en overflødig eller duplisert lenke, kan du også legge til tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Lenken har aria-hidden="true"
, men er fortsatt tastaturfokuserbar. Hvis du har til hensikt å skjule en overflødig eller duplisert lenke, legg til tabindex="-1"
også.',
LINK_IMAGE_NO_ALT_TEXT: 'Bildet i lenken er merket som dekorativt, og det er ingen lenketekst. Legg til alt-tekst i bildet som beskriver lenkens destinasjon.',
LINK_IMAGE_HAS_TEXT: 'Bildet er merket som dekorativt, selv om lenken bruker den omkringliggende teksten som en beskrivende etikett.',
LINK_IMAGE_LONG_ALT: 'Alt-tekstbeskrivelsen på et lenket bilde er for lang. Alt-teksten på lenkede bilder bør beskrive hvor lenken tar deg, ikke en bokstavelig beskrivelse av bildet. Vurder å bruke tittelen på siden det lenkes til som alt-tekst.
Alt-tekst (%(altLength) tegn): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Bildelenken inneholder alt-tekst. Beskriver alt-teksten hvor lenken fører deg? Vurder å bruke tittelen på siden det lenkes til som alt-tekst.
Alt-tekst: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Bildelenken inneholder både alt-tekst og omkringliggende lenketekst. Hvis dette bildet er dekorativt og brukes som en funksjonell lenke til en annen side, bør du vurdere å merke bildet som dekorativt eller null - den omkringliggende lenketeksten bør være tilstrekkelig.
Alt-tekst: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Bildelenken inneholder både alt-tekst og omkringliggende lenketekst. Hvis dette bildet er dekorativt og brukes som en funksjonell lenke til en annen side, bør du vurdere å merke bildet som dekorativt eller null - den omkringliggende lenketeksten bør være tilstrekkelig.
Alt-tekst: %(altText)
Lenketikett: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Bildet er merket som dekorativt og vil bli ignorert av hjelpemidler.
Selv om det er oppgitt en caption, bør bildet også ha en alt-tekst i de fleste tilfeller. - Alternativteksten bør gi en kortfattet beskrivelse av hva som er i bildet.
- Bildeteksten bør vanligvis gi kontekst for å relatere bildet til det omkringliggende innholdet, eller gi oppmerksomhet til en bestemt del av informasjonen.
Lær mer: alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Ikke bruk nøyaktig de samme ordene i alt- og bildeteksten. Skjermlesere vil annonsere informasjonen to ganger.- Alt-teksten bør gi en kortfattet beskrivelse av hva som er i bildet.
- Bildeteksten bør vanligvis gi kontekst for å relatere bildet til det omkringliggende innholdet, eller gi oppmerksomhet til en bestemt del av informasjonen.
Les mer: alt versus figcaption.
Alt-tekst: %(altText)',
IMAGE_DECORATIVE: 'Bildet er merket som dekorativt og vil bli ignorert av hjelpemidler. Hvis bildet formidler en historie, en stemning eller viktig informasjon - husk å legge til alt-tekst.',
@@ -180,14 +197,15 @@
IMAGE_PASS: 'Alt-tekst: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Bildeknappen mangler alt-tekst. Legg til alt-tekst for å gi et tilgjengelig navn. For eksempel: Søk eller Send.',
LABELS_INPUT_RESET_MESSAGE: 'Tilbakestillingsknapper bør ikke brukes med mindre det er spesifikt behov for dem, fordi de lett kan aktiveres ved en feiltakelse.
Tips! Les mer om hvorfor Reset- og Cancel-knapper er problematiske for brukervennligheten.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Inndataene har et tilgjengelig navn, men sørg for at de også har en synlig etikett.
Det tilgjengelige navnet for denne inndataen er: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Inndataene har et tilgjengelig navn, men sørg for at de også har en synlig etikett.
Inndatalabel: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Det er ingen etikett knyttet til denne inndataen. Legg til et for
-attributt i etiketten som samsvarer med id
for denne inndataen.
ID-en for denne inndataen er: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Det er ingen etikett knyttet til denne inndataen. Legg til et id
til denne inndataen, og legg til et matchende for
-attributt til etiketten.',
EMBED_VIDEO: 'Sørg for at alle videoer er tekstet. Det er et obligatorisk nivå A-krav at alt lyd- og videoinnhold er tekstet. Teksting er til hjelp for personer som er døve eller har nedsatt hørsel.',
EMBED_AUDIO: 'Sørg for å levere en utskrift for alle podcaster. Det er et obligatorisk nivå A-krav å levere utskrifter for lydinnhold. Transkripsjoner er til hjelp for døve og hørselshemmede, men kan være til nytte for alle. Vurder å plassere transkripsjonen nedenfor eller i et trekkspillpanel.',
EMBED_DATA_VIZ: 'Datavisualiseringswidgets som dette er ofte problematiske for personer som bruker tastatur eller skjermleser for å navigere, og kan by på betydelige problemer for personer med nedsatt syn eller fargeblindhet. Det anbefales å gi den samme informasjonen i et alternativt format (tekst eller tabell) under widgeten.
Les mer om komplekse bilder.',
- EMBED_MISSING_TITLE: 'Innebygd innhold krever et tilgjengelig navn som beskriver innholdet. Oppgi et unikt title
eller aria-label
-attributt på iframe
-elementet. Finn ut mer om iFrames..',
+ EMBED_MISSING_TITLE: 'Innebygd innhold krever et tilgjengelig navn som beskriver innholdet. Oppgi et unikt title
eller aria-label
-attributt på iframe
-elementet. Finn ut mer om iFrames..',
EMBED_GENERAL_WARNING: 'Kunne ikke sjekke innebygd innhold. Kontroller at bilder har alt-tekst, videoer har bildetekster, tekst har tilstrekkelig kontrast og interaktive komponenter er tilgjengelige via tastaturet..',
+ EMBED_UNFOCUSABLE: '<iframe>
med ikke-fokuserbare elementer bør ikke ha tabindex="-1"
. Den innebygde innholdet vil ikke være tilgjengelig med tastaturet.',
QA_BAD_LINK: 'Feil lenke funnet. Lenken ser ut til å peke til et utviklingsmiljø.
Denne lenken peker til:
%(el)',
QA_BAD_ITALICS: 'Fet og kursiv har en semantisk betydning, og bør ikke brukes til å fremheve hele avsnitt. Fet skrift skal brukes til å fremheve et ord eller en frase. Kursiv skal brukes til å fremheve egennavn (f.eks. bok- og artikkeltitler), fremmedord og sitater. Lange sitater bør formateres som blokksitater.',
QA_PDF: 'Kan ikke sjekke om PDF-filer er tilgjengelige. PDF-filer regnes som nettinnhold og må også gjøres tilgjengelige. PDF-filer inneholder ofte problemer for personer som bruker skjermlesere (manglende strukturelle tagger eller manglende etiketter for skjemafelt) og personer med nedsatt syn (teksten flyter ikke ut igjen når den forstørres). - Hvis dette er et skjema, bør du vurdere å bruke et tilgjengelig HTML-skjema som et alternativ.
- Hvis dette er et dokument, bør du vurdere å konvertere det til en nettside.
Ellers kan du sjekke om PDF-en er tilgjengelig i Acrobat DC..',
diff --git a/assets/dist/js/lang/nl.js b/assets/dist/js/lang/nl.js
index 7f54446..cd84d06 100644
--- a/assets/dist/js/lang/nl.js
+++ b/assets/dist/js/lang/nl.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var nl = {
HEADING_NOT_VISIBLE_ALERT: 'De kop is niet zichtbaar; hij kan verborgen zijn of in een accordeon- of tabbladcomponent staan.',
SKIP_TO_PAGE_ISSUES: 'Doorgaan naar paginanummers',
CONSOLE_ERROR_MESSAGE: 'Sorry, maar er is een probleem met de toegankelijkheidscontrole op deze pagina. Kunt u dit alstublieft melden via dit formulier of op GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Toon %(dismissCount) afgewezen waarschuwingen',
DISMISS: 'Ontsla',
DISMISSED: 'Afgewezen waarschuwingen',
DISMISS_REMINDER: "Let op: waarschuwingen worden alleen tijdelijk genegeerd. Als u uw browsergeschiedenis en cookies wist, worden alle eerder afgewezen waarschuwingen op alle pagina's hersteld.",
+
+ // Export
+ DATE: 'Datum',
+ PAGE_TITLE: 'Paginatitel',
+ RESULTS: 'Resultaten',
+ EXPORT_RESULTS: 'Resultaten exporteren',
+ GENERATED: 'Resultaten gegenereerd met %(tool).',
+ PREVIEW: 'Voorbeeld',
+ ELEMENT: 'Element',
+ PATH: 'Pad',
+
+ // Colour filters
COLOUR_FILTER: 'Kleurenfilter',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -60,6 +74,8 @@ var nl = {
BLUE_EYE: 'Blauwe jaloezie.',
MONO_EYE: 'Blind rood, blauw en groen.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Kleurenfilters werken niet in de modus Hoog contrast.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'afbeelding',
'grafisch',
@@ -145,11 +161,12 @@ var nl = {
HEADING_LONG: 'Koppen zijn lang! Koppen moeten worden gebruikt om inhoud te organiseren en structuur over te brengen. Ze moeten kort, informatief en uniek zijn. Houd koppen onder de 160 tekens (niet meer dan een zin).
Aantal tekens: %(headingLength)',
HEADING_FIRST: 'De eerste kop op een pagina moet meestal een Kop 1 of Kop 2 zijn. Kop 1 moet het begin zijn van het hoofdgedeelte van de inhoud en is de belangrijkste kop die het algemene doel van de pagina beschrijft. Meer informatie over Kopjesstructuur.',
HEADING_MISSING_ONE: 'Ontbrekende kop 1. Kop 1 moet het begin zijn van het hoofdgedeelte van de inhoud en is de belangrijkste kop die het algemene doel van de pagina beschrijft. Meer informatie over Kopjesstructuur.',
- HEADING_EMPTY_WITH_IMAGE: 'Een kop heeft geen tekst, maar bevat een afbeelding. Als dit geen koptekst is, verander de opmaak dan van Koptekst %(niveau) in Normaal of Paragraaf. Voeg anders alt-tekst toe aan de afbeelding als deze niet decoratief is.',
+ HEADING_EMPTY_WITH_IMAGE: 'Een kop heeft geen tekst, maar bevat een afbeelding. Als dit geen koptekst is, verander de opmaak dan van Koptekst %(level) in Normaal of Paragraaf. Voeg anders alt-tekst toe aan de afbeelding als deze niet decoratief is.',
PANEL_HEADING_MISSING_ONE: 'Rubriek 1 ontbreekt!',
+ PANEL_NO_HEADINGS: 'Geen koppen gevonden.',
LINK_EMPTY: 'Verwijder lege links zonder tekst.',
LINK_EMPTY_LINK_NO_LABEL: 'Link heeft geen leesbare tekst die zichtbaar is voor schermlezers en andere ondersteunende technologie. Op te lossen: - Voeg beknopte tekst toe die beschrijft waar de koppeling naartoe leidt.
- Als het een icon link of SVG, is, ontbreekt waarschijnlijk een beschrijvend label.
- Als u denkt dat deze koppeling een fout is als gevolg van een copy/paste-bug, kunt u overwegen deze te verwijderen.
',
- LINK_LABEL: 'Linklabel: %(gezuiverde tekst)',
+ LINK_LABEL: 'Linklabel: %(sanitizedText)',
LINK_STOPWORD: 'Linktekst is mogelijk niet beschrijvend genoeg buiten de context: %(error)
Tip! Linktekst moet altijd duidelijk, uniek en betekenisvol zijn. Vermijd veelgebruikte woorden zoals "klik hier" of "leer meer"',
LINK_BEST_PRACTICES: 'Overweeg om de tekst van de koppeling te vervangen: %(error)
- "Klik hier" legt de nadruk op muismechanica, terwijl veel mensen geen muis gebruiken of deze website mogelijk bekijken op een mobiel apparaat. Overweeg het gebruik van een ander werkwoord dat betrekking heeft op de taak.
- Vermijd het gebruik van HTML-symbolen als oproep tot actie, tenzij deze verborgen zijn voor ondersteunende technologieën.
',
LINK_URL: "Langere, minder begrijpelijke URL's die gebruikt worden als linktekst kunnen moeilijk te begrijpen zijn met hulptechnologie. In de meeste gevallen is het beter om menselijk leesbare tekst te gebruiken in plaats van de URL. Korte URL's (zoals de startpagina van een site) zijn prima.
Tip! Linktekst moet altijd duidelijk, uniek en betekenisvol zijn, zodat deze ook buiten de context kan worden begrepen.",
@@ -160,18 +177,18 @@ var nl = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Afbeelding wordt gebruikt als een link met omringende tekst, hoewel het alt-attribuut als decoratief of null moet worden gemarkeerd.',
MISSING_ALT_LINK_MESSAGE: 'Afbeelding wordt gebruikt als link maar alt-tekst ontbreekt! Zorg ervoor dat de alt-tekst beschrijft waar de link naartoe leidt.',
MISSING_ALT_MESSAGE: 'Ontbrekende alt-tekst! Als de afbeelding een verhaal, sfeer of belangrijke informatie overbrengt, zorg er dan voor dat je de afbeelding beschrijft.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Bestandsextensie in de alt-tekst gevonden. Zorg ervoor dat de alt-tekst de bestemming van de link beschrijft en niet een letterlijke beschrijving van de afbeelding. Verwijderen: %(error).
Alt-tekst: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Bestandsextensie in de alt-tekst gevonden. Zorg ervoor dat de alt-tekst de bestemming van de link beschrijft en niet een letterlijke beschrijving van de afbeelding. Verwijderen: %(error).
Alt-tekst: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Niet-beschrijvende of plaatsvervangende alt-tekst binnen een gekoppelde afbeelding gevonden. Zorg ervoor dat de alt-tekst de bestemming van de link beschrijft en niet een letterlijke beschrijving van de afbeelding. Vervang de volgende alt-tekst: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Hulptechnologieën geven al aan dat het om een afbeelding gaat, dus "%(error)" kan overbodig zijn. Zorg ervoor dat de alt-tekst de bestemming van de link beschrijft en niet een letterlijke beschrijving van de afbeelding.
Alttekst: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Bestandsextensie in de gevonden alt-tekst. Als de afbeelding een verhaal, stemming of belangrijke informatie overbrengt, zorg er dan voor dat je de afbeelding beschrijft. Verwijderen: %(error).
Alt-tekst: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Bestandsextensie in de gevonden alt-tekst. Als de afbeelding een verhaal, stemming of belangrijke informatie overbrengt, zorg er dan voor dat je de afbeelding beschrijft. Verwijderen: %(error).
Alt-tekst: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Niet-beschrijvende of plaatshouder alt-tekst gevonden. Vervang de volgende alt-tekst door iets dat meer betekenis heeft: %(altText)',
ALT_HAS_SUS_WORD: 'Hulptechnologieën geven al aan dat dit een afbeelding is, dus "%(error)" kan overbodig zijn.
Alt tekst: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Link rond afbeelding heeft aria-hidden="true"
maar is nog steeds toetsenbordfocusbaar. Als je een overbodige of dubbele link wilt verbergen, voeg dan ook tabindex="-1"
toe.',
+ LINK_HIDDEN_FOCUSABLE: 'De link heeft aria-hidden="true"
, maar is nog steeds toegankelijk met het toetsenbord. Als je van plan bent om een overbodige of dubbele link te verbergen, voeg dan ook tabindex="-1"
toe.',
LINK_IMAGE_NO_ALT_TEXT: 'De afbeelding in de link is gemarkeerd als decoratief en er is geen linktekst. Voeg alt-tekst toe aan de afbeelding die de bestemming van de link beschrijft.',
LINK_IMAGE_HAS_TEXT: 'Afbeelding is gemarkeerd als decoratief, hoewel de link de omringende tekst gebruikt als beschrijvend label.',
LINK_IMAGE_LONG_ALT: 'Alt-tekstbeschrijving op een gekoppelde afbeelding is te lang. De alt-tekst op gelinkte afbeeldingen moet beschrijven waar de link je naartoe brengt, niet een letterlijke beschrijving van de afbeelding. Overweeg om de titel van de pagina waarnaar wordt gelinkt als alt-tekst te gebruiken.
Alt-tekst (%(altLength) tekens): %(altText)',
LINK_IMAGE_ALT_WARNING: 'De link naar de afbeelding bevat alt-tekst. Beschrijft de alt-tekst waar de link je naartoe brengt? Overweeg om de titel van de pagina waarnaar wordt gelinkt als alt-tekst te gebruiken.
Alttekst: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Als deze afbeelding decoratief is en wordt gebruikt als een functionele link naar een andere pagina, overweeg dan om de afbeelding als decoratief of null te markeren - de omringende linktekst zou moeten volstaan.
Alttekst: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Als deze afbeelding decoratief is en wordt gebruikt als een functionele link naar een andere pagina, overweeg dan om de afbeelding als decoratief of null te markeren - de omringende linktekst zou moeten volstaan.
Alttekst: %(altText)
Linklabel: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Afbeelding is gemarkeerd als decoratief en wordt genegeerd door ondersteunende technologie.
Hoewel er een bijschrift is opgegeven, moet de afbeelding in de meeste gevallen ook een alt-tekst hebben. - De alt-tekst moet een beknopte beschrijving geven van wat er in de afbeelding staat.
- Het bijschrift moet meestal context bieden om de afbeelding te relateren aan de omringende inhoud, of de aandacht vestigen op een bepaald stukje informatie.
Lees meer: alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Gebruik niet exact dezelfde woorden voor zowel de alt- als bijschrifttekst. Schermlezers zullen de informatie twee keer aankondigen.- De alt-tekst moet een beknopte beschrijving geven van wat er in de afbeelding staat.
- Het bijschrift moet meestal context bieden om de afbeelding te relateren aan de omringende inhoud, of de aandacht vestigen op een bepaald stukje informatie.
Meer informatie: alt versus figcaption.
Alt tekst: %(altText)',
IMAGE_DECORATIVE: 'De afbeelding is gemarkeerd als decoratief en wordt genegeerd door ondersteunende technologie. Als de afbeelding een verhaal, stemming of belangrijke informatie overbrengt, voeg dan alt-tekst toe.',
@@ -179,14 +196,15 @@ var nl = {
IMAGE_PASS: 'Alt tekst: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Bij de afbeeldingsknop ontbreekt alt-tekst. Voeg alt-tekst toe om een toegankelijke naam te geven. Bijvoorbeeld: Zoeken of Inzenden.',
LABELS_INPUT_RESET_MESSAGE: 'Resetknoppen moeten niet worden gebruikt tenzij ze specifiek nodig zijn, omdat ze gemakkelijk per ongeluk kunnen worden geactiveerd.
Tip!Lees waarom Reset- en annuleerknoppen bruikbaarheidsproblemen opleveren.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'De invoer heeft een toegankelijke naam, maar zorg ervoor dat er ook een zichtbaar label is.
De toegankelijke naam voor deze invoer is: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'De invoer heeft een toegankelijke naam, maar zorg ervoor dat er ook een zichtbaar label is.
Invoerlabel: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Er is geen label gekoppeld aan deze ingang. Voeg een for
-attribuut toe aan het label dat overeenkomt met de id
van deze ingang.
De ID voor deze ingang is: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Er is geen label gekoppeld aan deze ingang. Voeg een id
toe aan deze ingang en voeg een overeenkomend for
attribuut toe aan het label.',
EMBED_VIDEO: "Zorg ervoor dat alle video's zijn voorzien van ondertiteling. Het leveren van ondertiteling voor alle audio- en video-inhoud is een verplichte Level A-vereiste. Ondertiteling ondersteunt mensen die doof of slechthorend zijn.",
EMBED_AUDIO: 'Zorg voor een transcript voor alle podcasts. Het leveren van transcripts voor audio-inhoud is een verplichte Level A-vereiste. Transcripties ondersteunen mensen die doof of slechthorend zijn, maar iedereen kan er baat bij hebben. Overweeg om het transcript onder of in een accordeonpaneel te plaatsen.',
EMBED_DATA_VIZ: 'Widgets voor gegevensvisualisatie zoals deze zijn vaak problematisch voor mensen die een toetsenbord of schermlezer gebruiken om te navigeren, en kunnen aanzienlijke problemen opleveren voor mensen met slechtziendheid of kleurenblindheid. Het is aan te raden om dezelfde informatie in een alternatieve (tekst of tabel) indeling onder de widget aan te bieden.
Meer informatie over complexe afbeeldingen.',
- EMBED_MISSING_TITLE: 'Voor ingesloten inhoud is een toegankelijke naam nodig die de inhoud beschrijft. Geef een uniek title
of aria-label
attribuut op het iframe
element. Meer informatie over iFrames.',
+ EMBED_MISSING_TITLE: 'Voor ingesloten inhoud is een toegankelijke naam nodig die de inhoud beschrijft. Geef een uniek title
of aria-label
attribuut op het iframe
element. Meer informatie over iFrames.',
EMBED_GENERAL_WARNING: "Kan ingesloten inhoud niet controleren. Controleer of afbeeldingen alt-tekst hebben, video's bijschriften, tekst voldoende contrast en interactieve onderdelen toetsenbordtoegankelijk zijn.",
+ EMBED_UNFOCUSABLE: '<iframe>
met niet-focusbare elementen mag geen tabindex="-1"
hebben. De ingesloten inhoud zal niet toegankelijk zijn met het toetsenbord.',
QA_BAD_LINK: 'Slechte link gevonden. Link lijkt te verwijzen naar een ontwikkelomgeving.
Deze link verwijst naar:
%(el)',
QA_BAD_ITALICS: "Vetgedrukte en cursieve tags hebben een semantische betekenis en moeten niet worden gebruikt om hele alinea's te benadrukken. Vetgedrukte tekst moet worden gebruikt om een woord of zin sterk te accentueren. Cursief moet worden gebruikt om eigennamen (bijv. titels van boeken en artikelen), vreemde woorden en aanhalingstekens te benadrukken. Lange citaten moeten worden opgemaakt als een blokcitaat.",
QA_PDF: "Kan PDF's niet controleren op toegankelijkheid. PDF's worden beschouwd als webinhoud en moeten ook toegankelijk worden gemaakt. PDF's bevatten vaak problemen voor mensen die screenreaders gebruiken (ontbrekende structurele tags of ontbrekende labels voor formuliervelden) en mensen die slecht zien (tekst wordt niet weergegeven als deze wordt vergroot). - Als dit een formulier is, kunt u overwegen een toegankelijk HTML-formulier te gebruiken als alternatief.
- Als dit een document is, kunt u overwegen het te converteren naar een webpagina.
Ofwel controleer PDF op toegankelijkheid in Acrobat DC.",
diff --git a/assets/dist/js/lang/nl.umd.js b/assets/dist/js/lang/nl.umd.js
index 240c63a..e986f02 100644
--- a/assets/dist/js/lang/nl.umd.js
+++ b/assets/dist/js/lang/nl.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: 'De kop is niet zichtbaar; hij kan verborgen zijn of in een accordeon- of tabbladcomponent staan.',
SKIP_TO_PAGE_ISSUES: 'Doorgaan naar paginanummers',
CONSOLE_ERROR_MESSAGE: 'Sorry, maar er is een probleem met de toegankelijkheidscontrole op deze pagina. Kunt u dit alstublieft melden via dit formulier of op GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Toon %(dismissCount) afgewezen waarschuwingen',
DISMISS: 'Ontsla',
DISMISSED: 'Afgewezen waarschuwingen',
DISMISS_REMINDER: "Let op: waarschuwingen worden alleen tijdelijk genegeerd. Als u uw browsergeschiedenis en cookies wist, worden alle eerder afgewezen waarschuwingen op alle pagina's hersteld.",
+
+ // Export
+ DATE: 'Datum',
+ PAGE_TITLE: 'Paginatitel',
+ RESULTS: 'Resultaten',
+ EXPORT_RESULTS: 'Resultaten exporteren',
+ GENERATED: 'Resultaten gegenereerd met %(tool).',
+ PREVIEW: 'Voorbeeld',
+ ELEMENT: 'Element',
+ PATH: 'Pad',
+
+ // Colour filters
COLOUR_FILTER: 'Kleurenfilter',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -66,6 +80,8 @@
BLUE_EYE: 'Blauwe jaloezie.',
MONO_EYE: 'Blind rood, blauw en groen.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Kleurenfilters werken niet in de modus Hoog contrast.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'afbeelding',
'grafisch',
@@ -151,11 +167,12 @@
HEADING_LONG: 'Koppen zijn lang! Koppen moeten worden gebruikt om inhoud te organiseren en structuur over te brengen. Ze moeten kort, informatief en uniek zijn. Houd koppen onder de 160 tekens (niet meer dan een zin).
Aantal tekens: %(headingLength)',
HEADING_FIRST: 'De eerste kop op een pagina moet meestal een Kop 1 of Kop 2 zijn. Kop 1 moet het begin zijn van het hoofdgedeelte van de inhoud en is de belangrijkste kop die het algemene doel van de pagina beschrijft. Meer informatie over Kopjesstructuur.',
HEADING_MISSING_ONE: 'Ontbrekende kop 1. Kop 1 moet het begin zijn van het hoofdgedeelte van de inhoud en is de belangrijkste kop die het algemene doel van de pagina beschrijft. Meer informatie over Kopjesstructuur.',
- HEADING_EMPTY_WITH_IMAGE: 'Een kop heeft geen tekst, maar bevat een afbeelding. Als dit geen koptekst is, verander de opmaak dan van Koptekst %(niveau) in Normaal of Paragraaf. Voeg anders alt-tekst toe aan de afbeelding als deze niet decoratief is.',
+ HEADING_EMPTY_WITH_IMAGE: 'Een kop heeft geen tekst, maar bevat een afbeelding. Als dit geen koptekst is, verander de opmaak dan van Koptekst %(level) in Normaal of Paragraaf. Voeg anders alt-tekst toe aan de afbeelding als deze niet decoratief is.',
PANEL_HEADING_MISSING_ONE: 'Rubriek 1 ontbreekt!',
+ PANEL_NO_HEADINGS: 'Geen koppen gevonden.',
LINK_EMPTY: 'Verwijder lege links zonder tekst.',
LINK_EMPTY_LINK_NO_LABEL: 'Link heeft geen leesbare tekst die zichtbaar is voor schermlezers en andere ondersteunende technologie. Op te lossen: - Voeg beknopte tekst toe die beschrijft waar de koppeling naartoe leidt.
- Als het een icon link of SVG, is, ontbreekt waarschijnlijk een beschrijvend label.
- Als u denkt dat deze koppeling een fout is als gevolg van een copy/paste-bug, kunt u overwegen deze te verwijderen.
',
- LINK_LABEL: 'Linklabel: %(gezuiverde tekst)',
+ LINK_LABEL: 'Linklabel: %(sanitizedText)',
LINK_STOPWORD: 'Linktekst is mogelijk niet beschrijvend genoeg buiten de context: %(error)
Tip! Linktekst moet altijd duidelijk, uniek en betekenisvol zijn. Vermijd veelgebruikte woorden zoals "klik hier" of "leer meer"',
LINK_BEST_PRACTICES: 'Overweeg om de tekst van de koppeling te vervangen: %(error)
- "Klik hier" legt de nadruk op muismechanica, terwijl veel mensen geen muis gebruiken of deze website mogelijk bekijken op een mobiel apparaat. Overweeg het gebruik van een ander werkwoord dat betrekking heeft op de taak.
- Vermijd het gebruik van HTML-symbolen als oproep tot actie, tenzij deze verborgen zijn voor ondersteunende technologieën.
',
LINK_URL: "Langere, minder begrijpelijke URL's die gebruikt worden als linktekst kunnen moeilijk te begrijpen zijn met hulptechnologie. In de meeste gevallen is het beter om menselijk leesbare tekst te gebruiken in plaats van de URL. Korte URL's (zoals de startpagina van een site) zijn prima.
Tip! Linktekst moet altijd duidelijk, uniek en betekenisvol zijn, zodat deze ook buiten de context kan worden begrepen.",
@@ -166,18 +183,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Afbeelding wordt gebruikt als een link met omringende tekst, hoewel het alt-attribuut als decoratief of null moet worden gemarkeerd.',
MISSING_ALT_LINK_MESSAGE: 'Afbeelding wordt gebruikt als link maar alt-tekst ontbreekt! Zorg ervoor dat de alt-tekst beschrijft waar de link naartoe leidt.',
MISSING_ALT_MESSAGE: 'Ontbrekende alt-tekst! Als de afbeelding een verhaal, sfeer of belangrijke informatie overbrengt, zorg er dan voor dat je de afbeelding beschrijft.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Bestandsextensie in de alt-tekst gevonden. Zorg ervoor dat de alt-tekst de bestemming van de link beschrijft en niet een letterlijke beschrijving van de afbeelding. Verwijderen: %(error).
Alt-tekst: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Bestandsextensie in de alt-tekst gevonden. Zorg ervoor dat de alt-tekst de bestemming van de link beschrijft en niet een letterlijke beschrijving van de afbeelding. Verwijderen: %(error).
Alt-tekst: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Niet-beschrijvende of plaatsvervangende alt-tekst binnen een gekoppelde afbeelding gevonden. Zorg ervoor dat de alt-tekst de bestemming van de link beschrijft en niet een letterlijke beschrijving van de afbeelding. Vervang de volgende alt-tekst: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Hulptechnologieën geven al aan dat het om een afbeelding gaat, dus "%(error)" kan overbodig zijn. Zorg ervoor dat de alt-tekst de bestemming van de link beschrijft en niet een letterlijke beschrijving van de afbeelding.
Alttekst: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Bestandsextensie in de gevonden alt-tekst. Als de afbeelding een verhaal, stemming of belangrijke informatie overbrengt, zorg er dan voor dat je de afbeelding beschrijft. Verwijderen: %(error).
Alt-tekst: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Bestandsextensie in de gevonden alt-tekst. Als de afbeelding een verhaal, stemming of belangrijke informatie overbrengt, zorg er dan voor dat je de afbeelding beschrijft. Verwijderen: %(error).
Alt-tekst: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Niet-beschrijvende of plaatshouder alt-tekst gevonden. Vervang de volgende alt-tekst door iets dat meer betekenis heeft: %(altText)',
ALT_HAS_SUS_WORD: 'Hulptechnologieën geven al aan dat dit een afbeelding is, dus "%(error)" kan overbodig zijn.
Alt tekst: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Link rond afbeelding heeft aria-hidden="true"
maar is nog steeds toetsenbordfocusbaar. Als je een overbodige of dubbele link wilt verbergen, voeg dan ook tabindex="-1"
toe.',
+ LINK_HIDDEN_FOCUSABLE: 'De link heeft aria-hidden="true"
, maar is nog steeds toegankelijk met het toetsenbord. Als je van plan bent om een overbodige of dubbele link te verbergen, voeg dan ook tabindex="-1"
toe.',
LINK_IMAGE_NO_ALT_TEXT: 'De afbeelding in de link is gemarkeerd als decoratief en er is geen linktekst. Voeg alt-tekst toe aan de afbeelding die de bestemming van de link beschrijft.',
LINK_IMAGE_HAS_TEXT: 'Afbeelding is gemarkeerd als decoratief, hoewel de link de omringende tekst gebruikt als beschrijvend label.',
LINK_IMAGE_LONG_ALT: 'Alt-tekstbeschrijving op een gekoppelde afbeelding is te lang. De alt-tekst op gelinkte afbeeldingen moet beschrijven waar de link je naartoe brengt, niet een letterlijke beschrijving van de afbeelding. Overweeg om de titel van de pagina waarnaar wordt gelinkt als alt-tekst te gebruiken.
Alt-tekst (%(altLength) tekens): %(altText)',
LINK_IMAGE_ALT_WARNING: 'De link naar de afbeelding bevat alt-tekst. Beschrijft de alt-tekst waar de link je naartoe brengt? Overweeg om de titel van de pagina waarnaar wordt gelinkt als alt-tekst te gebruiken.
Alttekst: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Als deze afbeelding decoratief is en wordt gebruikt als een functionele link naar een andere pagina, overweeg dan om de afbeelding als decoratief of null te markeren - de omringende linktekst zou moeten volstaan.
Alttekst: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Als deze afbeelding decoratief is en wordt gebruikt als een functionele link naar een andere pagina, overweeg dan om de afbeelding als decoratief of null te markeren - de omringende linktekst zou moeten volstaan.
Alttekst: %(altText)
Linklabel: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Afbeelding is gemarkeerd als decoratief en wordt genegeerd door ondersteunende technologie.
Hoewel er een bijschrift is opgegeven, moet de afbeelding in de meeste gevallen ook een alt-tekst hebben. - De alt-tekst moet een beknopte beschrijving geven van wat er in de afbeelding staat.
- Het bijschrift moet meestal context bieden om de afbeelding te relateren aan de omringende inhoud, of de aandacht vestigen op een bepaald stukje informatie.
Lees meer: alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Gebruik niet exact dezelfde woorden voor zowel de alt- als bijschrifttekst. Schermlezers zullen de informatie twee keer aankondigen.- De alt-tekst moet een beknopte beschrijving geven van wat er in de afbeelding staat.
- Het bijschrift moet meestal context bieden om de afbeelding te relateren aan de omringende inhoud, of de aandacht vestigen op een bepaald stukje informatie.
Meer informatie: alt versus figcaption.
Alt tekst: %(altText)',
IMAGE_DECORATIVE: 'De afbeelding is gemarkeerd als decoratief en wordt genegeerd door ondersteunende technologie. Als de afbeelding een verhaal, stemming of belangrijke informatie overbrengt, voeg dan alt-tekst toe.',
@@ -185,14 +202,15 @@
IMAGE_PASS: 'Alt tekst: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Bij de afbeeldingsknop ontbreekt alt-tekst. Voeg alt-tekst toe om een toegankelijke naam te geven. Bijvoorbeeld: Zoeken of Inzenden.',
LABELS_INPUT_RESET_MESSAGE: 'Resetknoppen moeten niet worden gebruikt tenzij ze specifiek nodig zijn, omdat ze gemakkelijk per ongeluk kunnen worden geactiveerd.
Tip!Lees waarom Reset- en annuleerknoppen bruikbaarheidsproblemen opleveren.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'De invoer heeft een toegankelijke naam, maar zorg ervoor dat er ook een zichtbaar label is.
De toegankelijke naam voor deze invoer is: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'De invoer heeft een toegankelijke naam, maar zorg ervoor dat er ook een zichtbaar label is.
Invoerlabel: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Er is geen label gekoppeld aan deze ingang. Voeg een for
-attribuut toe aan het label dat overeenkomt met de id
van deze ingang.
De ID voor deze ingang is: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Er is geen label gekoppeld aan deze ingang. Voeg een id
toe aan deze ingang en voeg een overeenkomend for
attribuut toe aan het label.',
EMBED_VIDEO: "Zorg ervoor dat alle video's zijn voorzien van ondertiteling. Het leveren van ondertiteling voor alle audio- en video-inhoud is een verplichte Level A-vereiste. Ondertiteling ondersteunt mensen die doof of slechthorend zijn.",
EMBED_AUDIO: 'Zorg voor een transcript voor alle podcasts. Het leveren van transcripts voor audio-inhoud is een verplichte Level A-vereiste. Transcripties ondersteunen mensen die doof of slechthorend zijn, maar iedereen kan er baat bij hebben. Overweeg om het transcript onder of in een accordeonpaneel te plaatsen.',
EMBED_DATA_VIZ: 'Widgets voor gegevensvisualisatie zoals deze zijn vaak problematisch voor mensen die een toetsenbord of schermlezer gebruiken om te navigeren, en kunnen aanzienlijke problemen opleveren voor mensen met slechtziendheid of kleurenblindheid. Het is aan te raden om dezelfde informatie in een alternatieve (tekst of tabel) indeling onder de widget aan te bieden.
Meer informatie over complexe afbeeldingen.',
- EMBED_MISSING_TITLE: 'Voor ingesloten inhoud is een toegankelijke naam nodig die de inhoud beschrijft. Geef een uniek title
of aria-label
attribuut op het iframe
element. Meer informatie over iFrames.',
+ EMBED_MISSING_TITLE: 'Voor ingesloten inhoud is een toegankelijke naam nodig die de inhoud beschrijft. Geef een uniek title
of aria-label
attribuut op het iframe
element. Meer informatie over iFrames.',
EMBED_GENERAL_WARNING: "Kan ingesloten inhoud niet controleren. Controleer of afbeeldingen alt-tekst hebben, video's bijschriften, tekst voldoende contrast en interactieve onderdelen toetsenbordtoegankelijk zijn.",
+ EMBED_UNFOCUSABLE: '<iframe>
met niet-focusbare elementen mag geen tabindex="-1"
hebben. De ingesloten inhoud zal niet toegankelijk zijn met het toetsenbord.',
QA_BAD_LINK: 'Slechte link gevonden. Link lijkt te verwijzen naar een ontwikkelomgeving.
Deze link verwijst naar:
%(el)',
QA_BAD_ITALICS: "Vetgedrukte en cursieve tags hebben een semantische betekenis en moeten niet worden gebruikt om hele alinea's te benadrukken. Vetgedrukte tekst moet worden gebruikt om een woord of zin sterk te accentueren. Cursief moet worden gebruikt om eigennamen (bijv. titels van boeken en artikelen), vreemde woorden en aanhalingstekens te benadrukken. Lange citaten moeten worden opgemaakt als een blokcitaat.",
QA_PDF: "Kan PDF's niet controleren op toegankelijkheid. PDF's worden beschouwd als webinhoud en moeten ook toegankelijk worden gemaakt. PDF's bevatten vaak problemen voor mensen die screenreaders gebruiken (ontbrekende structurele tags of ontbrekende labels voor formuliervelden) en mensen die slecht zien (tekst wordt niet weergegeven als deze wordt vergroot). - Als dit een formulier is, kunt u overwegen een toegankelijk HTML-formulier te gebruiken als alternatief.
- Als dit een document is, kunt u overwegen het te converteren naar een webpagina.
Ofwel controleer PDF op toegankelijkheid in Acrobat DC.",
diff --git a/assets/dist/js/lang/pl.js b/assets/dist/js/lang/pl.js
index bc23159..7b9f194 100644
--- a/assets/dist/js/lang/pl.js
+++ b/assets/dist/js/lang/pl.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,6 +51,16 @@ var pl = {
DISMISSED: 'Zignorowano ostrzeżenia',
DISMISS_REMINDER: 'Proszę zauważyć, że ostrzeżenia są ignorowane tylko tymczasowo. Wyczyszczenie historii przeglądarki i plików cookie przywróci wszystkie wcześniej ignorowane ostrzeżenia na wszystkich stronach.',
+ // Export
+ DATE: 'Data',
+ PAGE_TITLE: 'Tytuł strony',
+ RESULTS: 'Wyniki',
+ EXPORT_RESULTS: 'Eksportuj wyniki',
+ GENERATED: 'Wyniki wygenerowane za pomocą %(tool).',
+ PREVIEW: 'Podgląd',
+ ELEMENT: 'Element',
+ PATH: 'Ścieżka',
+
// Color filters
COLOUR_FILTER: 'Filtr kolorów',
PROTANOPIA: 'Protanopia',
@@ -142,6 +152,7 @@ var pl = {
HEADING_MISSING_ONE: 'Brakuje nagłówka H1. Nagłówek H1 jest głównym nagłówkiem opisującym ogólny cel strony i powinien być początkiem obszaru treści głównej. Dowiedz się więcej o Strukturze nagłówków.',
HEADING_EMPTY_WITH_IMAGE: 'Nagłówek nie ma tekstu, ale zawiera obrazek. Jeśli to nie jest nagłówek, zmień jego format z Nagłówek H%(level) na zwykły tekst lub akapit. W przeciwnym razie, dodaj do obrazu tekst alt, jeśli nie jest on ozdobny.',
PANEL_HEADING_MISSING_ONE: 'Brak Nagłówka 1!',
+ PANEL_NO_HEADINGS: 'Nie znaleziono nagłówków.',
// Links
LINK_EMPTY: 'Puste łącze bez żadnego tekstu. Usuń je!',
@@ -161,18 +172,18 @@ var pl = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Obraz jest używany razem z sąsiadującym tekstem jako łącze. Obraz powinien być oznaczony jako dekoracyjny albo atrybut alt obrazu powinien być pusty.',
MISSING_ALT_LINK_MESSAGE: 'Obraz jest używany jako łącze, ale brakuje tekstu alternatywnego! Dodaj tekst alternatywny, który mówi, dokąd prowadzi łącze.',
MISSING_ALT_MESSAGE: 'Brak tekstu alternatywnego! Jeśli obraz przekazuje historię, nastrój lub ważne informacje - przedstaw je w tekście alternatywnym.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'W tekście alt znaleziono rozszerzenie nazwy pliku. Upewnij się, że tekst alternatywny opisuje miejsce docelowe łącza, a nie treść lub wygląd obrazu. Usuń wyraz(y): %(error).
Tekst alternatywny: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'W tekście alt znaleziono rozszerzenie nazwy pliku. Upewnij się, że tekst alternatywny opisuje miejsce docelowe łącza, a nie treść lub wygląd obrazu. Usuń wyraz(y): %(error).
Tekst alternatywny: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Znaleziono nieopisowy lub zastępczy tekst alt w obrazie będącym łączem. Upewnij się, że tekst alternatywny opisuje miejsce docelowe łącza, a nie treść lub wygląd obrazu. Zastąp następujący tekst alt: %(altText).',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Technologie wspomagające już wskazują, że jest to obraz, więc "%(error)" mogą być zbędne. Upewnij się, że tekst alternatywny opisuje miejsce docelowe łącza, a nie treść lub wygląd obrazu.
Tekst alternatywny: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'W tekście alt znaleziono rozszerzenie nazwy pliku. Upewnij się, że tekst alternatywny opisuje miejsce docelowe łącza, a nie treść lub wygląd obrazu. Usuń wyraz(y): %(error).
Tekst alternatywny: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'W tekście alt znaleziono rozszerzenie nazwy pliku. Upewnij się, że tekst alternatywny opisuje miejsce docelowe łącza, a nie treść lub wygląd obrazu. Usuń wyraz(y): %(error).
Tekst alternatywny: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Znaleziono nieopisowy lub zastępczy tekst alt. Zamień poniższy tekst alt na coś bardziej znaczącego: %(altText).',
ALT_HAS_SUS_WORD: 'Technologie wspomagające już wskazują, że jest to obraz, więc "%(error)" mogą być zbędne.
Tekst alternatywny: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Łącze wokół obrazu ma aria-hidden="true"
, ale nadal można na nim ustawić fokus klawiatury. Jeśli chcesz ukryć zbędne lub zduplikowane łącze, dodaj również tabindex="-1"
',
+ LINK_HIDDEN_FOCUSABLE: 'Link ma ustawienie aria-hidden="true"
, ale nadal można go zaznaczyć za pomocą klawiatury. Jeśli zamierzasz ukryć nadmierny lub zduplikowany link, dodaj również tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Obraz w łączu jest oznaczony jako dekoracyjny i nie ma tekstu łącza. Dodaj do obrazu tekst alt, który opisze miejsce docelowe łącza.',
LINK_IMAGE_HAS_TEXT: 'Obraz jest oznaczony jako dekoracyjny, ale łącze używa otaczającego go tekstu jako etykiety opisowej.',
LINK_IMAGE_LONG_ALT: 'Tekst alternatywny opisujący obraz będący łączem jest zbyt długi. Tekst alternatywny na obrazach bedących łączami powinien przedstawiać, dokąd prowadzi łącze, a nie dosłownie opisywać obraz. Rozważ użycie jako tekstu alternatywnego tytułu strony, do którego łączy obraz.
Tekst alternatywny (%(altLength) znaków): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Link do obrazu zawiera tekst alternatywny. Czy tekst alternatywny opisuje, dokąd prowadzi link? Rozważ użycie tytułu strony, do której prowadzi link, jako tekstu alternatywnego.
Tekst alternatywny: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Łącze graficzne ma zarówno tekst alternatywny, jak i sąsiadujący tekst łącza. Jeśli ten obraz jest dekoracyjny i jest używany w funkcji łącza do innej strony, należy rozważyć oznaczenie obrazu jako dekoracyjnego (pusty alt) - sąsiadujący tekst łącza powinien wystarczyć.
Tekst alternatywny: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Łącze graficzne ma zarówno tekst alternatywny, jak i sąsiadujący tekst łącza. Jeśli ten obraz jest dekoracyjny i jest używany w funkcji łącza do innej strony, należy rozważyć oznaczenie obrazu jako dekoracyjnego (pusty alt) - sąsiadujący tekst łącza powinien wystarczyć.
Tekst alternatywny: %(altText)
Etykieta łącza: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Obraz jest oznaczony jako dekoracyjny i zostanie zignorowany przez technologię wspomagającą.
Mimo że podano podpis, obraz powinien w większości przypadków zawierać również tekst alternatywny.- Tekst alternatywny powinien zawierać zwięzły opis tego, co znajduje się na obrazku.
- Podpis powinien zwykle zawierać kontekst, aby powiązać obraz z otaczającą zawartością lub zwracać uwagę na konkretną informację.
Ucz się więcej: alternatywny kontra podpis graficzny.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Nie używaj dokładnie tych samych słów dla tekstu alternatywnego i podpisu. Czytniki ekranu podadzą informację dwukrotnie.- Tekst alternatywny powinien zawierać zwięzły opis tego, co znajduje się na obrazku.
- Podpis powinien zwykle zawierać kontekst, aby powiązać obraz z otaczającą zawartością lub zwracać uwagę na konkretną informację.
Ucz się więcej: alternatywny kontra podpis graficzny.
Tekst alternatywny: %(altText)',
IMAGE_DECORATIVE: 'Obraz jest oznaczony dekoracyjny i zostanie zignorowany przez technologię wspomagającą. Jeśli obraz przekazuje jakąś historię, nastrój lub ważną informację - dodaj tekst alt.',
@@ -182,7 +193,7 @@ var pl = {
// Labels
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Przycisk graficzny nie ma tekstu alternatywneego. Dodaj tekst alt, aby zapewnić dostępną nazwę. Na przykład: Szukaj lub Wyślij.',
LABELS_INPUT_RESET_MESSAGE: 'Przyciski resetowania nie powinny być używane, chyba że są specjalnie potrzebne, ponieważ łatwo je aktywować przez pomyłkę.
Porada! Dowiedz się, dlaczego Przyciski Resetuj i Anuluj powodują problemy z użytecznością.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Pole danych ma dostępną nazwę (etykietę), ale upewnij się, że etykieta jest również widoczna.
Dostępna nazwa tego pola to: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Pole danych ma dostępną nazwę (etykietę), ale upewnij się, że etykieta jest również widoczna.
Etykieta wejścia: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Z tym polem input nie jest skojarzona żadna etykieta (label). Dodaj atrybut for
do etykiety z wartością id
pasującą do id
tego pola.
ID tego pola to: id="%(t)"',
LABELS_MISSING_LABEL_MESSAGE: 'Z tym polem input nie jest skojarzona żadna etykieta (label). Dodaj do tego pola danych id
i dodaj pasujący atrybut for
do etykiety.',
@@ -190,7 +201,7 @@ var pl = {
EMBED_VIDEO: 'Upewnij się, że wszystkie filmy mają napisy rozszerzone. Zapewnianie napisów rozszerzonych dla wszystkich treści audio i wideo jest obowiązkowym wymogiem poziomu A. Napisy mają na celu wspieranie osób Głuchych i słabosłyszących.',
EMBED_AUDIO: 'Upewnij się, że istnieje transkrypcja dla wszystkich nagrań dźwiękowych. Zapewnianie transkrypcji treści audio jest obowiązkowym wymogiem poziomu A. Transkrypcje mają na celu wspieranie osób Głuchych i słabosłyszących, ale każdy może z nich skorzystać. Rozważ umieszczenie transkrypcji poniżej lub w panelu akordeonowym.',
EMBED_DATA_VIZ: 'Widżety wizualizacji danych, takie jak ten, są często problematyczne dla osób, które używają klawiatury lub czytnika ekranu do nawigacji, a także mogą stanowić znaczące trudności dla osób słabo widzących lub nie rozróżniających kolorów. Zapewnij te same infromacje w alternatywnym formacie (tekst lub tabela) pod widżetem.
Dowiedz się więcej o obrazach złożonych.',
- EMBED_MISSING_TITLE: 'Osadzona zawartość wymaga dostępnej nazwy, która opisuje jej treść. Dodaj unikalny title
lub atrybutu aria-label
do elementu iframe
. Dowiedz się więcej o iFrame.',
+ EMBED_MISSING_TITLE: 'Osadzona zawartość wymaga dostępnej nazwy, która opisuje jej treść. Dodaj unikalny title
lub atrybutu aria-label
do elementu iframe
. Dowiedz się więcej o iFrame.',
EMBED_GENERAL_WARNING: 'Nie można sprawdzić treści osadzonej. Upewnij się, że obrazy mają tekst alt, filmy mają napisy rozszerzone, tekst ma odpowiedni kontrast, a elementy interaktywne są dostępne z klawiatury.',
// Quality assurance
diff --git a/assets/dist/js/lang/pl.umd.js b/assets/dist/js/lang/pl.umd.js
index acd1b90..6824ce3 100644
--- a/assets/dist/js/lang/pl.umd.js
+++ b/assets/dist/js/lang/pl.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -57,6 +57,16 @@
DISMISSED: 'Zignorowano ostrzeżenia',
DISMISS_REMINDER: 'Proszę zauważyć, że ostrzeżenia są ignorowane tylko tymczasowo. Wyczyszczenie historii przeglądarki i plików cookie przywróci wszystkie wcześniej ignorowane ostrzeżenia na wszystkich stronach.',
+ // Export
+ DATE: 'Data',
+ PAGE_TITLE: 'Tytuł strony',
+ RESULTS: 'Wyniki',
+ EXPORT_RESULTS: 'Eksportuj wyniki',
+ GENERATED: 'Wyniki wygenerowane za pomocą %(tool).',
+ PREVIEW: 'Podgląd',
+ ELEMENT: 'Element',
+ PATH: 'Ścieżka',
+
// Color filters
COLOUR_FILTER: 'Filtr kolorów',
PROTANOPIA: 'Protanopia',
@@ -148,6 +158,7 @@
HEADING_MISSING_ONE: 'Brakuje nagłówka H1. Nagłówek H1 jest głównym nagłówkiem opisującym ogólny cel strony i powinien być początkiem obszaru treści głównej. Dowiedz się więcej o Strukturze nagłówków.',
HEADING_EMPTY_WITH_IMAGE: 'Nagłówek nie ma tekstu, ale zawiera obrazek. Jeśli to nie jest nagłówek, zmień jego format z Nagłówek H%(level) na zwykły tekst lub akapit. W przeciwnym razie, dodaj do obrazu tekst alt, jeśli nie jest on ozdobny.',
PANEL_HEADING_MISSING_ONE: 'Brak Nagłówka 1!',
+ PANEL_NO_HEADINGS: 'Nie znaleziono nagłówków.',
// Links
LINK_EMPTY: 'Puste łącze bez żadnego tekstu. Usuń je!',
@@ -167,18 +178,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Obraz jest używany razem z sąsiadującym tekstem jako łącze. Obraz powinien być oznaczony jako dekoracyjny albo atrybut alt obrazu powinien być pusty.',
MISSING_ALT_LINK_MESSAGE: 'Obraz jest używany jako łącze, ale brakuje tekstu alternatywnego! Dodaj tekst alternatywny, który mówi, dokąd prowadzi łącze.',
MISSING_ALT_MESSAGE: 'Brak tekstu alternatywnego! Jeśli obraz przekazuje historię, nastrój lub ważne informacje - przedstaw je w tekście alternatywnym.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'W tekście alt znaleziono rozszerzenie nazwy pliku. Upewnij się, że tekst alternatywny opisuje miejsce docelowe łącza, a nie treść lub wygląd obrazu. Usuń wyraz(y): %(error).
Tekst alternatywny: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'W tekście alt znaleziono rozszerzenie nazwy pliku. Upewnij się, że tekst alternatywny opisuje miejsce docelowe łącza, a nie treść lub wygląd obrazu. Usuń wyraz(y): %(error).
Tekst alternatywny: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Znaleziono nieopisowy lub zastępczy tekst alt w obrazie będącym łączem. Upewnij się, że tekst alternatywny opisuje miejsce docelowe łącza, a nie treść lub wygląd obrazu. Zastąp następujący tekst alt: %(altText).',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Technologie wspomagające już wskazują, że jest to obraz, więc "%(error)" mogą być zbędne. Upewnij się, że tekst alternatywny opisuje miejsce docelowe łącza, a nie treść lub wygląd obrazu.
Tekst alternatywny: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'W tekście alt znaleziono rozszerzenie nazwy pliku. Upewnij się, że tekst alternatywny opisuje miejsce docelowe łącza, a nie treść lub wygląd obrazu. Usuń wyraz(y): %(error).
Tekst alternatywny: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'W tekście alt znaleziono rozszerzenie nazwy pliku. Upewnij się, że tekst alternatywny opisuje miejsce docelowe łącza, a nie treść lub wygląd obrazu. Usuń wyraz(y): %(error).
Tekst alternatywny: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Znaleziono nieopisowy lub zastępczy tekst alt. Zamień poniższy tekst alt na coś bardziej znaczącego: %(altText).',
ALT_HAS_SUS_WORD: 'Technologie wspomagające już wskazują, że jest to obraz, więc "%(error)" mogą być zbędne.
Tekst alternatywny: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Łącze wokół obrazu ma aria-hidden="true"
, ale nadal można na nim ustawić fokus klawiatury. Jeśli chcesz ukryć zbędne lub zduplikowane łącze, dodaj również tabindex="-1"
',
+ LINK_HIDDEN_FOCUSABLE: 'Link ma ustawienie aria-hidden="true"
, ale nadal można go zaznaczyć za pomocą klawiatury. Jeśli zamierzasz ukryć nadmierny lub zduplikowany link, dodaj również tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Obraz w łączu jest oznaczony jako dekoracyjny i nie ma tekstu łącza. Dodaj do obrazu tekst alt, który opisze miejsce docelowe łącza.',
LINK_IMAGE_HAS_TEXT: 'Obraz jest oznaczony jako dekoracyjny, ale łącze używa otaczającego go tekstu jako etykiety opisowej.',
LINK_IMAGE_LONG_ALT: 'Tekst alternatywny opisujący obraz będący łączem jest zbyt długi. Tekst alternatywny na obrazach bedących łączami powinien przedstawiać, dokąd prowadzi łącze, a nie dosłownie opisywać obraz. Rozważ użycie jako tekstu alternatywnego tytułu strony, do którego łączy obraz.
Tekst alternatywny (%(altLength) znaków): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Link do obrazu zawiera tekst alternatywny. Czy tekst alternatywny opisuje, dokąd prowadzi link? Rozważ użycie tytułu strony, do której prowadzi link, jako tekstu alternatywnego.
Tekst alternatywny: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Łącze graficzne ma zarówno tekst alternatywny, jak i sąsiadujący tekst łącza. Jeśli ten obraz jest dekoracyjny i jest używany w funkcji łącza do innej strony, należy rozważyć oznaczenie obrazu jako dekoracyjnego (pusty alt) - sąsiadujący tekst łącza powinien wystarczyć.
Tekst alternatywny: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Łącze graficzne ma zarówno tekst alternatywny, jak i sąsiadujący tekst łącza. Jeśli ten obraz jest dekoracyjny i jest używany w funkcji łącza do innej strony, należy rozważyć oznaczenie obrazu jako dekoracyjnego (pusty alt) - sąsiadujący tekst łącza powinien wystarczyć.
Tekst alternatywny: %(altText)
Etykieta łącza: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Obraz jest oznaczony jako dekoracyjny i zostanie zignorowany przez technologię wspomagającą.
Mimo że podano podpis, obraz powinien w większości przypadków zawierać również tekst alternatywny.- Tekst alternatywny powinien zawierać zwięzły opis tego, co znajduje się na obrazku.
- Podpis powinien zwykle zawierać kontekst, aby powiązać obraz z otaczającą zawartością lub zwracać uwagę na konkretną informację.
Ucz się więcej: alternatywny kontra podpis graficzny.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Nie używaj dokładnie tych samych słów dla tekstu alternatywnego i podpisu. Czytniki ekranu podadzą informację dwukrotnie.- Tekst alternatywny powinien zawierać zwięzły opis tego, co znajduje się na obrazku.
- Podpis powinien zwykle zawierać kontekst, aby powiązać obraz z otaczającą zawartością lub zwracać uwagę na konkretną informację.
Ucz się więcej: alternatywny kontra podpis graficzny.
Tekst alternatywny: %(altText)',
IMAGE_DECORATIVE: 'Obraz jest oznaczony dekoracyjny i zostanie zignorowany przez technologię wspomagającą. Jeśli obraz przekazuje jakąś historię, nastrój lub ważną informację - dodaj tekst alt.',
@@ -188,7 +199,7 @@
// Labels
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Przycisk graficzny nie ma tekstu alternatywneego. Dodaj tekst alt, aby zapewnić dostępną nazwę. Na przykład: Szukaj lub Wyślij.',
LABELS_INPUT_RESET_MESSAGE: 'Przyciski resetowania nie powinny być używane, chyba że są specjalnie potrzebne, ponieważ łatwo je aktywować przez pomyłkę.
Porada! Dowiedz się, dlaczego Przyciski Resetuj i Anuluj powodują problemy z użytecznością.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Pole danych ma dostępną nazwę (etykietę), ale upewnij się, że etykieta jest również widoczna.
Dostępna nazwa tego pola to: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Pole danych ma dostępną nazwę (etykietę), ale upewnij się, że etykieta jest również widoczna.
Etykieta wejścia: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Z tym polem input nie jest skojarzona żadna etykieta (label). Dodaj atrybut for
do etykiety z wartością id
pasującą do id
tego pola.
ID tego pola to: id="%(t)"',
LABELS_MISSING_LABEL_MESSAGE: 'Z tym polem input nie jest skojarzona żadna etykieta (label). Dodaj do tego pola danych id
i dodaj pasujący atrybut for
do etykiety.',
@@ -196,7 +207,7 @@
EMBED_VIDEO: 'Upewnij się, że wszystkie filmy mają napisy rozszerzone. Zapewnianie napisów rozszerzonych dla wszystkich treści audio i wideo jest obowiązkowym wymogiem poziomu A. Napisy mają na celu wspieranie osób Głuchych i słabosłyszących.',
EMBED_AUDIO: 'Upewnij się, że istnieje transkrypcja dla wszystkich nagrań dźwiękowych. Zapewnianie transkrypcji treści audio jest obowiązkowym wymogiem poziomu A. Transkrypcje mają na celu wspieranie osób Głuchych i słabosłyszących, ale każdy może z nich skorzystać. Rozważ umieszczenie transkrypcji poniżej lub w panelu akordeonowym.',
EMBED_DATA_VIZ: 'Widżety wizualizacji danych, takie jak ten, są często problematyczne dla osób, które używają klawiatury lub czytnika ekranu do nawigacji, a także mogą stanowić znaczące trudności dla osób słabo widzących lub nie rozróżniających kolorów. Zapewnij te same infromacje w alternatywnym formacie (tekst lub tabela) pod widżetem.
Dowiedz się więcej o obrazach złożonych.',
- EMBED_MISSING_TITLE: 'Osadzona zawartość wymaga dostępnej nazwy, która opisuje jej treść. Dodaj unikalny title
lub atrybutu aria-label
do elementu iframe
. Dowiedz się więcej o iFrame.',
+ EMBED_MISSING_TITLE: 'Osadzona zawartość wymaga dostępnej nazwy, która opisuje jej treść. Dodaj unikalny title
lub atrybutu aria-label
do elementu iframe
. Dowiedz się więcej o iFrame.',
EMBED_GENERAL_WARNING: 'Nie można sprawdzić treści osadzonej. Upewnij się, że obrazy mają tekst alt, filmy mają napisy rozszerzone, tekst ma odpowiedni kontrast, a elementy interaktywne są dostępne z klawiatury.',
// Quality assurance
diff --git a/assets/dist/js/lang/ptBR.js b/assets/dist/js/lang/ptBR.js
index 8f90b3d..9b9d569 100644
--- a/assets/dist/js/lang/ptBR.js
+++ b/assets/dist/js/lang/ptBR.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var ptBR = {
HEADING_NOT_VISIBLE_ALERT: 'O cabeçalho não é visível; ele pode estar oculto ou dentro de um componente de acordeão ou guia.',
SKIP_TO_PAGE_ISSUES: 'Pular para os problemas da página',
CONSOLE_ERROR_MESSAGE: 'Desculpe, mas há um problema com o verificador de acessibilidade nesta página. Você pode relatar o problema por meio deste formulário ou no GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Mostrar %(dismissCount) avisos descartados',
DISMISS: 'Dispensar',
DISMISSED: 'Avisos indeferidos',
DISMISS_REMINDER: 'Observe que os avisos são descartados apenas temporariamente. A limpeza do histórico e dos cookies do navegador restaurará todos os avisos descartados anteriormente em todas as páginas.',
+
+ // Export
+ DATE: 'Data',
+ PAGE_TITLE: 'Título da página',
+ RESULTS: 'Resultados',
+ EXPORT_RESULTS: 'Exportar resultados',
+ GENERATED: 'Resultados gerados com %(tool).',
+ PREVIEW: 'Visualização',
+ ELEMENT: 'Elemento',
+ PATH: 'Caminho',
+
+ // Colour filters
COLOUR_FILTER: 'Filtro de cores',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -60,6 +74,8 @@ var ptBR = {
BLUE_EYE: 'Cego azul.',
MONO_EYE: 'Cego para vermelho, azul e verde.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Os filtros de cores não funcionam no modo de alto contraste.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'imagem',
'gráfico',
@@ -139,6 +155,7 @@ var ptBR = {
HEADING_MISSING_ONE: 'Falta de título 1. O título 1 deve ser o início da área de conteúdo principal e é o título principal que descreve o objetivo geral da página. Saiba mais sobre Estrutura de cabeçalho.',
HEADING_EMPTY_WITH_IMAGE: 'O cabeçalho não tem texto, mas contém uma imagem. Se esse não for um cabeçalho, altere seu formato de Título %(level) para Normal ou Parágrafo. Caso contrário, adicione texto alternativo à imagem se ela não for decorativa.',
PANEL_HEADING_MISSING_ONE: 'Falta o cabeçalho 1!',
+ PANEL_NO_HEADINGS: 'Nenhuma cabeçalho encontrado.',
LINK_EMPTY: 'Remova links vazios sem nenhum texto.',
LINK_EMPTY_LINK_NO_LABEL: 'O link não tem texto discernível que seja visível para leitores de tela e outras tecnologias assistivas. Para corrigir: - Adicione um texto conciso que descreva para onde o link o leva.
- Se for um link de ícone ou SVG, é provável que esteja faltando um rótulo descritivo.
- Se você acha que esse link é um erro devido a um bug de copiar/colar, considere excluí-lo.
',
LINK_LABEL: 'Rótulo do link: %(sanitizedText)',
@@ -152,18 +169,18 @@ var ptBR = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'A imagem está sendo usada como um link com texto ao redor, embora o atributo alt deva ser marcado como decorativo ou nulo.',
MISSING_ALT_LINK_MESSAGE: 'A imagem está sendo usada como um link, mas está faltando o texto alternativo! Certifique-se de que o texto alternativo descreva para onde o link leva você.',
MISSING_ALT_MESSAGE: 'Texto alternativo ausente! Se a imagem transmitir uma história, um clima ou informações importantes, não deixe de descrevê-la.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Extensão de arquivo encontrada no texto alternativo. Certifique-se de que o texto alternativo descreva o destino do link, e não uma descrição literal da imagem. Remover: %(error).
Texto alternativo: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Extensão de arquivo encontrada no texto alternativo. Certifique-se de que o texto alternativo descreva o destino do link, e não uma descrição literal da imagem. Remover: %(error).
Texto alternativo: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Encontrado texto alternativo não descritivo ou de espaço reservado em uma imagem vinculada. Certifique-se de que o texto alternativo descreva o destino do link e não uma descrição literal da imagem. Substitua o seguinte texto alternativo: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'As tecnologias assistivas já indicam que se trata de uma imagem, portanto, "%(error)" pode ser redundante. Certifique-se de que o texto alternativo descreva o destino do link, e não uma descrição literal da imagem.
Texto alternativo: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Extensão do arquivo no texto alternativo encontrado. Se a imagem transmitir uma história, um clima ou informações importantes, não deixe de descrevê-la. Remover: %(erro).
Texto alternativo: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Extensão do arquivo no texto alternativo encontrado. Se a imagem transmitir uma história, um clima ou informações importantes, não deixe de descrevê-la. Remover: %(erro).
Texto alternativo: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Texto alternativo não descritivo ou de espaço reservado encontrado. Substitua o texto alternativo a seguir por algo mais significativo: %(altText)',
ALT_HAS_SUS_WORD: 'As tecnologias assistivas já indicam que se trata de uma imagem, portanto, "%(error)" pode ser redundante.
Texto alternativo: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'O link ao redor da imagem tem aria-hidden="true"
, mas ainda pode ser focalizado pelo teclado. Se estiver pretendendo ocultar um link redundante ou duplicado, adicione tabindex="-1"
também.',
+ LINK_HIDDEN_FOCUSABLE: 'O link possui aria-hidden="true"
, mas ainda é focável pelo teclado. Se você pretende ocultar um link redundante ou duplicado, adicione também tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'A imagem no link está marcada como decorativa e não há texto de link. Adicione um texto alternativo à imagem que descreva o destino do link.',
LINK_IMAGE_HAS_TEXT: 'A imagem é marcada como decorativa, embora o link esteja usando o texto ao redor como um rótulo descritivo.',
LINK_IMAGE_LONG_ALT: 'A descrição do texto alternativo em uma imagem vinculada é muito longa. O texto alternativo das imagens vinculadas deve descrever para onde o link leva você, e não uma descrição literal da imagem. Considere a possibilidade de usar o título da página para a qual o link está direcionado como o texto alternativo.
Texto alternativo (%(altLength) caracteres): %(altText)',
LINK_IMAGE_ALT_WARNING: 'O link da imagem contém texto alternativo. O texto alternativo descreve para onde o link leva você? Considere a possibilidade de usar o título da página para a qual o link está direcionado como texto alternativo.
Texto alternativo: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'O link da imagem contém texto alt e texto do link ao redor. Se essa imagem for decorativa e estiver sendo usada como um link funcional para outra página, considere marcar a imagem como decorativa ou nula - o texto do link ao redor deve ser suficiente.
Texto alternativo: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'O link da imagem contém texto alt e texto do link ao redor. Se essa imagem for decorativa e estiver sendo usada como um link funcional para outra página, considere marcar a imagem como decorativa ou nula - o texto do link ao redor deve ser suficiente.
Texto alternativo: %(altText)
Rótulo do link: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'A imagem está marcada como decorativa e será ignorada pela tecnologia assistiva.
Embora uma caption tenha sido fornecida, a imagem também deve ter um texto alternativo na maioria dos casos. - O texto alternativo deve fornecer uma descrição concisa do que está na imagem.
- A legenda geralmente deve fornecer contexto para relacionar a imagem ao conteúdo ao redor ou dar atenção a uma informação específica.
Saiba mais: alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Não use exatamente as mesmas palavras para o texto alternativo e para a legenda. Os leitores de tela anunciarão as informações duas vezes.- O texto alt deve fornecer uma descrição concisa do que está na imagem.
- A legenda geralmente deve fornecer contexto para relacionar a imagem ao conteúdo ao redor ou dar atenção a uma informação específica.
Saiba mais: alt versus figcaption.
Texto alternativo: %(altText)',
IMAGE_DECORATIVE: 'A imagem é marcada como decorativa e será ignorada pela tecnologia assistiva. Se a imagem transmitir uma história, um clima ou informações importantes, não se esqueça de adicionar um texto alternativo.',
@@ -171,14 +188,15 @@ var ptBR = {
IMAGE_PASS: 'Texto alternativo: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'O botão de imagem está sem texto alternativo. Adicione o texto alternativo para fornecer um nome acessível. Por exemplo: Search ou Submit.',
LABELS_INPUT_RESET_MESSAGE: 'Os botões de reinicialização não devem ser usados, a menos que sejam especificamente necessários, pois são fáceis de serem ativados por engano.
Dica! Saiba por que os botões Redefinir e Cancelar apresentam problemas de usabilidade.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'A entrada tem um nome acessível, mas certifique-se de que também haja um rótulo visível.
O nome acessível para esse input é: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'A entrada tem um nome acessível, mas certifique-se de que também haja um rótulo visível.
Rótulo de entrada: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Não há rótulo associado a esse input. Adicione um atributo for
ao rótulo que corresponda ao id
desse input.
O ID desse input é: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Não há rótulo associado a essa entrada. Adicione um id
a essa entrada e adicione um atributo for
correspondente ao rótulo.',
EMBED_VIDEO: 'Certifique-se de que todos os vídeos tenham legendas ocultas. Fornecer legendas para todo o conteúdo de áudio e vídeo é um requisito obrigatório do Nível A. As legendas ajudam as pessoas com deficiência auditiva ou surdas.',
EMBED_AUDIO: 'Certifique-se de fornecer uma transcrição para todos os podcasts. Fornecer transcrições para conteúdo de áudio é um requisito obrigatório do Nível A. As transcrições ajudam as pessoas com deficiência auditiva ou surdas, mas podem beneficiar a todos. Considere colocar a transcrição abaixo ou em um painel sanfonado.',
EMBED_DATA_VIZ: 'Widgets de visualização de dados como esse costumam ser problemáticos para pessoas que usam um teclado ou leitor de tela para navegar e podem apresentar dificuldades significativas para pessoas com baixa visão ou daltonismo. Recomenda-se fornecer as mesmas informações em um formato alternativo (texto ou tabela) abaixo do widget.
Saiba mais sobre imagens complexas.',
- EMBED_MISSING_TITLE: 'O conteúdo incorporado requer um nome acessível que descreva seu conteúdo. Forneça um atributo title
ou aria-label
exclusivo no elemento iframe
. Saiba mais sobre iFrames.',
+ EMBED_MISSING_TITLE: 'O conteúdo incorporado requer um nome acessível que descreva seu conteúdo. Forneça um atributo title
ou aria-label
exclusivo no elemento iframe
. Saiba mais sobre iFrames.',
EMBED_GENERAL_WARNING: 'Não foi possível verificar o conteúdo incorporado. Certifique-se de que as imagens tenham texto alternativo, os vídeos tenham legendas, o texto tenha contraste suficiente e os componentes interativos sejam acessíveis ao teclado.',
+ EMBED_UNFOCUSABLE: '<iframe>
com elementos não focalizáveis não deve ter tabindex="-1"
. O conteúdo incorporado não será acessível pelo teclado.',
QA_BAD_LINK: 'Encontrado link incorreto. O link parece apontar para um ambiente de desenvolvimento.
Esse link aponta para:
%(el)',
QA_BAD_ITALICS: 'As tags negrito e itálico têm significado semântico e não devem ser usadas para destacar parágrafos inteiros. O texto em negrito deve ser usado para dar forte ênfase a uma palavra ou frase. O itálico deve ser usado para destacar nomes próprios (ou seja, títulos de livros e artigos), palavras estrangeiras e citações. As citações longas devem ser formatadas como uma citação em bloco.',
QA_PDF: 'Não é possível verificar a acessibilidade de PDFs. Os PDFs são considerados conteúdo da Web e também devem ser acessíveis. Os PDFs geralmente contêm problemas para pessoas que usam leitores de tela (tags estruturais ausentes ou rótulos de campo de formulário ausentes) e pessoas com baixa visão (o texto não flui novamente quando ampliado). - Se este for um formulário, considere o uso de um formulário HTML acessível como alternativa.
- Se este for um documento, considere convertê-lo em uma página da Web.
Caso contrário, verifique a acessibilidade do PDF no Acrobat DC.',
diff --git a/assets/dist/js/lang/ptBR.umd.js b/assets/dist/js/lang/ptBR.umd.js
index da558cd..a11102b 100644
--- a/assets/dist/js/lang/ptBR.umd.js
+++ b/assets/dist/js/lang/ptBR.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: 'O cabeçalho não é visível; ele pode estar oculto ou dentro de um componente de acordeão ou guia.',
SKIP_TO_PAGE_ISSUES: 'Pular para os problemas da página',
CONSOLE_ERROR_MESSAGE: 'Desculpe, mas há um problema com o verificador de acessibilidade nesta página. Você pode relatar o problema por meio deste formulário ou no GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Mostrar %(dismissCount) avisos descartados',
DISMISS: 'Dispensar',
DISMISSED: 'Avisos indeferidos',
DISMISS_REMINDER: 'Observe que os avisos são descartados apenas temporariamente. A limpeza do histórico e dos cookies do navegador restaurará todos os avisos descartados anteriormente em todas as páginas.',
+
+ // Export
+ DATE: 'Data',
+ PAGE_TITLE: 'Título da página',
+ RESULTS: 'Resultados',
+ EXPORT_RESULTS: 'Exportar resultados',
+ GENERATED: 'Resultados gerados com %(tool).',
+ PREVIEW: 'Visualização',
+ ELEMENT: 'Elemento',
+ PATH: 'Caminho',
+
+ // Colour filters
COLOUR_FILTER: 'Filtro de cores',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -66,6 +80,8 @@
BLUE_EYE: 'Cego azul.',
MONO_EYE: 'Cego para vermelho, azul e verde.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Os filtros de cores não funcionam no modo de alto contraste.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'imagem',
'gráfico',
@@ -145,6 +161,7 @@
HEADING_MISSING_ONE: 'Falta de título 1. O título 1 deve ser o início da área de conteúdo principal e é o título principal que descreve o objetivo geral da página. Saiba mais sobre Estrutura de cabeçalho.',
HEADING_EMPTY_WITH_IMAGE: 'O cabeçalho não tem texto, mas contém uma imagem. Se esse não for um cabeçalho, altere seu formato de Título %(level) para Normal ou Parágrafo. Caso contrário, adicione texto alternativo à imagem se ela não for decorativa.',
PANEL_HEADING_MISSING_ONE: 'Falta o cabeçalho 1!',
+ PANEL_NO_HEADINGS: 'Nenhuma cabeçalho encontrado.',
LINK_EMPTY: 'Remova links vazios sem nenhum texto.',
LINK_EMPTY_LINK_NO_LABEL: 'O link não tem texto discernível que seja visível para leitores de tela e outras tecnologias assistivas. Para corrigir: - Adicione um texto conciso que descreva para onde o link o leva.
- Se for um link de ícone ou SVG, é provável que esteja faltando um rótulo descritivo.
- Se você acha que esse link é um erro devido a um bug de copiar/colar, considere excluí-lo.
',
LINK_LABEL: 'Rótulo do link: %(sanitizedText)',
@@ -158,18 +175,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'A imagem está sendo usada como um link com texto ao redor, embora o atributo alt deva ser marcado como decorativo ou nulo.',
MISSING_ALT_LINK_MESSAGE: 'A imagem está sendo usada como um link, mas está faltando o texto alternativo! Certifique-se de que o texto alternativo descreva para onde o link leva você.',
MISSING_ALT_MESSAGE: 'Texto alternativo ausente! Se a imagem transmitir uma história, um clima ou informações importantes, não deixe de descrevê-la.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Extensão de arquivo encontrada no texto alternativo. Certifique-se de que o texto alternativo descreva o destino do link, e não uma descrição literal da imagem. Remover: %(error).
Texto alternativo: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Extensão de arquivo encontrada no texto alternativo. Certifique-se de que o texto alternativo descreva o destino do link, e não uma descrição literal da imagem. Remover: %(error).
Texto alternativo: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Encontrado texto alternativo não descritivo ou de espaço reservado em uma imagem vinculada. Certifique-se de que o texto alternativo descreva o destino do link e não uma descrição literal da imagem. Substitua o seguinte texto alternativo: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'As tecnologias assistivas já indicam que se trata de uma imagem, portanto, "%(error)" pode ser redundante. Certifique-se de que o texto alternativo descreva o destino do link, e não uma descrição literal da imagem.
Texto alternativo: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Extensão do arquivo no texto alternativo encontrado. Se a imagem transmitir uma história, um clima ou informações importantes, não deixe de descrevê-la. Remover: %(erro).
Texto alternativo: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Extensão do arquivo no texto alternativo encontrado. Se a imagem transmitir uma história, um clima ou informações importantes, não deixe de descrevê-la. Remover: %(erro).
Texto alternativo: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Texto alternativo não descritivo ou de espaço reservado encontrado. Substitua o texto alternativo a seguir por algo mais significativo: %(altText)',
ALT_HAS_SUS_WORD: 'As tecnologias assistivas já indicam que se trata de uma imagem, portanto, "%(error)" pode ser redundante.
Texto alternativo: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'O link ao redor da imagem tem aria-hidden="true"
, mas ainda pode ser focalizado pelo teclado. Se estiver pretendendo ocultar um link redundante ou duplicado, adicione tabindex="-1"
também.',
+ LINK_HIDDEN_FOCUSABLE: 'O link possui aria-hidden="true"
, mas ainda é focável pelo teclado. Se você pretende ocultar um link redundante ou duplicado, adicione também tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'A imagem no link está marcada como decorativa e não há texto de link. Adicione um texto alternativo à imagem que descreva o destino do link.',
LINK_IMAGE_HAS_TEXT: 'A imagem é marcada como decorativa, embora o link esteja usando o texto ao redor como um rótulo descritivo.',
LINK_IMAGE_LONG_ALT: 'A descrição do texto alternativo em uma imagem vinculada é muito longa. O texto alternativo das imagens vinculadas deve descrever para onde o link leva você, e não uma descrição literal da imagem. Considere a possibilidade de usar o título da página para a qual o link está direcionado como o texto alternativo.
Texto alternativo (%(altLength) caracteres): %(altText)',
LINK_IMAGE_ALT_WARNING: 'O link da imagem contém texto alternativo. O texto alternativo descreve para onde o link leva você? Considere a possibilidade de usar o título da página para a qual o link está direcionado como texto alternativo.
Texto alternativo: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'O link da imagem contém texto alt e texto do link ao redor. Se essa imagem for decorativa e estiver sendo usada como um link funcional para outra página, considere marcar a imagem como decorativa ou nula - o texto do link ao redor deve ser suficiente.
Texto alternativo: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'O link da imagem contém texto alt e texto do link ao redor. Se essa imagem for decorativa e estiver sendo usada como um link funcional para outra página, considere marcar a imagem como decorativa ou nula - o texto do link ao redor deve ser suficiente.
Texto alternativo: %(altText)
Rótulo do link: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'A imagem está marcada como decorativa e será ignorada pela tecnologia assistiva.
Embora uma caption tenha sido fornecida, a imagem também deve ter um texto alternativo na maioria dos casos. - O texto alternativo deve fornecer uma descrição concisa do que está na imagem.
- A legenda geralmente deve fornecer contexto para relacionar a imagem ao conteúdo ao redor ou dar atenção a uma informação específica.
Saiba mais: alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Não use exatamente as mesmas palavras para o texto alternativo e para a legenda. Os leitores de tela anunciarão as informações duas vezes.- O texto alt deve fornecer uma descrição concisa do que está na imagem.
- A legenda geralmente deve fornecer contexto para relacionar a imagem ao conteúdo ao redor ou dar atenção a uma informação específica.
Saiba mais: alt versus figcaption.
Texto alternativo: %(altText)',
IMAGE_DECORATIVE: 'A imagem é marcada como decorativa e será ignorada pela tecnologia assistiva. Se a imagem transmitir uma história, um clima ou informações importantes, não se esqueça de adicionar um texto alternativo.',
@@ -177,14 +194,15 @@
IMAGE_PASS: 'Texto alternativo: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'O botão de imagem está sem texto alternativo. Adicione o texto alternativo para fornecer um nome acessível. Por exemplo: Search ou Submit.',
LABELS_INPUT_RESET_MESSAGE: 'Os botões de reinicialização não devem ser usados, a menos que sejam especificamente necessários, pois são fáceis de serem ativados por engano.
Dica! Saiba por que os botões Redefinir e Cancelar apresentam problemas de usabilidade.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'A entrada tem um nome acessível, mas certifique-se de que também haja um rótulo visível.
O nome acessível para esse input é: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'A entrada tem um nome acessível, mas certifique-se de que também haja um rótulo visível.
Rótulo de entrada: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Não há rótulo associado a esse input. Adicione um atributo for
ao rótulo que corresponda ao id
desse input.
O ID desse input é: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Não há rótulo associado a essa entrada. Adicione um id
a essa entrada e adicione um atributo for
correspondente ao rótulo.',
EMBED_VIDEO: 'Certifique-se de que todos os vídeos tenham legendas ocultas. Fornecer legendas para todo o conteúdo de áudio e vídeo é um requisito obrigatório do Nível A. As legendas ajudam as pessoas com deficiência auditiva ou surdas.',
EMBED_AUDIO: 'Certifique-se de fornecer uma transcrição para todos os podcasts. Fornecer transcrições para conteúdo de áudio é um requisito obrigatório do Nível A. As transcrições ajudam as pessoas com deficiência auditiva ou surdas, mas podem beneficiar a todos. Considere colocar a transcrição abaixo ou em um painel sanfonado.',
EMBED_DATA_VIZ: 'Widgets de visualização de dados como esse costumam ser problemáticos para pessoas que usam um teclado ou leitor de tela para navegar e podem apresentar dificuldades significativas para pessoas com baixa visão ou daltonismo. Recomenda-se fornecer as mesmas informações em um formato alternativo (texto ou tabela) abaixo do widget.
Saiba mais sobre imagens complexas.',
- EMBED_MISSING_TITLE: 'O conteúdo incorporado requer um nome acessível que descreva seu conteúdo. Forneça um atributo title
ou aria-label
exclusivo no elemento iframe
. Saiba mais sobre iFrames.',
+ EMBED_MISSING_TITLE: 'O conteúdo incorporado requer um nome acessível que descreva seu conteúdo. Forneça um atributo title
ou aria-label
exclusivo no elemento iframe
. Saiba mais sobre iFrames.',
EMBED_GENERAL_WARNING: 'Não foi possível verificar o conteúdo incorporado. Certifique-se de que as imagens tenham texto alternativo, os vídeos tenham legendas, o texto tenha contraste suficiente e os componentes interativos sejam acessíveis ao teclado.',
+ EMBED_UNFOCUSABLE: '<iframe>
com elementos não focalizáveis não deve ter tabindex="-1"
. O conteúdo incorporado não será acessível pelo teclado.',
QA_BAD_LINK: 'Encontrado link incorreto. O link parece apontar para um ambiente de desenvolvimento.
Esse link aponta para:
%(el)',
QA_BAD_ITALICS: 'As tags negrito e itálico têm significado semântico e não devem ser usadas para destacar parágrafos inteiros. O texto em negrito deve ser usado para dar forte ênfase a uma palavra ou frase. O itálico deve ser usado para destacar nomes próprios (ou seja, títulos de livros e artigos), palavras estrangeiras e citações. As citações longas devem ser formatadas como uma citação em bloco.',
QA_PDF: 'Não é possível verificar a acessibilidade de PDFs. Os PDFs são considerados conteúdo da Web e também devem ser acessíveis. Os PDFs geralmente contêm problemas para pessoas que usam leitores de tela (tags estruturais ausentes ou rótulos de campo de formulário ausentes) e pessoas com baixa visão (o texto não flui novamente quando ampliado). - Se este for um formulário, considere o uso de um formulário HTML acessível como alternativa.
- Se este for um documento, considere convertê-lo em uma página da Web.
Caso contrário, verifique a acessibilidade do PDF no Acrobat DC.',
diff --git a/assets/dist/js/lang/ptPT.js b/assets/dist/js/lang/ptPT.js
index c4d7391..e00f852 100644
--- a/assets/dist/js/lang/ptPT.js
+++ b/assets/dist/js/lang/ptPT.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var ptPT = {
HEADING_NOT_VISIBLE_ALERT: 'O cabeçalho não é visível; pode estar oculto ou dentro de um componente de acordeão ou separador.',
SKIP_TO_PAGE_ISSUES: 'Saltar para os problemas da página',
CONSOLE_ERROR_MESSAGE: 'Desculpe, mas há um problema com o verificador de acessibilidade nesta página. Pode, por favor, relatar o problema através deste formulário ou no GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Mostrar %(dismissCount) avisos rejeitados',
DISMISS: 'Rejeitar',
DISMISSED: 'Advertências rejeitadas',
DISMISS_REMINDER: 'Tenha em atenção que os avisos são apenas temporariamente rejeitados. Limpar o histórico e os cookies do seu browser irá restaurar todos os avisos anteriormente rejeitados em todas as páginas.',
+
+ // Export
+ DATE: 'Data',
+ PAGE_TITLE: 'Título da página',
+ RESULTS: 'Resultados',
+ EXPORT_RESULTS: 'Exportar resultados',
+ GENERATED: 'Resultados gerados com %(tool).',
+ PREVIEW: 'Pré-visualização',
+ ELEMENT: 'Elemento',
+ PATH: 'Caminho',
+
+ // Colour filters
COLOUR_FILTER: 'Filtro de cor',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -60,6 +74,8 @@ var ptPT = {
BLUE_EYE: 'Cego azul.',
MONO_EYE: 'Cego vermelho, azul e verde.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Os filtros de cor não funcionam no modo de alto contraste.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'imagem',
'gráfico',
@@ -141,6 +157,7 @@ var ptPT = {
HEADING_MISSING_ONE: 'Falta o Título 1. O Título 1 deve ser o início da área de conteúdo principal e é o título principal que descreve o objetivo geral da página. Saiba mais sobre Estrutura de cabeçalho.',
HEADING_EMPTY_WITH_IMAGE: 'O cabeçalho não tem texto, mas contém uma imagem. Se não for um cabeçalho, altere o formato de Título %(level) para Normal ou Parágrafo. Caso contrário, adicione texto alternativo à imagem se esta não for decorativa.',
PANEL_HEADING_MISSING_ONE: 'Falta o título 1!',
+ PANEL_NO_HEADINGS: 'Não foram encontrados cabeçalhos.',
LINK_EMPTY: 'Remover ligações vazias sem qualquer texto.',
LINK_EMPTY_LINK_NO_LABEL: 'A ligação não tem texto discernível que seja visível para leitores de ecrã e outras tecnologias de assistência. Para corrigir: - Adicione um texto conciso que descreva para onde o link o leva.
- Se for um link de ícone ou SVG, é provável que esteja faltando um rótulo descritivo.
- Se você acha que esse link é um erro devido a um bug de copiar/colar, considere excluí-lo.
',
LINK_LABEL: 'Rótulo do link: %(sanitizedText)',
@@ -154,18 +171,18 @@ var ptPT = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'A imagem está a ser utilizada como uma ligação com texto envolvente, embora o atributo alt deva ser marcado como decorativo ou nulo.',
MISSING_ALT_LINK_MESSAGE: 'A imagem está a ser utilizada como uma ligação, mas falta o texto alternativo! Certifique-se de que o texto alternativo descreve para onde a hiperligação o leva.',
MISSING_ALT_MESSAGE: 'Texto alternativo em falta! Se a imagem transmite uma história, um estado de espírito ou uma informação importante, não se esqueça de a descrever.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Extensão de ficheiro no texto alternativo encontrada. Certifique-se de que o texto alternativo descreve o destino da hiperligação e não uma descrição literal da imagem. Remover: %(error).
Texto alternativo: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Extensão de ficheiro no texto alternativo encontrada. Certifique-se de que o texto alternativo descreve o destino da hiperligação e não uma descrição literal da imagem. Remover: %(error).
Texto alternativo: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Encontrado texto alternativo não descritivo ou de espaço reservado numa imagem ligada. Certifique-se de que o texto alternativo descreve o destino da hiperligação e não uma descrição literal da imagem. Substitua o seguinte texto alternativo: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'As tecnologias de assistência já indicam que se trata de uma imagem, pelo que "%(error)" pode ser redundante. Certifique-se de que o texto alternativo descreve o destino da hiperligação e não uma descrição literal da imagem.
Texto alternativo: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Extensão do ficheiro no texto alternativo encontrado. Se a imagem transmitir uma história, um estado de espírito ou uma informação importante, não se esqueça de a descrever. Remover: %(erro).
Texto alternativo: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Extensão do ficheiro no texto alternativo encontrado. Se a imagem transmitir uma história, um estado de espírito ou uma informação importante, não se esqueça de a descrever. Remover: %(erro).
Texto alternativo: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Encontrado texto alternativo não descritivo ou de espaço reservado. Substitua o seguinte texto alternativo por algo mais significativo: %(altText)',
ALT_HAS_SUS_WORD: 'As tecnologias de assistência já indicam que se trata de uma imagem, pelo que "%(error)" pode ser redundante.
Texto alternativo: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'O link em torno da imagem tem aria-hidden="true"
, mas ainda pode ser focalizado pelo teclado. Se a intenção é esconder um link redundante ou duplicado, adicione tabindex="-1"
também.',
+ LINK_HIDDEN_FOCUSABLE: 'O link tem aria-hidden="true"
, mas ainda é focável pelo teclado. Se pretende ocultar um link redundante ou duplicado, adicione também tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'A imagem na hiperligação está marcada como decorativa e não tem texto de hiperligação. Adicione um texto alternativo à imagem que descreva o destino da hiperligação.',
LINK_IMAGE_HAS_TEXT: 'A imagem está marcada como decorativa, embora a ligação esteja a utilizar o texto circundante como etiqueta descritiva.',
LINK_IMAGE_LONG_ALT: 'A descrição do texto alternativo numa imagem ligada é muito longa. O texto alternativo em imagens vinculadas deve descrever para onde o link o leva, não uma descrição literal da imagem. Considere usar o título da página para a qual o link leva como o texto alternativo.
Texto alternativo (%(altLength) caracteres): %(altText)',
LINK_IMAGE_ALT_WARNING: 'A hiperligação da imagem contém texto alternativo. O texto alternativo descreve para onde o link o leva? Considere a possibilidade de utilizar o título da página para a qual a ligação remete como texto alternativo.
Texto alternativo: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Se esta imagem for decorativa e estiver a ser utilizada como uma ligação funcional a outra página, considere marcar a imagem como decorativa ou nula - o texto da ligação circundante deve ser suficiente.
Texto alternativo: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Se esta imagem for decorativa e estiver a ser utilizada como uma ligação funcional a outra página, considere marcar a imagem como decorativa ou nula - o texto da ligação circundante deve ser suficiente.
Texto alternativo: %(altText)
Rótulo do link: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'A imagem está marcada como decorativa e será ignorada pela tecnologia de assistência.
Embora tenha sido fornecida uma capa, a imagem também deve ter um texto alternativo na maioria dos casos. - O texto alternativo deve fornecer uma descrição concisa do que está na imagem.
- A legenda deve normalmente fornecer contexto para relacionar a imagem com o conteúdo circundante ou dar atenção a uma informação específica.
Saiba mais: alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Não utilize exatamente as mesmas palavras para o texto alternativo e para a legenda. Os leitores de ecrã anunciarão a informação duas vezes.- O texto alternativo deve fornecer uma descrição concisa do que está na imagem.
- A legenda deve normalmente fornecer contexto para relacionar a imagem com o conteúdo circundante ou dar atenção a uma informação específica.
Saiba mais: alt versus figcaption.
Texto alternativo: %(altText)',
IMAGE_DECORATIVE: 'A imagem está marcada como decorativa e será ignorada pela tecnologia de assistência. Se a imagem transmitir uma história, um estado de espírito ou informações importantes, não se esqueça de adicionar texto alternativo.',
@@ -173,14 +190,15 @@ var ptPT = {
IMAGE_PASS: 'Texto alternativo: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'O botão de imagem não tem texto alternativo. Adicione texto alternativo para fornecer um nome acessível. Por exemplo: Pesquisar ou Submeter.',
LABELS_INPUT_RESET_MESSAGE: 'Os botões de reinicialização não devem ser usados a menos que sejam especificamente necessários, pois são fáceis de ativar por engano.
Dica! Saiba por que os botões Redefinir e Cancelar apresentam problemas de usabilidade.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'A entrada tem um nome acessível, mas certifique-se de que também existe uma etiqueta visível.
O nome acessível para esta entrada é: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'A entrada tem um nome acessível, mas certifique-se de que também existe uma etiqueta visível.
Rótulo de entrada: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Não existe um rótulo associado a esta entrada. Adicione um atributo for
ao rótulo que corresponde ao id
desta entrada.
O ID para esta entrada é: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Não existe uma etiqueta associada a esta entrada. Adicione um id
a esta entrada e adicione um atributo for
correspondente à etiqueta.',
EMBED_VIDEO: 'Por favor, certifique-se de que todos os vídeos têm legendas fechadas. Fornecer legendas para todo o conteúdo de áudio e vídeo é um requisito obrigatório de Nível A. As legendas ajudam as pessoas com deficiência auditiva ou surdas.',
EMBED_AUDIO: 'Certifique-se de que fornece uma transcrição para todos os podcasts. Fornecer transcrições para conteúdo áudio é um requisito obrigatório de Nível A. As transcrições ajudam as pessoas surdas ou com dificuldades auditivas, mas podem beneficiar toda a gente. Considere colocar a transcrição abaixo ou num painel de acordeão.',
EMBED_DATA_VIZ: 'Os widgets de visualização de dados como este são frequentemente problemáticos para as pessoas que utilizam um teclado ou um leitor de ecrã para navegar e podem apresentar dificuldades significativas para as pessoas com baixa visão ou daltonismo. É recomendável fornecer as mesmas informações em um formato alternativo (texto ou tabela) abaixo do widget.
Saiba mais sobre imagens complexas.',
- EMBED_MISSING_TITLE: 'O conteúdo incorporado requer um nome acessível que descreva o seu conteúdo. Forneça um atributo title
ou aria-label
exclusivo no elemento iframe
. Saiba mais sobre iFrames.',
+ EMBED_MISSING_TITLE: 'O conteúdo incorporado requer um nome acessível que descreva o seu conteúdo. Forneça um atributo title
ou aria-label
exclusivo no elemento iframe
. Saiba mais sobre iFrames.',
EMBED_GENERAL_WARNING: 'Não é possível verificar o conteúdo incorporado. Certifique-se de que as imagens têm texto alternativo, os vídeos têm legendas, o texto tem contraste suficiente e os componentes interactivos são acessíveis ao teclado.',
+ EMBED_UNFOCUSABLE: '<iframe>
com elementos não focáveis não deve ter tabindex="-1"
. O conteúdo incorporado não será acessível pelo teclado.',
QA_BAD_LINK: 'Encontrada uma ligação incorrecta. O link parece apontar para um ambiente de desenvolvimento.
Este link aponta para:
%(el)',
QA_BAD_ITALICS: 'As etiquetas de negrito e itálico têm um significado semântico e não devem ser utilizadas para destacar parágrafos inteiros. O texto em negrito deve ser utilizado para dar ênfase a uma palavra ou frase. O itálico deve ser usado para destacar nomes próprios (ou seja, títulos de livros e artigos), palavras estrangeiras e citações. As citações longas devem ser formatadas como uma citação em bloco.',
QA_PDF: 'Não é possível verificar a acessibilidade dos PDFs. Os PDFs são considerados conteúdos Web e também devem ser tornados acessíveis. Os PDFs contêm frequentemente problemas para pessoas que utilizam leitores de ecrã (etiquetas estruturais em falta ou etiquetas de campos de formulário em falta) e pessoas com baixa visão (o texto não flui quando ampliado). - Se se tratar de um formulário, considere a utilização de um formulário HTML acessível como alternativa.
- Se se tratar de um documento, considere a conversão do mesmo numa página Web.
De outra forma, verifique a acessibilidade do PDF no Acrobat DC.',
diff --git a/assets/dist/js/lang/ptPT.umd.js b/assets/dist/js/lang/ptPT.umd.js
index 0c41da2..f8696ef 100644
--- a/assets/dist/js/lang/ptPT.umd.js
+++ b/assets/dist/js/lang/ptPT.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: 'O cabeçalho não é visível; pode estar oculto ou dentro de um componente de acordeão ou separador.',
SKIP_TO_PAGE_ISSUES: 'Saltar para os problemas da página',
CONSOLE_ERROR_MESSAGE: 'Desculpe, mas há um problema com o verificador de acessibilidade nesta página. Pode, por favor, relatar o problema através deste formulário ou no GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Mostrar %(dismissCount) avisos rejeitados',
DISMISS: 'Rejeitar',
DISMISSED: 'Advertências rejeitadas',
DISMISS_REMINDER: 'Tenha em atenção que os avisos são apenas temporariamente rejeitados. Limpar o histórico e os cookies do seu browser irá restaurar todos os avisos anteriormente rejeitados em todas as páginas.',
+
+ // Export
+ DATE: 'Data',
+ PAGE_TITLE: 'Título da página',
+ RESULTS: 'Resultados',
+ EXPORT_RESULTS: 'Exportar resultados',
+ GENERATED: 'Resultados gerados com %(tool).',
+ PREVIEW: 'Pré-visualização',
+ ELEMENT: 'Elemento',
+ PATH: 'Caminho',
+
+ // Colour filters
COLOUR_FILTER: 'Filtro de cor',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -66,6 +80,8 @@
BLUE_EYE: 'Cego azul.',
MONO_EYE: 'Cego vermelho, azul e verde.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Os filtros de cor não funcionam no modo de alto contraste.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'imagem',
'gráfico',
@@ -147,6 +163,7 @@
HEADING_MISSING_ONE: 'Falta o Título 1. O Título 1 deve ser o início da área de conteúdo principal e é o título principal que descreve o objetivo geral da página. Saiba mais sobre Estrutura de cabeçalho.',
HEADING_EMPTY_WITH_IMAGE: 'O cabeçalho não tem texto, mas contém uma imagem. Se não for um cabeçalho, altere o formato de Título %(level) para Normal ou Parágrafo. Caso contrário, adicione texto alternativo à imagem se esta não for decorativa.',
PANEL_HEADING_MISSING_ONE: 'Falta o título 1!',
+ PANEL_NO_HEADINGS: 'Não foram encontrados cabeçalhos.',
LINK_EMPTY: 'Remover ligações vazias sem qualquer texto.',
LINK_EMPTY_LINK_NO_LABEL: 'A ligação não tem texto discernível que seja visível para leitores de ecrã e outras tecnologias de assistência. Para corrigir: - Adicione um texto conciso que descreva para onde o link o leva.
- Se for um link de ícone ou SVG, é provável que esteja faltando um rótulo descritivo.
- Se você acha que esse link é um erro devido a um bug de copiar/colar, considere excluí-lo.
',
LINK_LABEL: 'Rótulo do link: %(sanitizedText)',
@@ -160,18 +177,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'A imagem está a ser utilizada como uma ligação com texto envolvente, embora o atributo alt deva ser marcado como decorativo ou nulo.',
MISSING_ALT_LINK_MESSAGE: 'A imagem está a ser utilizada como uma ligação, mas falta o texto alternativo! Certifique-se de que o texto alternativo descreve para onde a hiperligação o leva.',
MISSING_ALT_MESSAGE: 'Texto alternativo em falta! Se a imagem transmite uma história, um estado de espírito ou uma informação importante, não se esqueça de a descrever.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Extensão de ficheiro no texto alternativo encontrada. Certifique-se de que o texto alternativo descreve o destino da hiperligação e não uma descrição literal da imagem. Remover: %(error).
Texto alternativo: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Extensão de ficheiro no texto alternativo encontrada. Certifique-se de que o texto alternativo descreve o destino da hiperligação e não uma descrição literal da imagem. Remover: %(error).
Texto alternativo: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Encontrado texto alternativo não descritivo ou de espaço reservado numa imagem ligada. Certifique-se de que o texto alternativo descreve o destino da hiperligação e não uma descrição literal da imagem. Substitua o seguinte texto alternativo: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'As tecnologias de assistência já indicam que se trata de uma imagem, pelo que "%(error)" pode ser redundante. Certifique-se de que o texto alternativo descreve o destino da hiperligação e não uma descrição literal da imagem.
Texto alternativo: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Extensão do ficheiro no texto alternativo encontrado. Se a imagem transmitir uma história, um estado de espírito ou uma informação importante, não se esqueça de a descrever. Remover: %(erro).
Texto alternativo: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Extensão do ficheiro no texto alternativo encontrado. Se a imagem transmitir uma história, um estado de espírito ou uma informação importante, não se esqueça de a descrever. Remover: %(erro).
Texto alternativo: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Encontrado texto alternativo não descritivo ou de espaço reservado. Substitua o seguinte texto alternativo por algo mais significativo: %(altText)',
ALT_HAS_SUS_WORD: 'As tecnologias de assistência já indicam que se trata de uma imagem, pelo que "%(error)" pode ser redundante.
Texto alternativo: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'O link em torno da imagem tem aria-hidden="true"
, mas ainda pode ser focalizado pelo teclado. Se a intenção é esconder um link redundante ou duplicado, adicione tabindex="-1"
também.',
+ LINK_HIDDEN_FOCUSABLE: 'O link tem aria-hidden="true"
, mas ainda é focável pelo teclado. Se pretende ocultar um link redundante ou duplicado, adicione também tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'A imagem na hiperligação está marcada como decorativa e não tem texto de hiperligação. Adicione um texto alternativo à imagem que descreva o destino da hiperligação.',
LINK_IMAGE_HAS_TEXT: 'A imagem está marcada como decorativa, embora a ligação esteja a utilizar o texto circundante como etiqueta descritiva.',
LINK_IMAGE_LONG_ALT: 'A descrição do texto alternativo numa imagem ligada é muito longa. O texto alternativo em imagens vinculadas deve descrever para onde o link o leva, não uma descrição literal da imagem. Considere usar o título da página para a qual o link leva como o texto alternativo.
Texto alternativo (%(altLength) caracteres): %(altText)',
LINK_IMAGE_ALT_WARNING: 'A hiperligação da imagem contém texto alternativo. O texto alternativo descreve para onde o link o leva? Considere a possibilidade de utilizar o título da página para a qual a ligação remete como texto alternativo.
Texto alternativo: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Se esta imagem for decorativa e estiver a ser utilizada como uma ligação funcional a outra página, considere marcar a imagem como decorativa ou nula - o texto da ligação circundante deve ser suficiente.
Texto alternativo: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Se esta imagem for decorativa e estiver a ser utilizada como uma ligação funcional a outra página, considere marcar a imagem como decorativa ou nula - o texto da ligação circundante deve ser suficiente.
Texto alternativo: %(altText)
Rótulo do link: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'A imagem está marcada como decorativa e será ignorada pela tecnologia de assistência.
Embora tenha sido fornecida uma capa, a imagem também deve ter um texto alternativo na maioria dos casos. - O texto alternativo deve fornecer uma descrição concisa do que está na imagem.
- A legenda deve normalmente fornecer contexto para relacionar a imagem com o conteúdo circundante ou dar atenção a uma informação específica.
Saiba mais: alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Não utilize exatamente as mesmas palavras para o texto alternativo e para a legenda. Os leitores de ecrã anunciarão a informação duas vezes.- O texto alternativo deve fornecer uma descrição concisa do que está na imagem.
- A legenda deve normalmente fornecer contexto para relacionar a imagem com o conteúdo circundante ou dar atenção a uma informação específica.
Saiba mais: alt versus figcaption.
Texto alternativo: %(altText)',
IMAGE_DECORATIVE: 'A imagem está marcada como decorativa e será ignorada pela tecnologia de assistência. Se a imagem transmitir uma história, um estado de espírito ou informações importantes, não se esqueça de adicionar texto alternativo.',
@@ -179,14 +196,15 @@
IMAGE_PASS: 'Texto alternativo: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'O botão de imagem não tem texto alternativo. Adicione texto alternativo para fornecer um nome acessível. Por exemplo: Pesquisar ou Submeter.',
LABELS_INPUT_RESET_MESSAGE: 'Os botões de reinicialização não devem ser usados a menos que sejam especificamente necessários, pois são fáceis de ativar por engano.
Dica! Saiba por que os botões Redefinir e Cancelar apresentam problemas de usabilidade.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'A entrada tem um nome acessível, mas certifique-se de que também existe uma etiqueta visível.
O nome acessível para esta entrada é: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'A entrada tem um nome acessível, mas certifique-se de que também existe uma etiqueta visível.
Rótulo de entrada: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Não existe um rótulo associado a esta entrada. Adicione um atributo for
ao rótulo que corresponde ao id
desta entrada.
O ID para esta entrada é: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Não existe uma etiqueta associada a esta entrada. Adicione um id
a esta entrada e adicione um atributo for
correspondente à etiqueta.',
EMBED_VIDEO: 'Por favor, certifique-se de que todos os vídeos têm legendas fechadas. Fornecer legendas para todo o conteúdo de áudio e vídeo é um requisito obrigatório de Nível A. As legendas ajudam as pessoas com deficiência auditiva ou surdas.',
EMBED_AUDIO: 'Certifique-se de que fornece uma transcrição para todos os podcasts. Fornecer transcrições para conteúdo áudio é um requisito obrigatório de Nível A. As transcrições ajudam as pessoas surdas ou com dificuldades auditivas, mas podem beneficiar toda a gente. Considere colocar a transcrição abaixo ou num painel de acordeão.',
EMBED_DATA_VIZ: 'Os widgets de visualização de dados como este são frequentemente problemáticos para as pessoas que utilizam um teclado ou um leitor de ecrã para navegar e podem apresentar dificuldades significativas para as pessoas com baixa visão ou daltonismo. É recomendável fornecer as mesmas informações em um formato alternativo (texto ou tabela) abaixo do widget.
Saiba mais sobre imagens complexas.',
- EMBED_MISSING_TITLE: 'O conteúdo incorporado requer um nome acessível que descreva o seu conteúdo. Forneça um atributo title
ou aria-label
exclusivo no elemento iframe
. Saiba mais sobre iFrames.',
+ EMBED_MISSING_TITLE: 'O conteúdo incorporado requer um nome acessível que descreva o seu conteúdo. Forneça um atributo title
ou aria-label
exclusivo no elemento iframe
. Saiba mais sobre iFrames.',
EMBED_GENERAL_WARNING: 'Não é possível verificar o conteúdo incorporado. Certifique-se de que as imagens têm texto alternativo, os vídeos têm legendas, o texto tem contraste suficiente e os componentes interactivos são acessíveis ao teclado.',
+ EMBED_UNFOCUSABLE: '<iframe>
com elementos não focáveis não deve ter tabindex="-1"
. O conteúdo incorporado não será acessível pelo teclado.',
QA_BAD_LINK: 'Encontrada uma ligação incorrecta. O link parece apontar para um ambiente de desenvolvimento.
Este link aponta para:
%(el)',
QA_BAD_ITALICS: 'As etiquetas de negrito e itálico têm um significado semântico e não devem ser utilizadas para destacar parágrafos inteiros. O texto em negrito deve ser utilizado para dar ênfase a uma palavra ou frase. O itálico deve ser usado para destacar nomes próprios (ou seja, títulos de livros e artigos), palavras estrangeiras e citações. As citações longas devem ser formatadas como uma citação em bloco.',
QA_PDF: 'Não é possível verificar a acessibilidade dos PDFs. Os PDFs são considerados conteúdos Web e também devem ser tornados acessíveis. Os PDFs contêm frequentemente problemas para pessoas que utilizam leitores de ecrã (etiquetas estruturais em falta ou etiquetas de campos de formulário em falta) e pessoas com baixa visão (o texto não flui quando ampliado). - Se se tratar de um formulário, considere a utilização de um formulário HTML acessível como alternativa.
- Se se tratar de um documento, considere a conversão do mesmo numa página Web.
De outra forma, verifique a acessibilidade do PDF no Acrobat DC.',
diff --git a/assets/dist/js/lang/ro.js b/assets/dist/js/lang/ro.js
index 8ec5cbc..0d749af 100644
--- a/assets/dist/js/lang/ro.js
+++ b/assets/dist/js/lang/ro.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var ro = {
HEADING_NOT_VISIBLE_ALERT: 'Rubrica nu este vizibilă; poate fi ascunsă sau în interiorul unui acordeon sau al unei componente de tablă.',
SKIP_TO_PAGE_ISSUES: 'Treceți la pagina Probleme',
CONSOLE_ERROR_MESSAGE: 'Ne pare rău, dar există o problemă cu verificatorul de accesibilitate de pe această pagină. Puteți vă rog raportați-o prin intermediul acestui formular sau pe GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Afișează %(dismissCount) avertismente respinse',
DISMISS: 'Respingeți',
DISMISSED: 'Avertismente respinse',
DISMISS_REMINDER: 'Vă rugăm să rețineți că avertismentele sunt doar temporar respinse. Ștergerea istoricului și a cookie-urilor din browserul dvs. va restabili toate avertismentele respinse anterior pe toate paginile.',
+
+ // Export
+ DATE: 'Data',
+ PAGE_TITLE: 'Titlul paginii',
+ RESULTS: 'Rezultate',
+ EXPORT_RESULTS: 'Exportă rezultatele',
+ GENERATED: 'Rezultate generate cu %(tool).',
+ PREVIEW: 'Previzualizare',
+ ELEMENT: 'Element',
+ PATH: 'Cale',
+
+ // Colour filters
COLOUR_FILTER: 'Filtru de culoare',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -60,6 +74,8 @@ var ro = {
BLUE_EYE: 'Orb albastru.',
MONO_EYE: 'Orbitor roșu, albastru și verde.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Filtrele de culoare nu funcționează în modul de contrast ridicat.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'imagine',
'grafic',
@@ -139,9 +155,10 @@ var ro = {
HEADING_MISSING_ONE: 'Lipsește titlul 1. Titlul 1 ar trebui să fie începutul zonei principale de conținut și este titlul principal care descrie scopul general al paginii. Aflați mai multe despre Structura titlurilor..',
HEADING_EMPTY_WITH_IMAGE: 'Rubrica nu are text, dar conține o imagine. Dacă acesta nu este un titlu, schimbați-i formatul din Heading %(level) în Normal sau Paragraf. În caz contrar, vă rugăm să adăugați text alt la imagine, dacă aceasta nu este decorativă.',
PANEL_HEADING_MISSING_ONE: 'Lipsește rubrica 1!',
+ PANEL_NO_HEADINGS: 'Nu s-au găsit antete.',
LINK_EMPTY: 'Eliminați legăturile goale fără text.',
LINK_EMPTY_LINK_NO_LABEL: 'Linkul nu are un text vizibil pentru cititorii de ecran și alte tehnologii de asistență. Pentru a remedia problema: - Adaugați un text concis care să descrie unde vă duce linkul.
- Dacă este un link cu pictograme sau SVG, este probabil să lipsească o etichetă descriptivă.
- Dacă credeți că acest link este o eroare datorată unui bug de copy/paste, luați în considerare ștergerea lui.
.',
- LINK_LABEL: 'Link label: %(sanitizedText)',
+ LINK_LABEL: 'Etichetă de legătură: %(sanitizedText)',
LINK_STOPWORD: 'Este posibil ca textul linkului să nu fie suficient de descriptiv în afara contextului: %(error)
Tip! Textul linkului trebuie să fie întotdeauna clar, unic și semnificativ. Evitați cuvintele comune precum "click aici" sau "află mai multe"',
LINK_BEST_PRACTICES: 'Luați în considerare înlocuirea textului linkului: %(error)
- "Click aici" pune accentul pe mecanica mouse-ului, când mulți oameni nu folosesc un mouse sau pot vizualiza acest site web pe un dispozitiv mobil. Luați în considerare utilizarea unui verb diferit care să aibă legătură cu sarcina.
- Evitați utilizarea simbolurilor HTML ca apel la acțiuni, cu excepția cazului în care acestea sunt ascunse pentru tehnologiile de asistență.
',
LINK_URL: 'URL-urile mai lungi și mai puțin inteligibile folosite ca text de link ar putea fi dificil de înțeles atunci când sunt accesate cu ajutorul tehnologiei de asistență. În cele mai multe cazuri, este mai bine să folosiți un text lizibil pentru oameni în locul URL-ului. URL-urile scurte (cum ar fi pagina de pornire a unui site) sunt în regulă.
Tip! Textul linkului trebuie să fie întotdeauna clar, unic și semnificativ, astfel încât să poată fi înțeles în afara contextului.',
@@ -152,18 +169,18 @@ var ro = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Imaginea este utilizată ca link cu text în jur, deși atributul alt ar trebui să fie marcat ca fiind decorativ sau nul.',
MISSING_ALT_LINK_MESSAGE: 'Imaginea este folosită ca link, dar lipsește textul alt! Vă rugăm să vă asigurați că textul alternativ descrie unde vă duce link-ul.',
MISSING_ALT_MESSAGE: 'Lipsește alt text! Dacă imaginea transmite o poveste, o stare de spirit sau o informație importantă, nu uitați să descrieți imaginea.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Extensia fișierului din textul alternativ găsit. Asigurați-vă că textul alternativ descrie destinația linkului și nu o descriere literală a imaginii. Eliminați: %(eroare).
Text alternativ: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Extensia fișierului din textul alternativ găsit. Asigurați-vă că textul alternativ descrie destinația linkului și nu o descriere literală a imaginii. Eliminați: %(eroare).
Text alternativ: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Text alt necorespunzător sau cu caracter de locțiitor într-o imagine legată găsit. Asigurați-vă că textul alternativ descrie destinația linkului și nu o descriere literală a imaginii. Înlocuiți următorul text alt: %(altText).',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Tehnologiile asistive indică deja că aceasta este o imagine, astfel încât "%(error)" poate fi redundant. Asigurați-vă că textul alt descrie destinația linkului, nu o descriere literală a imaginii.
Text alternativ: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Extensia fișierului din textul alternativ găsit. Dacă imaginea transmite o poveste, o stare de spirit sau o informație importantă, nu uitați să descrieți imaginea. Eliminați: %(error).
Text alternativ: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Extensia fișierului din textul alternativ găsit. Dacă imaginea transmite o poveste, o stare de spirit sau o informație importantă, nu uitați să descrieți imaginea. Eliminați: %(error).
Text alternativ: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'A fost găsit un text alt nedescriptat sau un text alt de tip placeholder. Înlocuiți următorul text alt cu ceva mai semnificativ: %(altText).',
ALT_HAS_SUS_WORD: 'Tehnologiile asistive indică deja că aceasta este o imagine, astfel încât "%(error)" poate fi redundant.
Text alternativ: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Legătura din jurul imaginii are aria-hidden="true"
, dar este în continuare focalizabilă de la tastatură. Dacă intenționați să ascundeți un link redundant sau duplicat, adăugați și tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Link-ul are aria-hidden="true"
, dar este încă focalizabil cu tastatura. Dacă intenționați să ascundeți un link redundant sau duplicat, adăugați și tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Imaginea din cadrul linkului este marcată ca fiind decorativă și nu există text de link. Vă rugăm să adăugați la imagine un text alt care să descrie destinația linkului.',
LINK_IMAGE_HAS_TEXT: 'Imaginea este marcată ca fiind decorativă, deși link-ul folosește textul din jur ca etichetă descriptivă.',
LINK_IMAGE_LONG_ALT: 'Descrierea textului Alt de pe o imagine legată este prea lungă. Textul alt de pe imaginile cu link ar trebui să descrie unde duce link-ul, nu o descriere literală a imaginii. Considerați să folosiți titlul paginii către care se face legătura ca text alt.
Text alt (%(altLength) caractere): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Legătura imaginii conține text alternativ. Textul alt descrie unde vă duce link-ul? Luați în considerare utilizarea titlului paginii către care se face legătura ca text alternativ.
Text alternativ: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Legătura de imagine conține atât textul alt cât și textul de legătură din jur. Dacă această imagine este decorativă și este folosită ca o legătură funcțională către o altă pagină, luați în considerare marcarea imaginii ca fiind decorativă sau nulă - textul de legătură din jur ar trebui să fie suficient.
Text alternativ: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Legătura de imagine conține atât textul alt cât și textul de legătură din jur. Dacă această imagine este decorativă și este folosită ca o legătură funcțională către o altă pagină, luați în considerare marcarea imaginii ca fiind decorativă sau nulă - textul de legătură din jur ar trebui să fie suficient.
Text alternativ: %(altText)
Etichetă de legătură: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Imaginea este marcată ca fiind decorativă și va fi ignorată de tehnologia de asistență.
Deși a fost furnizat un caption, imaginea ar trebui să aibă, de asemenea, un text alt în majoritatea cazurilor. - Textul alt ar trebui să ofere o descriere concisă a ceea ce se află în imagine.
- De obicei, legenda ar trebui să ofere un context pentru a relaționa imaginea cu conținutul din jur sau să atragă atenția asupra unei anumite informații.
Aflați mai multe: alt versus figcaption..',
IMAGE_FIGURE_DUPLICATE_ALT: 'Nu folosiți exact aceleași cuvinte atât pentru textul alt, cât și pentru legendă. Cititoarele de ecran vor anunța informațiile de două ori.- Textul alt ar trebui să ofere o descriere concisă a ceea ce se află în imagine.
- Legenda ar trebui, de obicei, să ofere un context pentru a relaționa imaginea cu conținutul din jur sau să atragă atenția asupra unei anumite informații.
Aflați mai multe: alt versus figcaption.
Textulalt: %(altText)',
IMAGE_DECORATIVE: 'Imaginea este marcată ca fiind decorativă și va fi ignorată de tehnologia de asistență. Dacă imaginea transmite o poveste, o stare de spirit sau informații importante - asigurați-vă că adăugați text alternativ.',
@@ -171,14 +188,15 @@ var ro = {
IMAGE_PASS: 'Text alternativ: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Butonul de imagine nu are text alternativ. Vă rugăm să adăugați un alt text pentru a oferi un nume accesibil. De exemplu: Cercetare sau Submitere.',
LABELS_INPUT_RESET_MESSAGE: 'Butoanele de resetare nu ar trebui nu utilizate decât dacă sunt necesare în mod specific, deoarece sunt ușor de activat din greșeală.
Tip! Aflați de ce Butoanele Reset și Cancel ridică probleme de utilizare.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Intrarea are un nume accesibil, deși vă rugăm să vă asigurați că există și o etichetă vizibilă.
Numele accesibil pentru această intrare este: %(sanitizedText).',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Intrarea are un nume accesibil, deși vă rugăm să vă asigurați că există și o etichetă vizibilă.
Etichetă de intrare: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Nu există nicio etichetă asociată cu această intrare. Adăugați un atribut for
la eticheta care se potrivește cu id
al acestei intrări.
ID-ul pentru această intrare este: id="%(id)".',
LABELS_MISSING_LABEL_MESSAGE: 'Nu există nicio etichetă asociată cu această intrare. Vă rugăm să adăugați un id
la această intrare și să adăugați un atribut for
corespunzător etichetei.',
EMBED_VIDEO: 'Vă rugăm să vă asigurați că toate videoclipurile au subtitrare. Furnizarea de subtitrări pentru tot conținutul audio și video este o cerință obligatorie de nivel A. Subtitrările vin în sprijinul persoanelor care sunt D/surde sau cu deficiențe de auz.',
EMBED_AUDIO: 'Vă rugăm să vă asigurați că furnizați o transcriere pentru toate podcasturile. Furnizarea de transcrieri pentru conținutul audio este o cerință obligatorie de nivel A. Transcrierile vin în sprijinul persoanelor cu deficiențe de auz sau cu deficiențe de auz, dar pot fi benefice pentru toată lumea. Luați în considerare plasarea transcrierii mai jos sau în cadrul unui panou acordeon.',
EMBED_DATA_VIZ: 'Widgeturile de vizualizare a datelor de acest tip sunt adesea problematice pentru persoanele care utilizează o tastatură sau un cititor de ecran pentru a naviga și pot prezenta dificultăți semnificative pentru persoanele cu vedere slabă sau daltonism. Se recomandă să furnizați aceleași informații într-un format alternativ (text sau tabel) sub widget.
Aflați mai multe despre imagini complexe..',
- EMBED_MISSING_TITLE: 'Conținutul încorporat necesită un nume accesibil care să descrie conținutul său. Vă rugăm să furnizați un atribut unic title
sau aria-label
pe elementul iframe
. Aflați mai multe despre iFrames..',
+ EMBED_MISSING_TITLE: 'Conținutul încorporat necesită un nume accesibil care să descrie conținutul său. Vă rugăm să furnizați un atribut unic title
sau aria-label
pe elementul iframe
. Aflați mai multe despre iFrames..',
EMBED_GENERAL_WARNING: 'Nu se poate verifica conținutul încorporat. Vă rugăm să vă asigurați că imaginile au text alt, videoclipurile au legende, textul are un contrast suficient, iar componentele interactive sunt accesibile la tastatură..',
+ EMBED_UNFOCUSABLE: '<iframe>
cu elemente nefocalizabile nu ar trebui să aibă tabindex="-1"
. Conținutul încorporat nu va fi accesibil prin tastatură.',
QA_BAD_LINK: 'Link greșit găsit. Linkul pare să indice un mediu de dezvoltare.
Acest link trimite la:
%(el).',
QA_BAD_ITALICS: 'Etichetele bold și italic au o semnificație semantică și nu trebuie nu folosite pentru a evidenția paragrafe întregi. Textul cu caractere aldine trebuie folosit pentru a oferi o accentuare puternică asupra unui cuvânt sau a unei fraze. Italicul ar trebui utilizat pentru a evidenția nume proprii (de exemplu, titluri de cărți și articole), cuvinte străine, ghilimele. Citatele lungi ar trebui să fie formatate ca un blockquote.',
QA_PDF: 'Imposibilitatea de a verifica accesibilitatea PDF-urilor. PDF-urile sunt considerate conținut web și trebuie să fie, de asemenea, accesibile. PDF-urile conțin adesea probleme pentru persoanele care utilizează cititoare de ecran (etichete structurale sau etichete de câmpuri de formular lipsă) și pentru persoanele cu vedere slabă (textul nu se reface atunci când este mărit). - Dacă acesta este un formular, luați în considerare utilizarea unui formular HTML accesibil ca alternativă.
- Dacă acesta este un document, luați în considerare transformarea acestuia într-o pagină web.
În caz contrar, vă rugăm să verificați PDF pentru accesibilitate în Acrobat DC.',
diff --git a/assets/dist/js/lang/ro.umd.js b/assets/dist/js/lang/ro.umd.js
index adbbc09..6728213 100644
--- a/assets/dist/js/lang/ro.umd.js
+++ b/assets/dist/js/lang/ro.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: 'Rubrica nu este vizibilă; poate fi ascunsă sau în interiorul unui acordeon sau al unei componente de tablă.',
SKIP_TO_PAGE_ISSUES: 'Treceți la pagina Probleme',
CONSOLE_ERROR_MESSAGE: 'Ne pare rău, dar există o problemă cu verificatorul de accesibilitate de pe această pagină. Puteți vă rog raportați-o prin intermediul acestui formular sau pe GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Afișează %(dismissCount) avertismente respinse',
DISMISS: 'Respingeți',
DISMISSED: 'Avertismente respinse',
DISMISS_REMINDER: 'Vă rugăm să rețineți că avertismentele sunt doar temporar respinse. Ștergerea istoricului și a cookie-urilor din browserul dvs. va restabili toate avertismentele respinse anterior pe toate paginile.',
+
+ // Export
+ DATE: 'Data',
+ PAGE_TITLE: 'Titlul paginii',
+ RESULTS: 'Rezultate',
+ EXPORT_RESULTS: 'Exportă rezultatele',
+ GENERATED: 'Rezultate generate cu %(tool).',
+ PREVIEW: 'Previzualizare',
+ ELEMENT: 'Element',
+ PATH: 'Cale',
+
+ // Colour filters
COLOUR_FILTER: 'Filtru de culoare',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -66,6 +80,8 @@
BLUE_EYE: 'Orb albastru.',
MONO_EYE: 'Orbitor roșu, albastru și verde.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Filtrele de culoare nu funcționează în modul de contrast ridicat.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'imagine',
'grafic',
@@ -145,9 +161,10 @@
HEADING_MISSING_ONE: 'Lipsește titlul 1. Titlul 1 ar trebui să fie începutul zonei principale de conținut și este titlul principal care descrie scopul general al paginii. Aflați mai multe despre Structura titlurilor..',
HEADING_EMPTY_WITH_IMAGE: 'Rubrica nu are text, dar conține o imagine. Dacă acesta nu este un titlu, schimbați-i formatul din Heading %(level) în Normal sau Paragraf. În caz contrar, vă rugăm să adăugați text alt la imagine, dacă aceasta nu este decorativă.',
PANEL_HEADING_MISSING_ONE: 'Lipsește rubrica 1!',
+ PANEL_NO_HEADINGS: 'Nu s-au găsit antete.',
LINK_EMPTY: 'Eliminați legăturile goale fără text.',
LINK_EMPTY_LINK_NO_LABEL: 'Linkul nu are un text vizibil pentru cititorii de ecran și alte tehnologii de asistență. Pentru a remedia problema: - Adaugați un text concis care să descrie unde vă duce linkul.
- Dacă este un link cu pictograme sau SVG, este probabil să lipsească o etichetă descriptivă.
- Dacă credeți că acest link este o eroare datorată unui bug de copy/paste, luați în considerare ștergerea lui.
.',
- LINK_LABEL: 'Link label: %(sanitizedText)',
+ LINK_LABEL: 'Etichetă de legătură: %(sanitizedText)',
LINK_STOPWORD: 'Este posibil ca textul linkului să nu fie suficient de descriptiv în afara contextului: %(error)
Tip! Textul linkului trebuie să fie întotdeauna clar, unic și semnificativ. Evitați cuvintele comune precum "click aici" sau "află mai multe"',
LINK_BEST_PRACTICES: 'Luați în considerare înlocuirea textului linkului: %(error)
- "Click aici" pune accentul pe mecanica mouse-ului, când mulți oameni nu folosesc un mouse sau pot vizualiza acest site web pe un dispozitiv mobil. Luați în considerare utilizarea unui verb diferit care să aibă legătură cu sarcina.
- Evitați utilizarea simbolurilor HTML ca apel la acțiuni, cu excepția cazului în care acestea sunt ascunse pentru tehnologiile de asistență.
',
LINK_URL: 'URL-urile mai lungi și mai puțin inteligibile folosite ca text de link ar putea fi dificil de înțeles atunci când sunt accesate cu ajutorul tehnologiei de asistență. În cele mai multe cazuri, este mai bine să folosiți un text lizibil pentru oameni în locul URL-ului. URL-urile scurte (cum ar fi pagina de pornire a unui site) sunt în regulă.
Tip! Textul linkului trebuie să fie întotdeauna clar, unic și semnificativ, astfel încât să poată fi înțeles în afara contextului.',
@@ -158,18 +175,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Imaginea este utilizată ca link cu text în jur, deși atributul alt ar trebui să fie marcat ca fiind decorativ sau nul.',
MISSING_ALT_LINK_MESSAGE: 'Imaginea este folosită ca link, dar lipsește textul alt! Vă rugăm să vă asigurați că textul alternativ descrie unde vă duce link-ul.',
MISSING_ALT_MESSAGE: 'Lipsește alt text! Dacă imaginea transmite o poveste, o stare de spirit sau o informație importantă, nu uitați să descrieți imaginea.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Extensia fișierului din textul alternativ găsit. Asigurați-vă că textul alternativ descrie destinația linkului și nu o descriere literală a imaginii. Eliminați: %(eroare).
Text alternativ: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Extensia fișierului din textul alternativ găsit. Asigurați-vă că textul alternativ descrie destinația linkului și nu o descriere literală a imaginii. Eliminați: %(eroare).
Text alternativ: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Text alt necorespunzător sau cu caracter de locțiitor într-o imagine legată găsit. Asigurați-vă că textul alternativ descrie destinația linkului și nu o descriere literală a imaginii. Înlocuiți următorul text alt: %(altText).',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Tehnologiile asistive indică deja că aceasta este o imagine, astfel încât "%(error)" poate fi redundant. Asigurați-vă că textul alt descrie destinația linkului, nu o descriere literală a imaginii.
Text alternativ: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Extensia fișierului din textul alternativ găsit. Dacă imaginea transmite o poveste, o stare de spirit sau o informație importantă, nu uitați să descrieți imaginea. Eliminați: %(error).
Text alternativ: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Extensia fișierului din textul alternativ găsit. Dacă imaginea transmite o poveste, o stare de spirit sau o informație importantă, nu uitați să descrieți imaginea. Eliminați: %(error).
Text alternativ: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'A fost găsit un text alt nedescriptat sau un text alt de tip placeholder. Înlocuiți următorul text alt cu ceva mai semnificativ: %(altText).',
ALT_HAS_SUS_WORD: 'Tehnologiile asistive indică deja că aceasta este o imagine, astfel încât "%(error)" poate fi redundant.
Text alternativ: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Legătura din jurul imaginii are aria-hidden="true"
, dar este în continuare focalizabilă de la tastatură. Dacă intenționați să ascundeți un link redundant sau duplicat, adăugați și tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Link-ul are aria-hidden="true"
, dar este încă focalizabil cu tastatura. Dacă intenționați să ascundeți un link redundant sau duplicat, adăugați și tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Imaginea din cadrul linkului este marcată ca fiind decorativă și nu există text de link. Vă rugăm să adăugați la imagine un text alt care să descrie destinația linkului.',
LINK_IMAGE_HAS_TEXT: 'Imaginea este marcată ca fiind decorativă, deși link-ul folosește textul din jur ca etichetă descriptivă.',
LINK_IMAGE_LONG_ALT: 'Descrierea textului Alt de pe o imagine legată este prea lungă. Textul alt de pe imaginile cu link ar trebui să descrie unde duce link-ul, nu o descriere literală a imaginii. Considerați să folosiți titlul paginii către care se face legătura ca text alt.
Text alt (%(altLength) caractere): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Legătura imaginii conține text alternativ. Textul alt descrie unde vă duce link-ul? Luați în considerare utilizarea titlului paginii către care se face legătura ca text alternativ.
Text alternativ: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Legătura de imagine conține atât textul alt cât și textul de legătură din jur. Dacă această imagine este decorativă și este folosită ca o legătură funcțională către o altă pagină, luați în considerare marcarea imaginii ca fiind decorativă sau nulă - textul de legătură din jur ar trebui să fie suficient.
Text alternativ: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Legătura de imagine conține atât textul alt cât și textul de legătură din jur. Dacă această imagine este decorativă și este folosită ca o legătură funcțională către o altă pagină, luați în considerare marcarea imaginii ca fiind decorativă sau nulă - textul de legătură din jur ar trebui să fie suficient.
Text alternativ: %(altText)
Etichetă de legătură: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Imaginea este marcată ca fiind decorativă și va fi ignorată de tehnologia de asistență.
Deși a fost furnizat un caption, imaginea ar trebui să aibă, de asemenea, un text alt în majoritatea cazurilor. - Textul alt ar trebui să ofere o descriere concisă a ceea ce se află în imagine.
- De obicei, legenda ar trebui să ofere un context pentru a relaționa imaginea cu conținutul din jur sau să atragă atenția asupra unei anumite informații.
Aflați mai multe: alt versus figcaption..',
IMAGE_FIGURE_DUPLICATE_ALT: 'Nu folosiți exact aceleași cuvinte atât pentru textul alt, cât și pentru legendă. Cititoarele de ecran vor anunța informațiile de două ori.- Textul alt ar trebui să ofere o descriere concisă a ceea ce se află în imagine.
- Legenda ar trebui, de obicei, să ofere un context pentru a relaționa imaginea cu conținutul din jur sau să atragă atenția asupra unei anumite informații.
Aflați mai multe: alt versus figcaption.
Textulalt: %(altText)',
IMAGE_DECORATIVE: 'Imaginea este marcată ca fiind decorativă și va fi ignorată de tehnologia de asistență. Dacă imaginea transmite o poveste, o stare de spirit sau informații importante - asigurați-vă că adăugați text alternativ.',
@@ -177,14 +194,15 @@
IMAGE_PASS: 'Text alternativ: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Butonul de imagine nu are text alternativ. Vă rugăm să adăugați un alt text pentru a oferi un nume accesibil. De exemplu: Cercetare sau Submitere.',
LABELS_INPUT_RESET_MESSAGE: 'Butoanele de resetare nu ar trebui nu utilizate decât dacă sunt necesare în mod specific, deoarece sunt ușor de activat din greșeală.
Tip! Aflați de ce Butoanele Reset și Cancel ridică probleme de utilizare.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Intrarea are un nume accesibil, deși vă rugăm să vă asigurați că există și o etichetă vizibilă.
Numele accesibil pentru această intrare este: %(sanitizedText).',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Intrarea are un nume accesibil, deși vă rugăm să vă asigurați că există și o etichetă vizibilă.
Etichetă de intrare: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Nu există nicio etichetă asociată cu această intrare. Adăugați un atribut for
la eticheta care se potrivește cu id
al acestei intrări.
ID-ul pentru această intrare este: id="%(id)".',
LABELS_MISSING_LABEL_MESSAGE: 'Nu există nicio etichetă asociată cu această intrare. Vă rugăm să adăugați un id
la această intrare și să adăugați un atribut for
corespunzător etichetei.',
EMBED_VIDEO: 'Vă rugăm să vă asigurați că toate videoclipurile au subtitrare. Furnizarea de subtitrări pentru tot conținutul audio și video este o cerință obligatorie de nivel A. Subtitrările vin în sprijinul persoanelor care sunt D/surde sau cu deficiențe de auz.',
EMBED_AUDIO: 'Vă rugăm să vă asigurați că furnizați o transcriere pentru toate podcasturile. Furnizarea de transcrieri pentru conținutul audio este o cerință obligatorie de nivel A. Transcrierile vin în sprijinul persoanelor cu deficiențe de auz sau cu deficiențe de auz, dar pot fi benefice pentru toată lumea. Luați în considerare plasarea transcrierii mai jos sau în cadrul unui panou acordeon.',
EMBED_DATA_VIZ: 'Widgeturile de vizualizare a datelor de acest tip sunt adesea problematice pentru persoanele care utilizează o tastatură sau un cititor de ecran pentru a naviga și pot prezenta dificultăți semnificative pentru persoanele cu vedere slabă sau daltonism. Se recomandă să furnizați aceleași informații într-un format alternativ (text sau tabel) sub widget.
Aflați mai multe despre imagini complexe..',
- EMBED_MISSING_TITLE: 'Conținutul încorporat necesită un nume accesibil care să descrie conținutul său. Vă rugăm să furnizați un atribut unic title
sau aria-label
pe elementul iframe
. Aflați mai multe despre iFrames..',
+ EMBED_MISSING_TITLE: 'Conținutul încorporat necesită un nume accesibil care să descrie conținutul său. Vă rugăm să furnizați un atribut unic title
sau aria-label
pe elementul iframe
. Aflați mai multe despre iFrames..',
EMBED_GENERAL_WARNING: 'Nu se poate verifica conținutul încorporat. Vă rugăm să vă asigurați că imaginile au text alt, videoclipurile au legende, textul are un contrast suficient, iar componentele interactive sunt accesibile la tastatură..',
+ EMBED_UNFOCUSABLE: '<iframe>
cu elemente nefocalizabile nu ar trebui să aibă tabindex="-1"
. Conținutul încorporat nu va fi accesibil prin tastatură.',
QA_BAD_LINK: 'Link greșit găsit. Linkul pare să indice un mediu de dezvoltare.
Acest link trimite la:
%(el).',
QA_BAD_ITALICS: 'Etichetele bold și italic au o semnificație semantică și nu trebuie nu folosite pentru a evidenția paragrafe întregi. Textul cu caractere aldine trebuie folosit pentru a oferi o accentuare puternică asupra unui cuvânt sau a unei fraze. Italicul ar trebui utilizat pentru a evidenția nume proprii (de exemplu, titluri de cărți și articole), cuvinte străine, ghilimele. Citatele lungi ar trebui să fie formatate ca un blockquote.',
QA_PDF: 'Imposibilitatea de a verifica accesibilitatea PDF-urilor. PDF-urile sunt considerate conținut web și trebuie să fie, de asemenea, accesibile. PDF-urile conțin adesea probleme pentru persoanele care utilizează cititoare de ecran (etichete structurale sau etichete de câmpuri de formular lipsă) și pentru persoanele cu vedere slabă (textul nu se reface atunci când este mărit). - Dacă acesta este un formular, luați în considerare utilizarea unui formular HTML accesibil ca alternativă.
- Dacă acesta este un document, luați în considerare transformarea acestuia într-o pagină web.
În caz contrar, vă rugăm să verificați PDF pentru accesibilitate în Acrobat DC.',
diff --git a/assets/dist/js/lang/sk.js b/assets/dist/js/lang/sk.js
new file mode 100644
index 0000000..d64be57
--- /dev/null
+++ b/assets/dist/js/lang/sk.js
@@ -0,0 +1,232 @@
+
+/*!
+ * Sa11y, the accessibility quality assurance assistant.
+ * @version 3.0.6
+ * @author Adam Chaboryk, Toronto Metropolitan University
+ * @license GPL-2.0-or-later
+ * @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
+ * @contact adam.chaboryk@torontomu.ca
+ * GitHub: git+https://github.com/ryersondmp/sa11y.git | Website: https://sa11y.netlify.app
+ * For all acknowledgements, please visit: https://sa11y.netlify.app/acknowledgements/
+ * The above copyright notice shall be included in all copies or substantial portions of the Software.
+**/
+/*! WARNING: This is a machine-generated translation and may contain errors or inaccuracies. */
+var sk = {
+ // Slovak
+ strings: {
+ LANG_CODE: 'sk',
+ MAIN_TOGGLE_LABEL: 'Kontrola dostupnosti',
+ CONTAINER_LABEL: 'Kontrola prístupnosti',
+ ERROR: 'Chyba',
+ ERRORS: 'Chyby',
+ WARNING: 'Upozornenie',
+ WARNINGS: 'Upozornenia',
+ GOOD: 'Dobrý',
+ ON: 'Na stránke',
+ OFF: 'Vypnuté',
+ ALERT_TEXT: 'Upozornenie',
+ ALERT_CLOSE: 'Zatvoriť',
+ OUTLINE: 'Osnova stránky',
+ PAGE_ISSUES: 'Problémy so stránkami',
+ SETTINGS: 'Nastavenia',
+ CONTRAST: 'Kontrast',
+ FORM_LABELS: 'Štítky formulárov',
+ LINKS_ADVANCED: 'Odkazy (pre pokročilých)',
+ DARK_MODE: 'Tmavý režim',
+ SHORTCUT_SCREEN_READER: 'Prejsť na vydanie. Klávesová skratka: Alt S',
+ SHORTCUT_TOOLTIP: 'Prejsť na vydanie',
+ NEW_TAB: 'Otvorí sa nová karta',
+ PANEL_HEADING: 'Kontrola prístupnosti',
+ PANEL_STATUS_NONE: 'Nenašli sa žiadne chyby.',
+ PANEL_ICON_WARNINGS: 'nájdené varovania.',
+ PANEL_ICON_TOTAL: 'celkový počet nájdených problémov.',
+ NOT_VISIBLE_ALERT: 'Položka, ktorú sa snažíte zobraziť, nie je viditeľná; môže byť skrytá alebo sa nachádza v komponente akordeónu alebo karty. Tu je náhľad:',
+ ERROR_MISSING_ROOT_TARGET: 'Celá stránka bola skontrolovaná z hľadiska prístupnosti, pretože cieľová oblasť %(root)
neexistuje.',
+ HEADING_NOT_VISIBLE_ALERT: 'Záhlavie nie je viditeľné; môže byť skryté alebo sa nachádzať v komponente akordeónu alebo karty.',
+ SKIP_TO_PAGE_ISSUES: 'Prejsť na stránku Problémy',
+ CONSOLE_ERROR_MESSAGE: 'Je nám ľúto, ale na tejto stránke je problém s kontrolou prístupnosti. Môžete to prosím nahlásiť prostredníctvom tohto formulára alebo na GitHub?',
+
+ // Dismiss
+ PANEL_DISMISS_BUTTON: 'Zobraziť %(dismissCount) zamietnutých upozornení',
+ DISMISS: 'Odmietnuť',
+ DISMISSED: 'Zamietnuté varovania',
+ DISMISS_REMINDER: 'Upozorňujeme, že upozornenia sú len dočasne zamietnuté. Vymazaním histórie prehliadača a súborov cookie sa obnovia všetky predtým zamietnuté upozornenia na všetkých stránkach.',
+
+ // Export
+ DATE: 'Dátum',
+ PAGE_TITLE: 'Názov stránky',
+ RESULTS: 'Výsledky',
+ EXPORT_RESULTS: 'Exportovať výsledky',
+ GENERATED: 'Výsledky vygenerované s %(tool).',
+ PREVIEW: 'Náhľad',
+ ELEMENT: 'Prvok',
+ PATH: 'Cesta',
+
+ // Colour filters
+ COLOUR_FILTER: 'Farebný filter',
+ PROTANOPIA: 'Protanopia',
+ DEUTERANOPIA: 'Deuteranopia',
+ TRITANOPIA: 'Tritanopia',
+ MONOCHROMACY: 'Monochromatickosť',
+ COLOUR_FILTER_MESSAGE: 'Skontrolujte, či nie sú prítomné prvky, ktoré je ťažké vnímať alebo rozlíšiť na pozadí iných farieb.',
+ RED_EYE: 'Červená slepá.',
+ GREEN_EYE: 'Zelená roleta.',
+ BLUE_EYE: 'Modrá roleta.',
+ MONO_EYE: 'Červená, modrá a zelená farba pre nevidiacich.',
+ COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Farebné filtre nefungujú v režime vysokého kontrastu.',
+
+ // Alternative text stop words
+ SUSPICIOUS_ALT_STOPWORDS: [
+ 'obrázok',
+ 'grafika',
+ 'obrázok',
+ 'foto',
+ ],
+ PLACEHOLDER_ALT_STOPWORDS: [
+ 'alt',
+ 'obrázok',
+ 'foto',
+ 'dekoratívne',
+ 'zástupný symbol',
+ 'zástupný obrázok',
+ 'dištančný rámik',
+ ],
+ PARTIAL_ALT_STOPWORDS: [
+ 'kliknite na',
+ 'kliknite sem',
+ 'kliknite sem pre viac informácií',
+ 'kliknite sem a dozviete sa viac',
+ 'kliknutím sem',
+ 'pozrite si',
+ 'podrobne tu',
+ 'stiahnuť',
+ 'stiahnuť tu',
+ 'zistiť',
+ 'dozvedieť sa viac',
+ 'formulár',
+ 'tu',
+ 'informácie',
+ 'informácie',
+ 'odkaz',
+ 'naučiť sa',
+ 'dozvedieť sa viac',
+ 'naučiť sa',
+ 'viac',
+ 'stránka',
+ 'papier',
+ 'čítaj viac',
+ 'prečítajte si',
+ 'prečítajte si toto',
+ 'tento',
+ 'táto stránka',
+ 'táto webová stránka',
+ 'zobraziť',
+ 'pozrite si náš',
+ 'webová stránka',
+ ],
+ WARNING_ALT_STOPWORDS: [
+ 'kliknite sem',
+ ],
+ NEW_WINDOW_PHRASES: [
+ 'externé',
+ 'nová karta',
+ 'nové okno',
+ 'pop-up',
+ 'vyskakovať',
+ ],
+ FILE_TYPE_PHRASES: [
+ 'dokument',
+ 'tabuľka',
+ 'výpočtový hárok',
+ 'komprimovaný súbor',
+ 'archivovaný súbor',
+ 'pracovný list',
+ 'PowerPoint',
+ 'prezentácia',
+ 'nainštalovať',
+ 'video',
+ 'audio',
+ 'pdf',
+ ],
+ LANG_READABILITY: 'Čitateľnosť',
+ LANG_AVG_SENTENCE: 'Priemerný počet slov na vetu:',
+ LANG_COMPLEX_WORDS: 'Zložené slová:',
+ LANG_TOTAL_WORDS: 'Slová:',
+ LANG_VERY_DIFFICULT: 'Veľmi ťažké',
+ LANG_DIFFICULT: 'Ťažké',
+ LANG_FAIRLY_DIFFICULT: 'Pomerne ťažké',
+ LANG_GOOD: 'Dobrý',
+ READABILITY_NO_P_OR_LI_MESSAGE: 'Nie je možné vypočítať skóre čitateľnosti. Nenašiel sa žiadny odsek <p>
ani obsah zoznamu <li>
.',
+ READABILITY_NOT_ENOUGH_CONTENT_MESSAGE: 'Nedostatok obsahu na výpočet skóre čitateľnosti.',
+ HEADING_NON_CONSECUTIVE_LEVEL: 'Použitá nepokračujúca úroveň záhlavia. Nadpisy by nikdy nemali preskakovať úrovne alebo prechádzať z Nadpisu %(prevLevel) na Nadpis %(level).',
+ HEADING_EMPTY: 'Nájdená prázdna položka! Ak to chcete opraviť, odstráňte tento riadok alebo zmeňte jeho formát z Head %(level) na Normal alebo Paragraph.',
+ HEADING_LONG: 'Smerovanie je dlhé! Nadpisy by sa mali používať na usporiadanie obsahu a vyjadrenie štruktúry. Mali by byť stručné, informatívne a jedinečné. Prosím, aby nadpisy mali menej ako 160 znakov (nie viac ako jednu vetu).
Počet znakov: %(headingLength)',
+ HEADING_FIRST: 'Prvý nadpis na stránke by mal byť zvyčajne nadpis 1 alebo 2. Nadpis 1 by mal byť začiatkom hlavnej časti obsahu a je to hlavný nadpis, ktorý opisuje celkový účel stránky. Viac informácií o štruktúre nadpisov.',
+ HEADING_MISSING_ONE: 'Chýba nadpis 1. Nadpis 1 by mal byť začiatkom hlavnej oblasti obsahu a je to hlavný nadpis, ktorý opisuje celkový účel stránky. Viac informácií o štruktúre nadpisov.',
+ HEADING_EMPTY_WITH_IMAGE: 'Nadpis neobsahuje žiadny text, ale obsahuje obrázok. Ak to nie je nadpis, zmeňte jeho formát z Nadpis %(úroveň) na Normálny alebo Odsek. V opačnom prípade pridajte k obrázku alt text, ak nie je dekoratívny.',
+ PANEL_HEADING_MISSING_ONE: 'Chýba položka 1!',
+ PANEL_NO_HEADINGS: 'Nenašli sa žiadne záhlavia.',
+ LINK_EMPTY: 'Odstránenie prázdnych odkazov bez textu.',
+ LINK_EMPTY_LINK_NO_LABEL: 'Odkaz nemá rozoznateľný text, ktorý je viditeľný pre čítačky obrazovky a iné asistenčné technológie. Oprava: Pridajte stručný text, ktorý popisuje, kam vás odkaz zavedie. Ak ide o odkaz na ikonu alebo SVG, pravdepodobne chýba popisný štítok. Ak si myslíte, že tento odkaz je chybou spôsobenou chybou kopírovania/vkladania, zvážte jeho odstránenie. ',
+ LINK_LABEL: 'Označenie odkazu: %(sanitizedText)',
+ LINK_STOPWORD: 'Text prepojenia nemusí byť dostatočne popisný mimo kontextu: %(error)
Tip! Text prepojenia by mal byť vždy jasný, jedinečný a zmysluplný. Vyhnite sa bežným slovám ako "kliknite sem" alebo "dozvedieť sa viac";',
+ LINK_BEST_PRACTICES: 'Zvážte nahradenie textu prepojenia: %(error)
- "Kliknite sem" kladie dôraz na mechaniku myši, hoci mnoho ľudí myš nepoužíva alebo si túto webovú lokalitu možno prezerá na mobilnom zariadení. Zvážte použitie iného slovesa, ktoré súvisí s úlohou.
- Vyhnite sa používaniu symbolov HTML ako výzvy k akcii, pokiaľ nie sú skryté pre asistenčné technológie.
',
+ LINK_URL: 'Dlhšie a menej zrozumiteľné adresy URL použité ako text odkazu by mohli byť ťažko zrozumiteľné pre asistenčné technológie. Vo väčšine prípadov je lepšie namiesto adresy URL použiť text čitateľný pre človeka. Krátke adresy URL (napríklad domovská stránka webu) sú v poriadku.
Tip! Text odkazu by mal byť vždy jasný, jedinečný a zmysluplný, aby ho bolo možné pochopiť aj mimo kontextu.',
+ LINK_DOI: 'V prípade webových stránok alebo len online zdrojov odporúča príručka štýlu APA používať popisné odkazy tak, že okolo názvu diela uvediete jeho URL alebo DOI. Dlhšie, menej zrozumiteľné adresy URL použité ako text odkazu by mohli byť ťažko zrozumiteľné pomocou asistenčných technológií.',
+ NEW_TAB_WARNING: 'Odkaz sa otvorí v novej karte alebo okne bez upozornenia. Môže to byť dezorientujúce, najmä pre ľudí, ktorí majú problémy s vnímaním vizuálneho obsahu. Po druhé, nie vždy je dobrým postupom kontrolovať niečí zážitok alebo robiť rozhodnutia za neho. Uveďte, že sa odkaz otvára v novom okne, v texte odkazu
Tip! Naučte sa osvedčené postupy: otváranie odkazov v nových oknách a kartách prehliadača.',
+ FILE_TYPE_WARNING: 'Odkaz odkazuje na súbor PDF alebo súbor na stiahnutie (napr. MP3, Zip, Word Doc) bez upozornenia. Typ súboru uveďte v texte odkazu. Ak ide o veľký súbor, zvážte uvedenie jeho veľkosti.
Príklad: Výkonná správa (PDF, 3 MB)',
+ LINK_IDENTICAL_NAME: 'Odkaz má rovnaký text ako iný odkaz, hoci odkazuje na inú stránku. Viacero odkazov s rovnakým textom môže spôsobiť zmätok u ľudí, ktorí používajú čítačky obrazovky.
Premyslite si, či by nasledujúci odkaz nemal byť viac popisný, aby ste ho odlíšili od ostatných odkazov: %(sanitizedText)',
+ MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Obrázok sa používa ako odkaz s okolitým textom, hoci atribút alt by mal byť označený ako dekoratívny alebo nulový.',
+ MISSING_ALT_LINK_MESSAGE: 'Obrázok sa používa ako odkaz, ale chýba text alt! Uistite sa, že text alt opisuje, kam vás odkaz zavedie.',
+ MISSING_ALT_MESSAGE: 'Chýbajúci text alt! Ak obrázok vyjadruje príbeh, náladu alebo dôležitú informáciu, nezabudnite ho opísať.',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Nájdená prípona súboru v texte alt. Uistite sa, že text alt opisuje cieľ odkazu, nie doslovný opis obrázka. Odstráňte: %(error).
Textu alt: %(altText)',
+ LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Nájdený text alt bez popisu alebo zástupný text v rámci prepojeného obrázka. Uistite sa, že text alt opisuje cieľ odkazu, nie doslovný opis obrázka. Nahraďte nasledujúci text alt: %(altText)',
+ LINK_IMAGE_SUS_ALT_MESSAGE: 'Asistenčné technológie už indikujú, že ide o obrázok, takže "%(error)" môže byť zbytočné. Uistite sa, že alt text opisuje cieľ odkazu, nie doslovný opis obrázka.
Text alt: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Nájdená prípona súboru v texte alt. Ak obrázok vyjadruje príbeh, náladu alebo dôležitú informáciu, nezabudnite ho opísať. Odstráňte: %(error).
Textu alt: %(altText)',
+ ALT_PLACEHOLDER_MESSAGE: 'Nájdený text alt bez popisu alebo zástupného textu. Nahraďte nasledujúci alt text niečím zmysluplnejším: %(altText)',
+ ALT_HAS_SUS_WORD: 'Asistenčné technológie už indikujú, že ide o obrázok, takže "%(error)" môže byť zbytočné.
Alt text: %(altText)',
+ LINK_HIDDEN_FOCUSABLE: 'Odkaz má aria-hidden="true"
, ale stále je klávesnicou zamerateľný. Ak plánujete skryť nadbytočný alebo duplicitný odkaz, pridajte aj tabindex="-1"
.',
+ LINK_IMAGE_NO_ALT_TEXT: 'Obrázok v rámci odkazu je označený ako dekoratívny a nie je v ňom žiadny text odkazu. K obrázku pridajte text alt, ktorý opisuje cieľ odkazu.',
+ LINK_IMAGE_HAS_TEXT: 'Obrázok je označený ako dekoratívny, hoci odkaz používa okolitý text ako popisné označenie.',
+ LINK_IMAGE_LONG_ALT: 'Popis Alt textu na prepojenom obrázku je predlžený. Text alt na prepojených obrázkoch by mal popisovať, kam vás odkaz zavedie, nie doslovný opis obrázka. Zvážte použitie názvu stránky, na ktorú odkazuje, ako alt textu.
Alt text (%(altLength) znakov): %(altText)',
+ LINK_IMAGE_ALT_WARNING: 'Odkaz na obrázok obsahuje text alt. Opisuje text alt, kam vás odkaz zavedie? Zvážte použitie názvu stránky, na ktorú odkazuje, ako alt textu.
Alt text: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Odkaz na obrázok obsahuje obidva texty alt a okolitý text odkazu. Ak je tento obrázok dekoratívny a používa sa ako funkčný odkaz na inú stránku, zvážte označenie obrázka ako dekoratívneho alebo nulového - okolitý text odkazu by mal stačiť.
Textuálny text: %(altText)
Označenie odkazu: %(sanitizedText)',
+ IMAGE_FIGURE_DECORATIVE: 'Obrázok je označený ako dekoratívny a asistenčné technológie ho budú ignorovať.
Hoci bol uvedený nadpis, obrázok by mal mať vo väčšine prípadov aj alt text. - Titul alt by mal poskytovať stručný opis toho, čo je na obrázku.
- Titul by mal zvyčajne poskytovať kontext, aby sa obrázok prepojil s okolitým obsahom, alebo upozorniť na konkrétnu informáciu.
Zistite viac: alt versus figcaption.',
+ IMAGE_FIGURE_DUPLICATE_ALT: 'Nepoužívajte presne tie isté slová pre text alt aj nadpis. Čítačky obrazovky budú informáciu oznamovať dvakrát.- Textu alt by mal poskytovať stručný opis toho, čo je na obrázku.
- Titul by mal zvyčajne poskytovať kontext, aby súvisel s okolitým obsahom, alebo upozorniť na konkrétnu informáciu.
Ďalšie informácie: alt verzus titulok obrázku.
Textuálny text: %(altText)',
+ IMAGE_DECORATIVE: 'Obrázok je označený ako dekoratívny a asistenčné technológie ho budú ignorovať. Ak obrázok sprostredkúva príbeh, náladu alebo dôležité informácie - nezabudnite pridať alt text.',
+ IMAGE_ALT_TOO_LONG: 'Alt text popisu je príliš dlhý. Alt text by mal byť stručný, ale výstižný ako tweet (približne 100 znakov). Ak ide o zložitý obrázok alebo graf, zvážte umiestnenie dlhého popisu obrázka do textu pod ním alebo do akordeónového komponentu.
Textuálny text (%(altLength) znakov): %(altText)',
+ IMAGE_PASS: 'Alt text: %(altText)',
+ LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'V tlačidle obrázka chýba text alt. Pridajte text alt a uveďte prístupný názov. Napríklad: Vyhľadať alebo Odoslať.',
+ LABELS_INPUT_RESET_MESSAGE: 'Tlačidlá resetovania by sa nemali používať, ak to nie je výslovne potrebné, pretože sa ľahko aktivujú omylom.
Tip! Prečítajte si, prečo tlačidlá Reset a Cancel predstavujú problémy s použiteľnosťou.',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Vstup má prístupný názov, ale dbajte na to, aby bol viditeľný aj štítok.
Štítok vstupu: %(sanitizedText)',
+ LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'K tomuto vstupu nie je priradený žiadny štítok. Pridajte atribút for
k štítku, ktorý sa zhoduje s id
tohto vstupu.
ID tohto vstupu je: id="%(id)"',
+ LABELS_MISSING_LABEL_MESSAGE: 'K tomuto vstupu nie je priradený žiadny štítok. Prosím, pridajte id
k tomuto vstupu a pridajte zodpovedajúci atribút for
k štítku.',
+ EMBED_VIDEO: 'Uistite sa, že všetky videá majú skryté titulky. Poskytovanie titulkov pre všetok zvukový a obrazový obsah je povinnou požiadavkou úrovne A. Titulky podporujú osoby s poruchou sluchu alebo nepočujúce osoby.',
+ EMBED_AUDIO: 'Zabezpečte prepis všetkých podcastov. Poskytovanie prepisov zvukového obsahu je povinnou požiadavkou úrovne A. Prepisy podporujú ľudí s poruchou sluchu alebo nepočujúcich, ale môžu byť prínosom pre všetkých. Zvážte umiestnenie prepisu pod alebo v rámci akordeónového panelu.',
+ EMBED_DATA_VIZ: 'Takéto widgety na vizualizáciu údajov sú často problematické pre ľudí, ktorí na navigáciu používajú klávesnicu alebo čítačku obrazovky, a môžu predstavovať značné ťažkosti pre ľudí so slabým zrakom alebo farbosleposťou. Odporúča sa poskytnúť rovnaké informácie v alternatívnom (textovom alebo tabuľkovom) formáte pod widgetom.
Ďalšie informácie o komplexných obrázkoch.',
+ EMBED_MISSING_TITLE: 'Vložený obsah vyžaduje prístupný názov, ktorý opisuje jeho obsah. Uveďte jedinečný atribút title
alebo aria-label
na prvku iframe
. Ďalšie informácie o iFrame.',
+ EMBED_GENERAL_WARNING: 'Nie je možné skontrolovať vložený obsah. Uistite sa, že obrázky majú alt text, videá majú titulky, text má dostatočný kontrast a interaktívne komponenty sú prístupné z klávesnice.',
+ EMBED_UNFOCUSABLE: '<iframe>
s nezamerateľnými prvkami by nemalo mať tabindex="-1"
. Vložený obsah nebude dostupný pomocou klávesnice.',
+ QA_BAD_LINK: 'Nájdené zlé prepojenie. Zdá sa, že odkaz smeruje na vývojové prostredie.
Tento odkaz odkazuje na:
%(el)',
+ QA_BAD_ITALICS: 'Tučné písmo a kurzíva majú sémantický význam a nemali by sa používať na zvýraznenie celých odsekov. Tučný text by sa mal používať na výrazné zdôraznenie slova alebo frázy. Kurzíva by sa mala používať na zvýraznenie vlastných mien (t. j. názvov kníh a článkov), cudzích slov, citátov. Dlhé citáty by sa mali formátovať ako blokové citáty.',
+ QA_PDF: 'Nie je možné skontrolovať prístupnosť súborov PDF. Súbory PDF sa považujú za webový obsah a musia byť tiež prístupné. Súbory PDF často obsahujú problémy pre ľudí, ktorí používajú čítačky obrazovky (chýbajúce štrukturálne značky alebo chýbajúce označenia polí formulára), a ľudí so slabým zrakom (text sa po zväčšení nezobrazuje). - Ak ide o formulár, zvážte použitie prístupného formulára HTML ako alternatívy.
- Ak ide o dokument, zvážte jeho konverziu na webovú stránku.
V opačnom prípade skontrolujte PDF pre prístupnosť v Acrobat DC.',
+ QA_DOCUMENT: 'Nie je možné skontrolovať prístupnosť dokumentu. Prepojené dokumenty sa považujú za webový obsah a musia byť tiež prístupné. Skontrolujte tento dokument manuálne. - Urobte svoj dokument alebo prezentáciu v službe Google Workspace prístupnejšou.
- Urobte svoj dokument Office prístupnejším.
',
+ QA_PAGE_LANGUAGE: 'Jazyk stránky nie je deklarovaný! Prosím deklarujte jazyk v značke HTML.',
+ QA_PAGE_TITLE: 'Chýba názov stránky! Uveďte prosím názov stránky.',
+ QA_BLOCKQUOTE_MESSAGE: 'Je to nadpis? %(sanitizedText)
Blokové úvodzovky by sa mali používať len pre citácie. Ak to má byť nadpis, zmeňte tento blokový citát na sémantický nadpis (napr. Nadpis 2 alebo Nadpis 3).',
+ QA_FAKE_HEADING: 'Je to nadpis? %(boldtext)
Riadok tučného alebo veľkého textu môže vyzerať ako nadpis, ale osoba používajúca čítačku obrazovky nedokáže určiť, že je dôležitý, ani prejsť na jeho obsah. Tučný alebo veľký text by nikdy nemal nahrádzať sémantické nadpisy (nadpisy 2 až 6).',
+ QA_SHOULD_BE_LIST: 'Snažíte sa vytvoriť zoznam? Nájdená možná položka zoznamu: %(firstPrefix)
Uistite sa, že používate sémantické zoznamy tak, že namiesto nich použijete tlačidlá na formátovanie odrážok alebo čísel. Pri použití sémantického zoznamu dokážu asistenčné technológie sprostredkovať informácie, ako je celkový počet položiek a relatívna pozícia každej položky v zozname. Viac informácií o sémantických zoznamoch.',
+ QA_UPPERCASE_WARNING: 'Nájdené všetky čiapky. Niektoré čítačky obrazovky môžu interpretovať text písaný veľkými písmenami ako skratku a budú čítať každé písmeno samostatne. Okrem toho sa niektorým ľuďom všetky veľké písmená čítajú ťažšie a môže to pôsobiť dojmom, akoby sa kričalo.',
+ QA_DUPLICATE_ID: 'Nájdené duplicitné ID. Je známe, že chyby duplicitného ID spôsobujú problémy asistenčným technológiám pri pokusoch o interakciu s obsahom.
Odstráňte alebo zmeňte nasledujúce ID: %(id)',
+ QA_TEXT_UNDERLINE_WARNING: 'Podčiarknutý text sa môže zameniť s odkazmi. Zvážte použitie iného štýlu, napríklad <strong>
strong importance</strong>
alebo <em>
emphasis</em>
.',
+ QA_SUBSCRIPT_WARNING: 'Možnosti formátovania dolného a horného indexu by sa mali používať len na zmenu pozície textu pre typografické konvencie alebo normy. Nemali by sa používať výlučne na účely prezentácie alebo vzhľadu. Formátovanie celých viet spôsobuje problémy s čitateľnosťou. Medzi vhodné prípady použitia by patrilo zobrazovanie exponentov, poradových čísel, ako napríklad 4th namiesto fourth, a chemických vzorcov (napr. H2O).',
+ TABLES_MISSING_HEADINGS: 'Chýbajúce záhlavia tabuliek! Prístupné tabuľky potrebujú značku HTML, ktorá označuje bunky záhlavia a dátové bunky, ktoré definujú ich vzťah. Tieto informácie poskytujú kontext ľuďom, ktorí používajú asistenčné technológie. Tabuľky by sa mali používať len na tabuľkové údaje.
Ďalšie informácie o prístupných tabuľkách.',
+ TABLES_SEMANTIC_HEADING: 'Sémantické nadpisy, ako napríklad Nadpis 2 alebo Nadpis 3, by sa mali používať len pre časti obsahu; nie v tabuľkách HTML. Namiesto toho označte nadpisy tabuliek pomocou prvku <th>
.
Ďalšie informácie o prístupných tabuľkách.',
+ TABLES_EMPTY_HEADING: 'Nájdené prázdne záhlavie tabuľky! Hlavičky tabuliek by nikdy nemali byť prázdne. Je dôležité označiť záhlavia riadkov a/alebo stĺpcov, aby sa vyjadril ich vzťah. Tieto informácie poskytujú kontext ľuďom, ktorí používajú asistenčné technológie. Majte na pamäti, že tabuľky by sa mali používať len pre tabuľkové údaje.
Ďalšie informácie o prístupných tabuľkách.',
+ CONTRAST_ERROR: 'Tento text nie je dostatočne kontrastný s pozadím. Kontrastný pomer by mal byť aspoň 4,5:1 pre normálny text a 3:1 pre veľký text.
Kontrastný pomer je %(cratio) pre nasledujúci text: %(sanitizedText)',
+ CONTRAST_WARNING: 'Kontrast tohto textu nie je známy a je potrebné ho manuálne skontrolovať. Uistite sa, že text a pozadie majú výrazne kontrastné farby. Kontrastný pomer by mal byť aspoň 4,5:1 pre normálny text a 3:1 pre veľký text.
Prosím skontrolujte: %(sanitizedText)',
+ CONTRAST_INPUT_ERROR: 'Text v tomto vstupe nie je dostatočne kontrastný s pozadím. Kontrastný pomer by mal byť aspoň 4,5:1 pre normálny text a 3:1 pre veľký text.
Kontrastný pomer: %(cratio)',
+ },
+};
+
+export { sk as default };
diff --git a/assets/dist/js/lang/sk.umd.js b/assets/dist/js/lang/sk.umd.js
new file mode 100644
index 0000000..2b3b572
--- /dev/null
+++ b/assets/dist/js/lang/sk.umd.js
@@ -0,0 +1,240 @@
+
+/*!
+ * Sa11y, the accessibility quality assurance assistant.
+ * @version 3.0.6
+ * @author Adam Chaboryk, Toronto Metropolitan University
+ * @license GPL-2.0-or-later
+ * @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
+ * @contact adam.chaboryk@torontomu.ca
+ * GitHub: git+https://github.com/ryersondmp/sa11y.git | Website: https://sa11y.netlify.app
+ * For all acknowledgements, please visit: https://sa11y.netlify.app/acknowledgements/
+ * The above copyright notice shall be included in all copies or substantial portions of the Software.
+**/
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Sa11yLangSk = factory());
+})(this, (function () { 'use strict';
+
+ /*! WARNING: This is a machine-generated translation and may contain errors or inaccuracies. */
+ var sk = {
+ // Slovak
+ strings: {
+ LANG_CODE: 'sk',
+ MAIN_TOGGLE_LABEL: 'Kontrola dostupnosti',
+ CONTAINER_LABEL: 'Kontrola prístupnosti',
+ ERROR: 'Chyba',
+ ERRORS: 'Chyby',
+ WARNING: 'Upozornenie',
+ WARNINGS: 'Upozornenia',
+ GOOD: 'Dobrý',
+ ON: 'Na stránke',
+ OFF: 'Vypnuté',
+ ALERT_TEXT: 'Upozornenie',
+ ALERT_CLOSE: 'Zatvoriť',
+ OUTLINE: 'Osnova stránky',
+ PAGE_ISSUES: 'Problémy so stránkami',
+ SETTINGS: 'Nastavenia',
+ CONTRAST: 'Kontrast',
+ FORM_LABELS: 'Štítky formulárov',
+ LINKS_ADVANCED: 'Odkazy (pre pokročilých)',
+ DARK_MODE: 'Tmavý režim',
+ SHORTCUT_SCREEN_READER: 'Prejsť na vydanie. Klávesová skratka: Alt S',
+ SHORTCUT_TOOLTIP: 'Prejsť na vydanie',
+ NEW_TAB: 'Otvorí sa nová karta',
+ PANEL_HEADING: 'Kontrola prístupnosti',
+ PANEL_STATUS_NONE: 'Nenašli sa žiadne chyby.',
+ PANEL_ICON_WARNINGS: 'nájdené varovania.',
+ PANEL_ICON_TOTAL: 'celkový počet nájdených problémov.',
+ NOT_VISIBLE_ALERT: 'Položka, ktorú sa snažíte zobraziť, nie je viditeľná; môže byť skrytá alebo sa nachádza v komponente akordeónu alebo karty. Tu je náhľad:',
+ ERROR_MISSING_ROOT_TARGET: 'Celá stránka bola skontrolovaná z hľadiska prístupnosti, pretože cieľová oblasť %(root)
neexistuje.',
+ HEADING_NOT_VISIBLE_ALERT: 'Záhlavie nie je viditeľné; môže byť skryté alebo sa nachádzať v komponente akordeónu alebo karty.',
+ SKIP_TO_PAGE_ISSUES: 'Prejsť na stránku Problémy',
+ CONSOLE_ERROR_MESSAGE: 'Je nám ľúto, ale na tejto stránke je problém s kontrolou prístupnosti. Môžete to prosím nahlásiť prostredníctvom tohto formulára alebo na GitHub?',
+
+ // Dismiss
+ PANEL_DISMISS_BUTTON: 'Zobraziť %(dismissCount) zamietnutých upozornení',
+ DISMISS: 'Odmietnuť',
+ DISMISSED: 'Zamietnuté varovania',
+ DISMISS_REMINDER: 'Upozorňujeme, že upozornenia sú len dočasne zamietnuté. Vymazaním histórie prehliadača a súborov cookie sa obnovia všetky predtým zamietnuté upozornenia na všetkých stránkach.',
+
+ // Export
+ DATE: 'Dátum',
+ PAGE_TITLE: 'Názov stránky',
+ RESULTS: 'Výsledky',
+ EXPORT_RESULTS: 'Exportovať výsledky',
+ GENERATED: 'Výsledky vygenerované s %(tool).',
+ PREVIEW: 'Náhľad',
+ ELEMENT: 'Prvok',
+ PATH: 'Cesta',
+
+ // Colour filters
+ COLOUR_FILTER: 'Farebný filter',
+ PROTANOPIA: 'Protanopia',
+ DEUTERANOPIA: 'Deuteranopia',
+ TRITANOPIA: 'Tritanopia',
+ MONOCHROMACY: 'Monochromatickosť',
+ COLOUR_FILTER_MESSAGE: 'Skontrolujte, či nie sú prítomné prvky, ktoré je ťažké vnímať alebo rozlíšiť na pozadí iných farieb.',
+ RED_EYE: 'Červená slepá.',
+ GREEN_EYE: 'Zelená roleta.',
+ BLUE_EYE: 'Modrá roleta.',
+ MONO_EYE: 'Červená, modrá a zelená farba pre nevidiacich.',
+ COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Farebné filtre nefungujú v režime vysokého kontrastu.',
+
+ // Alternative text stop words
+ SUSPICIOUS_ALT_STOPWORDS: [
+ 'obrázok',
+ 'grafika',
+ 'obrázok',
+ 'foto',
+ ],
+ PLACEHOLDER_ALT_STOPWORDS: [
+ 'alt',
+ 'obrázok',
+ 'foto',
+ 'dekoratívne',
+ 'zástupný symbol',
+ 'zástupný obrázok',
+ 'dištančný rámik',
+ ],
+ PARTIAL_ALT_STOPWORDS: [
+ 'kliknite na',
+ 'kliknite sem',
+ 'kliknite sem pre viac informácií',
+ 'kliknite sem a dozviete sa viac',
+ 'kliknutím sem',
+ 'pozrite si',
+ 'podrobne tu',
+ 'stiahnuť',
+ 'stiahnuť tu',
+ 'zistiť',
+ 'dozvedieť sa viac',
+ 'formulár',
+ 'tu',
+ 'informácie',
+ 'informácie',
+ 'odkaz',
+ 'naučiť sa',
+ 'dozvedieť sa viac',
+ 'naučiť sa',
+ 'viac',
+ 'stránka',
+ 'papier',
+ 'čítaj viac',
+ 'prečítajte si',
+ 'prečítajte si toto',
+ 'tento',
+ 'táto stránka',
+ 'táto webová stránka',
+ 'zobraziť',
+ 'pozrite si náš',
+ 'webová stránka',
+ ],
+ WARNING_ALT_STOPWORDS: [
+ 'kliknite sem',
+ ],
+ NEW_WINDOW_PHRASES: [
+ 'externé',
+ 'nová karta',
+ 'nové okno',
+ 'pop-up',
+ 'vyskakovať',
+ ],
+ FILE_TYPE_PHRASES: [
+ 'dokument',
+ 'tabuľka',
+ 'výpočtový hárok',
+ 'komprimovaný súbor',
+ 'archivovaný súbor',
+ 'pracovný list',
+ 'PowerPoint',
+ 'prezentácia',
+ 'nainštalovať',
+ 'video',
+ 'audio',
+ 'pdf',
+ ],
+ LANG_READABILITY: 'Čitateľnosť',
+ LANG_AVG_SENTENCE: 'Priemerný počet slov na vetu:',
+ LANG_COMPLEX_WORDS: 'Zložené slová:',
+ LANG_TOTAL_WORDS: 'Slová:',
+ LANG_VERY_DIFFICULT: 'Veľmi ťažké',
+ LANG_DIFFICULT: 'Ťažké',
+ LANG_FAIRLY_DIFFICULT: 'Pomerne ťažké',
+ LANG_GOOD: 'Dobrý',
+ READABILITY_NO_P_OR_LI_MESSAGE: 'Nie je možné vypočítať skóre čitateľnosti. Nenašiel sa žiadny odsek <p>
ani obsah zoznamu <li>
.',
+ READABILITY_NOT_ENOUGH_CONTENT_MESSAGE: 'Nedostatok obsahu na výpočet skóre čitateľnosti.',
+ HEADING_NON_CONSECUTIVE_LEVEL: 'Použitá nepokračujúca úroveň záhlavia. Nadpisy by nikdy nemali preskakovať úrovne alebo prechádzať z Nadpisu %(prevLevel) na Nadpis %(level).',
+ HEADING_EMPTY: 'Nájdená prázdna položka! Ak to chcete opraviť, odstráňte tento riadok alebo zmeňte jeho formát z Head %(level) na Normal alebo Paragraph.',
+ HEADING_LONG: 'Smerovanie je dlhé! Nadpisy by sa mali používať na usporiadanie obsahu a vyjadrenie štruktúry. Mali by byť stručné, informatívne a jedinečné. Prosím, aby nadpisy mali menej ako 160 znakov (nie viac ako jednu vetu).
Počet znakov: %(headingLength)',
+ HEADING_FIRST: 'Prvý nadpis na stránke by mal byť zvyčajne nadpis 1 alebo 2. Nadpis 1 by mal byť začiatkom hlavnej časti obsahu a je to hlavný nadpis, ktorý opisuje celkový účel stránky. Viac informácií o štruktúre nadpisov.',
+ HEADING_MISSING_ONE: 'Chýba nadpis 1. Nadpis 1 by mal byť začiatkom hlavnej oblasti obsahu a je to hlavný nadpis, ktorý opisuje celkový účel stránky. Viac informácií o štruktúre nadpisov.',
+ HEADING_EMPTY_WITH_IMAGE: 'Nadpis neobsahuje žiadny text, ale obsahuje obrázok. Ak to nie je nadpis, zmeňte jeho formát z Nadpis %(úroveň) na Normálny alebo Odsek. V opačnom prípade pridajte k obrázku alt text, ak nie je dekoratívny.',
+ PANEL_HEADING_MISSING_ONE: 'Chýba položka 1!',
+ PANEL_NO_HEADINGS: 'Nenašli sa žiadne záhlavia.',
+ LINK_EMPTY: 'Odstránenie prázdnych odkazov bez textu.',
+ LINK_EMPTY_LINK_NO_LABEL: 'Odkaz nemá rozoznateľný text, ktorý je viditeľný pre čítačky obrazovky a iné asistenčné technológie. Oprava: Pridajte stručný text, ktorý popisuje, kam vás odkaz zavedie. Ak ide o odkaz na ikonu alebo SVG, pravdepodobne chýba popisný štítok. Ak si myslíte, že tento odkaz je chybou spôsobenou chybou kopírovania/vkladania, zvážte jeho odstránenie. ',
+ LINK_LABEL: 'Označenie odkazu: %(sanitizedText)',
+ LINK_STOPWORD: 'Text prepojenia nemusí byť dostatočne popisný mimo kontextu: %(error)
Tip! Text prepojenia by mal byť vždy jasný, jedinečný a zmysluplný. Vyhnite sa bežným slovám ako "kliknite sem" alebo "dozvedieť sa viac";',
+ LINK_BEST_PRACTICES: 'Zvážte nahradenie textu prepojenia: %(error)
- "Kliknite sem" kladie dôraz na mechaniku myši, hoci mnoho ľudí myš nepoužíva alebo si túto webovú lokalitu možno prezerá na mobilnom zariadení. Zvážte použitie iného slovesa, ktoré súvisí s úlohou.
- Vyhnite sa používaniu symbolov HTML ako výzvy k akcii, pokiaľ nie sú skryté pre asistenčné technológie.
',
+ LINK_URL: 'Dlhšie a menej zrozumiteľné adresy URL použité ako text odkazu by mohli byť ťažko zrozumiteľné pre asistenčné technológie. Vo väčšine prípadov je lepšie namiesto adresy URL použiť text čitateľný pre človeka. Krátke adresy URL (napríklad domovská stránka webu) sú v poriadku.
Tip! Text odkazu by mal byť vždy jasný, jedinečný a zmysluplný, aby ho bolo možné pochopiť aj mimo kontextu.',
+ LINK_DOI: 'V prípade webových stránok alebo len online zdrojov odporúča príručka štýlu APA používať popisné odkazy tak, že okolo názvu diela uvediete jeho URL alebo DOI. Dlhšie, menej zrozumiteľné adresy URL použité ako text odkazu by mohli byť ťažko zrozumiteľné pomocou asistenčných technológií.',
+ NEW_TAB_WARNING: 'Odkaz sa otvorí v novej karte alebo okne bez upozornenia. Môže to byť dezorientujúce, najmä pre ľudí, ktorí majú problémy s vnímaním vizuálneho obsahu. Po druhé, nie vždy je dobrým postupom kontrolovať niečí zážitok alebo robiť rozhodnutia za neho. Uveďte, že sa odkaz otvára v novom okne, v texte odkazu
Tip! Naučte sa osvedčené postupy: otváranie odkazov v nových oknách a kartách prehliadača.',
+ FILE_TYPE_WARNING: 'Odkaz odkazuje na súbor PDF alebo súbor na stiahnutie (napr. MP3, Zip, Word Doc) bez upozornenia. Typ súboru uveďte v texte odkazu. Ak ide o veľký súbor, zvážte uvedenie jeho veľkosti.
Príklad: Výkonná správa (PDF, 3 MB)',
+ LINK_IDENTICAL_NAME: 'Odkaz má rovnaký text ako iný odkaz, hoci odkazuje na inú stránku. Viacero odkazov s rovnakým textom môže spôsobiť zmätok u ľudí, ktorí používajú čítačky obrazovky.
Premyslite si, či by nasledujúci odkaz nemal byť viac popisný, aby ste ho odlíšili od ostatných odkazov: %(sanitizedText)',
+ MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Obrázok sa používa ako odkaz s okolitým textom, hoci atribút alt by mal byť označený ako dekoratívny alebo nulový.',
+ MISSING_ALT_LINK_MESSAGE: 'Obrázok sa používa ako odkaz, ale chýba text alt! Uistite sa, že text alt opisuje, kam vás odkaz zavedie.',
+ MISSING_ALT_MESSAGE: 'Chýbajúci text alt! Ak obrázok vyjadruje príbeh, náladu alebo dôležitú informáciu, nezabudnite ho opísať.',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Nájdená prípona súboru v texte alt. Uistite sa, že text alt opisuje cieľ odkazu, nie doslovný opis obrázka. Odstráňte: %(error).
Textu alt: %(altText)',
+ LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Nájdený text alt bez popisu alebo zástupný text v rámci prepojeného obrázka. Uistite sa, že text alt opisuje cieľ odkazu, nie doslovný opis obrázka. Nahraďte nasledujúci text alt: %(altText)',
+ LINK_IMAGE_SUS_ALT_MESSAGE: 'Asistenčné technológie už indikujú, že ide o obrázok, takže "%(error)" môže byť zbytočné. Uistite sa, že alt text opisuje cieľ odkazu, nie doslovný opis obrázka.
Text alt: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Nájdená prípona súboru v texte alt. Ak obrázok vyjadruje príbeh, náladu alebo dôležitú informáciu, nezabudnite ho opísať. Odstráňte: %(error).
Textu alt: %(altText)',
+ ALT_PLACEHOLDER_MESSAGE: 'Nájdený text alt bez popisu alebo zástupného textu. Nahraďte nasledujúci alt text niečím zmysluplnejším: %(altText)',
+ ALT_HAS_SUS_WORD: 'Asistenčné technológie už indikujú, že ide o obrázok, takže "%(error)" môže byť zbytočné.
Alt text: %(altText)',
+ LINK_HIDDEN_FOCUSABLE: 'Odkaz má aria-hidden="true"
, ale stále je klávesnicou zamerateľný. Ak plánujete skryť nadbytočný alebo duplicitný odkaz, pridajte aj tabindex="-1"
.',
+ LINK_IMAGE_NO_ALT_TEXT: 'Obrázok v rámci odkazu je označený ako dekoratívny a nie je v ňom žiadny text odkazu. K obrázku pridajte text alt, ktorý opisuje cieľ odkazu.',
+ LINK_IMAGE_HAS_TEXT: 'Obrázok je označený ako dekoratívny, hoci odkaz používa okolitý text ako popisné označenie.',
+ LINK_IMAGE_LONG_ALT: 'Popis Alt textu na prepojenom obrázku je predlžený. Text alt na prepojených obrázkoch by mal popisovať, kam vás odkaz zavedie, nie doslovný opis obrázka. Zvážte použitie názvu stránky, na ktorú odkazuje, ako alt textu.
Alt text (%(altLength) znakov): %(altText)',
+ LINK_IMAGE_ALT_WARNING: 'Odkaz na obrázok obsahuje text alt. Opisuje text alt, kam vás odkaz zavedie? Zvážte použitie názvu stránky, na ktorú odkazuje, ako alt textu.
Alt text: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Odkaz na obrázok obsahuje obidva texty alt a okolitý text odkazu. Ak je tento obrázok dekoratívny a používa sa ako funkčný odkaz na inú stránku, zvážte označenie obrázka ako dekoratívneho alebo nulového - okolitý text odkazu by mal stačiť.
Textuálny text: %(altText)
Označenie odkazu: %(sanitizedText)',
+ IMAGE_FIGURE_DECORATIVE: 'Obrázok je označený ako dekoratívny a asistenčné technológie ho budú ignorovať.
Hoci bol uvedený nadpis, obrázok by mal mať vo väčšine prípadov aj alt text. - Titul alt by mal poskytovať stručný opis toho, čo je na obrázku.
- Titul by mal zvyčajne poskytovať kontext, aby sa obrázok prepojil s okolitým obsahom, alebo upozorniť na konkrétnu informáciu.
Zistite viac: alt versus figcaption.',
+ IMAGE_FIGURE_DUPLICATE_ALT: 'Nepoužívajte presne tie isté slová pre text alt aj nadpis. Čítačky obrazovky budú informáciu oznamovať dvakrát.- Textu alt by mal poskytovať stručný opis toho, čo je na obrázku.
- Titul by mal zvyčajne poskytovať kontext, aby súvisel s okolitým obsahom, alebo upozorniť na konkrétnu informáciu.
Ďalšie informácie: alt verzus titulok obrázku.
Textuálny text: %(altText)',
+ IMAGE_DECORATIVE: 'Obrázok je označený ako dekoratívny a asistenčné technológie ho budú ignorovať. Ak obrázok sprostredkúva príbeh, náladu alebo dôležité informácie - nezabudnite pridať alt text.',
+ IMAGE_ALT_TOO_LONG: 'Alt text popisu je príliš dlhý. Alt text by mal byť stručný, ale výstižný ako tweet (približne 100 znakov). Ak ide o zložitý obrázok alebo graf, zvážte umiestnenie dlhého popisu obrázka do textu pod ním alebo do akordeónového komponentu.
Textuálny text (%(altLength) znakov): %(altText)',
+ IMAGE_PASS: 'Alt text: %(altText)',
+ LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'V tlačidle obrázka chýba text alt. Pridajte text alt a uveďte prístupný názov. Napríklad: Vyhľadať alebo Odoslať.',
+ LABELS_INPUT_RESET_MESSAGE: 'Tlačidlá resetovania by sa nemali používať, ak to nie je výslovne potrebné, pretože sa ľahko aktivujú omylom.
Tip! Prečítajte si, prečo tlačidlá Reset a Cancel predstavujú problémy s použiteľnosťou.',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Vstup má prístupný názov, ale dbajte na to, aby bol viditeľný aj štítok.
Štítok vstupu: %(sanitizedText)',
+ LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'K tomuto vstupu nie je priradený žiadny štítok. Pridajte atribút for
k štítku, ktorý sa zhoduje s id
tohto vstupu.
ID tohto vstupu je: id="%(id)"',
+ LABELS_MISSING_LABEL_MESSAGE: 'K tomuto vstupu nie je priradený žiadny štítok. Prosím, pridajte id
k tomuto vstupu a pridajte zodpovedajúci atribút for
k štítku.',
+ EMBED_VIDEO: 'Uistite sa, že všetky videá majú skryté titulky. Poskytovanie titulkov pre všetok zvukový a obrazový obsah je povinnou požiadavkou úrovne A. Titulky podporujú osoby s poruchou sluchu alebo nepočujúce osoby.',
+ EMBED_AUDIO: 'Zabezpečte prepis všetkých podcastov. Poskytovanie prepisov zvukového obsahu je povinnou požiadavkou úrovne A. Prepisy podporujú ľudí s poruchou sluchu alebo nepočujúcich, ale môžu byť prínosom pre všetkých. Zvážte umiestnenie prepisu pod alebo v rámci akordeónového panelu.',
+ EMBED_DATA_VIZ: 'Takéto widgety na vizualizáciu údajov sú často problematické pre ľudí, ktorí na navigáciu používajú klávesnicu alebo čítačku obrazovky, a môžu predstavovať značné ťažkosti pre ľudí so slabým zrakom alebo farbosleposťou. Odporúča sa poskytnúť rovnaké informácie v alternatívnom (textovom alebo tabuľkovom) formáte pod widgetom.
Ďalšie informácie o komplexných obrázkoch.',
+ EMBED_MISSING_TITLE: 'Vložený obsah vyžaduje prístupný názov, ktorý opisuje jeho obsah. Uveďte jedinečný atribút title
alebo aria-label
na prvku iframe
. Ďalšie informácie o iFrame.',
+ EMBED_GENERAL_WARNING: 'Nie je možné skontrolovať vložený obsah. Uistite sa, že obrázky majú alt text, videá majú titulky, text má dostatočný kontrast a interaktívne komponenty sú prístupné z klávesnice.',
+ EMBED_UNFOCUSABLE: '<iframe>
s nezamerateľnými prvkami by nemalo mať tabindex="-1"
. Vložený obsah nebude dostupný pomocou klávesnice.',
+ QA_BAD_LINK: 'Nájdené zlé prepojenie. Zdá sa, že odkaz smeruje na vývojové prostredie.
Tento odkaz odkazuje na:
%(el)',
+ QA_BAD_ITALICS: 'Tučné písmo a kurzíva majú sémantický význam a nemali by sa používať na zvýraznenie celých odsekov. Tučný text by sa mal používať na výrazné zdôraznenie slova alebo frázy. Kurzíva by sa mala používať na zvýraznenie vlastných mien (t. j. názvov kníh a článkov), cudzích slov, citátov. Dlhé citáty by sa mali formátovať ako blokové citáty.',
+ QA_PDF: 'Nie je možné skontrolovať prístupnosť súborov PDF. Súbory PDF sa považujú za webový obsah a musia byť tiež prístupné. Súbory PDF často obsahujú problémy pre ľudí, ktorí používajú čítačky obrazovky (chýbajúce štrukturálne značky alebo chýbajúce označenia polí formulára), a ľudí so slabým zrakom (text sa po zväčšení nezobrazuje). - Ak ide o formulár, zvážte použitie prístupného formulára HTML ako alternatívy.
- Ak ide o dokument, zvážte jeho konverziu na webovú stránku.
V opačnom prípade skontrolujte PDF pre prístupnosť v Acrobat DC.',
+ QA_DOCUMENT: 'Nie je možné skontrolovať prístupnosť dokumentu. Prepojené dokumenty sa považujú za webový obsah a musia byť tiež prístupné. Skontrolujte tento dokument manuálne. - Urobte svoj dokument alebo prezentáciu v službe Google Workspace prístupnejšou.
- Urobte svoj dokument Office prístupnejším.
',
+ QA_PAGE_LANGUAGE: 'Jazyk stránky nie je deklarovaný! Prosím deklarujte jazyk v značke HTML.',
+ QA_PAGE_TITLE: 'Chýba názov stránky! Uveďte prosím názov stránky.',
+ QA_BLOCKQUOTE_MESSAGE: 'Je to nadpis? %(sanitizedText)
Blokové úvodzovky by sa mali používať len pre citácie. Ak to má byť nadpis, zmeňte tento blokový citát na sémantický nadpis (napr. Nadpis 2 alebo Nadpis 3).',
+ QA_FAKE_HEADING: 'Je to nadpis? %(boldtext)
Riadok tučného alebo veľkého textu môže vyzerať ako nadpis, ale osoba používajúca čítačku obrazovky nedokáže určiť, že je dôležitý, ani prejsť na jeho obsah. Tučný alebo veľký text by nikdy nemal nahrádzať sémantické nadpisy (nadpisy 2 až 6).',
+ QA_SHOULD_BE_LIST: 'Snažíte sa vytvoriť zoznam? Nájdená možná položka zoznamu: %(firstPrefix)
Uistite sa, že používate sémantické zoznamy tak, že namiesto nich použijete tlačidlá na formátovanie odrážok alebo čísel. Pri použití sémantického zoznamu dokážu asistenčné technológie sprostredkovať informácie, ako je celkový počet položiek a relatívna pozícia každej položky v zozname. Viac informácií o sémantických zoznamoch.',
+ QA_UPPERCASE_WARNING: 'Nájdené všetky čiapky. Niektoré čítačky obrazovky môžu interpretovať text písaný veľkými písmenami ako skratku a budú čítať každé písmeno samostatne. Okrem toho sa niektorým ľuďom všetky veľké písmená čítajú ťažšie a môže to pôsobiť dojmom, akoby sa kričalo.',
+ QA_DUPLICATE_ID: 'Nájdené duplicitné ID. Je známe, že chyby duplicitného ID spôsobujú problémy asistenčným technológiám pri pokusoch o interakciu s obsahom.
Odstráňte alebo zmeňte nasledujúce ID: %(id)',
+ QA_TEXT_UNDERLINE_WARNING: 'Podčiarknutý text sa môže zameniť s odkazmi. Zvážte použitie iného štýlu, napríklad <strong>
strong importance</strong>
alebo <em>
emphasis</em>
.',
+ QA_SUBSCRIPT_WARNING: 'Možnosti formátovania dolného a horného indexu by sa mali používať len na zmenu pozície textu pre typografické konvencie alebo normy. Nemali by sa používať výlučne na účely prezentácie alebo vzhľadu. Formátovanie celých viet spôsobuje problémy s čitateľnosťou. Medzi vhodné prípady použitia by patrilo zobrazovanie exponentov, poradových čísel, ako napríklad 4th namiesto fourth, a chemických vzorcov (napr. H2O).',
+ TABLES_MISSING_HEADINGS: 'Chýbajúce záhlavia tabuliek! Prístupné tabuľky potrebujú značku HTML, ktorá označuje bunky záhlavia a dátové bunky, ktoré definujú ich vzťah. Tieto informácie poskytujú kontext ľuďom, ktorí používajú asistenčné technológie. Tabuľky by sa mali používať len na tabuľkové údaje.
Ďalšie informácie o prístupných tabuľkách.',
+ TABLES_SEMANTIC_HEADING: 'Sémantické nadpisy, ako napríklad Nadpis 2 alebo Nadpis 3, by sa mali používať len pre časti obsahu; nie v tabuľkách HTML. Namiesto toho označte nadpisy tabuliek pomocou prvku <th>
.
Ďalšie informácie o prístupných tabuľkách.',
+ TABLES_EMPTY_HEADING: 'Nájdené prázdne záhlavie tabuľky! Hlavičky tabuliek by nikdy nemali byť prázdne. Je dôležité označiť záhlavia riadkov a/alebo stĺpcov, aby sa vyjadril ich vzťah. Tieto informácie poskytujú kontext ľuďom, ktorí používajú asistenčné technológie. Majte na pamäti, že tabuľky by sa mali používať len pre tabuľkové údaje.
Ďalšie informácie o prístupných tabuľkách.',
+ CONTRAST_ERROR: 'Tento text nie je dostatočne kontrastný s pozadím. Kontrastný pomer by mal byť aspoň 4,5:1 pre normálny text a 3:1 pre veľký text.
Kontrastný pomer je %(cratio) pre nasledujúci text: %(sanitizedText)',
+ CONTRAST_WARNING: 'Kontrast tohto textu nie je známy a je potrebné ho manuálne skontrolovať. Uistite sa, že text a pozadie majú výrazne kontrastné farby. Kontrastný pomer by mal byť aspoň 4,5:1 pre normálny text a 3:1 pre veľký text.
Prosím skontrolujte: %(sanitizedText)',
+ CONTRAST_INPUT_ERROR: 'Text v tomto vstupe nie je dostatočne kontrastný s pozadím. Kontrastný pomer by mal byť aspoň 4,5:1 pre normálny text a 3:1 pre veľký text.
Kontrastný pomer: %(cratio)',
+ },
+ };
+
+ return sk;
+
+}));
diff --git a/assets/dist/js/lang/sl.js b/assets/dist/js/lang/sl.js
index 52ca860..40994fb 100644
--- a/assets/dist/js/lang/sl.js
+++ b/assets/dist/js/lang/sl.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var sl = {
HEADING_NOT_VISIBLE_ALERT: 'Glava ni vidna; lahko je skrita ali znotraj komponente harmonike ali zavihka.',
SKIP_TO_PAGE_ISSUES: 'Preskoči na stran Vprašanja',
CONSOLE_ERROR_MESSAGE: 'Opravičujemo se, vendar je na tej strani prišlo do težave s preverjanjem dostopnosti. Ali jo lahko prijavite prek tega obrazca ali na GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Prikaži %(dismissCount) zavrnjenih opozoril',
DISMISS: 'Zavrnite',
DISMISSED: 'Zavrnjena opozorila',
DISMISS_REMINDER: 'Upoštevajte, da so opozorila le začasno zavrnjena. Z brisanjem zgodovine brskalnika in piškotkov se bodo na vseh straneh obnovila vsa predhodno zavrnjena opozorila.',
+
+ // Export
+ DATE: 'Datum',
+ PAGE_TITLE: 'Naslov strani',
+ RESULTS: 'Rezultati',
+ EXPORT_RESULTS: 'Izvozi rezultate',
+ GENERATED: 'Rezultati, ustvarjeni s %(tool).',
+ PREVIEW: 'Predogled',
+ ELEMENT: 'Element',
+ PATH: 'Pot',
+
+ // Colour filters
COLOUR_FILTER: 'Barvni filter',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopija',
@@ -60,6 +74,8 @@ var sl = {
BLUE_EYE: 'Modra žaluzija.',
MONO_EYE: 'Rdeči, modri in zeleni slepi.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Barvni filtri ne delujejo v načinu visokega kontrasta.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'slika',
'grafični',
@@ -138,6 +154,7 @@ var sl = {
HEADING_MISSING_ONE: 'Manjka naslov 1. Naslov 1 mora biti začetek glavnega vsebinskega področja in je glavni naslov, ki opisuje splošni namen strani. Preberite več o Strukturi naslovov.',
HEADING_EMPTY_WITH_IMAGE: 'Naslov nima besedila, vsebuje pa sliko. Če to ni naslov, spremenite njegovo obliko iz Nadpis %(level) v Normalno ali Odstavek. V nasprotnem primeru sliki dodajte besedilo alt, če ni okrasno.',
PANEL_HEADING_MISSING_ONE: 'Manjka naslov 1!',
+ PANEL_NO_HEADINGS: 'Ni najdenih naslovov.',
LINK_EMPTY: 'Odstranite prazne povezave brez besedila.',
LINK_EMPTY_LINK_NO_LABEL: 'Povezava nima razločljivega besedila, ki bi bilo vidno za bralnike zaslona in drugo podporno tehnologijo. Popravek: Dodajte nekaj jedrnatega besedila, ki opisuje, kam vas bo povezava pripeljala. Če gre za povezavo ikona ali SVG,, ji verjetno manjka opisna oznaka. Če menite, da je ta povezava napaka zaradi napake pri kopiranju/prilepljanju, razmislite o njenem izbrisu. ',
LINK_LABEL: 'Etiketa povezave: %(sanitizedText)',
@@ -151,18 +168,18 @@ var sl = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Slika se uporablja kot povezava z okoliškim besedilom, čeprav bi moral biti atribut alt označen kot okrasni ali ničen.',
MISSING_ALT_LINK_MESSAGE: 'Slika se uporablja kot povezava, vendar nima besedila Alt! Prepričajte se, da besedilo alt opisuje, kam vas bo povezava pripeljala.',
MISSING_ALT_MESSAGE: 'Manjka besedilo alt! Če slika sporoča zgodbo, razpoloženje ali pomembne informacije, jo obvezno opišite.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Najdena razširitev datoteke v besedilu alt. Prepričajte se, da besedilo alt opisuje cilj povezave in ne dobesednega opisa slike. Odstrani: %(error).
Vrstično besedilo: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Najdena razširitev datoteke v besedilu alt. Prepričajte se, da besedilo alt opisuje cilj povezave in ne dobesednega opisa slike. Odstrani: %(error).
Vrstično besedilo: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'V povezani sliki je bilo najdeno neopisno ali nadomestno besedilo alt. Prepričajte se, da besedilo alt opisuje cilj povezave in ne dobesednega opisa slike. Zamenjajte naslednje besedilo alt: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Pomožne tehnologije že označujejo, da gre za sliko, zato je "%(error)" morda odveč. Zagotovite, da besedilo alt opisuje cilj povezave in ne dobesednega opisa slike.
Vrstično besedilo: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Najdena razširitev datoteke v besedilu alt. Če slika sporoča zgodbo, razpoloženje ali pomembne informacije, jo obvezno opišite. Odstrani: %(error).
Tekst besedila: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Najdena razširitev datoteke v besedilu alt. Če slika sporoča zgodbo, razpoloženje ali pomembne informacije, jo obvezno opišite. Odstrani: %(error).
Tekst besedila: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Najdeno neopisno ali nadomestno besedilo alt. Naslednje besedilo alt zamenjajte z bolj smiselnim: %(altText)',
ALT_HAS_SUS_WORD: 'Pomožne tehnologije že označujejo, da gre za sliko, zato je "%(error)" morda odveč.
Tekst besedila: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Povezava okoli slike ima aria-hidden="true"
, vendar jo je še vedno mogoče fokusirati s tipkovnico. Če želite skriti odvečno ali podvojeno povezavo, dodajte tudi tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Povezava ima aria-hidden="true"
, vendar je še vedno dostopna s tipkovnico. Če nameravate skriti redundantno ali podvojeno povezavo, dodajte tudi tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Slika v povezavi je označena kot okrasna in nima besedila povezave. Sliki dodajte besedilo alt, ki opisuje cilj povezave.',
LINK_IMAGE_HAS_TEXT: 'Slika je označena kot dekorativna, čeprav povezava uporablja okoliško besedilo kot opisno oznako.',
LINK_IMAGE_LONG_ALT: 'Opis besedila Alt na povezani sliki je predolg. Besedilo alt na povezanih slikah mora opisovati, kam vodi povezava, in ne dobesednega opisa slike. Premislite, da bi kot altovsko besedilo uporabili naslov strani, na katero vodi povezava.
Alt besedilo (%(altLength) znakov): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Povezava do slike vsebuje besedilo alt. Ali besedilo opisuje, kam vas bo povezava pripeljala? Razmislite o uporabi naslova strani, na katero vodi povezava, kot alt besedila.
Temeljno besedilo: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Slikovna povezava vsebuje oboje besedilo alt in okoliško besedilo povezave. Če je ta slika okrasna in se uporablja kot funkcionalna povezava na drugo stran, razmislite o označitvi slike kot okrasne ali ničelne - okoliško besedilo povezave bi moralo zadostovati.
Tekst besedila: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Slikovna povezava vsebuje oboje besedilo alt in okoliško besedilo povezave. Če je ta slika okrasna in se uporablja kot funkcionalna povezava na drugo stran, razmislite o označitvi slike kot okrasne ali ničelne - okoliško besedilo povezave bi moralo zadostovati.
Tekst besedila: %(altText)
Etiketa povezave: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Slika je označena kot dekorativna in jo podporna tehnologija ne bo upoštevala.
Čeprav je bil naveden naslov, bi morala imeti slika v večini primerov tudi alt besedilo. - Temeljno besedilo mora vsebovati jedrnat opis tega, kar je na sliki.
- Podpis mora običajno zagotavljati kontekst, ki sliko povezuje z okoliško vsebino, ali opozarjati na določeno informacijo.
Preberi več: alt v primerjavi s figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Ne uporabljajte istih besed za besedilo alta in napisa. Bralniki zaslona bodo informacije objavili dvakrat.- Besedilo alt mora vsebovati kratek opis tega, kar je na sliki.
- Podpis mora običajno vsebovati kontekst, ki sliko povezuje z okoliško vsebino, ali pa opozarja na določeno informacijo.
Več informacij: alt v primerjavi s figcaption.
Vrstično besedilo: %(altText)',
IMAGE_DECORATIVE: 'Slika je označena kot dekorativna in jo podporna tehnologija ne bo upoštevala. Če slika sporoča zgodbo, razpoloženje ali pomembne informacije, obvezno dodajte dodatno besedilo.',
@@ -170,14 +187,15 @@ var sl = {
IMAGE_PASS: 'Tekst besedila: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'V gumbu za sliko manjka besedilo alt. Dodajte besedilo alt in zagotovite dostopno ime. Na primer: Poišči ali Oddaj.',
LABELS_INPUT_RESET_MESSAGE: 'Gumbe za ponastavitev ne smete uporabljati, razen če je to posebej potrebno, saj jih je mogoče zlahka aktivirati po pomoti.
Tip! Preberite, zakaj Gumbova Reset in Cancel predstavljata težave z uporabnostjo.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Vnos ima dostopno ime, vendar poskrbite, da je vidna tudi nalepka.
Dostopno ime za ta vnos je: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Vnos ima dostopno ime, vendar poskrbite, da je vidna tudi nalepka.
Oznaka za vnos: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'S tem vnosom ni povezana nobena oznaka. Dodajte atribut for
oznaki, ki ustreza id
tega vnosa.
ID tega vnosa je: id="%(id)".',
LABELS_MISSING_LABEL_MESSAGE: 'S tem vnosom ni povezana nobena oznaka. Dodajte id
temu vnosu in dodajte ustrezen atribut for
oznaki.',
EMBED_VIDEO: 'Poskrbite, da bodo vsi videoposnetki opremljeni s podnapisi. Zagotavljanje podnapisov za vse zvočne in video vsebine je obvezna zahteva na ravni A. Podnapisi so v pomoč gluhim in naglušnim osebam.',
EMBED_AUDIO: 'Za vse podcaste zagotovite prepis. Zagotavljanje prepisov za zvočne vsebine je obvezna zahteva na ravni A. Prepisi so v pomoč gluhim in naglušnim osebam, koristijo pa lahko vsem. Razmislite o tem, da bi prepis umestili pod ali v akordno ploščo.',
EMBED_DATA_VIZ: 'Tovrstni pripomočki za vizualizacijo podatkov so pogosto problematični za osebe, ki za navigacijo uporabljajo tipkovnico ali bralnik zaslona, in lahko predstavljajo veliko težavo za slabovidne ali barvno slepe osebe. Priporočljivo je, da pod gradnikom zagotovite enake informacije v alternativni obliki (besedilo ali tabela).
Preberite več o kompleksnih slikah.',
- EMBED_MISSING_TITLE: 'Vgrajena vsebina potrebuje dostopno ime, ki opisuje njeno vsebino. V elementu iframe
navedite edinstven atribut title
ali aria-label
. Preberite več o iFrames.',
+ EMBED_MISSING_TITLE: 'Vgrajena vsebina potrebuje dostopno ime, ki opisuje njeno vsebino. V elementu iframe
navedite edinstven atribut title
ali aria-label
. Preberite več o iFrames.',
EMBED_GENERAL_WARNING: 'Ni mogoče preveriti vdelane vsebine. Prepričajte se, da imajo slike alternativno besedilo, videoposnetki podnapise, da je besedilo dovolj kontrastno in da so interaktivne komponente dostopne s tipkovnice.',
+ EMBED_UNFOCUSABLE: '<iframe>
z elementi, ki se jim ni mogoče osredotočiti, ne sme imeti tabindex="-1"
. Vgrajena vsebina ne bo dostopna prek tipkovnice.',
QA_BAD_LINK: 'Najdena slaba povezava. Zdi se, da povezava kaže na razvojno okolje.
Ta povezava kaže na:
%(el)',
QA_BAD_ITALICS: 'Oznake krepko in poševno imajo semantični pomen in se ne smejo uporabljati za poudarjanje celotnih odstavkov. Krepko označeno besedilo je treba uporabiti za močno izpostavitev besede ali besedne zveze. Ležečo pisavo je treba uporabljati za poudarjanje lastnih imen (npr. naslovov knjig in člankov), tujih besed, narekovajev. Dolgi citati morajo biti oblikovani kot blokovski citati.',
QA_PDF: 'Ni mogoče preveriti dostopnosti datotek PDF. Datoteke PDF veljajo za spletno vsebino in morajo biti prav tako dostopne. Datoteke PDF pogosto vsebujejo težave za ljudi, ki uporabljajo bralnike zaslona (manjkajoče strukturne oznake ali manjkajoče oznake polj obrazca), in ljudi s slabim vidom (besedilo se ne preliva, ko je povečano). - Če gre za obrazec, razmislite o uporabi dostopnega obrazca HTML kot alternative.
- Če gre za dokument, razmislite o pretvorbi v spletno stran.
V nasprotnem primeru preverite PDF za dostopnost v programu Acrobat DC.',
diff --git a/assets/dist/js/lang/sl.umd.js b/assets/dist/js/lang/sl.umd.js
index 078793f..4b1538a 100644
--- a/assets/dist/js/lang/sl.umd.js
+++ b/assets/dist/js/lang/sl.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: 'Glava ni vidna; lahko je skrita ali znotraj komponente harmonike ali zavihka.',
SKIP_TO_PAGE_ISSUES: 'Preskoči na stran Vprašanja',
CONSOLE_ERROR_MESSAGE: 'Opravičujemo se, vendar je na tej strani prišlo do težave s preverjanjem dostopnosti. Ali jo lahko prijavite prek tega obrazca ali na GitHub?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Prikaži %(dismissCount) zavrnjenih opozoril',
DISMISS: 'Zavrnite',
DISMISSED: 'Zavrnjena opozorila',
DISMISS_REMINDER: 'Upoštevajte, da so opozorila le začasno zavrnjena. Z brisanjem zgodovine brskalnika in piškotkov se bodo na vseh straneh obnovila vsa predhodno zavrnjena opozorila.',
+
+ // Export
+ DATE: 'Datum',
+ PAGE_TITLE: 'Naslov strani',
+ RESULTS: 'Rezultati',
+ EXPORT_RESULTS: 'Izvozi rezultate',
+ GENERATED: 'Rezultati, ustvarjeni s %(tool).',
+ PREVIEW: 'Predogled',
+ ELEMENT: 'Element',
+ PATH: 'Pot',
+
+ // Colour filters
COLOUR_FILTER: 'Barvni filter',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopija',
@@ -66,6 +80,8 @@
BLUE_EYE: 'Modra žaluzija.',
MONO_EYE: 'Rdeči, modri in zeleni slepi.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Barvni filtri ne delujejo v načinu visokega kontrasta.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'slika',
'grafični',
@@ -144,6 +160,7 @@
HEADING_MISSING_ONE: 'Manjka naslov 1. Naslov 1 mora biti začetek glavnega vsebinskega področja in je glavni naslov, ki opisuje splošni namen strani. Preberite več o Strukturi naslovov.',
HEADING_EMPTY_WITH_IMAGE: 'Naslov nima besedila, vsebuje pa sliko. Če to ni naslov, spremenite njegovo obliko iz Nadpis %(level) v Normalno ali Odstavek. V nasprotnem primeru sliki dodajte besedilo alt, če ni okrasno.',
PANEL_HEADING_MISSING_ONE: 'Manjka naslov 1!',
+ PANEL_NO_HEADINGS: 'Ni najdenih naslovov.',
LINK_EMPTY: 'Odstranite prazne povezave brez besedila.',
LINK_EMPTY_LINK_NO_LABEL: 'Povezava nima razločljivega besedila, ki bi bilo vidno za bralnike zaslona in drugo podporno tehnologijo. Popravek: Dodajte nekaj jedrnatega besedila, ki opisuje, kam vas bo povezava pripeljala. Če gre za povezavo ikona ali SVG,, ji verjetno manjka opisna oznaka. Če menite, da je ta povezava napaka zaradi napake pri kopiranju/prilepljanju, razmislite o njenem izbrisu. ',
LINK_LABEL: 'Etiketa povezave: %(sanitizedText)',
@@ -157,18 +174,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Slika se uporablja kot povezava z okoliškim besedilom, čeprav bi moral biti atribut alt označen kot okrasni ali ničen.',
MISSING_ALT_LINK_MESSAGE: 'Slika se uporablja kot povezava, vendar nima besedila Alt! Prepričajte se, da besedilo alt opisuje, kam vas bo povezava pripeljala.',
MISSING_ALT_MESSAGE: 'Manjka besedilo alt! Če slika sporoča zgodbo, razpoloženje ali pomembne informacije, jo obvezno opišite.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Najdena razširitev datoteke v besedilu alt. Prepričajte se, da besedilo alt opisuje cilj povezave in ne dobesednega opisa slike. Odstrani: %(error).
Vrstično besedilo: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Najdena razširitev datoteke v besedilu alt. Prepričajte se, da besedilo alt opisuje cilj povezave in ne dobesednega opisa slike. Odstrani: %(error).
Vrstično besedilo: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'V povezani sliki je bilo najdeno neopisno ali nadomestno besedilo alt. Prepričajte se, da besedilo alt opisuje cilj povezave in ne dobesednega opisa slike. Zamenjajte naslednje besedilo alt: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Pomožne tehnologije že označujejo, da gre za sliko, zato je "%(error)" morda odveč. Zagotovite, da besedilo alt opisuje cilj povezave in ne dobesednega opisa slike.
Vrstično besedilo: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Najdena razširitev datoteke v besedilu alt. Če slika sporoča zgodbo, razpoloženje ali pomembne informacije, jo obvezno opišite. Odstrani: %(error).
Tekst besedila: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Najdena razširitev datoteke v besedilu alt. Če slika sporoča zgodbo, razpoloženje ali pomembne informacije, jo obvezno opišite. Odstrani: %(error).
Tekst besedila: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Najdeno neopisno ali nadomestno besedilo alt. Naslednje besedilo alt zamenjajte z bolj smiselnim: %(altText)',
ALT_HAS_SUS_WORD: 'Pomožne tehnologije že označujejo, da gre za sliko, zato je "%(error)" morda odveč.
Tekst besedila: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Povezava okoli slike ima aria-hidden="true"
, vendar jo je še vedno mogoče fokusirati s tipkovnico. Če želite skriti odvečno ali podvojeno povezavo, dodajte tudi tabindex="-1"
.',
+ LINK_HIDDEN_FOCUSABLE: 'Povezava ima aria-hidden="true"
, vendar je še vedno dostopna s tipkovnico. Če nameravate skriti redundantno ali podvojeno povezavo, dodajte tudi tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Slika v povezavi je označena kot okrasna in nima besedila povezave. Sliki dodajte besedilo alt, ki opisuje cilj povezave.',
LINK_IMAGE_HAS_TEXT: 'Slika je označena kot dekorativna, čeprav povezava uporablja okoliško besedilo kot opisno oznako.',
LINK_IMAGE_LONG_ALT: 'Opis besedila Alt na povezani sliki je predolg. Besedilo alt na povezanih slikah mora opisovati, kam vodi povezava, in ne dobesednega opisa slike. Premislite, da bi kot altovsko besedilo uporabili naslov strani, na katero vodi povezava.
Alt besedilo (%(altLength) znakov): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Povezava do slike vsebuje besedilo alt. Ali besedilo opisuje, kam vas bo povezava pripeljala? Razmislite o uporabi naslova strani, na katero vodi povezava, kot alt besedila.
Temeljno besedilo: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Slikovna povezava vsebuje oboje besedilo alt in okoliško besedilo povezave. Če je ta slika okrasna in se uporablja kot funkcionalna povezava na drugo stran, razmislite o označitvi slike kot okrasne ali ničelne - okoliško besedilo povezave bi moralo zadostovati.
Tekst besedila: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Slikovna povezava vsebuje oboje besedilo alt in okoliško besedilo povezave. Če je ta slika okrasna in se uporablja kot funkcionalna povezava na drugo stran, razmislite o označitvi slike kot okrasne ali ničelne - okoliško besedilo povezave bi moralo zadostovati.
Tekst besedila: %(altText)
Etiketa povezave: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Slika je označena kot dekorativna in jo podporna tehnologija ne bo upoštevala.
Čeprav je bil naveden naslov, bi morala imeti slika v večini primerov tudi alt besedilo. - Temeljno besedilo mora vsebovati jedrnat opis tega, kar je na sliki.
- Podpis mora običajno zagotavljati kontekst, ki sliko povezuje z okoliško vsebino, ali opozarjati na določeno informacijo.
Preberi več: alt v primerjavi s figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Ne uporabljajte istih besed za besedilo alta in napisa. Bralniki zaslona bodo informacije objavili dvakrat.- Besedilo alt mora vsebovati kratek opis tega, kar je na sliki.
- Podpis mora običajno vsebovati kontekst, ki sliko povezuje z okoliško vsebino, ali pa opozarja na določeno informacijo.
Več informacij: alt v primerjavi s figcaption.
Vrstično besedilo: %(altText)',
IMAGE_DECORATIVE: 'Slika je označena kot dekorativna in jo podporna tehnologija ne bo upoštevala. Če slika sporoča zgodbo, razpoloženje ali pomembne informacije, obvezno dodajte dodatno besedilo.',
@@ -176,14 +193,15 @@
IMAGE_PASS: 'Tekst besedila: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'V gumbu za sliko manjka besedilo alt. Dodajte besedilo alt in zagotovite dostopno ime. Na primer: Poišči ali Oddaj.',
LABELS_INPUT_RESET_MESSAGE: 'Gumbe za ponastavitev ne smete uporabljati, razen če je to posebej potrebno, saj jih je mogoče zlahka aktivirati po pomoti.
Tip! Preberite, zakaj Gumbova Reset in Cancel predstavljata težave z uporabnostjo.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Vnos ima dostopno ime, vendar poskrbite, da je vidna tudi nalepka.
Dostopno ime za ta vnos je: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Vnos ima dostopno ime, vendar poskrbite, da je vidna tudi nalepka.
Oznaka za vnos: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'S tem vnosom ni povezana nobena oznaka. Dodajte atribut for
oznaki, ki ustreza id
tega vnosa.
ID tega vnosa je: id="%(id)".',
LABELS_MISSING_LABEL_MESSAGE: 'S tem vnosom ni povezana nobena oznaka. Dodajte id
temu vnosu in dodajte ustrezen atribut for
oznaki.',
EMBED_VIDEO: 'Poskrbite, da bodo vsi videoposnetki opremljeni s podnapisi. Zagotavljanje podnapisov za vse zvočne in video vsebine je obvezna zahteva na ravni A. Podnapisi so v pomoč gluhim in naglušnim osebam.',
EMBED_AUDIO: 'Za vse podcaste zagotovite prepis. Zagotavljanje prepisov za zvočne vsebine je obvezna zahteva na ravni A. Prepisi so v pomoč gluhim in naglušnim osebam, koristijo pa lahko vsem. Razmislite o tem, da bi prepis umestili pod ali v akordno ploščo.',
EMBED_DATA_VIZ: 'Tovrstni pripomočki za vizualizacijo podatkov so pogosto problematični za osebe, ki za navigacijo uporabljajo tipkovnico ali bralnik zaslona, in lahko predstavljajo veliko težavo za slabovidne ali barvno slepe osebe. Priporočljivo je, da pod gradnikom zagotovite enake informacije v alternativni obliki (besedilo ali tabela).
Preberite več o kompleksnih slikah.',
- EMBED_MISSING_TITLE: 'Vgrajena vsebina potrebuje dostopno ime, ki opisuje njeno vsebino. V elementu iframe
navedite edinstven atribut title
ali aria-label
. Preberite več o iFrames.',
+ EMBED_MISSING_TITLE: 'Vgrajena vsebina potrebuje dostopno ime, ki opisuje njeno vsebino. V elementu iframe
navedite edinstven atribut title
ali aria-label
. Preberite več o iFrames.',
EMBED_GENERAL_WARNING: 'Ni mogoče preveriti vdelane vsebine. Prepričajte se, da imajo slike alternativno besedilo, videoposnetki podnapise, da je besedilo dovolj kontrastno in da so interaktivne komponente dostopne s tipkovnice.',
+ EMBED_UNFOCUSABLE: '<iframe>
z elementi, ki se jim ni mogoče osredotočiti, ne sme imeti tabindex="-1"
. Vgrajena vsebina ne bo dostopna prek tipkovnice.',
QA_BAD_LINK: 'Najdena slaba povezava. Zdi se, da povezava kaže na razvojno okolje.
Ta povezava kaže na:
%(el)',
QA_BAD_ITALICS: 'Oznake krepko in poševno imajo semantični pomen in se ne smejo uporabljati za poudarjanje celotnih odstavkov. Krepko označeno besedilo je treba uporabiti za močno izpostavitev besede ali besedne zveze. Ležečo pisavo je treba uporabljati za poudarjanje lastnih imen (npr. naslovov knjig in člankov), tujih besed, narekovajev. Dolgi citati morajo biti oblikovani kot blokovski citati.',
QA_PDF: 'Ni mogoče preveriti dostopnosti datotek PDF. Datoteke PDF veljajo za spletno vsebino in morajo biti prav tako dostopne. Datoteke PDF pogosto vsebujejo težave za ljudi, ki uporabljajo bralnike zaslona (manjkajoče strukturne oznake ali manjkajoče oznake polj obrazca), in ljudi s slabim vidom (besedilo se ne preliva, ko je povečano). - Če gre za obrazec, razmislite o uporabi dostopnega obrazca HTML kot alternative.
- Če gre za dokument, razmislite o pretvorbi v spletno stran.
V nasprotnem primeru preverite PDF za dostopnost v programu Acrobat DC.',
diff --git a/assets/dist/js/lang/sv.js b/assets/dist/js/lang/sv.js
index 8ca5b6b..712b172 100644
--- a/assets/dist/js/lang/sv.js
+++ b/assets/dist/js/lang/sv.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -46,6 +46,16 @@ var sv = {
SKIP_TO_PAGE_ISSUES: 'Hoppa till sidans problem',
CONSOLE_ERROR_MESSAGE: 'Tyvärr, men det finns ett problem med tillgänglighetskontrollen på den här sidan. Kan du rapportera det via det här formuläret eller på GitHub?',
+ // Export
+ DATE: 'Datum',
+ PAGE_TITLE: 'Sidtitel',
+ RESULTS: 'Resultat',
+ EXPORT_RESULTS: 'Exportera resultat',
+ GENERATED: 'Resultat genererat med %(tool).',
+ PREVIEW: 'Förhandsvisning',
+ ELEMENT: 'Element',
+ PATH: 'Sökväg',
+
// Dismiss
PANEL_DISMISS_BUTTON: 'Visa %(dismissCount) ignorerade varningar',
DISMISS: 'Ignorera',
@@ -129,6 +139,7 @@ var sv = {
HEADING_MISSING_ONE: 'Saknar Rubrik 1. Rubrik 1 bör vara början på huvudinnehållsområdet, och är huvudrubriken som beskriver sidans övergripande syfte. Läs mer om Rubrikstruktur.',
HEADING_EMPTY_WITH_IMAGE: 'Rubriken har ingen text, men innehåller en bild. Om detta inte är en rubrik ändrar du dess format från Rubrik %(level) till Normal eller Stycke. Annars, lägg till alt-text till bilden om den inte är dekorativ.',
PANEL_HEADING_MISSING_ONE: 'Saknar rubrik 1!',
+ PANEL_NO_HEADINGS: 'Inga rubriker hittades.',
// Links
LINK_EMPTY: 'Ta bort tomma länkar utan text.',
@@ -148,18 +159,18 @@ var sv = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Bilden används som en länk med omgivande text, dock borde alt-attributet markeras som dekorativt eller null.',
MISSING_ALT_LINK_MESSAGE: 'Bilden används som länk men saknar alt-text! Se till att alt-texten beskriver vart länken tar dig.',
MISSING_ALT_MESSAGE: 'Saknar alt-text! Om bilden förmedlar en historia, stämning eller viktig information – se till att beskriva bilden.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Filändelse hittades i alt-texten. Se till att alt-texten beskriver destinationen för länken, inte en bokstavlig beskrivning av bilden. Ta bort: %(error).
Alt-text: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Filändelse hittades i alt-texten. Se till att alt-texten beskriver destinationen för länken, inte en bokstavlig beskrivning av bilden. Ta bort: %(error).
Alt-text: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Hittade icke-beskrivande eller platshållande alt-text i en länkad bild. Se till att alt-texten beskriver länkens destination, och inte är en bokstavlig beskrivning av bilden. Ersätt följande alt-text: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Hjälpmedel visar redan att detta är en bild, så "%(error)" kan vara överflödig. Se till att alt-texten beskriver länkens destination, och inte är en bokstavlig beskrivning av bilden.
Alt-text: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Filändelse hittades i alt-texten. Om bilden förmedlar en historia, stämning eller viktig information – se till att beskriva bilden. Ta bort: %(error).
Alt-text: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Filändelse hittades i alt-texten. Om bilden förmedlar en historia, stämning eller viktig information – se till att beskriva bilden. Ta bort: %(error).
Alt-text: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Hittade icke-beskrivande eller platshållande alt-text. Ersätt följande alt-text med något mer meningsfullt: %(altText)',
ALT_HAS_SUS_WORD: 'Hjälpmedel visar redan att detta är en bild, så "%(error)" kan vara överflödig.
Alt-text: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Länken runt bilden har aria-hidden="true"
men kan fortfarande fokuseras med hjälp av tangentbordet. Om du tänker dölja en överflödig eller duplicerad länk, lägg till tabindex="-1"
också.',
+ LINK_HIDDEN_FOCUSABLE: 'Länken har aria-hidden="true"
men kan fortfarande fokuseras med hjälp av tangentbordet. Om du tänker dölja en överflödig eller duplicerad länk, lägg till tabindex="-1"
också.',
LINK_IMAGE_NO_ALT_TEXT: 'Bilden i länken är markerad som dekorativ och det finns ingen länktext. Vänligen lägg till alternativ text till bilden som beskriver länkens destination.',
LINK_IMAGE_HAS_TEXT: 'Bilden är markerad som dekorativ, även om länken använder den omgivande texten som en beskrivande etikett.',
LINK_IMAGE_LONG_ALT: 'Alternativ textbeskrivning för en länkad bild är för lång. Alt-text för länkade bilder ska beskriva vart länken tar dig, inte vara en bokstavlig beskrivning av bilden. Överväg att använda titeln på sidan den länkar till som alt-text.
Alt-text (%(altLength) tecken): stark> %(altText)',
LINK_IMAGE_ALT_WARNING: 'Bildlänken innehåller alt-text. Beskriver alt-texten vart länken tar dig? Överväg att använda titeln på den sida som länken leder till som alt-text.
Alt-text: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Bildlänken innehåller både alt-text och omgivande länktext. Om den här bilden är dekorativ och används som en funktionell länk till en annan sida, överväg att markera bilden som dekorativ eller null - den omgivande länktexten bör räcka.
Alt-text: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Bildlänken innehåller både alt-text och omgivande länktext. Om den här bilden är dekorativ och används som en funktionell länk till en annan sida, överväg att markera bilden som dekorativ eller null - den omgivande länktexten bör räcka.
Alt-text: %(altText)
Länketikett: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Bilden är markerad som dekorativ och kommer att ignoreras av hjälpmedel.
Även om en textning tillhandahölls, bör bilden också ha alternativ text i de flesta fall. - Alt-texten ska ge en kortfattad beskrivning av vad som finns i bilden.
- Texten ska vanligtvis ge ett sammanhang för att relatera bilden till det omgivande innehållet, eller ge uppmärksamhet åt viss information.
Läs mer: alt kontra figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Använd inte exakt samma ord för både alt- och bildtext. Skärmläsare kommer då att förmedla samma information två gånger.- Alt-texten ska ge en kortfattad beskrivning av vad som finns i bilden.
- Tillskriften ska vanligtvis ge sammanhang för att relatera bilden tillbaka till omgivningen innehåll eller ge uppmärksamhet åt en viss information.
Läs mer: alt kontra figcaption.
Alt-text: %(altText)',
IMAGE_DECORATIVE: 'Bilden är markerad som dekorativ och kommer att ignoreras av hjälpmedel. Om bilden förmedlar en historia, stämning eller annan viktig information – se till att lägga till alt-text.',
@@ -169,7 +180,7 @@ var sv = {
// Labels
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Bildknappen saknar alternativ text. Lägg till alt-text för att ge knappen ett tillgängligt namn. Till exempel: Sök eller Skicka.',
LABELS_INPUT_RESET_MESSAGE: 'Återställningsknappar bör inte användas om de inte specifikt behövs, eftersom de är lätta att aktivera av misstag.
Tips! Lär dig varför Återställ- och Avbryt-knapparna orsakar användbarhetsproblem.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Inmatningsfältet har ett tillgängligt namn, men se till att det även finns en synlig etikett.
Det tillgängliga namnet för detta inmatningsfält är: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Inmatningsfältet har ett tillgängligt namn, men se till att det även finns en synlig etikett.
Inmatningsetikett: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Det finns ingen etikett associerad med detta inmatningsfält. Lägg till ett for
-attribut till etiketten som matchar id
för detta inmatningsfält.
ID:t för detta inmatningsfält är: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Det finns ingen etikett associerad med detta inmatningsfält. Vänligen lägg till ett id
till denna inmatning och lägg till ett matchande for
-attribut till etiketten.',
@@ -177,8 +188,9 @@ var sv = {
EMBED_VIDEO: 'Se till att alla videor har undertexter. Att tillhandahålla textning för allt ljud- och videoinnehåll är ett obligatoriskt krav för nivå A. Bildtexter stöder personer som är D/döva eller hörselskada.',
EMBED_AUDIO: 'Se till att tillhandahålla en transkription för alla poddsändningar. Att tillhandahålla transkriptioner för ljudinnehåll är ett obligatoriskt krav för nivå A. Avskrifter stöder personer som är D/döva eller hörselskada, men kan gynna alla. Överväg att placera utskriften under poddsändingen eller i en dragspelspanel.',
EMBED_DATA_VIZ: 'Datavisualiseringswidgetar som denna är ofta problematiska för personer som använder tangentbord eller skärmläsare för att navigera, och kan innebära betydande svårigheter för personer som har nedsatt syn eller färgblindhet. Det rekommenderas att tillhandahålla samma information i ett alternativt format (text eller tabell) under widgeten.
Läs mer om komplexa bilder.',
- EMBED_MISSING_TITLE: 'Inbäddat innehåll kräver ett tillgängligt namn som beskriver det inbäddade innehåll. Sätt ett unikt title
- eller aria-label
-attribut på iframe
-elementet. Läs mer om iFrames.',
+ EMBED_MISSING_TITLE: 'Inbäddat innehåll kräver ett tillgängligt namn som beskriver det inbäddade innehåll. Sätt ett unikt title
- eller aria-label
-attribut på iframe
-elementet. Läs mer om iFrames.',
EMBED_GENERAL_WARNING: 'Det gick inte att kontrollera inbäddat innehåll. Se till att bilder har alt-text, videor har undertexter, text har tillräcklig kontrast och att interaktiva komponenter är tillgängliga för tangentbord.',
+ EMBED_UNFOCUSABLE: '<iframe>
med oväxlingsbara element bör inte ha tabindex="-1"
. Det inbäddade innehållet kommer inte att vara tillgängligt med tangentbordet.',
// Quality assurance
QA_BAD_LINK: 'Dålig länk hittades. Länk verkar peka till en utvecklingsmiljö.
Den här länken pekar på:
%(el)',
diff --git a/assets/dist/js/lang/sv.umd.js b/assets/dist/js/lang/sv.umd.js
index 819dfd0..0694c27 100644
--- a/assets/dist/js/lang/sv.umd.js
+++ b/assets/dist/js/lang/sv.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -52,6 +52,16 @@
SKIP_TO_PAGE_ISSUES: 'Hoppa till sidans problem',
CONSOLE_ERROR_MESSAGE: 'Tyvärr, men det finns ett problem med tillgänglighetskontrollen på den här sidan. Kan du rapportera det via det här formuläret eller på GitHub?',
+ // Export
+ DATE: 'Datum',
+ PAGE_TITLE: 'Sidtitel',
+ RESULTS: 'Resultat',
+ EXPORT_RESULTS: 'Exportera resultat',
+ GENERATED: 'Resultat genererat med %(tool).',
+ PREVIEW: 'Förhandsvisning',
+ ELEMENT: 'Element',
+ PATH: 'Sökväg',
+
// Dismiss
PANEL_DISMISS_BUTTON: 'Visa %(dismissCount) ignorerade varningar',
DISMISS: 'Ignorera',
@@ -135,6 +145,7 @@
HEADING_MISSING_ONE: 'Saknar Rubrik 1. Rubrik 1 bör vara början på huvudinnehållsområdet, och är huvudrubriken som beskriver sidans övergripande syfte. Läs mer om Rubrikstruktur.',
HEADING_EMPTY_WITH_IMAGE: 'Rubriken har ingen text, men innehåller en bild. Om detta inte är en rubrik ändrar du dess format från Rubrik %(level) till Normal eller Stycke. Annars, lägg till alt-text till bilden om den inte är dekorativ.',
PANEL_HEADING_MISSING_ONE: 'Saknar rubrik 1!',
+ PANEL_NO_HEADINGS: 'Inga rubriker hittades.',
// Links
LINK_EMPTY: 'Ta bort tomma länkar utan text.',
@@ -154,18 +165,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Bilden används som en länk med omgivande text, dock borde alt-attributet markeras som dekorativt eller null.',
MISSING_ALT_LINK_MESSAGE: 'Bilden används som länk men saknar alt-text! Se till att alt-texten beskriver vart länken tar dig.',
MISSING_ALT_MESSAGE: 'Saknar alt-text! Om bilden förmedlar en historia, stämning eller viktig information – se till att beskriva bilden.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Filändelse hittades i alt-texten. Se till att alt-texten beskriver destinationen för länken, inte en bokstavlig beskrivning av bilden. Ta bort: %(error).
Alt-text: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Filändelse hittades i alt-texten. Se till att alt-texten beskriver destinationen för länken, inte en bokstavlig beskrivning av bilden. Ta bort: %(error).
Alt-text: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Hittade icke-beskrivande eller platshållande alt-text i en länkad bild. Se till att alt-texten beskriver länkens destination, och inte är en bokstavlig beskrivning av bilden. Ersätt följande alt-text: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Hjälpmedel visar redan att detta är en bild, så "%(error)" kan vara överflödig. Se till att alt-texten beskriver länkens destination, och inte är en bokstavlig beskrivning av bilden.
Alt-text: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Filändelse hittades i alt-texten. Om bilden förmedlar en historia, stämning eller viktig information – se till att beskriva bilden. Ta bort: %(error).
Alt-text: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Filändelse hittades i alt-texten. Om bilden förmedlar en historia, stämning eller viktig information – se till att beskriva bilden. Ta bort: %(error).
Alt-text: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Hittade icke-beskrivande eller platshållande alt-text. Ersätt följande alt-text med något mer meningsfullt: %(altText)',
ALT_HAS_SUS_WORD: 'Hjälpmedel visar redan att detta är en bild, så "%(error)" kan vara överflödig.
Alt-text: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Länken runt bilden har aria-hidden="true"
men kan fortfarande fokuseras med hjälp av tangentbordet. Om du tänker dölja en överflödig eller duplicerad länk, lägg till tabindex="-1"
också.',
+ LINK_HIDDEN_FOCUSABLE: 'Länken har aria-hidden="true"
men kan fortfarande fokuseras med hjälp av tangentbordet. Om du tänker dölja en överflödig eller duplicerad länk, lägg till tabindex="-1"
också.',
LINK_IMAGE_NO_ALT_TEXT: 'Bilden i länken är markerad som dekorativ och det finns ingen länktext. Vänligen lägg till alternativ text till bilden som beskriver länkens destination.',
LINK_IMAGE_HAS_TEXT: 'Bilden är markerad som dekorativ, även om länken använder den omgivande texten som en beskrivande etikett.',
LINK_IMAGE_LONG_ALT: 'Alternativ textbeskrivning för en länkad bild är för lång. Alt-text för länkade bilder ska beskriva vart länken tar dig, inte vara en bokstavlig beskrivning av bilden. Överväg att använda titeln på sidan den länkar till som alt-text.
Alt-text (%(altLength) tecken): stark> %(altText)',
LINK_IMAGE_ALT_WARNING: 'Bildlänken innehåller alt-text. Beskriver alt-texten vart länken tar dig? Överväg att använda titeln på den sida som länken leder till som alt-text.
Alt-text: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Bildlänken innehåller både alt-text och omgivande länktext. Om den här bilden är dekorativ och används som en funktionell länk till en annan sida, överväg att markera bilden som dekorativ eller null - den omgivande länktexten bör räcka.
Alt-text: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Bildlänken innehåller både alt-text och omgivande länktext. Om den här bilden är dekorativ och används som en funktionell länk till en annan sida, överväg att markera bilden som dekorativ eller null - den omgivande länktexten bör räcka.
Alt-text: %(altText)
Länketikett: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Bilden är markerad som dekorativ och kommer att ignoreras av hjälpmedel.
Även om en textning tillhandahölls, bör bilden också ha alternativ text i de flesta fall. - Alt-texten ska ge en kortfattad beskrivning av vad som finns i bilden.
- Texten ska vanligtvis ge ett sammanhang för att relatera bilden till det omgivande innehållet, eller ge uppmärksamhet åt viss information.
Läs mer: alt kontra figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Använd inte exakt samma ord för både alt- och bildtext. Skärmläsare kommer då att förmedla samma information två gånger.- Alt-texten ska ge en kortfattad beskrivning av vad som finns i bilden.
- Tillskriften ska vanligtvis ge sammanhang för att relatera bilden tillbaka till omgivningen innehåll eller ge uppmärksamhet åt en viss information.
Läs mer: alt kontra figcaption.
Alt-text: %(altText)',
IMAGE_DECORATIVE: 'Bilden är markerad som dekorativ och kommer att ignoreras av hjälpmedel. Om bilden förmedlar en historia, stämning eller annan viktig information – se till att lägga till alt-text.',
@@ -175,7 +186,7 @@
// Labels
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Bildknappen saknar alternativ text. Lägg till alt-text för att ge knappen ett tillgängligt namn. Till exempel: Sök eller Skicka.',
LABELS_INPUT_RESET_MESSAGE: 'Återställningsknappar bör inte användas om de inte specifikt behövs, eftersom de är lätta att aktivera av misstag.
Tips! Lär dig varför Återställ- och Avbryt-knapparna orsakar användbarhetsproblem.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Inmatningsfältet har ett tillgängligt namn, men se till att det även finns en synlig etikett.
Det tillgängliga namnet för detta inmatningsfält är: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Inmatningsfältet har ett tillgängligt namn, men se till att det även finns en synlig etikett.
Inmatningsetikett: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Det finns ingen etikett associerad med detta inmatningsfält. Lägg till ett for
-attribut till etiketten som matchar id
för detta inmatningsfält.
ID:t för detta inmatningsfält är: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Det finns ingen etikett associerad med detta inmatningsfält. Vänligen lägg till ett id
till denna inmatning och lägg till ett matchande for
-attribut till etiketten.',
@@ -183,8 +194,9 @@
EMBED_VIDEO: 'Se till att alla videor har undertexter. Att tillhandahålla textning för allt ljud- och videoinnehåll är ett obligatoriskt krav för nivå A. Bildtexter stöder personer som är D/döva eller hörselskada.',
EMBED_AUDIO: 'Se till att tillhandahålla en transkription för alla poddsändningar. Att tillhandahålla transkriptioner för ljudinnehåll är ett obligatoriskt krav för nivå A. Avskrifter stöder personer som är D/döva eller hörselskada, men kan gynna alla. Överväg att placera utskriften under poddsändingen eller i en dragspelspanel.',
EMBED_DATA_VIZ: 'Datavisualiseringswidgetar som denna är ofta problematiska för personer som använder tangentbord eller skärmläsare för att navigera, och kan innebära betydande svårigheter för personer som har nedsatt syn eller färgblindhet. Det rekommenderas att tillhandahålla samma information i ett alternativt format (text eller tabell) under widgeten.
Läs mer om komplexa bilder.',
- EMBED_MISSING_TITLE: 'Inbäddat innehåll kräver ett tillgängligt namn som beskriver det inbäddade innehåll. Sätt ett unikt title
- eller aria-label
-attribut på iframe
-elementet. Läs mer om iFrames.',
+ EMBED_MISSING_TITLE: 'Inbäddat innehåll kräver ett tillgängligt namn som beskriver det inbäddade innehåll. Sätt ett unikt title
- eller aria-label
-attribut på iframe
-elementet. Läs mer om iFrames.',
EMBED_GENERAL_WARNING: 'Det gick inte att kontrollera inbäddat innehåll. Se till att bilder har alt-text, videor har undertexter, text har tillräcklig kontrast och att interaktiva komponenter är tillgängliga för tangentbord.',
+ EMBED_UNFOCUSABLE: '<iframe>
med oväxlingsbara element bör inte ha tabindex="-1"
. Det inbäddade innehållet kommer inte att vara tillgängligt med tangentbordet.',
// Quality assurance
QA_BAD_LINK: 'Dålig länk hittades. Länk verkar peka till en utvecklingsmiljö.
Den här länken pekar på:
%(el)',
diff --git a/assets/dist/js/lang/tr.js b/assets/dist/js/lang/tr.js
index fe4bc18..9ee0df4 100644
--- a/assets/dist/js/lang/tr.js
+++ b/assets/dist/js/lang/tr.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var tr = {
HEADING_NOT_VISIBLE_ALERT: 'Başlık görünür değildir; gizli veya bir akordeon ya da sekme bileşeninin içinde olabilir.',
SKIP_TO_PAGE_ISSUES: 'Sayfa Sorunlarına Geç',
CONSOLE_ERROR_MESSAGE: 'Üzgünüz, ancak bu sayfadaki erişilebilirlik denetleyicisinde bir sorun var. Lütfen bu form aracılığıyla veya GitHub üzerinden bildirebilir misiniz?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Göster %(dismissCount) reddedilen uyarılar',
DISMISS: 'Dağılın',
DISMISSED: 'Reddedilen uyarılar',
DISMISS_REMINDER: 'Uyarıların yalnızca geçici olarak reddedildiğini lütfen unutmayın. Tarayıcı geçmişinizi ve çerezlerinizi temizlemek, tüm sayfalarda daha önce kapatılan tüm uyarıları geri yükleyecektir.',
+
+ // Export
+ DATE: 'Tarih',
+ PAGE_TITLE: 'Sayfa başlığı',
+ RESULTS: 'Sonuçlar',
+ EXPORT_RESULTS: 'Sonuçları dışa aktar',
+ GENERATED: '%(tool) ile oluşturulan sonuçlar.',
+ PREVIEW: 'Önizleme',
+ ELEMENT: 'Öğe',
+ PATH: 'Yol',
+
+ // Colour filters
COLOUR_FILTER: 'Renk filtresi',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -60,6 +74,8 @@ var tr = {
BLUE_EYE: 'Mavi kör.',
MONO_EYE: 'Kırmızı, mavi ve yeşil kör.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Renk filtreleri yüksek kontrast modunda çalışmaz.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'görüntü',
'grafik',
@@ -137,6 +153,7 @@ var tr = {
HEADING_MISSING_ONE: 'Eksik Başlık 1. Başlık 1, ana içerik alanının başlangıcı olmalıdır ve sayfanın genel amacını açıklayan ana başlıktır. Başlık Yapısı hakkında daha fazla bilgi edinin.',
HEADING_EMPTY_WITH_IMAGE: 'Başlığın metni yoktur, ancak bir resim içerir. Bu bir başlık değilse, biçimini Başlık %(level) yerine Normal veya Paragraf olarak değiştirin. Aksi takdirde, dekoratif değilse lütfen resme alt metin ekleyin.',
PANEL_HEADING_MISSING_ONE: 'Başlık 1 eksik!',
+ PANEL_NO_HEADINGS: 'Başlık bulunamadı.',
LINK_EMPTY: 'Herhangi bir metin içermeyen boş bağlantıları kaldırın.',
LINK_EMPTY_LINK_NO_LABEL: 'Bağlantı, ekran okuyucular ve diğer yardımcı teknolojiler tarafından görülebilen ayırt edilebilir bir metne sahip değil. Düzeltmek için: - Bağlantının sizi nereye götürdüğünü açıklayan kısa bir metin ekleyin.
- Bu bir ikon bağlantısı veya SVG, ise muhtemelen açıklayıcı bir etiket eksiktir.
- Bu bağlantının bir kopyala/yapıştır hatasından kaynaklanan bir hata olduğunu düşünüyorsanız, silmeyi düşünün.
',
LINK_LABEL: 'Link etiketi: %(sanitizedText)',
@@ -150,18 +167,18 @@ var tr = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Görüntü, çevresindeki metinle birlikte bir bağlantı olarak kullanılıyor, ancak alt özniteliği dekoratif veya boş olarak işaretlenmelidir.',
MISSING_ALT_LINK_MESSAGE: 'Resim bağlantı olarak kullanılıyor ancak alt metni eksik! Lütfen alt metnin bağlantının sizi nereye götüreceğini açıkladığından emin olun.',
MISSING_ALT_MESSAGE: 'Eksik alt metin! Görsel bir hikaye, ruh hali veya önemli bir bilgi aktarıyorsa, görseli tanımladığınızdan emin olun.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Alt metin içinde dosya uzantısı bulundu. Alt metnin, görüntünün gerçek bir tanımını değil, bağlantının hedefini açıkladığından emin olun. Kaldırın: %(error).
Alt metin: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Alt metin içinde dosya uzantısı bulundu. Alt metnin, görüntünün gerçek bir tanımını değil, bağlantının hedefini açıkladığından emin olun. Kaldırın: %(error).
Alt metin: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Bağlantılı bir resim içinde tanımlayıcı olmayan veya yer tutucu alt metin bulundu. Alt metnin, görüntünün gerçek bir tanımını değil, bağlantının hedefini açıkladığından emin olun. Aşağıdaki alt metni değiştirin: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Yardımcı teknolojiler zaten bunun bir resim olduğunu gösterir, bu nedenle "%(error)" gereksiz olabilir. Alt metnin, resmin gerçek bir tanımını değil, bağlantının hedefini açıkladığından emin olun.
Alt metin: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Bulunan alt metin içinde dosya uzantısı. Görsel bir hikaye, ruh hali veya önemli bir bilgi aktarıyorsa, görseli tanımladığınızdan emin olun. Kaldırın: %(error).
Alt metin: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Bulunan alt metin içinde dosya uzantısı. Görsel bir hikaye, ruh hali veya önemli bir bilgi aktarıyorsa, görseli tanımladığınızdan emin olun. Kaldırın: %(error).
Alt metin: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Tanımlayıcı olmayan veya yer tutucu alt metin bulundu. Aşağıdaki alt metni daha anlamlı bir metinle değiştirin: %(altText)',
ALT_HAS_SUS_WORD: 'Yardımcı teknolojiler zaten bunun bir resim olduğunu belirtmektedir, bu nedenle "%(error)" gereksiz olabilir.
Alt metin: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Resmin etrafındaki bağlantı aria-hidden="true"
özelliğine sahiptir ancak yine de klavye ile odaklanabilir. Gereksiz veya yinelenen bir bağlantıyı gizlemek istiyorsanız, tabindex="-1"
da ekleyin.',
+ LINK_HIDDEN_FOCUSABLE: 'Bağlantıda aria-hidden="true"
özelliği var ancak hala klavye ile odaklanılabilir. Eğer gereksiz veya tekrar eden bir bağlantıyı gizlemeyi düşünüyorsanız, tabindex="-1"
özelliğini de ekleyin.',
LINK_IMAGE_NO_ALT_TEXT: 'Bağlantı içindeki resim dekoratif olarak işaretlenmiş ve bağlantı metni yok. Lütfen resme bağlantının hedefini açıklayan alt metin ekleyin.',
LINK_IMAGE_HAS_TEXT: 'Bağlantı, çevresindeki metni açıklayıcı bir etiket olarak kullanmasına rağmen görüntü dekoratif olarak işaretlenmiştir.',
LINK_IMAGE_LONG_ALT: 'Bağlantılı bir görseldeki alt metin açıklaması çok uzun. Bağlantılı görsellerdeki alt metin, görselin birebir açıklamasını değil, bağlantının sizi nereye götürdüğünü açıklamalıdır. Alt metin olarak bağlantı verilen sayfanın başlığını kullanmayı düşünün.
Alt metin (%(altLength) karakter): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Resim bağlantısı alt metin içeriyor. Alt metin bağlantının sizi nereye götürdüğünü açıklıyor mu? Bağlantı verilen sayfanın başlığını alt metin olarak kullanmayı düşünün.
Alt metin: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Resim bağlantısı hem alt metin hem de çevresindeki bağlantı metnini içerir. Bu resim dekoratifse ve başka bir sayfaya işlevsel bir bağlantı olarak kullanılıyorsa, resmi dekoratif veya boş olarak işaretlemeyi düşünün - çevresindeki bağlantı metni yeterli olmalıdır.
Alt metin: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Resim bağlantısı hem alt metin hem de çevresindeki bağlantı metnini içerir. Bu resim dekoratifse ve başka bir sayfaya işlevsel bir bağlantı olarak kullanılıyorsa, resmi dekoratif veya boş olarak işaretlemeyi düşünün - çevresindeki bağlantı metni yeterli olmalıdır.
Alt metin: %(altText)
Link etiketi: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Resim dekoratif olarak işaretlenmiştir ve yardımcı teknoloji tarafından göz ardı edilecektir.
Bir başlık verilmiş olsa da, çoğu durumda görselin alt metni de olmalıdır. - Alt metin, görselde ne olduğuna dair kısa bir açıklama sağlamalıdır.
- Alt yazı genellikle görseli çevreleyen içerikle ilişkilendirmek için bağlam sağlamalı veya belirli bir bilgi parçasına dikkat çekmelidir.
Daha fazla bilgi edinin: alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Hem alt hem de başlık metni için aynı kelimeleri kullanmayın. Ekran okuyucular bilgileri iki kez duyuracaktır.- Alt metin görselde ne olduğuna dair kısa bir açıklama sağlamalıdır.
- Alt yazı genellikle görseli çevreleyen içerikle ilişkilendirmek için bağlam sağlamalı veya belirli bir bilgi parçasına dikkat çekmelidir.
Daha fazla bilgi edinin: alt versus figcaption.
Alt metin: %(altText)',
IMAGE_DECORATIVE: 'Görüntü dekoratif olarak işaretlenir ve yardımcı teknoloji tarafından göz ardı edilir. Görsel bir hikaye, ruh hali veya önemli bir bilgi aktarıyorsa alt metin eklediğinizden emin olun.',
@@ -169,14 +186,15 @@ var tr = {
IMAGE_PASS: 'Alt metin: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Resim düğmesinin alt metni eksik. Lütfen erişilebilir bir ad sağlamak için alt metin ekleyin. Örneğin: Arama veya Gönder.',
LABELS_INPUT_RESET_MESSAGE: 'Sıfırla düğmeleri özellikle gerekmedikçe kullanılmamalıdır çünkü yanlışlıkla etkinleştirilmeleri kolaydır.
İpucu! Reset ve İptal düğmelerinin neden kullanılabilirlik sorunları oluşturduğunu öğrenin.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Girdinin erişilebilir bir adı vardır, ancak lütfen görünür bir etiket olduğundan da emin olun.
Bu girdi için erişilebilir ad şöyledir: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Girdinin erişilebilir bir adı vardır, ancak lütfen görünür bir etiket olduğundan da emin olun.
Giriş etiketi: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: "Bu girdiyle ilişkilendirilmiş bir etiket yok. Etikete, bu girdinin id
'siyle eşleşen bir for
niteliği ekleyin.
Bu girdinin kimliği şudur: id="%(id)"",
LABELS_MISSING_LABEL_MESSAGE: 'Bu girdiyle ilişkilendirilmiş bir etiket yok. Lütfen bu girdiye bir id
ekleyin ve etikete eşleşen bir for
niteliği ekleyin.',
EMBED_VIDEO: 'Lütfen tüm videolarda altyazı olduğundan emin olun. Tüm ses ve video içerikleri için altyazı sağlanması zorunlu bir A Düzeyi gerekliliğidir. Altyazılar, işitme engelli veya işitme güçlüğü çeken kişileri destekler.',
EMBED_AUDIO: "Lütfen tüm podcast'ler için bir transkript sağladığınızdan emin olun. Ses içeriği için transkript sağlamak zorunlu bir Seviye A gerekliliğidir. Transkriptler işitme engelli veya işitme güçlüğü çeken kişileri destekler, ancak herkese fayda sağlayabilir. Transkripti aşağıya veya bir akordeon panel içine yerleştirmeyi düşünün.",
EMBED_DATA_VIZ: "Bunun gibi veri görselleştirme araçları, gezinmek için klavye veya ekran okuyucu kullanan kişiler için genellikle sorunludur ve az gören veya renk körlüğü olan kişiler için önemli zorluklar yaratabilir. Aynı bilgilerin widget'ın altında alternatif (metin veya tablo) bir formatta sunulması önerilir.
karmaşık görüntüler hakkında daha fazla bilgi edinin.",
- EMBED_MISSING_TITLE: 'Gömülü içerik, içeriğini açıklayan erişilebilir bir ad gerektirir. Lütfen iframe
öğesinde benzersiz bir title
veya aria-label
özniteliği sağlayın. iFrames. hakkında daha fazla bilgi edinin',
+ EMBED_MISSING_TITLE: 'Gömülü içerik, içeriğini açıklayan erişilebilir bir ad gerektirir. Lütfen iframe
öğesinde benzersiz bir title
veya aria-label
özniteliği sağlayın. iFrames. hakkında daha fazla bilgi edinin',
EMBED_GENERAL_WARNING: 'Gömülü içerik kontrol edilemiyor. Lütfen resimlerin alt metni, videoların alt yazısı, metinlerin yeterli kontrastı ve etkileşimli bileşenlerin klavye ile erişilebilir olduğundan emin olun.',
+ EMBED_UNFOCUSABLE: 'Odaklanılamayan öğeler içeren <iframe>
, tabindex="-1"
olmamalıdır. Gömülü içerik klavye ile erişilebilir olmayacak.',
QA_BAD_LINK: 'Kötü bağlantı bulundu. Bağlantı bir geliştirme ortamına işaret ediyor gibi görünüyor.
Bu bağlantı şuraya işaret ediyor:
%(el)',
QA_BAD_ITALICS: 'Kalın ve italik etiketlerinin anlamsal bir anlamı vardır ve paragrafların tamamını vurgulamak için kullanılmamalıdır. Kalınlaştırılmış metin, bir kelime veya cümleye güçlü bir vurgu yapmak için kullanılmalıdır. İtalik yazılar özel isimleri (kitap ve makale başlıkları gibi), yabancı kelimeleri ve alıntıları vurgulamak için kullanılmalıdır. Uzun alıntılar blok alıntı olarak biçimlendirilmelidir.',
QA_PDF: "PDF'ler erişilebilirlik açısından kontrol edilemiyor. PDF'ler web içeriği olarak kabul edilir ve erişilebilir hale getirilmelidir. PDF'ler genellikle ekran okuyucu kullanan kişiler (eksik yapısal etiketler veya eksik form alanı etiketleri) ve az gören kişiler (metin büyütüldüğünde yeniden akmıyor) için sorunlar içerir. - Bu bir form ise, alternatif olarak erişilebilir bir HTML formu kullanmayı düşünün.
- Bu bir belge ise, bir web sayfasına dönüştürmeyi düşünün.
Aksi takdirde, lütfen Acrobat DC'de erişilebilirlik için PDF'yi kontrol edin.",
diff --git a/assets/dist/js/lang/tr.umd.js b/assets/dist/js/lang/tr.umd.js
index 20683d9..03f86f3 100644
--- a/assets/dist/js/lang/tr.umd.js
+++ b/assets/dist/js/lang/tr.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: 'Başlık görünür değildir; gizli veya bir akordeon ya da sekme bileşeninin içinde olabilir.',
SKIP_TO_PAGE_ISSUES: 'Sayfa Sorunlarına Geç',
CONSOLE_ERROR_MESSAGE: 'Üzgünüz, ancak bu sayfadaki erişilebilirlik denetleyicisinde bir sorun var. Lütfen bu form aracılığıyla veya GitHub üzerinden bildirebilir misiniz?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: 'Göster %(dismissCount) reddedilen uyarılar',
DISMISS: 'Dağılın',
DISMISSED: 'Reddedilen uyarılar',
DISMISS_REMINDER: 'Uyarıların yalnızca geçici olarak reddedildiğini lütfen unutmayın. Tarayıcı geçmişinizi ve çerezlerinizi temizlemek, tüm sayfalarda daha önce kapatılan tüm uyarıları geri yükleyecektir.',
+
+ // Export
+ DATE: 'Tarih',
+ PAGE_TITLE: 'Sayfa başlığı',
+ RESULTS: 'Sonuçlar',
+ EXPORT_RESULTS: 'Sonuçları dışa aktar',
+ GENERATED: '%(tool) ile oluşturulan sonuçlar.',
+ PREVIEW: 'Önizleme',
+ ELEMENT: 'Öğe',
+ PATH: 'Yol',
+
+ // Colour filters
COLOUR_FILTER: 'Renk filtresi',
PROTANOPIA: 'Protanopia',
DEUTERANOPIA: 'Deuteranopia',
@@ -66,6 +80,8 @@
BLUE_EYE: 'Mavi kör.',
MONO_EYE: 'Kırmızı, mavi ve yeşil kör.',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: 'Renk filtreleri yüksek kontrast modunda çalışmaz.',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'görüntü',
'grafik',
@@ -143,6 +159,7 @@
HEADING_MISSING_ONE: 'Eksik Başlık 1. Başlık 1, ana içerik alanının başlangıcı olmalıdır ve sayfanın genel amacını açıklayan ana başlıktır. Başlık Yapısı hakkında daha fazla bilgi edinin.',
HEADING_EMPTY_WITH_IMAGE: 'Başlığın metni yoktur, ancak bir resim içerir. Bu bir başlık değilse, biçimini Başlık %(level) yerine Normal veya Paragraf olarak değiştirin. Aksi takdirde, dekoratif değilse lütfen resme alt metin ekleyin.',
PANEL_HEADING_MISSING_ONE: 'Başlık 1 eksik!',
+ PANEL_NO_HEADINGS: 'Başlık bulunamadı.',
LINK_EMPTY: 'Herhangi bir metin içermeyen boş bağlantıları kaldırın.',
LINK_EMPTY_LINK_NO_LABEL: 'Bağlantı, ekran okuyucular ve diğer yardımcı teknolojiler tarafından görülebilen ayırt edilebilir bir metne sahip değil. Düzeltmek için: - Bağlantının sizi nereye götürdüğünü açıklayan kısa bir metin ekleyin.
- Bu bir ikon bağlantısı veya SVG, ise muhtemelen açıklayıcı bir etiket eksiktir.
- Bu bağlantının bir kopyala/yapıştır hatasından kaynaklanan bir hata olduğunu düşünüyorsanız, silmeyi düşünün.
',
LINK_LABEL: 'Link etiketi: %(sanitizedText)',
@@ -156,18 +173,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Görüntü, çevresindeki metinle birlikte bir bağlantı olarak kullanılıyor, ancak alt özniteliği dekoratif veya boş olarak işaretlenmelidir.',
MISSING_ALT_LINK_MESSAGE: 'Resim bağlantı olarak kullanılıyor ancak alt metni eksik! Lütfen alt metnin bağlantının sizi nereye götüreceğini açıkladığından emin olun.',
MISSING_ALT_MESSAGE: 'Eksik alt metin! Görsel bir hikaye, ruh hali veya önemli bir bilgi aktarıyorsa, görseli tanımladığınızdan emin olun.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Alt metin içinde dosya uzantısı bulundu. Alt metnin, görüntünün gerçek bir tanımını değil, bağlantının hedefini açıkladığından emin olun. Kaldırın: %(error).
Alt metin: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Alt metin içinde dosya uzantısı bulundu. Alt metnin, görüntünün gerçek bir tanımını değil, bağlantının hedefini açıkladığından emin olun. Kaldırın: %(error).
Alt metin: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Bağlantılı bir resim içinde tanımlayıcı olmayan veya yer tutucu alt metin bulundu. Alt metnin, görüntünün gerçek bir tanımını değil, bağlantının hedefini açıkladığından emin olun. Aşağıdaki alt metni değiştirin: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Yardımcı teknolojiler zaten bunun bir resim olduğunu gösterir, bu nedenle "%(error)" gereksiz olabilir. Alt metnin, resmin gerçek bir tanımını değil, bağlantının hedefini açıkladığından emin olun.
Alt metin: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Bulunan alt metin içinde dosya uzantısı. Görsel bir hikaye, ruh hali veya önemli bir bilgi aktarıyorsa, görseli tanımladığınızdan emin olun. Kaldırın: %(error).
Alt metin: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Bulunan alt metin içinde dosya uzantısı. Görsel bir hikaye, ruh hali veya önemli bir bilgi aktarıyorsa, görseli tanımladığınızdan emin olun. Kaldırın: %(error).
Alt metin: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Tanımlayıcı olmayan veya yer tutucu alt metin bulundu. Aşağıdaki alt metni daha anlamlı bir metinle değiştirin: %(altText)',
ALT_HAS_SUS_WORD: 'Yardımcı teknolojiler zaten bunun bir resim olduğunu belirtmektedir, bu nedenle "%(error)" gereksiz olabilir.
Alt metin: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Resmin etrafındaki bağlantı aria-hidden="true"
özelliğine sahiptir ancak yine de klavye ile odaklanabilir. Gereksiz veya yinelenen bir bağlantıyı gizlemek istiyorsanız, tabindex="-1"
da ekleyin.',
+ LINK_HIDDEN_FOCUSABLE: 'Bağlantıda aria-hidden="true"
özelliği var ancak hala klavye ile odaklanılabilir. Eğer gereksiz veya tekrar eden bir bağlantıyı gizlemeyi düşünüyorsanız, tabindex="-1"
özelliğini de ekleyin.',
LINK_IMAGE_NO_ALT_TEXT: 'Bağlantı içindeki resim dekoratif olarak işaretlenmiş ve bağlantı metni yok. Lütfen resme bağlantının hedefini açıklayan alt metin ekleyin.',
LINK_IMAGE_HAS_TEXT: 'Bağlantı, çevresindeki metni açıklayıcı bir etiket olarak kullanmasına rağmen görüntü dekoratif olarak işaretlenmiştir.',
LINK_IMAGE_LONG_ALT: 'Bağlantılı bir görseldeki alt metin açıklaması çok uzun. Bağlantılı görsellerdeki alt metin, görselin birebir açıklamasını değil, bağlantının sizi nereye götürdüğünü açıklamalıdır. Alt metin olarak bağlantı verilen sayfanın başlığını kullanmayı düşünün.
Alt metin (%(altLength) karakter): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Resim bağlantısı alt metin içeriyor. Alt metin bağlantının sizi nereye götürdüğünü açıklıyor mu? Bağlantı verilen sayfanın başlığını alt metin olarak kullanmayı düşünün.
Alt metin: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Resim bağlantısı hem alt metin hem de çevresindeki bağlantı metnini içerir. Bu resim dekoratifse ve başka bir sayfaya işlevsel bir bağlantı olarak kullanılıyorsa, resmi dekoratif veya boş olarak işaretlemeyi düşünün - çevresindeki bağlantı metni yeterli olmalıdır.
Alt metin: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Resim bağlantısı hem alt metin hem de çevresindeki bağlantı metnini içerir. Bu resim dekoratifse ve başka bir sayfaya işlevsel bir bağlantı olarak kullanılıyorsa, resmi dekoratif veya boş olarak işaretlemeyi düşünün - çevresindeki bağlantı metni yeterli olmalıdır.
Alt metin: %(altText)
Link etiketi: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Resim dekoratif olarak işaretlenmiştir ve yardımcı teknoloji tarafından göz ardı edilecektir.
Bir başlık verilmiş olsa da, çoğu durumda görselin alt metni de olmalıdır. - Alt metin, görselde ne olduğuna dair kısa bir açıklama sağlamalıdır.
- Alt yazı genellikle görseli çevreleyen içerikle ilişkilendirmek için bağlam sağlamalı veya belirli bir bilgi parçasına dikkat çekmelidir.
Daha fazla bilgi edinin: alt versus figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: 'Hem alt hem de başlık metni için aynı kelimeleri kullanmayın. Ekran okuyucular bilgileri iki kez duyuracaktır.- Alt metin görselde ne olduğuna dair kısa bir açıklama sağlamalıdır.
- Alt yazı genellikle görseli çevreleyen içerikle ilişkilendirmek için bağlam sağlamalı veya belirli bir bilgi parçasına dikkat çekmelidir.
Daha fazla bilgi edinin: alt versus figcaption.
Alt metin: %(altText)',
IMAGE_DECORATIVE: 'Görüntü dekoratif olarak işaretlenir ve yardımcı teknoloji tarafından göz ardı edilir. Görsel bir hikaye, ruh hali veya önemli bir bilgi aktarıyorsa alt metin eklediğinizden emin olun.',
@@ -175,14 +192,15 @@
IMAGE_PASS: 'Alt metin: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'Resim düğmesinin alt metni eksik. Lütfen erişilebilir bir ad sağlamak için alt metin ekleyin. Örneğin: Arama veya Gönder.',
LABELS_INPUT_RESET_MESSAGE: 'Sıfırla düğmeleri özellikle gerekmedikçe kullanılmamalıdır çünkü yanlışlıkla etkinleştirilmeleri kolaydır.
İpucu! Reset ve İptal düğmelerinin neden kullanılabilirlik sorunları oluşturduğunu öğrenin.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Girdinin erişilebilir bir adı vardır, ancak lütfen görünür bir etiket olduğundan da emin olun.
Bu girdi için erişilebilir ad şöyledir: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Girdinin erişilebilir bir adı vardır, ancak lütfen görünür bir etiket olduğundan da emin olun.
Giriş etiketi: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: "Bu girdiyle ilişkilendirilmiş bir etiket yok. Etikete, bu girdinin id
'siyle eşleşen bir for
niteliği ekleyin.
Bu girdinin kimliği şudur: id="%(id)"",
LABELS_MISSING_LABEL_MESSAGE: 'Bu girdiyle ilişkilendirilmiş bir etiket yok. Lütfen bu girdiye bir id
ekleyin ve etikete eşleşen bir for
niteliği ekleyin.',
EMBED_VIDEO: 'Lütfen tüm videolarda altyazı olduğundan emin olun. Tüm ses ve video içerikleri için altyazı sağlanması zorunlu bir A Düzeyi gerekliliğidir. Altyazılar, işitme engelli veya işitme güçlüğü çeken kişileri destekler.',
EMBED_AUDIO: "Lütfen tüm podcast'ler için bir transkript sağladığınızdan emin olun. Ses içeriği için transkript sağlamak zorunlu bir Seviye A gerekliliğidir. Transkriptler işitme engelli veya işitme güçlüğü çeken kişileri destekler, ancak herkese fayda sağlayabilir. Transkripti aşağıya veya bir akordeon panel içine yerleştirmeyi düşünün.",
EMBED_DATA_VIZ: "Bunun gibi veri görselleştirme araçları, gezinmek için klavye veya ekran okuyucu kullanan kişiler için genellikle sorunludur ve az gören veya renk körlüğü olan kişiler için önemli zorluklar yaratabilir. Aynı bilgilerin widget'ın altında alternatif (metin veya tablo) bir formatta sunulması önerilir.
karmaşık görüntüler hakkında daha fazla bilgi edinin.",
- EMBED_MISSING_TITLE: 'Gömülü içerik, içeriğini açıklayan erişilebilir bir ad gerektirir. Lütfen iframe
öğesinde benzersiz bir title
veya aria-label
özniteliği sağlayın. iFrames. hakkında daha fazla bilgi edinin',
+ EMBED_MISSING_TITLE: 'Gömülü içerik, içeriğini açıklayan erişilebilir bir ad gerektirir. Lütfen iframe
öğesinde benzersiz bir title
veya aria-label
özniteliği sağlayın. iFrames. hakkında daha fazla bilgi edinin',
EMBED_GENERAL_WARNING: 'Gömülü içerik kontrol edilemiyor. Lütfen resimlerin alt metni, videoların alt yazısı, metinlerin yeterli kontrastı ve etkileşimli bileşenlerin klavye ile erişilebilir olduğundan emin olun.',
+ EMBED_UNFOCUSABLE: 'Odaklanılamayan öğeler içeren <iframe>
, tabindex="-1"
olmamalıdır. Gömülü içerik klavye ile erişilebilir olmayacak.',
QA_BAD_LINK: 'Kötü bağlantı bulundu. Bağlantı bir geliştirme ortamına işaret ediyor gibi görünüyor.
Bu bağlantı şuraya işaret ediyor:
%(el)',
QA_BAD_ITALICS: 'Kalın ve italik etiketlerinin anlamsal bir anlamı vardır ve paragrafların tamamını vurgulamak için kullanılmamalıdır. Kalınlaştırılmış metin, bir kelime veya cümleye güçlü bir vurgu yapmak için kullanılmalıdır. İtalik yazılar özel isimleri (kitap ve makale başlıkları gibi), yabancı kelimeleri ve alıntıları vurgulamak için kullanılmalıdır. Uzun alıntılar blok alıntı olarak biçimlendirilmelidir.',
QA_PDF: "PDF'ler erişilebilirlik açısından kontrol edilemiyor. PDF'ler web içeriği olarak kabul edilir ve erişilebilir hale getirilmelidir. PDF'ler genellikle ekran okuyucu kullanan kişiler (eksik yapısal etiketler veya eksik form alanı etiketleri) ve az gören kişiler (metin büyütüldüğünde yeniden akmıyor) için sorunlar içerir. - Bu bir form ise, alternatif olarak erişilebilir bir HTML formu kullanmayı düşünün.
- Bu bir belge ise, bir web sayfasına dönüştürmeyi düşünün.
Aksi takdirde, lütfen Acrobat DC'de erişilebilirlik için PDF'yi kontrol edin.",
diff --git a/assets/dist/js/lang/ua.js b/assets/dist/js/lang/ua.js
index ef5b81c..a38e69c 100644
--- a/assets/dist/js/lang/ua.js
+++ b/assets/dist/js/lang/ua.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,6 +51,16 @@ var ua = {
DISMISSED: 'Проігноровані попередження',
DISMISS_REMINDER: 'Зауважте, що попередження лише тимчасово відхиляються. Очищення історії веб-переглядача та файлів cookie відновить усі раніше відхилені попередження на всіх сторінках.',
+ // Export
+ DATE: 'Дата',
+ PAGE_TITLE: 'Заголовок сторінки',
+ RESULTS: 'Результати',
+ EXPORT_RESULTS: 'Експорт результатів',
+ GENERATED: 'Результати згенеровані за допомогою %(tool).',
+ PREVIEW: 'Перегляд',
+ ELEMENT: 'Елемент',
+ PATH: 'Шлях',
+
// Color filters
COLOUR_FILTER: 'Фільтр кольорів',
PROTANOPIA: 'Протанопія',
@@ -122,6 +132,7 @@ var ua = {
HEADING_MISSING_ONE: 'Відсутній Заголовок 1. Заголовок 1 повинен бути початком області основного змісту та є основним заголовком, який описує загальну мету сторінки. Дізнайтеся більше про структуру заголовків.',
HEADING_EMPTY_WITH_IMAGE: 'Заголовок не має тексту, але містить зображення. Якщо це не заголовок, змініть його формат: замість Заголовок %(level) поставте Звичайний або Абзац. В іншому разі додайте текст заміщення до зображення, якщо воно не є декоративним.',
PANEL_HEADING_MISSING_ONE: 'Відсутній заголовок 1!',
+ PANEL_NO_HEADINGS: 'Заголовки не знайдено.',
// Links
LINK_EMPTY: 'Видаліть пусті посилання без тексту.',
@@ -141,18 +152,18 @@ var ua = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Зображення використовується як посилання з оточуючим текстом, хоча атрибут текст заміщення повинен бути позначений як декоративний або нульовий.',
MISSING_ALT_LINK_MESSAGE: 'Зображення використовується як посилання, але відсутній текст заміщення! Переконайтеся, що текст заміщення описує, куди веде посилання.',
MISSING_ALT_MESSAGE: 'Відсутній текст заміщення! Якщо зображення передає історію, настрій або важливу інформацію, обов\'язково опишіть його.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Знайдено розширення файлу в текст заміщенняі. Переконайтеся, що текст заміщення описує місце призначення посилання, а не надає дослівний опис зображення. Видалити: %(error).
текст заміщення: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Знайдено розширення файлу в текст заміщенняі. Переконайтеся, що текст заміщення описує місце призначення посилання, а не надає дослівний опис зображення. Видалити: %(error).
текст заміщення: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Виявлено не описовий або заповнюючий текст заміщення усередині зв\'язаного зображення. Переконайтеся, що текст заміщення визначає місце призначення посилання, а не надає дослівний опис зображення. Замініть наступний текст: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Допоміжні технології вже вказують, що це зображення, тому "%(error)" можуть бути зайвими. Переконайтеся, що текст заміщення описує місце призначення посилання, а не надає дослівний опис зображення.
текст заміщення: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Знайдено розширення файлу в текст заміщенняі. Якщо зображення передає історію, настрій або важливу інформацію, обов\'язково опишіть його. Видалити: %(error).
текст заміщення: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Знайдено розширення файлу в текст заміщенняі. Якщо зображення передає історію, настрій або важливу інформацію, обов\'язково опишіть його. Видалити: %(error).
текст заміщення: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Виявлено не описовий або заповнюючий текст заміщення. Замініть наступний текст заміщення чимось більш значущим: %(altText)',
ALT_HAS_SUS_WORD: 'Допоміжні технології вже вказують, що це зображення, тому "%(error)" можуть бути зайвими.
текст заміщення: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Посилання навколо зображення має aria-hidden="true"
але все одно фокусується клавіатурою. Якщо ви бажаєте приховати зайве або дубльоване посилання, додайте також: tabindex="-1"
',
+ LINK_HIDDEN_FOCUSABLE: 'Посилання має aria-hidden="true"
, але все ще доступне для фокусування за допомогою клавіатури. Якщо ви плануєте приховати зайве або дубльоване посилання, також додайте tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Зображення у посиланні позначене як декоративне, а текст посилання відсутній. Будь ласка, додайте до зображення текст заміщення, який визначає місце призначення посилання.',
LINK_IMAGE_HAS_TEXT: 'Зображення позначене як декоративне, хоча посилання використовує навколишній текст як описову назву.',
LINK_IMAGE_LONG_ALT: 'Опис текст заміщенняу на пов\'язаному зображенні занадто довгий. текст заміщення на пов\'язаних зображеннях повинен вказувати, куди веде посилання, а не містити дослівний опис зображення. Розгляньте можливість використання заголовка сторінки в якості текст заміщенняу, яку веде посилання.
текст заміщення (%(altLength) символів): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Посилання на зображення містить альтернативний текст. Чи описує альтернативний текст, куди веде посилання? Подумайте про використання назви сторінки, на яку веде посилання, в якості альтернативного тексту.
текст заміщення: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Посилання на зображення містить як текст заміщення, так і текст навколишнього посилання. Якщо зображення є декоративним і використовується як функціональне посилання на іншу сторінку, розгляньте можливість помітити зображення як декоративне або нульове ‒ тексту навколишнього посилання має бути достатньо.
текст заміщення: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Посилання на зображення містить як текст заміщення, так і текст навколишнього посилання. Якщо зображення є декоративним і використовується як функціональне посилання на іншу сторінку, розгляньте можливість помітити зображення як декоративне або нульове ‒ тексту навколишнього посилання має бути достатньо.
текст заміщення: %(altText)
Назва посилання: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Зображення позначене як декоративне та буде проігноровано допоміжними технологіями.
Незважаючи на наявність підпису, у більшості випадків зображення також повинно містити текст заміщення.- текст заміщення повинен містити короткий опис того, що зображенно.
- Підпис зазвичай повинен надавати контекст, щоб встановити зв’язок зображення з навколишнім змістом, або привернути увагу до певної інформації.
Дізнайтесь більше: : alt (текст заміщення) в порівнянні з figcaption (підписом).',
IMAGE_FIGURE_DUPLICATE_ALT: 'Не використовуйте однакові слова для текст заміщенняу та підпису. Пристрої читання з екрана будуть зчитувати їх двічі.- текст заміщення повинен містити короткий опис того, що зображенно.
- Підпис зазвичай повинен надавати контекст, щоб встановити зв’язок зображення з навколишнім змістом, або привернути увагу до певної інформації.
Дізнайтесь більше: : alt (текст заміщення) в порівнянні з figcaption (підписом).
текст заміщення: %(altText)',
IMAGE_DECORATIVE: 'Зображення позначене як декоративне та буде проігноровано допоміжними технологіями. Якщо зображення передає історію, настрій або важливу інформацію, переконайтесь, що до нього додано текст заміщення.',
@@ -162,7 +173,7 @@ var ua = {
// Labels
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'На кнопці зображення не вистачає текст заміщенняу. Будь ласка, додайте текст заміщення, щоб надати доступну назву. Наприклад: Пошук або Подати.',
LABELS_INPUT_RESET_MESSAGE: 'Кнопки перезавантаження не слід використовувати без необхідності, оскільки їх легко активувати помилково.
Порада! Дізнайтеся, чому кнопки перезавантаження та відміни викликають проблеми зі зручністю використання.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Введення має доступне ім\'я, проте, будь ласка, переконайтеся, що у нього є видимий підпис.
Доступне ім\'я для цього введення: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Введення має доступне ім\'я, проте, будь ласка, переконайтеся, що у нього є видимий підпис.
Етикетка для введення: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Із цим введенням не пов\'язана жодна назва. Додайте атрибут for
що відповідає ідентифікатору цього входу.
Ідентифікатор цього входу: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Із цим введенням не пов\'язана жодна назва. Будь ласка, додайте id
до цього введення та додайте відповідний атрибут for
до назви.',
@@ -170,8 +181,9 @@ var ua = {
EMBED_VIDEO: 'Будь ласка, переконайтеся, що всі відеоматеріали мають приховані титри. Надання титрів для всіх аудіо- та відеоматеріалів є обов\'язковою вимогою рівня А. Титри допомагають людям з порушенням слуху або глухотою.',
EMBED_AUDIO: 'Будь ласка, забезпечте транскрипцію всіх подкастів. Надання розшифровки аудіоконтенту є обов\'язковою вимогою рівня А. Транскрипція допомагає людям з порушенням слуху або глухотою, але можуть бути корисні всім. Розгляньте можливість розміщення транскрипції нижче або всередині випадаючого списку (акордеону).',
EMBED_DATA_VIZ: 'Віджети візуалізації даних, подібні до цього, часто викликають труднощі у людей, які використовують клавіатуру або програму читання з екрана для навігації, і можуть становити значні труднощі для людей із слабким зором або дальтоніків. Рекомендується надавати ту саму інформацію в альтернативному (текстовому або табличному) форматі під віджетом.
Дізнайтеся більше про комплексні зображення.',
- EMBED_MISSING_TITLE: 'Вбудований контент потребує доступної назви, що описує його вміст. Вкажіть унікальний заголовок (title
) або атрибут aria-label
на елементі iframe
. Дізнайтесь більше про iFrames.',
+ EMBED_MISSING_TITLE: 'Вбудований контент потребує доступної назви, що описує його вміст. Вкажіть унікальний заголовок (title
) або атрибут aria-label
на елементі iframe
. Дізнайтесь більше про iFrames.',
EMBED_GENERAL_WARNING: 'Неможливо перевірити вбудований вміст. Будь ласка, переконайтеся, що зображення мають текст заміщення, до відео є титри, текст має достатній контраст, а інтерактивні компоненти доступні для клавіатури.',
+ EMBED_UNFOCUSABLE: '<iframe>
з елементами, на які не можна фокусуватися, не повинен мати tabindex="-1"
. Вбудований вміст не буде доступний за допомогою клавіатури.',
// Quality assurance
QA_BAD_LINK: 'Знайдено неякісне посилання. Схоже, що посилання вказує на середовище розробки.
Це посилання вказує на:
%(el)',
diff --git a/assets/dist/js/lang/ua.umd.js b/assets/dist/js/lang/ua.umd.js
index 0c0a073..66d0312 100644
--- a/assets/dist/js/lang/ua.umd.js
+++ b/assets/dist/js/lang/ua.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -57,6 +57,16 @@
DISMISSED: 'Проігноровані попередження',
DISMISS_REMINDER: 'Зауважте, що попередження лише тимчасово відхиляються. Очищення історії веб-переглядача та файлів cookie відновить усі раніше відхилені попередження на всіх сторінках.',
+ // Export
+ DATE: 'Дата',
+ PAGE_TITLE: 'Заголовок сторінки',
+ RESULTS: 'Результати',
+ EXPORT_RESULTS: 'Експорт результатів',
+ GENERATED: 'Результати згенеровані за допомогою %(tool).',
+ PREVIEW: 'Перегляд',
+ ELEMENT: 'Елемент',
+ PATH: 'Шлях',
+
// Color filters
COLOUR_FILTER: 'Фільтр кольорів',
PROTANOPIA: 'Протанопія',
@@ -128,6 +138,7 @@
HEADING_MISSING_ONE: 'Відсутній Заголовок 1. Заголовок 1 повинен бути початком області основного змісту та є основним заголовком, який описує загальну мету сторінки. Дізнайтеся більше про структуру заголовків.',
HEADING_EMPTY_WITH_IMAGE: 'Заголовок не має тексту, але містить зображення. Якщо це не заголовок, змініть його формат: замість Заголовок %(level) поставте Звичайний або Абзац. В іншому разі додайте текст заміщення до зображення, якщо воно не є декоративним.',
PANEL_HEADING_MISSING_ONE: 'Відсутній заголовок 1!',
+ PANEL_NO_HEADINGS: 'Заголовки не знайдено.',
// Links
LINK_EMPTY: 'Видаліть пусті посилання без тексту.',
@@ -147,18 +158,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: 'Зображення використовується як посилання з оточуючим текстом, хоча атрибут текст заміщення повинен бути позначений як декоративний або нульовий.',
MISSING_ALT_LINK_MESSAGE: 'Зображення використовується як посилання, але відсутній текст заміщення! Переконайтеся, що текст заміщення описує, куди веде посилання.',
MISSING_ALT_MESSAGE: 'Відсутній текст заміщення! Якщо зображення передає історію, настрій або важливу інформацію, обов\'язково опишіть його.',
- LINK_IMAGE_BAD_ALT_MESSAGE: 'Знайдено розширення файлу в текст заміщенняі. Переконайтеся, що текст заміщення описує місце призначення посилання, а не надає дослівний опис зображення. Видалити: %(error).
текст заміщення: %(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: 'Знайдено розширення файлу в текст заміщенняі. Переконайтеся, що текст заміщення описує місце призначення посилання, а не надає дослівний опис зображення. Видалити: %(error).
текст заміщення: %(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: 'Виявлено не описовий або заповнюючий текст заміщення усередині зв\'язаного зображення. Переконайтеся, що текст заміщення визначає місце призначення посилання, а не надає дослівний опис зображення. Замініть наступний текст: %(altText)',
LINK_IMAGE_SUS_ALT_MESSAGE: 'Допоміжні технології вже вказують, що це зображення, тому "%(error)" можуть бути зайвими. Переконайтеся, що текст заміщення описує місце призначення посилання, а не надає дослівний опис зображення.
текст заміщення: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: 'Знайдено розширення файлу в текст заміщенняі. Якщо зображення передає історію, настрій або важливу інформацію, обов\'язково опишіть його. Видалити: %(error).
текст заміщення: %(altText)',
+ ALT_HAS_FILE_EXTENSION: 'Знайдено розширення файлу в текст заміщенняі. Якщо зображення передає історію, настрій або важливу інформацію, обов\'язково опишіть його. Видалити: %(error).
текст заміщення: %(altText)',
ALT_PLACEHOLDER_MESSAGE: 'Виявлено не описовий або заповнюючий текст заміщення. Замініть наступний текст заміщення чимось більш значущим: %(altText)',
ALT_HAS_SUS_WORD: 'Допоміжні технології вже вказують, що це зображення, тому "%(error)" можуть бути зайвими.
текст заміщення: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: 'Посилання навколо зображення має aria-hidden="true"
але все одно фокусується клавіатурою. Якщо ви бажаєте приховати зайве або дубльоване посилання, додайте також: tabindex="-1"
',
+ LINK_HIDDEN_FOCUSABLE: 'Посилання має aria-hidden="true"
, але все ще доступне для фокусування за допомогою клавіатури. Якщо ви плануєте приховати зайве або дубльоване посилання, також додайте tabindex="-1"
.',
LINK_IMAGE_NO_ALT_TEXT: 'Зображення у посиланні позначене як декоративне, а текст посилання відсутній. Будь ласка, додайте до зображення текст заміщення, який визначає місце призначення посилання.',
LINK_IMAGE_HAS_TEXT: 'Зображення позначене як декоративне, хоча посилання використовує навколишній текст як описову назву.',
LINK_IMAGE_LONG_ALT: 'Опис текст заміщенняу на пов\'язаному зображенні занадто довгий. текст заміщення на пов\'язаних зображеннях повинен вказувати, куди веде посилання, а не містити дослівний опис зображення. Розгляньте можливість використання заголовка сторінки в якості текст заміщенняу, яку веде посилання.
текст заміщення (%(altLength) символів): %(altText)',
LINK_IMAGE_ALT_WARNING: 'Посилання на зображення містить альтернативний текст. Чи описує альтернативний текст, куди веде посилання? Подумайте про використання назви сторінки, на яку веде посилання, в якості альтернативного тексту.
текст заміщення: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Посилання на зображення містить як текст заміщення, так і текст навколишнього посилання. Якщо зображення є декоративним і використовується як функціональне посилання на іншу сторінку, розгляньте можливість помітити зображення як декоративне або нульове ‒ тексту навколишнього посилання має бути достатньо.
текст заміщення: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: 'Посилання на зображення містить як текст заміщення, так і текст навколишнього посилання. Якщо зображення є декоративним і використовується як функціональне посилання на іншу сторінку, розгляньте можливість помітити зображення як декоративне або нульове ‒ тексту навколишнього посилання має бути достатньо.
текст заміщення: %(altText)
Назва посилання: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: 'Зображення позначене як декоративне та буде проігноровано допоміжними технологіями.
Незважаючи на наявність підпису, у більшості випадків зображення також повинно містити текст заміщення.- текст заміщення повинен містити короткий опис того, що зображенно.
- Підпис зазвичай повинен надавати контекст, щоб встановити зв’язок зображення з навколишнім змістом, або привернути увагу до певної інформації.
Дізнайтесь більше: : alt (текст заміщення) в порівнянні з figcaption (підписом).',
IMAGE_FIGURE_DUPLICATE_ALT: 'Не використовуйте однакові слова для текст заміщенняу та підпису. Пристрої читання з екрана будуть зчитувати їх двічі.- текст заміщення повинен містити короткий опис того, що зображенно.
- Підпис зазвичай повинен надавати контекст, щоб встановити зв’язок зображення з навколишнім змістом, або привернути увагу до певної інформації.
Дізнайтесь більше: : alt (текст заміщення) в порівнянні з figcaption (підписом).
текст заміщення: %(altText)',
IMAGE_DECORATIVE: 'Зображення позначене як декоративне та буде проігноровано допоміжними технологіями. Якщо зображення передає історію, настрій або важливу інформацію, переконайтесь, що до нього додано текст заміщення.',
@@ -168,7 +179,7 @@
// Labels
LABELS_MISSING_IMAGE_INPUT_MESSAGE: 'На кнопці зображення не вистачає текст заміщенняу. Будь ласка, додайте текст заміщення, щоб надати доступну назву. Наприклад: Пошук або Подати.',
LABELS_INPUT_RESET_MESSAGE: 'Кнопки перезавантаження не слід використовувати без необхідності, оскільки їх легко активувати помилково.
Порада! Дізнайтеся, чому кнопки перезавантаження та відміни викликають проблеми зі зручністю використання.',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Введення має доступне ім\'я, проте, будь ласка, переконайтеся, що у нього є видимий підпис.
Доступне ім\'я для цього введення: %(sanitizedText)',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: 'Введення має доступне ім\'я, проте, будь ласка, переконайтеся, що у нього є видимий підпис.
Етикетка для введення: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: 'Із цим введенням не пов\'язана жодна назва. Додайте атрибут for
що відповідає ідентифікатору цього входу.
Ідентифікатор цього входу: id="%(id)"',
LABELS_MISSING_LABEL_MESSAGE: 'Із цим введенням не пов\'язана жодна назва. Будь ласка, додайте id
до цього введення та додайте відповідний атрибут for
до назви.',
@@ -176,8 +187,9 @@
EMBED_VIDEO: 'Будь ласка, переконайтеся, що всі відеоматеріали мають приховані титри. Надання титрів для всіх аудіо- та відеоматеріалів є обов\'язковою вимогою рівня А. Титри допомагають людям з порушенням слуху або глухотою.',
EMBED_AUDIO: 'Будь ласка, забезпечте транскрипцію всіх подкастів. Надання розшифровки аудіоконтенту є обов\'язковою вимогою рівня А. Транскрипція допомагає людям з порушенням слуху або глухотою, але можуть бути корисні всім. Розгляньте можливість розміщення транскрипції нижче або всередині випадаючого списку (акордеону).',
EMBED_DATA_VIZ: 'Віджети візуалізації даних, подібні до цього, часто викликають труднощі у людей, які використовують клавіатуру або програму читання з екрана для навігації, і можуть становити значні труднощі для людей із слабким зором або дальтоніків. Рекомендується надавати ту саму інформацію в альтернативному (текстовому або табличному) форматі під віджетом.
Дізнайтеся більше про комплексні зображення.',
- EMBED_MISSING_TITLE: 'Вбудований контент потребує доступної назви, що описує його вміст. Вкажіть унікальний заголовок (title
) або атрибут aria-label
на елементі iframe
. Дізнайтесь більше про iFrames.',
+ EMBED_MISSING_TITLE: 'Вбудований контент потребує доступної назви, що описує його вміст. Вкажіть унікальний заголовок (title
) або атрибут aria-label
на елементі iframe
. Дізнайтесь більше про iFrames.',
EMBED_GENERAL_WARNING: 'Неможливо перевірити вбудований вміст. Будь ласка, переконайтеся, що зображення мають текст заміщення, до відео є титри, текст має достатній контраст, а інтерактивні компоненти доступні для клавіатури.',
+ EMBED_UNFOCUSABLE: '<iframe>
з елементами, на які не можна фокусуватися, не повинен мати tabindex="-1"
. Вбудований вміст не буде доступний за допомогою клавіатури.',
// Quality assurance
QA_BAD_LINK: 'Знайдено неякісне посилання. Схоже, що посилання вказує на середовище розробки.
Це посилання вказує на:
%(el)',
diff --git a/assets/dist/js/lang/zh.js b/assets/dist/js/lang/zh.js
index 2f5241f..578533a 100644
--- a/assets/dist/js/lang/zh.js
+++ b/assets/dist/js/lang/zh.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -45,10 +45,24 @@ var zh = {
HEADING_NOT_VISIBLE_ALERT: '标题是不可见的;它可能是隐藏的或在手风琴或标签组件内。',
SKIP_TO_PAGE_ISSUES: '跳到页面问题',
CONSOLE_ERROR_MESSAGE: '对不起, 本页面的可访问性检查器有问题。您能否通过此表格或GitHub报告?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: '显示%(dismissCount)被驳回的警告',
DISMISS: '解散',
DISMISSED: '撤消的警告',
DISMISS_REMINDER: '请注意, 警告只被暂时驳回。清除你的浏览器历史记录和cookies将恢复所有页面上所有以前被驳回的警告。',
+
+ // Export
+ DATE: '日期',
+ PAGE_TITLE: '页面标题',
+ RESULTS: '结果',
+ EXPORT_RESULTS: '导出结果',
+ GENERATED: '使用 %(tool) 生成的结果。',
+ PREVIEW: '预览',
+ ELEMENT: '元素',
+ PATH: '路径',
+
+ // Colour filters
COLOUR_FILTER: '彩色过滤器',
PROTANOPIA: '原住民',
DEUTERANOPIA: '氘代苯丙胺(Deuteranopia)',
@@ -60,6 +74,8 @@ var zh = {
BLUE_EYE: '蓝盲。',
MONO_EYE: '红、蓝、绿三色盲。',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: '彩色滤镜在高对比度模式下不工作。',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'形象',
'图形',
@@ -137,6 +153,7 @@ var zh = {
HEADING_MISSING_ONE: '缺少标题1。标题1应该是主要内容区的开始, 是描述页面整体目的的主要标题。了解更多关于标题结构.的信息。',
HEADING_EMPTY_WITH_IMAGE: '标题没有文字, 但包含一个图像。如果这不是一个标题, 请将其格式从标题%(level)改为正常或段落。否则, 如果图片不是装饰性的, 请为其添加alt文本。',
PANEL_HEADING_MISSING_ONE: '缺少标题1!',
+ PANEL_NO_HEADINGS: '未找到标题.',
LINK_EMPTY: '删除没有任何文字的空链接。',
LINK_EMPTY_LINK_NO_LABEL: '链接没有可识别的文字, 对屏幕阅读器和其他辅助技术是可见的。要解决这个问题: - 添加一些简明的文字, 描述该链接带你到哪里。
- 如果它是一个图标链接或SVG,它可能缺少一个描述性的标签。
- 如果你认为这个链接是一个由于复制/粘贴错误造成的错误, 考虑删除它。
。',
LINK_LABEL: '链接标签: %(sanitizedText)',
@@ -150,18 +167,18 @@ var zh = {
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: '图片被用作带有周围文本的链接, 尽管alt属性应被标记为装饰性或空。',
MISSING_ALT_LINK_MESSAGE: '图像被用作链接,但缺少替代文本!请确保替代文本描述了链接将您带到的位置。',
MISSING_ALT_MESSAGE: '缺少替代文本!如果图像传达了故事、情绪或重要信息 - 请务必描述图像。',
- LINK_IMAGE_BAD_ALT_MESSAGE: '在alt文本中发现文件扩展名。确保alt文本描述链接的目的地, 而不是图片的字面描述。删除: %(error).
替代文字:%(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: '在alt文本中发现文件扩展名。确保alt文本描述链接的目的地, 而不是图片的字面描述。删除: %(error).
替代文字:%(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: '发现链接图片中的非描述性或占位符的alt文本。确保alt文本描述了链接的目的地, 而不是图像的字面描述。替换以下alt文本: %(altText)。',
LINK_IMAGE_SUS_ALT_MESSAGE: '辅助技术已经表明这是一张图片, 所以"%(error)" 可能是多余的。确保alt文本描述了链接的目的地, 而不是图像的字面描述。
alt文本: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: '在alt文本内找到文件扩展名。如果图片传达了一个故事、情绪或重要信息--一定要描述图片。删除: %(error).
替代文字:%(altText)',
+ ALT_HAS_FILE_EXTENSION: '在alt文本内找到文件扩展名。如果图片传达了一个故事、情绪或重要信息--一定要描述图片。删除: %(error).
替代文字:%(altText)',
ALT_PLACEHOLDER_MESSAGE: '发现非描述性或占位符的alt文本。用更有意义的内容替换下面的alt文本: %(altText)。',
ALT_HAS_SUS_WORD: '辅助技术已经表明这是一张图片, 所以"%(error)" 可能是多余的。
替代文字: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: '图片周围的链接有aria-hidden="true"
, 但仍可被键盘聚焦。如果你打算隐藏一个多余的或重复的链接, 请同时添加tabindex="-1"
。',
+ LINK_HIDDEN_FOCUSABLE: '链接具有aria-hidden="true"
,但仍可通过键盘聚焦。如果您打算隐藏多余或重复的链接,也请添加tabindex="-1"
。',
LINK_IMAGE_NO_ALT_TEXT: '链接中的图像被标记为装饰性的, 没有链接文本。请在图片上添加描述链接目的地的alt文本。',
LINK_IMAGE_HAS_TEXT: '图片被标记为装饰性的, 尽管链接是使用周围的文字作为描述性的标签。',
LINK_IMAGE_LONG_ALT: '链接图片的alt文本描述太长。链接图片的alt文本应该描述链接的位置, 而不是图片的字面描述。考虑使用它所链接的页面的标题作为alt文本。
alt文本 (% (altLength) 字符) : % (altText) 。',
LINK_IMAGE_ALT_WARNING: '图片链接包含alt文本。符号文本是否描述了该链接的位置?可以考虑使用它所链接的页面的标题作为alt文本。
替代文字: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: '图片链接包含alt文本和周围的链接文本。如果该图片是装饰性的, 并被用作另一个页面的功能链接, 请考虑将该图片标记为装饰性或无效--周围的链接文本应该足够了。
标题文本: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: '图片链接包含alt文本和周围的链接文本。如果该图片是装饰性的, 并被用作另一个页面的功能链接, 请考虑将该图片标记为装饰性或无效--周围的链接文本应该足够了。
标题文本: %(altText)
链接标签: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: '图片被标记为装饰性, 将被辅助技术所忽略。
虽然提供了一个标题, 但在大多数情况下, 图像也应该有alt文本。- alt文本应该对图像中的内容进行简明的描述。
- 标题通常应该提供背景, 将图像与周围的内容联系起来, 或者对某一特定的信息给予关注: alt与figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: '不要在alt和标题文本中使用完全相同的词。屏幕阅读器会将信息公布两次。
- alt文本应提供对图片中内容的简明描述。
- 标题通常应提供背景, 将图片与周围的内容联系起来, 或对某一特定信息给予关注。
了解更多: alt与figcaption.
替代文字: %(altText)',
IMAGE_DECORATIVE: '图片被标记为装饰性, 将被辅助技术所忽略。如果图片传达了一个故事、情绪或重要的信息--请务必添加alt文本。',
@@ -169,14 +186,15 @@ var zh = {
IMAGE_PASS: '替代文本: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: '图片按钮缺少alt文本。请添加alt文本, 提供一个可访问的名称。比如说: Search或Submit。',
LABELS_INPUT_RESET_MESSAGE: '除非特别需要, 否则不应使用重置按钮, 因为它们很容易被错误激活。
提示!了解为什么复位和取消按钮会带来可用性问题。',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: '输入有一个无障碍名称, 但请确保也有一个可见的标签。
这个输入的无障碍名称是: %(sanitizedText)。',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: '输入有一个无障碍名称, 但请确保也有一个可见的标签。
输入标签: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: '没有与此输入相关的标签。给标签添加一个for
属性, 该属性与该输入的id
相匹配。
这个输入的ID是: id="% (id) "',
LABELS_MISSING_LABEL_MESSAGE: '没有与此输入相关的标签。请为这个输入添加一个id
, 并为标签添加一个匹配的for
属性。',
EMBED_VIDEO: '请确保所有视频都有闭合字幕。为所有音频和视频内容提供字幕是一项强制性的A级要求。字幕支持聋哑人或听力困难的人。',
EMBED_AUDIO: '请确保为所有播客提供文字记录。为音频内容提供文字记录是一项强制性的A级要求。转录支持聋哑人或听力困难的人, 但也能使所有人受益。考虑将文字记录放在下面或放在一个手风琴面板内。',
EMBED_DATA_VIZ: '像这样的数据可视化部件对于使用键盘或屏幕阅读器导航的人来说往往是有问题的, 而且对于低视力或色盲的人来说也会带来很大的困难。建议在小组件下方以替代 (文本或表格) 的形式提供相同的信息。
了解更多关于复杂图像的信息。',
- EMBED_MISSING_TITLE: '嵌入内容需要一个描述其内容的可访问名称。请在iframe
元素上提供一个独特的title
或aria-label
属性。了解更多关于iFrames.的信息。',
+ EMBED_MISSING_TITLE: '嵌入内容需要一个描述其内容的可访问名称。请在iframe
元素上提供一个独特的title
或aria-label
属性。了解更多关于iFrames.的信息。',
EMBED_GENERAL_WARNING: '无法检查嵌入式内容。请确保图像有alt文本, 视频有标题, 文本有足够的对比度, 互动组件是键盘可访问的。',
+ EMBED_UNFOCUSABLE: '带有无法聚焦元素的 <iframe>
不应具有 tabindex="-1"
。嵌入内容将无法通过键盘访问。',
QA_BAD_LINK: '发现坏的链接。链接似乎指向一个开发环境。
这个链接指向:
%(el)',
QA_BAD_ITALICS: '粗体和斜体标签具有语义, 不应用于突出整个段落。加粗的文字应该用于对一个词或短语进行强烈的强调。斜体字应该用来突出专有名词 (即书名和文章标题) 、外国词、引号。长篇引语应采用块状引语的格式。',
QA_PDF: '无法检查PDF的可访问性。PDF被认为是网络内容, 也必须做到无障碍。对于使用屏幕阅读器的人 (缺失结构标签或缺失表格字段标签) 和低视力的人 (文本在放大时不回流) 来说, PDF经常包含一些问题。- 如果这是一个表格, 请考虑使用可访问的HTML表格作为替代。
- 如果这是一个文档, 请考虑将其转换为网页。
否则, 请在Acrobat DC中检查PDF的可访问性。',
diff --git a/assets/dist/js/lang/zh.umd.js b/assets/dist/js/lang/zh.umd.js
index 1210a0d..74a40a6 100644
--- a/assets/dist/js/lang/zh.umd.js
+++ b/assets/dist/js/lang/zh.umd.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -51,10 +51,24 @@
HEADING_NOT_VISIBLE_ALERT: '标题是不可见的;它可能是隐藏的或在手风琴或标签组件内。',
SKIP_TO_PAGE_ISSUES: '跳到页面问题',
CONSOLE_ERROR_MESSAGE: '对不起, 本页面的可访问性检查器有问题。您能否通过此表格或GitHub报告?',
+
+ // Dismiss
PANEL_DISMISS_BUTTON: '显示%(dismissCount)被驳回的警告',
DISMISS: '解散',
DISMISSED: '撤消的警告',
DISMISS_REMINDER: '请注意, 警告只被暂时驳回。清除你的浏览器历史记录和cookies将恢复所有页面上所有以前被驳回的警告。',
+
+ // Export
+ DATE: '日期',
+ PAGE_TITLE: '页面标题',
+ RESULTS: '结果',
+ EXPORT_RESULTS: '导出结果',
+ GENERATED: '使用 %(tool) 生成的结果。',
+ PREVIEW: '预览',
+ ELEMENT: '元素',
+ PATH: '路径',
+
+ // Colour filters
COLOUR_FILTER: '彩色过滤器',
PROTANOPIA: '原住民',
DEUTERANOPIA: '氘代苯丙胺(Deuteranopia)',
@@ -66,6 +80,8 @@
BLUE_EYE: '蓝盲。',
MONO_EYE: '红、蓝、绿三色盲。',
COLOUR_FILTER_HIGH_CONTRAST_MESSAGE: '彩色滤镜在高对比度模式下不工作。',
+
+ // Alternative text stop words
SUSPICIOUS_ALT_STOPWORDS: [
'形象',
'图形',
@@ -143,6 +159,7 @@
HEADING_MISSING_ONE: '缺少标题1。标题1应该是主要内容区的开始, 是描述页面整体目的的主要标题。了解更多关于标题结构.的信息。',
HEADING_EMPTY_WITH_IMAGE: '标题没有文字, 但包含一个图像。如果这不是一个标题, 请将其格式从标题%(level)改为正常或段落。否则, 如果图片不是装饰性的, 请为其添加alt文本。',
PANEL_HEADING_MISSING_ONE: '缺少标题1!',
+ PANEL_NO_HEADINGS: '未找到标题.',
LINK_EMPTY: '删除没有任何文字的空链接。',
LINK_EMPTY_LINK_NO_LABEL: '链接没有可识别的文字, 对屏幕阅读器和其他辅助技术是可见的。要解决这个问题: - 添加一些简明的文字, 描述该链接带你到哪里。
- 如果它是一个图标链接或SVG,它可能缺少一个描述性的标签。
- 如果你认为这个链接是一个由于复制/粘贴错误造成的错误, 考虑删除它。
。',
LINK_LABEL: '链接标签: %(sanitizedText)',
@@ -156,18 +173,18 @@
MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE: '图片被用作带有周围文本的链接, 尽管alt属性应被标记为装饰性或空。',
MISSING_ALT_LINK_MESSAGE: '图像被用作链接,但缺少替代文本!请确保替代文本描述了链接将您带到的位置。',
MISSING_ALT_MESSAGE: '缺少替代文本!如果图像传达了故事、情绪或重要信息 - 请务必描述图像。',
- LINK_IMAGE_BAD_ALT_MESSAGE: '在alt文本中发现文件扩展名。确保alt文本描述链接的目的地, 而不是图片的字面描述。删除: %(error).
替代文字:%(altText)',
+ LINK_ALT_HAS_FILE_EXTENSION: '在alt文本中发现文件扩展名。确保alt文本描述链接的目的地, 而不是图片的字面描述。删除: %(error).
替代文字:%(altText)',
LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE: '发现链接图片中的非描述性或占位符的alt文本。确保alt文本描述了链接的目的地, 而不是图像的字面描述。替换以下alt文本: %(altText)。',
LINK_IMAGE_SUS_ALT_MESSAGE: '辅助技术已经表明这是一张图片, 所以"%(error)" 可能是多余的。确保alt文本描述了链接的目的地, 而不是图像的字面描述。
alt文本: %(altText)',
- LINK_ALT_HAS_BAD_WORD_MESSAGE: '在alt文本内找到文件扩展名。如果图片传达了一个故事、情绪或重要信息--一定要描述图片。删除: %(error).
替代文字:%(altText)',
+ ALT_HAS_FILE_EXTENSION: '在alt文本内找到文件扩展名。如果图片传达了一个故事、情绪或重要信息--一定要描述图片。删除: %(error).
替代文字:%(altText)',
ALT_PLACEHOLDER_MESSAGE: '发现非描述性或占位符的alt文本。用更有意义的内容替换下面的alt文本: %(altText)。',
ALT_HAS_SUS_WORD: '辅助技术已经表明这是一张图片, 所以"%(error)" 可能是多余的。
替代文字: %(altText)',
- LINK_IMAGE_ARIA_HIDDEN: '图片周围的链接有aria-hidden="true"
, 但仍可被键盘聚焦。如果你打算隐藏一个多余的或重复的链接, 请同时添加tabindex="-1"
。',
+ LINK_HIDDEN_FOCUSABLE: '链接具有aria-hidden="true"
,但仍可通过键盘聚焦。如果您打算隐藏多余或重复的链接,也请添加tabindex="-1"
。',
LINK_IMAGE_NO_ALT_TEXT: '链接中的图像被标记为装饰性的, 没有链接文本。请在图片上添加描述链接目的地的alt文本。',
LINK_IMAGE_HAS_TEXT: '图片被标记为装饰性的, 尽管链接是使用周围的文字作为描述性的标签。',
LINK_IMAGE_LONG_ALT: '链接图片的alt文本描述太长。链接图片的alt文本应该描述链接的位置, 而不是图片的字面描述。考虑使用它所链接的页面的标题作为alt文本。
alt文本 (% (altLength) 字符) : % (altText) 。',
LINK_IMAGE_ALT_WARNING: '图片链接包含alt文本。符号文本是否描述了该链接的位置?可以考虑使用它所链接的页面的标题作为alt文本。
替代文字: %(altText)',
- LINK_IMAGE_ALT_AND_TEXT_WARNING: '图片链接包含alt文本和周围的链接文本。如果该图片是装饰性的, 并被用作另一个页面的功能链接, 请考虑将该图片标记为装饰性或无效--周围的链接文本应该足够了。
标题文本: %(altText)',
+ LINK_IMAGE_ALT_AND_TEXT_WARNING: '图片链接包含alt文本和周围的链接文本。如果该图片是装饰性的, 并被用作另一个页面的功能链接, 请考虑将该图片标记为装饰性或无效--周围的链接文本应该足够了。
标题文本: %(altText)
链接标签: %(sanitizedText)',
IMAGE_FIGURE_DECORATIVE: '图片被标记为装饰性, 将被辅助技术所忽略。
虽然提供了一个标题, 但在大多数情况下, 图像也应该有alt文本。- alt文本应该对图像中的内容进行简明的描述。
- 标题通常应该提供背景, 将图像与周围的内容联系起来, 或者对某一特定的信息给予关注: alt与figcaption.',
IMAGE_FIGURE_DUPLICATE_ALT: '不要在alt和标题文本中使用完全相同的词。屏幕阅读器会将信息公布两次。
- alt文本应提供对图片中内容的简明描述。
- 标题通常应提供背景, 将图片与周围的内容联系起来, 或对某一特定信息给予关注。
了解更多: alt与figcaption.
替代文字: %(altText)',
IMAGE_DECORATIVE: '图片被标记为装饰性, 将被辅助技术所忽略。如果图片传达了一个故事、情绪或重要的信息--请务必添加alt文本。',
@@ -175,14 +192,15 @@
IMAGE_PASS: '替代文本: %(altText)',
LABELS_MISSING_IMAGE_INPUT_MESSAGE: '图片按钮缺少alt文本。请添加alt文本, 提供一个可访问的名称。比如说: Search或Submit。',
LABELS_INPUT_RESET_MESSAGE: '除非特别需要, 否则不应使用重置按钮, 因为它们很容易被错误激活。
提示!了解为什么复位和取消按钮会带来可用性问题。',
- LABELS_ARIA_LABEL_INPUT_MESSAGE: '输入有一个无障碍名称, 但请确保也有一个可见的标签。
这个输入的无障碍名称是: %(sanitizedText)。',
+ LABELS_ARIA_LABEL_INPUT_MESSAGE: '输入有一个无障碍名称, 但请确保也有一个可见的标签。
输入标签: %(sanitizedText)',
LABELS_NO_FOR_ATTRIBUTE_MESSAGE: '没有与此输入相关的标签。给标签添加一个for
属性, 该属性与该输入的id
相匹配。
这个输入的ID是: id="% (id) "',
LABELS_MISSING_LABEL_MESSAGE: '没有与此输入相关的标签。请为这个输入添加一个id
, 并为标签添加一个匹配的for
属性。',
EMBED_VIDEO: '请确保所有视频都有闭合字幕。为所有音频和视频内容提供字幕是一项强制性的A级要求。字幕支持聋哑人或听力困难的人。',
EMBED_AUDIO: '请确保为所有播客提供文字记录。为音频内容提供文字记录是一项强制性的A级要求。转录支持聋哑人或听力困难的人, 但也能使所有人受益。考虑将文字记录放在下面或放在一个手风琴面板内。',
EMBED_DATA_VIZ: '像这样的数据可视化部件对于使用键盘或屏幕阅读器导航的人来说往往是有问题的, 而且对于低视力或色盲的人来说也会带来很大的困难。建议在小组件下方以替代 (文本或表格) 的形式提供相同的信息。
了解更多关于复杂图像的信息。',
- EMBED_MISSING_TITLE: '嵌入内容需要一个描述其内容的可访问名称。请在iframe
元素上提供一个独特的title
或aria-label
属性。了解更多关于iFrames.的信息。',
+ EMBED_MISSING_TITLE: '嵌入内容需要一个描述其内容的可访问名称。请在iframe
元素上提供一个独特的title
或aria-label
属性。了解更多关于iFrames.的信息。',
EMBED_GENERAL_WARNING: '无法检查嵌入式内容。请确保图像有alt文本, 视频有标题, 文本有足够的对比度, 互动组件是键盘可访问的。',
+ EMBED_UNFOCUSABLE: '带有无法聚焦元素的 <iframe>
不应具有 tabindex="-1"
。嵌入内容将无法通过键盘访问。',
QA_BAD_LINK: '发现坏的链接。链接似乎指向一个开发环境。
这个链接指向:
%(el)',
QA_BAD_ITALICS: '粗体和斜体标签具有语义, 不应用于突出整个段落。加粗的文字应该用于对一个词或短语进行强烈的强调。斜体字应该用来突出专有名词 (即书名和文章标题) 、外国词、引号。长篇引语应采用块状引语的格式。',
QA_PDF: '无法检查PDF的可访问性。PDF被认为是网络内容, 也必须做到无障碍。对于使用屏幕阅读器的人 (缺失结构标签或缺失表格字段标签) 和低视力的人 (文本在放大时不回流) 来说, PDF经常包含一些问题。- 如果这是一个表格, 请考虑使用可访问的HTML表格作为替代。
- 如果这是一个文档, 请考虑将其转换为网页。
否则, 请在Acrobat DC中检查PDF的可访问性。',
diff --git a/assets/dist/js/sa11y.esm.js b/assets/dist/js/sa11y.esm.js
index 0847de3..b2ada37 100644
--- a/assets/dist/js/sa11y.esm.js
+++ b/assets/dist/js/sa11y.esm.js
@@ -1,7 +1,7 @@
/*!
* Sa11y, the accessibility quality assurance assistant.
- * @version 3.0.3
+ * @version 3.0.6
* @author Adam Chaboryk, Toronto Metropolitan University
* @license GPL-2.0-or-later
* @copyright © 2020 - 2023 Toronto Metropolitan University (formerly Ryerson University).
@@ -22,9 +22,11 @@ const defaultOptions = {
imageIgnore: '',
linkIgnore: 'nav *, [role="navigation"] *',
linkIgnoreSpan: '',
+ linkIgnoreStrings: '',
// Other features
showGoodLinkButton: true,
+ showHinPageOutline: false,
detectSPArouting: false,
doNotRun: '',
dismissAnnotations: true,
@@ -33,6 +35,10 @@ const defaultOptions = {
shadowComponents: '',
autoDetectShadowComponents: false,
panelPosition: 'right',
+ altTextMaxCharLength: 250,
+ headingMaxCharLength: 170,
+ URLTextMaxCharLength: 40,
+ URLAsLinkTextWarning: true,
// Readability
readabilityPlugin: true,
@@ -46,6 +52,7 @@ const defaultOptions = {
colourFilterPlugin: true,
customChecks: true,
checkAllHideToggles: false,
+ exportResultsPlugin: false,
// Specific rulesets
linksToFlag: '',
@@ -59,9 +66,9 @@ const defaultOptions = {
strongItalicsQA: true,
pdfQA: true,
documentQA: true,
+ documentLinks: '.ppt, .doc, .xls, .csv, sway.com, docs.google.com',
langQA: true,
blockquotesQA: true,
- tablesQA: true,
allCapsQA: true,
fakeHeadingsQA: true,
fakeListQA: true,
@@ -69,7 +76,13 @@ const defaultOptions = {
underlinedTextQA: true,
pageTitleQA: true,
subscriptQA: true,
- documentLinks: '.ppt, .doc, .xls, .csv, sway.com, docs.google.com',
+
+ // Tables
+ tablesQA: true,
+ tablesQAmissingTH: true,
+ tablesQAsemanticHeadings: true,
+ tablesQAemptyTH: true,
+ tablesQAemptyTHisError: true,
// Embedded content rulesets
embeddedContentAll: true,
@@ -82,7 +95,7 @@ const defaultOptions = {
// Embedded content
videoContent: 'youtube.com, vimeo.com, yuja.com, panopto.com',
audioContent: 'soundcloud.com, simplecast.com, podbean.com, buzzsprout.com, blubrry.com, transistor.fm, fusebox.fm, libsyn.com',
- dataVizContent: 'datastudio.google.com, tableau',
+ dataVizContent: 'datastudio, tableau, lookerstudio, powerbi, qlik',
};
/* Translation object */
@@ -128,18 +141,14 @@ const addStylestoShadow = (component) => {
component.shadowRoot.appendChild(style);
};
-function findShadowComponents(
- checkRoot,
- autoDetectShadowComponents,
- suppliedShadowComponents,
-) {
+function findShadowComponents(option) {
let webComponents;
- if (autoDetectShadowComponents === true) {
+ if (option.autoDetectShadowComponents) {
// Elements to ignore.
const ignore = 'sa11y-heading-label, sa11y-heading-anchor, sa11y-annotation, sa11y-tooltips, sa11y-dismiss-tooltip, sa11y-control-panel, #sa11y-colour-filters, #sa11y-colour-filters *, script';
// Search all elements.
- const root = document.querySelector(checkRoot);
+ const root = document.querySelector(option.checkRoot);
const search = (root) ? Array.from(root.querySelectorAll(`*:not(${ignore})`)) : Array.from(document.body.querySelectorAll(`*:not(${ignore})`));
// Query for open shadow roots & inject CSS utilities into every shadow DOM.
@@ -156,7 +165,7 @@ function findShadowComponents(
webComponents = (all.length === 1) ? `${all.toString()}` : all.join(', ');
} else {
// If autoDetectShadowComponents is OFF, use provided shadow dom.
- webComponents = suppliedShadowComponents || '';
+ webComponents = option.suppliedShadowComponents || '';
// Append styles to each provided shadow dom.
if (webComponents) {
@@ -175,10 +184,10 @@ const Constants = (function myConstants() {
/* **************** */
const Global = {};
function initializeGlobal(option) {
- Global.currentPage = window.location.pathname;
Global.html = document.querySelector('html');
Global.headless = option.headless;
Global.panelPosition = option.panelPosition;
+ Global.dismissAnnotations = option.dismissAnnotations;
// Toggleable plugins
Global.contrastPlugin = option.contrastPlugin;
@@ -186,10 +195,11 @@ const Constants = (function myConstants() {
Global.linksAdvancedPlugin = option.linksAdvancedPlugin;
Global.colourFilterPlugin = option.colourFilterPlugin;
Global.checkAllHideToggles = option.checkAllHideToggles;
+ Global.exportResultsPlugin = option.exportResultsPlugin;
// Root element to check.
Global.Root = document.querySelector(option.checkRoot);
- if (!option.checkRoot) {
+ if (!Global.Root) {
Global.Root = document.querySelector('body');
}
@@ -203,7 +213,7 @@ const Constants = (function myConstants() {
// i18n
Global.langDirection = (Global.html.getAttribute('dir') === 'rtl') ? 'rtl' : 'ltr';
- // Document links (Quality Assurance module)
+ // QA: Document links (Quality Assurance module)
if (option.documentLinks) {
Global.documentLinks = `${option.documentLinks}`;
}
@@ -262,6 +272,8 @@ const Constants = (function myConstants() {
Panel.dismissButton = Sa11yPanel.getElementById('dismiss-button');
Panel.dismissTooltip = Sa11yPanel.getElementById('dismiss-tooltip');
Panel.skipToPageIssues = Sa11yPanel.getElementById('skip-to-page-issues');
+ Panel.exportHTML = Sa11yPanel.getElementById('export-html');
+ Panel.exportCSV = Sa11yPanel.getElementById('export-csv');
// Alerts
Panel.alert = Sa11yPanel.getElementById('panel-alert');
@@ -280,7 +292,7 @@ const Constants = (function myConstants() {
/* ***************** */
const Readability = {};
function initializeReadability(option) {
- if (option.readabilityPlugin === true) {
+ if (option.readabilityPlugin) {
// Readability target area to check.
Readability.Root = document.querySelector(option.readabilityRoot);
if (!Readability.Root) {
@@ -337,9 +349,9 @@ const Constants = (function myConstants() {
// Main container.
if (option.containerIgnore) {
const containerSelectors = option.containerIgnore.split(',').map(($el) => `${$el} *, ${$el}`);
- Exclusions.Container = `[aria-hidden], #wpadminbar *, ${containerSelectors.join(', ')}`;
+ Exclusions.Container = `#wpadminbar *, ${containerSelectors.join(', ')}`;
} else {
- Exclusions.Container = '[aria-hidden], #wpadminbar *';
+ Exclusions.Container = '#wpadminbar *';
}
// Contrast exclusions
@@ -371,17 +383,14 @@ const Constants = (function myConstants() {
}
// Ignore specific links
- Exclusions.Links = '[aria-hidden="true"], .anchorjs-link';
+ Exclusions.Links = '.anchorjs-link';
if (option.linkIgnore) {
Exclusions.Links = `${option.linkIgnore}, ${Exclusions.Links}`;
}
// Ignore specific classes within links.
if (option.linkIgnoreSpan) {
- const linkIgnoreSpanSelectors = option.linkIgnoreSpan.split(',').map(($el) => `${$el} *, ${$el}`);
- Exclusions.LinkSpan = `noscript, ${linkIgnoreSpanSelectors.join(', ')}`;
- } else {
- Exclusions.LinkSpan = 'noscript';
+ Exclusions.LinkSpan = option.linkIgnoreSpan;
}
}
@@ -424,10 +433,7 @@ const Constants = (function myConstants() {
const Shadow = {};
function initializeShadowSearch(checkRoot, autoDetectShadowComponents, shadowComponents) {
Shadow.Components = findShadowComponents(
- checkRoot,
- autoDetectShadowComponents,
- shadowComponents,
- );
+ checkRoot);
}
return {
@@ -480,7 +486,6 @@ function find(selector, desiredRoot, exclude) {
/* Logic yoinked from Editoria11y */
// 1. Elements array includes web components in the selector to be used as a placeholder.
const elements = Array.from(root.querySelectorAll(`:is(${selector}${shadow}):not(${exclusions}${additional})`));
-
if (shadowComponents.length) {
// 2. Dive into the each shadow root and collect an array of its results.
const shadowFind = [];
@@ -500,14 +505,13 @@ function find(selector, desiredRoot, exclude) {
}
}
}
-
// 4. Return the cleaned up array.
return elements;
}
/**
* Checks if the document has finished loading, and if so, immediately calls the provided callback function. Otherwise, waits for the 'load' event to fire and then calls the callback function.
- * @param {function} callback - The callback function to be called when the document finishes loading.
+ * @param {function} callback The callback function to be called when the document finishes loading.
*/
function documentLoadingCheck(callback) {
if (document.readyState === 'complete') {
@@ -519,8 +523,8 @@ function documentLoadingCheck(callback) {
/**
* Checks if an element is visually hidden or hidden based on its attributes and styles.
- * @param {HTMLElement} element - The element to check for visibility.
- * @returns {boolean} - `true` if the element is visually hidden or hidden, `false` otherwise.
+ * @param {HTMLElement} element The element to check for visibility.
+ * @returns {boolean} `true` if the element is visually hidden or hidden, `false` otherwise.
*/
function isElementVisuallyHiddenOrHidden(element) {
if (element.getAttribute('hidden') || (element.offsetWidth === 0 && element.offsetHeight === 0) || (element.clientHeight === 1 && element.clientWidth === 1)) {
@@ -531,12 +535,12 @@ function isElementVisuallyHiddenOrHidden(element) {
}
/**
- * Checks if an element is hidden based on its attributes and styles.
- * @param {HTMLElement} element - The element to check for visibility.
- * @returns {boolean} - `true` if the element is hidden, `false` otherwise.
+ * Checks if an element is hidden (display: none) based on its attributes and styles.
+ * @param {HTMLElement} element The element to check for visibility.
+ * @returns {boolean} 'true' if the element is hidden (display: none).
*/
function isElementHidden(element) {
- if (element.getAttribute('hidden') || (element.offsetWidth === 0 && element.offsetHeight === 0)) {
+ if (element.getAttribute('hidden')) {
return true;
}
const compStyles = getComputedStyle(element);
@@ -545,8 +549,8 @@ function isElementHidden(element) {
/**
* Escapes HTML special characters in a string.
- * @param {string} string - The string to escape.
- * @returns {string} - The escaped string with HTML special characters replaced by their corresponding entities.
+ * @param {string} string The string to escape.
+ * @returns {string} The escaped string with HTML special characters replaced by their corresponding entities.
*/
function escapeHTML(string) {
const $div = document.createElement('div');
@@ -554,10 +558,47 @@ function escapeHTML(string) {
return $div.innerHTML.replaceAll('"', '"').replaceAll("'", ''').replaceAll('`', '`');
}
+/**
+ * Decodes/unescapes HTML entities back to their corresponding character.
+ * @param {string} string The string.
+ * @returns {string} Decoded string.
+ */
+function decodeHTML(string) {
+ return string.replace(/&(#?[a-zA-Z0-9]+);/g, (match, entity) => {
+ switch (entity) {
+ case 'amp':
+ return '&';
+ case 'lt':
+ return '<';
+ case 'gt':
+ return '>';
+ case 'quot':
+ return '\'';
+ case '#39':
+ return "'"; // Convert single quotes to actual single quotes.
+ default:
+ // For numeric entities, convert them back to the corresponding character.
+ if (entity.charAt(0) === '#') {
+ return String.fromCharCode(entity.charAt(1) === 'x' ? parseInt(entity.substr(2), 16) : parseInt(entity.substr(1), 10));
+ }
+ return match;
+ }
+ });
+}
+
+/**
+ * Strips HTML tags from a string.
+ * @param {string} string The string.
+ * @returns {string} String without any HTML tags.
+ */
+function stripHTMLtags(string) {
+ return string.replace(/<[^>]*>/g, '');
+}
+
/**
* Sanitizes an HTML string by replacing special characters with their corresponding HTML entities.
- * @param {string} string - The HTML string to sanitize.
- * @returns {string} - The sanitized HTML string with special characters replaced by their corresponding entities.
+ * @param {string} string The HTML string to sanitize.
+ * @returns {string} The sanitized HTML string with special characters replaced by their corresponding entities.
* @link https://portswigger.net/web-security/cross-site-scripting/preventing
*/
function sanitizeHTML(string) {
@@ -566,50 +607,28 @@ function sanitizeHTML(string) {
/**
* Retrieves the text content of an HTML element and removes extra whitespaces and line breaks.
- * @param {HTMLElement} element - The HTML element to retrieve the text content from.
- * @returns {string} - The text content of the HTML element with extra whitespaces and line breaks removed.
+ * @param {HTMLElement} element The HTML element to retrieve the text content from.
+ * @returns {string} The text content of the HTML element with extra whitespaces and line breaks removed.
*/
function getText(element) {
- return element.textContent.replace(/[\n\r]+|[\s]{2,}/g, ' ').trim();
+ return element.textContent.replace(/[\r\n]+/g, '').replace(/\s+/g, ' ').trim();
}
/**
- * Compute alt text on images within a text node.
- * @param {HTMLElement} element - The HTML element to compute the text content from.
- * @returns {string} - The computed text content of the HTML element, considering alt text of images if present.
+ * Removes extra whitespaces and line breaks from a string.
+ * @param {string} string The string.
+ * @returns {string} String with line breaks and extra white space removed.
*/
-function computeTextNodeWithImage(element) {
- const textContent = getText(element);
- const imgArray = Array.from(element.querySelectorAll('img'));
- let returnText = '';
- // No image, has text.
- if (imgArray.length === 0 && textContent.length > 1) {
- returnText = textContent;
- } else if (imgArray.length && textContent.length === 0) {
- // Has image.
- const imgalt = imgArray[0].getAttribute('alt');
- if (!imgalt || imgalt === ' ' || imgalt === '') {
- returnText = '';
- } else if (imgalt !== undefined) {
- returnText = imgalt;
- }
- } else if (imgArray.length && textContent.length) {
- // Has image and text.
- // To-do: This is a hack? Any way to do this better?
- imgArray.forEach((img) => {
- img.insertAdjacentHTML('afterend', ` `);
- });
- returnText = textContent;
- }
- return returnText;
+function removeWhitespace(string) {
+ return string.replace(/[\r\n]+/g, ' ').replace(/\s+/g, ' ').trim();
}
/**
* Debounces a callback function, ensuring it is only executed after a certain wait period
* has passed since the last invocation.
- * @param {function} callback - The callback function to debounce.
- * @param {number} wait - The wait period in milliseconds before the callback function is executed.
- * @returns {function} - The debounced function.
+ * @param {function} callback The callback function to debounce.
+ * @param {number} wait The wait period in milliseconds before the callback function is executed.
+ * @returns {function} The debounced function.
* @link https://www.joshwcomeau.com/snippets/javascript/debounce/
*/
function debounce$2(callback, wait) {
@@ -624,9 +643,9 @@ function debounce$2(callback, wait) {
/**
* Creates a clone of an element while ignoring specified elements or elements matching a selector.
- * @param {Element} element - The element to clone.
- * @param {string} selector - The selector to match elements to be excluded from the clone. Optional.
- * @returns {Element} - The cloned element with excluded elements removed.
+ * @param {Element} element The element to clone.
+ * @param {string} selector The selector to match elements to be excluded from the clone. Optional.
+ * @returns {Element} The cloned element with excluded elements removed.
*/
function fnIgnore(element, selector) {
const defaultIgnored = 'noscript, script, style';
@@ -639,94 +658,12 @@ function fnIgnore(element, selector) {
return clone;
}
-/**
- * Computes the accessible name of an element based on various aria-* attributes.
- * @param {Element} element - The element for which the accessible name needs to be computed.
- * @returns {string} - The computed accessible name of the element.
- */
-function computeAccessibleName(element) {
- // aria-label
- if (element.matches('[aria-label]')) {
- return element.getAttribute('aria-label');
- }
-
- // aria-labeledby
- if (element.matches('[aria-labelledby]')) {
- const target = element.getAttribute('aria-labelledby').split(/\s+/);
- if (target.length > 0) {
- let returnText = '';
- target.forEach((x) => {
- const targetSelector = document.querySelector(`#${CSS.escape(x)}`);
- if (targetSelector === null) {
- returnText += ' ';
- } else if (targetSelector.hasAttribute('aria-label')) {
- returnText += `${targetSelector.getAttribute('aria-label')}`;
- } else {
- returnText += `${targetSelector.firstChild.nodeValue} `;
- }
- });
- return returnText;
- }
- }
-
- // Child with aria-label
- if (Array.from(element.children).filter((x) => x.matches('[aria-label]')).length > 0) {
- const child = Array.from(element.childNodes);
- let returnText = '';
-
- // Process each child within node.
- child.forEach((x) => {
- if (x.nodeType === 1) {
- // Ignore HTML comments and make sure label is not null.
- if (x.nodeType === 3 || x.ariaLabel === null) {
- returnText += x.innerText;
- } else {
- returnText += x.getAttribute('aria-label');
- }
- } else {
- returnText += x.nodeValue;
- }
- });
- return returnText;
- }
-
- // Child with aria-labelledby
- if (Array.from(element.children).filter((x) => x.matches('[aria-labelledby]')).length > 0) {
- const child = Array.from(element.childNodes);
- let returnText = '';
-
- // Process each child within node.
- child.forEach((y) => {
- if (y.nodeType === 8) ; else if (y.nodeType === 3 || y.getAttribute('aria-labelledby') === null) {
- returnText += y.nodeValue;
- } else {
- const target = y.getAttribute('aria-labelledby').split(/\s+/);
- if (target.length > 0) {
- let returnAria = '';
- target.forEach((z) => {
- if (document.querySelector(`#${CSS.escape(z)}`) === null) {
- returnAria += ' ';
- } else {
- returnAria += `${document.querySelector(`#${CSS.escape(z)}`).firstChild.nodeValue} `;
- }
- });
- returnText += returnAria;
- }
- }
- });
- return returnText;
- }
-
- // Return if noAria;
- return 'noAria';
-}
-
/**
* Finds the visible parent of an element that matches a given CSS property and value.
- * @param {Element} element - The element for which the visible parent needs to be found.
- * @param {string} property - The CSS property to match against.
- * @param {string} value - The value of the CSS property to match against.
- * @returns {Element|null} - The visible parent element that matches the given property and value, or null if not found.
+ * @param {Element} element The element for which the visible parent needs to be found.
+ * @param {string} property The CSS property to match against.
+ * @param {string} value The value of the CSS property to match against.
+ * @returns {Element|null} The visible parent element that matches the given property and value, or null if not found.
*/
function findVisibleParent(element, property, value) {
let $el = element;
@@ -743,8 +680,8 @@ function findVisibleParent(element, property, value) {
/**
* Calculates the offset top of an element relative to the viewport.
- * @param {Element} element - The element for which the offset top needs to be calculated.
- * @returns {Object} - An object with a `top` property that represents the offset top of the element relative to the viewport.
+ * @param {Element} element The element for which the offset top needs to be calculated.
+ * @returns {Object} An object with a `top` property that represents the offset top of the element relative to the viewport.
*/
function offsetTop(element) {
const rect = element.getBoundingClientRect();
@@ -792,7 +729,7 @@ const store = {
/**
* Adds a pulsing border effect to an element for 2.5 seconds.
- * @param {Element} element - The element to which the pulsing border effect needs to be added.
+ * @param {Element} element The element to which the pulsing border effect needs to be added.
*/
function addPulse(element) {
const border = 'data-sa11y-pulse-border';
@@ -802,26 +739,10 @@ function addPulse(element) {
}, 2500);
}
-/**
- * Gets the next sibling element that matches the given selector, or the next sibling element if no selector is provided.
- * @param {HTMLElement} element - The DOM element whose next sibling to retrieve.
- * @param {string} selector - The optional selector to filter the next siblings. If not provided, the next sibling element will be returned regardless of its type.
- * @returns {HTMLElement|string} - The next sibling element that matches the given selector, or the next sibling element if no selector is provided. If no matching sibling is found, an empty string is returned.
- */
-function getNextSibling(element, selector) {
- let sibling = element.nextElementSibling;
- if (!selector) return sibling;
- while (sibling) {
- if (sibling.matches(selector)) return sibling;
- sibling = sibling.nextElementSibling;
- }
- return '';
-}
-
/**
* Generates a unique key for dismissing items.
- * @param {string} string - The string to be prepared for dismissal (without special chars).
- * @returns {string} - The truncated string with a maximum of 256 characters.
+ * @param {string} string The string to be prepared for dismissal (without special chars).
+ * @returns {string} The truncated string with a maximum of 256 characters.
*/
function prepareDismissal(string) {
return String(string).replace(/([^0-9a-zA-Z])/g, '').substring(0, 256);
@@ -829,8 +750,8 @@ function prepareDismissal(string) {
/**
* Generates a selector path for the given DOM element.
- * @param {Element} element - The DOM element for which to generate the selector path.
- * @returns {string} - The selector path as a string.
+ * @param {Element} element The DOM element for which to generate the selector path.
+ * @returns {string} The selector path as a string.
* @link https://www.geeksforgeeks.org/how-to-create-a-function-generateselector-to-generate-css-selector-path-of-a-dom-element/
* @link https://dev.to/aniket_chauhan/generate-a-css-selector-path-of-a-dom-element-4aim
*/
@@ -865,7 +786,7 @@ function generateSelectorPath(element) {
/**
* Traps focus within an element by looping focus back to the beginning or end
* when the Tab key is pressed.
- * @param {Element} element - The DOM element to trap focus within.
+ * @param {Element} element The DOM element to trap focus within.
* @author Hidde de Vries
* @link https://hidde.blog/using-javascript-to-trap-focus-in-an-element/
*/
@@ -911,11 +832,12 @@ function removeAlert() {
/**
* Creates an alert in the Sa11y control panel with the given alert message and error preview.
- * @param {string} alertMessage - The alert message to be displayed.
- * @param {string} errorPreview - The error preview to be displayed (optional).
+ * @param {string} alertMessage The alert message.
+ * @param {string} errorPreview The issue's tooltip message (optional).
+ * @param {string} extendedPreview The issue's HTML or escaped HTML to be previewed (optional).
* @returns {void}
*/
-function createAlert(alertMessage, errorPreview) {
+function createAlert(alertMessage, errorPreview, extendedPreview) {
// Clear alert first before creating new one.
removeAlert();
@@ -929,29 +851,45 @@ function createAlert(alertMessage, errorPreview) {
alert.classList.add('active');
alertText.innerHTML = alertMessage;
+
+ // If the issue's element is being previewed.
+ const elementPreview = (extendedPreview)
+ ? `${extendedPreview}` : '';
+
+ // Alert message or tooltip's message.
if (errorPreview) {
alertPreview.classList.add('panel-alert-preview');
- alertPreview.innerHTML = errorPreview;
+ alertPreview.innerHTML = `${elementPreview} `;
}
+
+ // A little time before setting focus on the close button.
setTimeout(() => {
alertClose.focus();
}, 300);
// Closing alert sets focus back to Skip to Issue toggle.
- alertClose.addEventListener('click', () => {
+ function closeAlert() {
removeAlert();
- if (skipButton.hasAttribute('disabled')) {
- Sa11yPanel.getElementById('toggle').focus();
- } else {
- skipButton.focus();
+ const focusTarget = skipButton.hasAttribute('disabled')
+ ? Sa11yPanel.getElementById('toggle')
+ : skipButton;
+ focusTarget.focus();
+ }
+ alertClose.addEventListener('click', closeAlert);
+
+ // Escape key to close alert.
+ alert.onkeydown = (e) => {
+ const evt = e || window.event;
+ if (evt.key === 'Escape' && alert.classList.contains('active')) {
+ closeAlert();
}
- });
+ };
}
/**
* Finds all data-attributes specified in array, and removes them from the document.
- * @param {Array} attributes - The array of data-attributes to be reset.
- * @param {string} root - The root element to search for elements (optional, defaults to 'document').
+ * @param {Array} attributes The array of data-attributes to be reset.
+ * @param {string} root The root element to search for elements (optional, defaults to 'document').
* @returns {void}
*/
function resetAttributes(attributes, root) {
@@ -968,7 +906,7 @@ function resetAttributes(attributes, root) {
/**
* Removes the specified elements from the document.
- * @param {string} root - The root element to search for elements (optional, defaults to 'document').
+ * @param {string} root The root element to search for elements (optional, defaults to 'document').
* @returns {void}
*/
function remove(elements, root) {
@@ -983,8 +921,8 @@ function remove(elements, root) {
/**
* Checks if a scrollable area within a container element is scrollable or not, and applies appropriate CSS classes and attributes. Make sure to add aria-label manually.
- * @param {Element} scrollArea - The scrollable area element to check.
- * @param {Element} container - The container element that wraps the scrollable area.
+ * @param {Element} scrollArea The scrollable area element to check.
+ * @param {Element} container The container element that wraps the scrollable area.
*/
function isScrollable(scrollArea, container) {
if (scrollArea.scrollHeight > container.clientHeight) {
@@ -995,6 +933,46 @@ function isScrollable(scrollArea, container) {
}
}
+/**
+ * Generate an HTML preview for an issue if it's an image, iframe, audio or video element. Otherwise, return escaped HTML within tags. Used for Skip to Issue panel alerts and HTML page export.
+ * @param {Object} issueObject The issue object.
+ * @returns {html} Returns HTML.
+ */
+function generateElementPreview(issueObject) {
+ const issueElement = issueObject.element;
+ const htmlPath = `${escapeHTML(issueObject.htmlPath)}
`;
+
+ const tag = {
+ IMG: (element) => {
+ const anchor = element.closest('a[href]');
+ const imgSrc = element.src;
+ const alt = element.alt ? ` alt="${element.alt}"` : ' alt';
+ if (imgSrc) {
+ return anchor
+ ? `
`
+ : `
`;
+ }
+ return htmlPath;
+ },
+ IFRAME: (element) => {
+ const iframeSrc = element.src;
+ const titleAttr = element.title ? ` title="${element.title}"` : '';
+ const ariaLabelAttr = element.getAttribute('aria-label') ? ` aria-label="${element.getAttribute('aria-label')}"` : '';
+ if (iframeSrc) {
+ const iframeTitle = titleAttr || ariaLabelAttr;
+ return ``;
+ }
+ return htmlPath;
+ },
+ AUDIO: () => issueObject.htmlPath,
+ VIDEO: () => issueObject.htmlPath,
+ };
+
+ const tagHandler = tag[issueElement.tagName];
+ const elementPreview = tagHandler ? tagHandler(issueElement) : htmlPath;
+ return elementPreview;
+}
+
const Elements = (function myElements() {
const Found = {};
function initializeElements(linksToFlag) {
@@ -1007,7 +985,7 @@ const Elements = (function myElements() {
Found.Headings = find(
'h1, h2, h3, h4, h5, h6, [role="heading"][aria-level]',
- 'root',
+ 'document',
Constants.Exclusions.Headings,
);
@@ -1112,16 +1090,16 @@ const Elements = (function myElements() {
) : [];
// iFrames
- Found.Iframes = find(
- 'iframe, audio, video',
+ Found.iframes = find(
+ 'iframe:not(hidden), audio, video',
'root',
Constants.Exclusions.Container,
);
- Found.Videos = Found.Iframes.filter(($el) => $el.matches(Constants.EmbeddedContent.Video));
- Found.Audio = Found.Iframes.filter(($el) => $el.matches(Constants.EmbeddedContent.Audio));
- Found.Visualizations = Found.Iframes.filter(($el) => $el.matches(Constants.EmbeddedContent.Visualization));
- Found.EmbeddedContent = Found.Iframes.filter(($el) => !$el.matches(Constants.EmbeddedContent.All));
+ Found.Videos = Found.iframes.filter(($el) => $el.matches(Constants.EmbeddedContent.Video));
+ Found.Audio = Found.iframes.filter(($el) => $el.matches(Constants.EmbeddedContent.Audio));
+ Found.Visualizations = Found.iframes.filter(($el) => $el.matches(Constants.EmbeddedContent.Visualization));
+ Found.EmbeddedContent = Found.iframes.filter(($el) => !$el.matches(Constants.EmbeddedContent.All));
}
/* ***************** */
@@ -1149,7 +1127,7 @@ const Elements = (function myElements() {
function detectPageChanges(detectSPArouting, checkAll, resetAll) {
// Feature to detect page changes (e.g. SPAs).
if (detectSPArouting === true) {
- let url = Constants.Global.currentPage;
+ let url = window.location.pathname;
const checkURL = debounce$2(async () => {
if (url !== window.location.pathname) {
@@ -1173,24 +1151,25 @@ function detectPageChanges(detectSPArouting, checkAll, resetAll) {
/* ************************************************************ */
/* Update results array before painting annotations to page. */
/* ************************************************************ */
-function dismissAnnotationsLogic(results, dismissTooltip) {
+function dismissLogic(results, dismissTooltip) {
// Get dismissed items and re-parse back into object.
let dismissedIssues = store.getItem('sa11y-dismissed');
dismissedIssues = dismissedIssues ? JSON.parse(dismissedIssues) : [];
// Return element from results array that matches dismiss key and dismiss url. Then filter through matched objects.
const findKey = dismissedIssues.map((e) => {
- const found = results.find((f) => (e.key.includes(f.dismiss) && e.href === Constants.Global.currentPage));
+ const found = results.find((f) => (e.key.includes(f.dismiss) && e.href === window.location.pathname));
if (found === undefined) return '';
return found;
});
- // Number of dismissed items found on the page.
- const dismissCount = results.filter((issue) => findKey.find((e) => e.dismiss === issue.dismiss)).length;
-
// Update results array (exclude dismissed items).
const updatedResults = results.filter((issue) => !findKey.find((e) => e.dismiss === issue.dismiss));
+ // Array containing all dismissed results for page.
+ const dismissedResults = results.filter((issue) => findKey.find((e) => e.dismiss === issue.dismiss));
+ const dismissCount = dismissedResults.length;
+
// Show dismiss button in panel.
if (dismissCount >= 1) {
Constants.Panel.dismissButton.classList.add('active');
@@ -1200,88 +1179,106 @@ function dismissAnnotationsLogic(results, dismissTooltip) {
Constants.Panel.dismissButton.classList.remove('active');
}
- return { dismissedIssues, updatedResults, dismissCount };
+ return { dismissedIssues, updatedResults, dismissCount, dismissedResults };
}
/* ************************************************************ */
/* Logic for tooltip "Dismiss" buttons & panel restore button */
/* ************************************************************ */
-function dismissAnnotationsButtons(
- dismissAnnotationsOption,
- results,
- dismissed,
- checkAll,
- resetAll,
-) {
- if (dismissAnnotationsOption === true) {
- // 1) Hide annotation upon click on dismiss button on warning. Dismiss button exists in both tooltip and control panel. Need to add event listeners to both components.
- const tooltips = document.querySelector('sa11y-tooltips').shadowRoot;
- const controlPanel = document.querySelector('sa11y-control-panel').shadowRoot;
- const dismissTooltipContainer = document.querySelector('sa11y-dismiss-tooltip');
-
- const handleClick = async (e) => {
- // Get dismissed array from localStorage.
- let savedDismissKeys = JSON.parse(store.getItem('sa11y-dismissed'));
- const element = e.target;
- dismissTooltipContainer.hidden = false;
-
- // Make sure event listener is attached to dismiss button.
- if (element.tagName === 'BUTTON' && element.hasAttribute('data-sa11y-dismiss')) {
- // Find corresponding issue within main issues object and mark as dismissed.
- const dismissItem = parseInt(element.getAttribute('data-sa11y-dismiss'), 10);
- const object = results.find(($el) => $el.id === dismissItem);
-
- if (savedDismissKeys === null) {
- // Give a one time reminder that dismissed items are temporary.
- setTimeout(() => createAlert(Lang._('DISMISS_REMINDER')), 0);
- // If no existing entries, create empty array to iterate on.
- savedDismissKeys = [];
- }
-
- // Dismissal object.
- const dismissalDetails = {
- key: object.dismiss,
- href: Constants.Global.currentPage,
- };
-
- const item = find(`[data-sa11y-annotation='${object.id}']`);
- const latestDismissed = item[0].getAttribute('data-sa11y-position');
- store.setItem('sa11y-latest-dismissed', latestDismissed);
-
- // Update dismiss array.
- store.setItem('sa11y-dismiss-item', JSON.stringify(dismissalDetails));
- savedDismissKeys.push(dismissalDetails);
- store.setItem('sa11y-dismissed', JSON.stringify(savedDismissKeys));
- store.removeItem('sa11y-dismiss-item'); // Remove temporary storage item.
-
- // Remove tooltip.
- if (element.closest('[data-tippy-root]') !== null) {
- element.closest('[data-tippy-root]').remove();
- }
-
- // Async scan upon dismiss.
- resetAll(false);
- await checkAll();
+let restoreDismissedHandler;
+let dismissHandler;
+
+/* 1. Hide annotation upon click of dismiss button. */
+const dismissIssueButton = async (e, results, checkAll, resetAll) => {
+ // Get dismissed array from localStorage.
+ let savedDismissKeys = JSON.parse(store.getItem('sa11y-dismissed'));
+ const element = e.target;
+ const dismissContainer = document.querySelector('sa11y-dismiss-tooltip');
+ dismissContainer.hidden = false;
+
+ // Make sure event listener is attached to dismiss button.
+ if (element.tagName === 'BUTTON' && element.hasAttribute('data-sa11y-dismiss')) {
+ // Find corresponding issue within main results object and mark as dismissed.
+ const dismissItem = parseInt(element.getAttribute('data-sa11y-dismiss'), 10);
+ const object = results.find(($el) => $el.id === dismissItem);
+
+ // Give a one time reminder that dismissed items are temporary.
+ if (savedDismissKeys === null) {
+ setTimeout(() => createAlert(Lang._('DISMISS_REMINDER')), 0);
+ // If no existing entries, create empty array to iterate on.
+ savedDismissKeys = [];
+ }
+
+ // Update dismiss array.
+ if (object.dismiss) {
+ // Dismissal object.
+ const dismissalDetails = {
+ key: object.dismiss,
+ href: window.location.pathname,
+ };
- // Reset event listeners.
- tooltips.removeEventListener('click', handleClick);
- controlPanel.removeEventListener('click', handleClick);
+ // Get the position of the last annotation that was dismissed.
+ const item = find(`[data-sa11y-annotation='${object.id}']`);
+ const latestDismissed = item[0]
+ ? item[0].getAttribute('data-sa11y-position') : 0;
+ store.setItem('sa11y-latest-dismissed', latestDismissed);
+
+ // Add dismissed item to local storage object.
+ store.setItem('sa11y-dismiss-item', JSON.stringify(dismissalDetails));
+ savedDismissKeys.push(dismissalDetails);
+ store.setItem('sa11y-dismissed', JSON.stringify(savedDismissKeys));
+ store.removeItem('sa11y-dismiss-item'); // Remove temporary storage item.
+
+ // Remove tooltip.
+ if (element.closest('[data-tippy-root]') !== null) {
+ element.closest('[data-tippy-root]').remove();
}
- };
- tooltips.addEventListener('click', handleClick);
- controlPanel.addEventListener('click', handleClick);
-
- // 2) Restore hidden alerts on the CURRENT page only.
- Constants.Panel.dismissButton.onclick = async () => {
- dismissTooltipContainer.hidden = true; // Prevent flash of tooltip.
- const filtered = dismissed.filter((item) => item.href !== Constants.Global.currentPage);
- store.setItem('sa11y-dismissed', JSON.stringify(filtered));
- Constants.Panel.dismissButton.classList.remove('active');
+ // Async scan upon dismiss.
resetAll(false);
await checkAll();
+ }
+ }
+};
+
+/* 2. Restore hidden alerts on the CURRENT page only. */
+const restoreDismissButton = async (dismissed, checkAll, resetAll) => {
+ const dismissContainer = document.querySelector('sa11y-dismiss-tooltip');
+ dismissContainer.hidden = true; // Prevent flash of tooltip.
+ const filtered = dismissed.filter((item) => item.href !== window.location.pathname);
+ store.setItem('sa11y-dismissed', JSON.stringify(filtered));
+ Constants.Panel.dismissButton.classList.remove('active');
+
+ // Reset & check.
+ resetAll(false);
+ await checkAll();
+};
+
+// Add event listeners.
+function dismissButtons(results, dismissed, checkAll, resetAll) {
+ if (Constants.Global.dismissAnnotations) {
+ // Dismiss buttons.
+ dismissHandler = (e) => {
+ dismissIssueButton(e, results, checkAll, resetAll);
};
+
+ // Dismiss button exists in both tooltip and control panel.
+ const tooltips = document.querySelector('sa11y-tooltips').shadowRoot;
+ tooltips.addEventListener('click', dismissHandler);
+ Constants.Panel.panel.addEventListener('click', dismissHandler);
}
+
+ // Initialize restore alerts button regardless if plugin enabled or not.
+ restoreDismissedHandler = () => {
+ restoreDismissButton(dismissed, checkAll, resetAll);
+ };
+ Constants.Panel.dismissButton?.addEventListener('click', restoreDismissedHandler);
+}
+
+// Imported by Reset function.
+function removeDismissListeners() {
+ Constants.Panel.panel?.removeEventListener('click', dismissHandler);
+ Constants.Panel.dismissButton?.removeEventListener('click', restoreDismissedHandler);
}
/* ************************************************************** */
@@ -1289,7 +1286,7 @@ function dismissAnnotationsButtons(
/* Source: https://daltonlens.org/opensource-cvd-simulation/ */
/* ************************************************************** */
function addColourFilters() {
- if (Constants.Global.colourFilterPlugin === true) {
+ if (Constants.Global.colourFilterPlugin) {
if (Constants.Global.headless === false) {
const svg = document.createElement('div');
svg.id = 'sa11y-colour-filters';
@@ -1341,9 +1338,261 @@ function addColourFilters() {
}
}
+// Reset colour filters
+function resetColourFilters() {
+ if (Constants.Global.colourFilterPlugin) {
+ Constants.Panel.colourFilterSelect.value = 0;
+ Constants.Panel.colourPanel.classList.remove('active');
+ Constants.Panel.colourFilterSelect.classList.remove('active');
+ Constants.Panel.content.hidden = false;
+ }
+}
+
+var exportResultsStyles = ":root{--font-primary:system-ui,\"Segoe UI\",roboto,helvetica,arial,sans-serif;--font-secondary:Consolas,monaco,\"Ubuntu Mono\",\"Liberation Mono\",\"Courier New\",Courier,monospace;--body-text:#333;--bg-primary:#fff;--bg-secondary:#f6f8fa;--bg-tertiary:#d7d7d7;--link-primary:#004c9b;--red-text:#d30017}@media (prefers-color-scheme:dark){:root{--body-text:#dde8ff;--bg-primary:#0a2051;--bg-secondary:#072c7c;--bg-tertiary:#0041c9;--link-primary:#64b2ff;--red-text:#fe5b5f}}*{margin:0;padding:0}article,aside,nav,ol,p,pre,section,ul{margin-bottom:1rem}body{background:var(--bg-primary);font-family:var(--font-primary);font-size:1rem;line-height:1.5;margin:0 auto;max-width:70ch;overflow-wrap:break-word;overflow-x:hidden;padding:2rem;word-break:break-word}body,h1,h2,h3{color:var(--body-text)}h1,h2,h3{line-height:1;margin-bottom:8px;padding-bottom:2px;padding-top:.875rem}h1{font-size:2.25rem}h2{font-size:1.85rem}h3{font-size:1.55rem}a{color:var(--link-primary)}a:focus,a:hover{text-decoration:none}footer,header{background:var(--bg-secondary);padding:2rem calc(50vw - 50%)}header{border-bottom:1px solid var(--bg-tertiary);margin:-2rem calc(-50vw + 50%) 2rem}footer{border-top:1px solid var(--bg-tertiary);margin:3rem calc(-50vw + 50%) -2rem;text-align:center}header>:first-child{margin-top:0;padding-top:0}header>:last-child{margin-bottom:0}code,kbd,pre,samp{background:var(--bg-secondary);border:1px solid var(--bg-tertiary);border-radius:4px;font-family:var(--font-secondary);font-size:.9rem;padding:3px 6px}pre{display:block;max-width:100%;overflow:auto;padding:1rem 1.4rem}code pre,pre code{background:inherit;border:0;color:inherit;font-size:inherit;margin:0;padding:0}code pre{display:inline}details{background:var(--bg-primary);border:2px solid var(--link-primary);border-radius:4px;padding:.6rem 1rem}summary{cursor:pointer;font-weight:700}details[open]{padding-bottom:.75rem}details[open] summary{margin-bottom:6px}details[open]>:last-child{margin-bottom:0}.two-columns{display:flex}.column{flex:1;margin-inline-end:20px}.count{max-width:220px}.column dl{width:100%}dl{padding-top:10px}dt{font-weight:700}dd{padding-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}ul li{margin-bottom:.5rem}ol,ul{padding-left:2rem}li li:has(pre,img,iframe,video,audio){list-style:none;margin-top:1rem}ol li:not(li li){margin-bottom:3rem}iframe,img{max-width:50%}audio,iframe,img,video{border:0;display:block}.red-text{color:var(--red-text)}.visually-hidden{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);display:block;height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}";
+
+/* ************************************************************ */
+/* Export results as CSV or HTML via Blob API. */
+/* ************************************************************ */
+
+// Generate meta date for both HTML and CSV templates.
+function generateMetaData() {
+ const today = new Date();
+ const day = String(today.getDate()).padStart(2, '0');
+ const month = String(today.getMonth() + 1).padStart(2, '0');
+ const year = today.getFullYear();
+ const date = new Date().toLocaleString();
+ const numericDate = `${month}-${day}-${year}`;
+
+ // Page title & URL
+ const title = document.querySelector('head title');
+ const titleCheck = !title || title.textContent.trim().length === 0;
+ const metaTitle = !titleCheck ? title.textContent : '';
+ const pageURL = window.location.href;
+
+ return { date, numericDate, titleCheck, metaTitle, pageURL };
+}
+
+// Generate HTML template for download.
+function generateHTMLTemplate(results, dismissResults) {
+ const errors = results.filter((issue) => issue.type === 'error');
+ const warnings = results.filter((issue) => issue.type === 'warning');
+ const count = { error: errors.length, warning: warnings.length, dismiss: dismissResults.length };
+
+ function generateList(issues, type) {
+ const types = {
+ error: Lang._('ERRORS'),
+ warning: Lang._('WARNINGS'),
+ dismissed: Lang._('DISMISSED'),
+ };
+ const heading = types[type];
+ const hasIssues = issues.length > 0;
+
+ if (!hasIssues) return '';
+
+ let list = `${heading}
`;
+ let listOpeningTag = '';
+ let listClosingTag = '
';
+
+ if (type === 'dismissed') {
+ listOpeningTag = `${Lang.sprintf('PANEL_DISMISS_BUTTON', count.dismiss)}
`;
+ listClosingTag = '
';
+ }
+
+ // Opening tag
+ list += listOpeningTag;
+
+ issues.forEach((issue) => {
+ let elementPreview = '';
+ if (issue.element) {
+ const allowedTags = ['IMG', 'IFRAME', 'AUDIO', 'VIDEO'];
+ if (allowedTags.includes(issue.element.tagName)) {
+ elementPreview = `
+ -
+ ${Lang._('PREVIEW')}:
+ ${generateElementPreview(issue)}
+
+ -
+ ${Lang._('ELEMENT')}:
+
${escapeHTML(issue.htmlPath)}
+ `;
+ } else {
+ elementPreview = `
+ -
+ ${Lang._('ELEMENT')}:
+
${escapeHTML(issue.htmlPath)}
+ `;
+ }
+ }
+ const cssPath = issue.cssPath
+ ? `-
+ ${Lang._('PATH')}:
+
${issue.cssPath}
+ ` : '';
+
+ list += `-
+
${issue.content.replace('
', ' | ')}
+ ${elementPreview}${cssPath}
+ `;
+ });
+
+ // Closing tag.
+ list += listClosingTag;
+ return list;
+ }
+
+ const errorsList = generateList(errors, 'error');
+ const warningList = generateList(warnings, 'warning');
+ const dismissedList = generateList(dismissResults, 'dismissed');
+
+ // Meta information.
+ const meta = generateMetaData();
+ const metaTitle = !meta.titleCheck
+ ? `- ${Lang._('PAGE_TITLE')}
- ${meta.metaTitle}
` : '';
+ const metaErrors = count.error !== 0
+ ? `- ${Lang._('ERRORS')}
- ${count.error}
` : '';
+ const metaWarnings = count.warning !== 0
+ ? `- ${Lang._('WARNINGS')}
- ${count.warning}
` : '';
+ const metaDismissed = count.dismiss !== 0
+ ? `- ${Lang._('DISMISSED')}
- ${count.dismiss}
` : '';
+ const tool = 'Sa11y';
+
+ const htmlTemplate = `
+
+
+
+
+
+ ${Lang._('RESULTS')}: ${meta.metaTitle}
+
+
+
+
+ ${Lang._('RESULTS')}
+
+
+
+ ${metaErrors}
+ ${metaWarnings}
+ ${metaDismissed}
+
+
+
+ ${errorsList}
+ ${warningList}
+ ${dismissedList}
+
+
+
+ `;
+ return htmlTemplate;
+}
+
+/* HTML Blob */
+function downloadHTMLTemplate(results, dismissResults) {
+ const htmlContent = generateHTMLTemplate(results, dismissResults);
+ const meta = generateMetaData();
+
+ // Create blob
+ const blob = new Blob([htmlContent], { type: 'text/html' });
+ const link = document.createElement('a');
+ const title = !meta.titleCheck ? `_${meta.metaTitle.trim().replace(/ /g, '')}` : '';
+ link.href = window.URL.createObjectURL(blob);
+ link.download = `Sa11y_${meta.numericDate + title}.html`;
+ document.body.appendChild(link);
+ link.click();
+
+ // Remove blob
+ setTimeout(() => {
+ document.body.removeChild(link);
+ window.URL.revokeObjectURL(link.href);
+ }, 100);
+}
+
+/* CSV Blob */
+function downloadCSVTemplate(results) {
+ const meta = generateMetaData();
+ // CSV header row
+ const filteredObjects = results.filter((issue) => issue.type === 'warning' || issue.type === 'error')
+ .map((issue) => {
+ const { type, content, htmlPath, cssPath } = issue;
+
+ // Make issue messages more readable in CSV format.
+ const prepContent = content
+ .replaceAll(/]*>.*?<\/span>/gi, '')
+ .replaceAll('-
` : '';
- const formLabelsPlugin = (Constants.Global.formLabelsPlugin === true) ? `
+ const formLabelsPlugin = Constants.Global.formLabelsPlugin ? `
-
` : '';
- const linksAdvancedPlugin = (Constants.Global.linksAdvancedPlugin === true) ? `
+ const linksAdvancedPlugin = Constants.Global.linksAdvancedPlugin ? `
-
` : '';
- const readabilityPlugin = (Constants.Readability.Plugin === true) ? `
+ const readabilityPlugin = Constants.Readability.Plugin ? `
-
` : '';
- const colourFilterPlugin = (Constants.Global.colourFilterPlugin === true) ? `
+ const colourFilterPlugin = Constants.Global.colourFilterPlugin ? `
-
@@ -1522,12 +1763,23 @@ class ControlPanel extends HTMLElement {
` : '';
- const colourFilterPanel = (Constants.Global.colourFilterPlugin === true) ? `
+ const colourFilterPanel = Constants.Global.colourFilterPlugin ? `
${Lang._('COLOUR_FILTER_MESSAGE')}
` : '';
+ const exportResultsPlugin = Constants.Global.exportResultsPlugin ? `
+ -
+ ${Lang._('EXPORT_RESULTS')}
+
+
+
` : '';
+
/* MAIN TOGGLE */
const mainToggle = `
', ' | ');
+ const stripHTML = stripHTMLtags(String(prepContent));
+ const encoded = decodeHTML(stripHTML);
+
+ // Column headers.
+ const columns = {
+ Title: `"${meta.metaTitle}"`,
+ URL: `"${meta.pageURL}"`,
+ Type: `"${String(type)}"`,
+ Issue: `"${encoded}"`,
+ Element: `"${htmlPath}"`,
+ };
+ if (cssPath) columns.Path = `"${cssPath}"`;
+ return columns;
+ });
+
+ // CSV content
+ const headers = Object.keys(filteredObjects[0]);
+ const csvContent = `${headers.join(',')}\n${filteredObjects.map((obj) => headers.map((header) => obj[header]).join(',')).join('\n')}`;
+
+ // Create blob
+ const blob = new Blob([csvContent], { type: 'text/csv' });
+ const url = window.URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.href = window.URL.createObjectURL(blob);
+ const fileNameTitle = !meta.titleCheck ? `_${meta.metaTitle.trim().replace(/ /g, '')}` : '';
+ link.setAttribute('download', `Sa11y_${meta.numericDate + fileNameTitle}.csv`);
+ document.body.appendChild(link);
+ link.click();
+
+ // Remove blob
+ setTimeout(() => {
+ document.body.removeChild(link);
+ window.URL.revokeObjectURL(link.href);
+ }, 100);
+}
+
+// Attach event listeners.
+let exportHTMLHandler;
+let exportCSVHandler;
+function exportResults(results, dismissResults) {
+ if (Constants.Global.exportResultsPlugin) {
+ exportHTMLHandler = () => {
+ downloadHTMLTemplate(results, dismissResults);
+ };
+ exportCSVHandler = () => {
+ downloadCSVTemplate(results);
+ };
+
+ Constants.Panel.exportHTML.addEventListener('click', exportHTMLHandler);
+ Constants.Panel.exportCSV.addEventListener('click', exportCSVHandler);
+ }
+}
+
+// Imported by Reset function.
+function removeExportListeners() {
+ if (Constants.Global.exportResultsPlugin) {
+ Constants.Panel.exportHTML.removeEventListener('click', exportHTMLHandler);
+ Constants.Panel.exportCSV.removeEventListener('click', exportCSVHandler);
+ }
+}
+
var styles = ":host{background:var(--sa11y-panel-bg);border-top:5px solid var(--sa11y-panel-bg-splitter);bottom:0;display:block;height:-moz-fit-content;height:fit-content;position:fixed;width:100%;z-index:999999}*{-webkit-font-smoothing:auto!important;color:var(--sa11y-panel-primary);font-family:var(--sa11y-font-face)!important;font-size:var(--sa11y-normal-text);line-height:22px!important}#dialog{margin:20px auto;max-width:900px;padding:20px}h2{font-size:var(--sa11y-large-text);margin-top:0}a{color:var(--sa11y-hyperlink);cursor:pointer;text-decoration:underline}a:focus,a:hover{text-decoration:none}p{margin-top:0}.error{background:var(--sa11y-error);border:2px dashed #f08080;color:var(--sa11y-error-text);margin-bottom:0;padding:5px}";
-var sharedStyles = ".visually-hidden{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);display:block;height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}[hidden]{display:none!important}.header-text,.header-text-inline,h2{color:var(--sa11y-panel-primary);display:block;font-size:var(--sa11y-large-text);font-weight:600;margin-bottom:3px}.header-text-inline{display:inline-block!important}.kbd,code,kbd{background-color:var(--sa11y-panel-badge);border-radius:3.2px;color:var(--sa11y-panel-primary);padding:1.6px 4.8px}code{font-family:monospace}.bold{font-weight:600}.red-text{color:var(--sa11y-red-text)}.red-text,.yellow-text{font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text)}.yellow-text{color:var(--sa11y-yellow-text)}.close-btn{background:none;border:1px solid var(--sa11y-button-outline);border-radius:50%;color:var(--sa11y-panel-primary);cursor:pointer;float:var(--sa11y-float-rtl);font-size:var(--sa11y-normal-text);font-weight:400;height:32px;margin:0;position:relative;transition:all .2s ease-in-out;width:32px}.close-btn:focus,.close-btn:hover{background-color:var(--sa11y-shortcut-hover)}.close-btn:after{background:var(--sa11y-setting-switch-bg-off);bottom:-7px;content:\"\";left:-7px;-webkit-mask:var(--sa11y-close-btn-svg) center no-repeat;mask:var(--sa11y-close-btn-svg) center no-repeat;position:absolute;right:-7px;top:-7px}@media screen and (forced-colors:active){.close-btn:after{filter:invert(1)}}#container [tabindex=\"-1\"]:focus,#container [tabindex=\"0\"]:focus,#container a:focus,#container button:not(#settings-toggle):not(#outline-toggle):not(.switch):focus,#container select:focus{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}#container #outline-toggle:focus,#container #settings-toggle:focus,#container .switch:focus{box-shadow:inset 0 0 0 4px var(--sa11y-focus-color);outline:0}.tippy-box[data-theme~=sa11y-theme] [tabindex=\"-1\"]:focus,.tippy-box[data-theme~=sa11y-theme] a:focus,.tippy-box[data-theme~=sa11y-theme] button:active,.tippy-box[data-theme~=sa11y-theme] button:focus{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}#container #outline-toggle:focus:not(:focus-visible),#container #settings-toggle:focus:not(:focus-visible),#container [tabindex=\"-1\"]:focus:not(:focus-visible),#container [tabindex=\"0\"]:focus:not(:focus-visible),#container button:focus:not(:focus-visible),#container select:focus:not(:focus-visible){box-shadow:none;outline:0}.tippy-box[data-theme~=sa11y-theme] [tabindex=\"-1\"]:focus:not(:focus-visible),.tippy-box[data-theme~=sa11y-theme] a:focus:not(:focus-visible),.tippy-box[data-theme~=sa11y-theme] button:focus:not(:focus-visible){box-shadow:none;outline:0}#container [tabindex=\"-1\"]:focus-visible,#container [tabindex=\"0\"]:focus-visible,#container a:focus-visible,#container button:not(#settings-toggle):not(#outline-toggle):not(.switch):focus-visible,#container select:focus-visible{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}#container #outline-toggle:focus-visible,#container #settings-toggle:focus-visible,#container .switch:focus-visible{box-shadow:inset 0 0 0 4px var(--sa11y-focus-color);outline:0}.tippy-box[data-theme~=sa11y-theme] [tabindex=\"-1\"]:focus-visible,.tippy-box[data-theme~=sa11y-theme] a:focus-visible,.tippy-box[data-theme~=sa11y-theme] button:focus-visible{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}@media screen and (forced-colors:active){#outline-toggle:focus,#settings-toggle:focus{border:3px solid transparent}#container [tabindex=\"-1\"]:focus,#container [tabindex=\"0\"]:focus,#container a:focus,#container button:focus,#container select:focus,.close-btn:focus,.tippy-box[data-theme~=sa11y-theme] [tabindex=\"-1\"]:focus,.tippy-box[data-theme~=sa11y-theme] a:focus,.tippy-box[data-theme~=sa11y-theme] button:focus{outline:3px solid transparent!important}}";
+var sharedStyles = ".visually-hidden{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);display:block;height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}[hidden]{display:none!important}.header-text,.header-text-inline,h2{color:var(--sa11y-panel-primary);display:block;font-size:var(--sa11y-large-text);font-weight:600;margin-bottom:3px}.header-text-inline{display:inline-block!important}code{font-family:monospace!important}.kbd,code,kbd{background-color:var(--sa11y-panel-badge);border-radius:3.2px;color:var(--sa11y-panel-primary);padding:1.6px 4.8px}.bold{font-weight:600}.red-text{color:var(--sa11y-red-text)}.red-text,.yellow-text{font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text)}.yellow-text{color:var(--sa11y-yellow-text)}.close-btn{background:var(--sa11y-panel-bg-secondary);border:2px solid var(--sa11y-button-outline);border-radius:50%;color:var(--sa11y-panel-primary);cursor:pointer;float:var(--sa11y-float-rtl);font-size:var(--sa11y-normal-text);font-weight:400;height:32px;margin:0;position:relative;transition:all .2s ease-in-out;width:32px}.close-btn:focus,.close-btn:hover{background-color:var(--sa11y-shortcut-hover)}.close-btn:after{background:var(--sa11y-setting-switch-bg-off);bottom:-7px;content:\"\";left:-7px;-webkit-mask:var(--sa11y-close-btn-svg) center no-repeat;mask:var(--sa11y-close-btn-svg) center no-repeat;position:absolute;right:-7px;top:-7px}@media screen and (forced-colors:active){.close-btn:after{filter:invert(1)}}#container [tabindex=\"-1\"]:focus,#container [tabindex=\"0\"]:focus,#container a:focus,#container button:not(#settings-toggle):not(#outline-toggle):not(.switch):focus,#container select:focus{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}#container #outline-toggle:focus,#container #settings-toggle:focus,#container .switch:focus{box-shadow:inset 0 0 0 4px var(--sa11y-focus-color);outline:0}.tippy-box[data-theme~=sa11y-theme] [tabindex=\"-1\"]:focus,.tippy-box[data-theme~=sa11y-theme] a:focus,.tippy-box[data-theme~=sa11y-theme] button:active,.tippy-box[data-theme~=sa11y-theme] button:focus{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}#container #outline-toggle:focus:not(:focus-visible),#container #settings-toggle:focus:not(:focus-visible),#container [tabindex=\"-1\"]:focus:not(:focus-visible),#container [tabindex=\"0\"]:focus:not(:focus-visible),#container button:focus:not(:focus-visible),#container select:focus:not(:focus-visible){box-shadow:none;outline:0}.tippy-box[data-theme~=sa11y-theme] [tabindex=\"-1\"]:focus:not(:focus-visible),.tippy-box[data-theme~=sa11y-theme] a:focus:not(:focus-visible),.tippy-box[data-theme~=sa11y-theme] button:focus:not(:focus-visible){box-shadow:none;outline:0}#container [tabindex=\"-1\"]:focus-visible,#container [tabindex=\"0\"]:focus-visible,#container a:focus-visible,#container button:not(#settings-toggle):not(#outline-toggle):not(.switch):focus-visible,#container select:focus-visible{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}#container #outline-toggle:focus-visible,#container #settings-toggle:focus-visible,#container .switch:focus-visible{box-shadow:inset 0 0 0 4px var(--sa11y-focus-color);outline:0}.tippy-box[data-theme~=sa11y-theme] [tabindex=\"-1\"]:focus-visible,.tippy-box[data-theme~=sa11y-theme] a:focus-visible,.tippy-box[data-theme~=sa11y-theme] button:focus-visible{box-shadow:0 0 0 5px var(--sa11y-focus-color);outline:0}@media screen and (forced-colors:active){#outline-toggle:focus,#settings-toggle:focus{border:3px solid transparent}#container [tabindex=\"-1\"]:focus,#container [tabindex=\"0\"]:focus,#container a:focus,#container button:focus,#container select:focus,.close-btn:focus,.tippy-box[data-theme~=sa11y-theme] [tabindex=\"-1\"]:focus,.tippy-box[data-theme~=sa11y-theme] a:focus,.tippy-box[data-theme~=sa11y-theme] button:focus{outline:3px solid transparent!important}}";
class ConsoleErrors extends HTMLElement {
constructor(error) {
@@ -1406,7 +1655,7 @@ function mainToggle(checkAll, resetAll) {
Constants.Panel.toggle.setAttribute('aria-expanded', 'false');
resetAll();
- if (Constants.Panel.notifCount.innerHTML.trim() === '') {
+ if (Constants.Panel.notifCount.innerHTML.trim().length === 0) {
Constants.Panel.notifBadge.style.display = 'none';
} else {
Constants.Panel.notifBadge.style.display = 'flex';
@@ -1428,25 +1677,17 @@ function mainToggle(checkAll, resetAll) {
Constants.Panel.panel.style.transform = '';
}
+ // Alt + A to enable accessibility checker.
document.onkeydown = (e) => {
const evt = e || window.event;
- if (evt.key === 'Escape' && Constants.Panel.panel.classList.contains('active')) {
- Constants.Panel.toggle.setAttribute('aria-expanded', 'false');
- Constants.Panel.toggle.classList.remove('on');
- Constants.Panel.toggle.click();
- resetAll();
- }
-
- // Alt + A to enable accessibility checker.
if (evt.altKey && evt.code === 'KeyA') {
Constants.Panel.toggle.click();
Constants.Panel.toggle.focus();
- evt.preventDefault();
}
};
}
-var panelStyles = "a,button,code,div,h1,h2,kbd,label,li,ol,p,span,strong,svg,ul{all:unset;box-sizing:border-box!important}:after,:before{all:unset}div{display:block}*{-webkit-font-smoothing:auto!important;font-family:var(--sa11y-font-face)!important;line-height:22px!important}label,li,ol,p,ul{font-size:var(--sa11y-normal-text);font-weight:400;letter-spacing:normal;text-align:start;word-break:normal}.sa11y-overflow{overflow:auto}#toggle{align-items:center;background:linear-gradient(0deg,#e040fb,#00bcd4);background-color:var(--sa11y-blue);background-size:150% 150%;border-radius:50%;bottom:15px;color:#fff;cursor:pointer;display:flex;height:55px;inset-inline-end:18px;justify-content:center;margin:0;overflow:visible;position:fixed;transition:all .2s ease-in-out;width:55px;z-index:2147483644}#toggle.left,#toggle.top-left{inset-inline-start:18px}#toggle.top-left,#toggle.top-right{bottom:unset;top:15px}@media screen and (forced-colors:active){#toggle{border:2px solid transparent}}#toggle svg{height:35px;width:35px}#toggle svg path{fill:var(--sa11y-panel-bg)}#toggle:focus,#toggle:hover{animation:sa11y-toggle-gradient 3s ease}#toggle:disabled:focus,#toggle:disabled:hover{animation:none}#toggle.on{background:linear-gradient(180deg,#e040fb,#00bcd4);background-color:var(--sa11y-blue)}#notification-badge{align-items:center;background-color:#eb0000;border:1px solid transparent;border-radius:50%;color:#fff;display:none;font-size:13px;font-weight:400;height:20px;justify-content:center;position:absolute;right:-3px;top:-3px;width:20px}#notification-badge.notification-badge-warning{background-color:var(--sa11y-warning-hover);border:1px solid var(--sa11y-warning);color:var(--sa11y-warning-text)}#panel{background:var(--sa11y-panel-bg);border-radius:4px;bottom:25px;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15);inset-inline-end:42px;opacity:0;overflow:visible;position:fixed;transform:scale(0);transform-origin:100% 100%;transition:transform .2s,opacity background .2s .2s;visibility:hidden;z-index:2147483643}#panel.left,#panel.top-left{inset-inline-start:42px}#panel.top-left,#panel.top-right{bottom:unset;top:50px}#panel.active{height:auto;opacity:1;transform:scale(1);transform-origin:bottom right;transition:transform .2s,opacity .2s;visibility:visible}@media screen and (forced-colors:active){#panel{border:2px solid transparent}}#panel.active.left,[dir=rtl] #panel.active{transform-origin:bottom left}#panel.active.top-left{transform-origin:top left}#panel.active.top-right{transform-origin:top right}#panel-alert{display:none;opacity:0}#panel-alert.active{display:block;opacity:1}#panel-alert-content{align-items:center;border-bottom:1px solid var(--sa11y-panel-bg-splitter);color:var(--sa11y-panel-primary);max-height:200px;overflow-y:auto;padding:15px 20px 15px 15px;position:relative}#panel-alert-preview .close-tooltip{display:none}#panel-alert-preview,#panel-alert-text{font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text);font-weight:400;line-height:22px}.panel-alert-preview{background:var(--sa11y-panel-bg-secondary);border:1px dashed var(--sa11y-panel-bg-splitter);border-radius:5px;margin-top:15px;padding:10px}button[data-sa11y-dismiss]{background:var(--sa11y-panel-bg);border:1px solid var(--sa11y-button-outline);border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;display:block;margin:10px 5px 5px 0;padding:4px 8px}button[data-sa11y-dismiss]:focus,button[data-sa11y-dismiss]:hover{background:var(--sa11y-shortcut-hover)}h2{display:block;font-size:var(--sa11y-large-text);margin-bottom:3px}h2,strong{font-weight:600}a:not(#outline-list a){border-bottom:0;color:var(--sa11y-hyperlink);cursor:pointer;text-decoration:underline}a:focus,a:hover{text-decoration:none!important}hr{background:var(--sa11y-panel-bg-splitter);border:none;height:1px;margin:10px 0;opacity:1;padding:0}#dismiss-button,#skip-button{-webkit-margin-end:8px;-webkit-margin-start:2px;background:var(--sa11y-panel-bg-secondary);border:1px solid var(--sa11y-button-outline);border-radius:50px;cursor:pointer;display:none;height:36px;margin-inline-end:8px;margin-inline-start:2px;overflow:visible;position:relative;text-align:center;transition:all .1s ease-in-out;width:36px}#dismiss-button.active,#skip-button.active{display:block}#dismiss-button:disabled,#skip-button:disabled{background:none;border:0;box-shadow:none;cursor:default}#dismiss-button:before,#skip-button:before{bottom:-5px;content:\"\";left:-5px;position:absolute;right:-5px;top:-5px}#dismiss-button:focus:not(:disabled),#dismiss-button:hover:not(:disabled),#skip-button:focus:not(:disabled),#skip-button:hover:not(:disabled){background-color:var(--sa11y-shortcut-hover)}#panel.left #dismiss-button,#panel.left #skip-button,#panel.top-left #dismiss-button,#panel.top-left #skip-button{-webkit-margin-start:8px;-webkit-margin-end:2px;margin-inline-end:2px;margin-inline-start:8px}.dismiss-icon{background:var(--sa11y-setting-switch-bg-off);display:inline-block;height:24px;margin-bottom:-4px;-webkit-mask:var(--sa11y-dismiss-icon) center no-repeat;mask:var(--sa11y-dismiss-icon) center no-repeat;width:24px}@media screen and (forced-colors:active){.dismiss-icon{filter:invert(1)}}#panel-content{align-items:center;color:var(--sa11y-panel-primary);display:flex;padding:6px}#panel-content.errors .panel-icon,#panel-content.good .panel-icon,#panel-content.warnings .panel-icon{height:26px;margin:0 auto;width:26px}#panel-content.errors .panel-icon{background:var(--sa11y-panel-error);margin-top:-2px;-webkit-mask:var(--sa11y-error-svg) center no-repeat;mask:var(--sa11y-error-svg) center no-repeat}#panel-content.good .panel-icon{background:var(--sa11y-good);-webkit-mask:var(--sa11y-good-svg) center no-repeat;mask:var(--sa11y-good-svg) center no-repeat}#panel-content.warnings .panel-icon{background:var(--sa11y-warning-svg-color);-webkit-mask:var(--sa11y-warning-svg) center no-repeat;mask:var(--sa11y-warning-svg) center no-repeat;transform:scaleX(var(--sa11y-icon-direction))}@media screen and (forced-colors:active){#panel-content.errors .panel-icon,#panel-content.good .panel-icon,#panel-content.warnings .panel-icon{filter:invert(1)}}#panel.left #panel-content,#panel.top-left #panel-content{flex-direction:row-reverse}#status{font-size:var(--sa11y-large-text)}#status,.panel-count{color:var(--sa11y-panel-primary)}.panel-count{background-color:var(--sa11y-panel-badge);border-radius:4px;font-size:15px;font-weight:400;margin-left:3px;margin-right:3px;padding:2px 4px}#outline-panel,#page-issues,#settings-panel{color:var(--sa11y-panel-primary);display:none;opacity:0}#outline-panel.active,#page-issues.active,#settings-panel.active{display:block;opacity:1}.panel-header{padding:10px 15px 0;text-align:start}#outline-content,#page-issues-content,#settings-content{border-bottom:1px solid var(--sa11y-panel-bg-splitter);padding:0 15px 10px}#page-issues-content{max-height:160px;overflow-y:auto}#outline-content{max-height:250px;overflow-y:auto}#outline-panel .outline-list-item.sa11y-red-text,#settings-panel .sa11y-red-text{color:var(--sa11y-red-text)}#outline-list{display:block;margin:0;padding:0}#outline-list a{cursor:pointer;display:block;text-decoration:none}#outline-list li{display:block;list-style-type:none;margin-bottom:3px;margin-top:0;padding:0}#outline-list li:first-child{margin-top:5px}#outline-list li a:focus,#outline-list li a:hover{background:var(--sa11y-panel-outline-hover);border-radius:5px;box-shadow:0 0 0 2px var(--sa11y-panel-outline-hover);display:block}#outline-list .outline-2{-webkit-margin-start:15px;margin-inline-start:15px}#outline-list .outline-3{-webkit-margin-start:30px;margin-inline-start:30px}#outline-list .outline-4{-webkit-margin-start:45px;margin-inline-start:45px}#outline-list .outline-5{-webkit-margin-start:60px;margin-inline-start:60px}#outline-list .outline-6{-webkit-margin-start:75px;margin-inline-start:75px}.badge{background-color:var(--sa11y-panel-badge);border:1px solid transparent;border-radius:10px;color:var(--sa11y-panel-primary);display:inline;font-size:13px;font-weight:700;min-width:10px;padding:2px 5px;text-align:center;white-space:nowrap}.error-badge{background:var(--sa11y-error);color:var(--sa11y-error-text)}.warning-badge{background:var(--sa11y-yellow-text);color:var(--sa11y-panel-bg)}.error-icon{background:var(--sa11y-error-text);-webkit-mask:var(--sa11y-error-svg) center no-repeat;mask:var(--sa11y-error-svg) center no-repeat}.error-icon,.hidden-icon{display:inline-block;height:16px;margin-bottom:-3px;width:16px}.hidden-icon{background:var(--sa11y-panel-primary);-webkit-mask:var(--sa11y-hidden-icon-svg) center no-repeat;mask:var(--sa11y-hidden-icon-svg) center no-repeat}.error-badge .hidden-icon{background:var(--sa11y-error-text)}.warning-badge .hidden-icon{background:var(--sa11y-panel-bg)}@media screen and (forced-colors:active){.hidden-icon{filter:invert(1)}}#panel-controls{border-radius:0 0 4px 4px;display:flex;overflow:hidden}#outline-toggle,#settings-toggle{background:var(--sa11y-panel-bg-secondary);background-color:var(--sa11y-panel-bg-secondary);border-bottom:1px solid var(--sa11y-panel-bg-splitter);border-top:1px solid var(--sa11y-panel-bg-splitter);color:var(--sa11y-panel-secondary);cursor:pointer;display:block;font-size:var(--sa11y-normal-text);font-weight:400;height:30px;line-height:0;margin:0;opacity:1;outline:0;padding:0;position:relative;text-align:center;transition:background .2s;width:100%}#outline-toggle.outline-active,#outline-toggle.settings-active,#outline-toggle:hover,#settings-toggle.outline-active,#settings-toggle.settings-active,#settings-toggle:hover{background-color:var(--sa11y-shortcut-hover)}#outline-toggle.outline-active,#outline-toggle.settings-active,#settings-toggle.outline-active,#settings-toggle.settings-active{font-weight:500}#outline-toggle{-webkit-border-end:1px solid var(--sa11y-panel-bg-splitter);border-inline-end:1px solid var(--sa11y-panel-bg-splitter)}label{display:inline-block;width:100%}#settings-panel .switch,label{color:var(--sa11y-panel-primary);cursor:pointer;font-weight:400;margin:0}#settings-panel .switch{background:none;border:0;border-radius:5px;font-size:var(--sa11y-normal-text);height:44px;padding:7px 10px;position:relative;text-align:end;width:105px}#settings-panel .switch[aria-pressed=false]:after,#settings-panel .switch[aria-pressed=true]:after{content:\"\";display:inline-block;height:27px;margin:0 4px 4px;vertical-align:middle;width:27px}#settings-panel .switch[aria-pressed=true]:after{background:var(--sa11y-setting-switch-bg-on);-webkit-mask:var(--sa11y-setting-switch-on-svg) center no-repeat;mask:var(--sa11y-setting-switch-on-svg) center no-repeat}#settings-panel .switch[aria-pressed=false]:after{background:var(--sa11y-setting-switch-bg-off);-webkit-mask:var(--sa11y-setting-switch-off-svg) center no-repeat;mask:var(--sa11y-setting-switch-off-svg) center no-repeat}@media screen and (forced-colors:active){#settings-panel .switch[aria-pressed=false]:after,#settings-panel .switch[aria-pressed=true]:after{filter:invert(1)}}#settings-panel #settings-options li{align-items:center;border-bottom:1px solid var(--sa11y-panel-bg-splitter);display:flex;justify-content:space-between;list-style-type:none;padding:1px 0}#settings-panel #settings-options li:last-child{border:none}#page-issues{align-items:center;color:var(--sa11y-panel-primary)}#page-issues-list{display:block;margin-top:4px}#page-issues-list li{display:block;margin:0 0 10px}#page-issues-list strong{display:block}#panel-colour-filters{align-items:center;color:var(--sa11y-panel-primary);display:none;font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text);font-weight:400;line-height:22px}#panel-colour-filters.active{display:flex}#panel-colour-filters p{padding:6px 20px 6px 6px;width:100%}#panel-colour-filters[data-colour=protanopia]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(94deg,#786719 11%,#e0c600 36%,#e0c600 47%,#0059e3 75%,#0042aa 91%);border-image:linear-gradient(94deg,#786719 11%,#e0c600 36%,#e0c600 47%,#0059e3 75%,#0042aa 91%);border-image-slice:1}#panel-colour-filters[data-colour=deuteranopia]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(270deg,#567fdb,#a4a28d 48%,#c3ad14 69%,#a79505);border-image:linear-gradient(270deg,#567fdb,#a4a28d 48%,#c3ad14 69%,#a79505);border-image-slice:1}#panel-colour-filters[data-colour=tritanopia]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(270deg,#b1506f,#0696c1 35%,#f3a9ba 70%,#d91c5d 87%,#fe015c);border-image:linear-gradient(270deg,#b1506f,#0696c1 35%,#f3a9ba 70%,#d91c5d 87%,#fe015c);border-image-slice:1}#panel-colour-filters[data-colour=monochromacy]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(270deg,#000,#a7a7a7 50%,#000);border-image:linear-gradient(270deg,#000,#a7a7a7 50%,#000);border-image-slice:1}#panel-colour-filters[data-colour=protanopia] .panel-icon{background:var(--sa11y-panel-error)}#panel-colour-filters[data-colour=deuteranopia] .panel-icon{background:var(--sa11y-good-hover)}#panel-colour-filters[data-colour=tritanopia] .panel-icon{background:var(--sa11y-blue)}#panel-colour-filters[data-colour=monochromacy] .panel-icon{background:linear-gradient(90deg,#38a459 20%,red 50%,#0077c8 80%)}#panel-colour-filters .panel-icon{-webkit-margin-end:5px;-webkit-margin-start:10px;height:30px;margin-inline-end:5px;margin-inline-start:10px;-webkit-mask:var(--sa11y-low-vision-icon) center no-repeat;mask:var(--sa11y-low-vision-icon) center no-repeat;width:30px}@media screen and (forced-colors:active){#panel-colour-filters .panel-icon{forced-color-adjust:none}}.select-dropdown:after{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--sa11y-setting-switch-bg-off);content:\" \";height:0;inset-inline-end:25px;margin-top:22.5px;position:absolute;width:0}#colour-filter-select{-webkit-padding-end:25px;-webkit-padding-start:5px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--sa11y-panel-bg);border:2px solid var(--sa11y-setting-switch-bg-off);border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;font-size:var(--sa11y-normal-text);font-weight:400;height:30px;padding-inline-end:25px;padding-inline-start:5px;position:relative;text-align:end;vertical-align:middle}#colour-filter-select.active{box-shadow:0 0 0 2px var(--sa11y-setting-switch-bg-on)}#colour-filter-item label,#colour-filter-item select{margin-bottom:9px;margin-top:10px}#readability-panel{display:none;opacity:0}#readability-panel.active{display:block;opacity:1}#readability-content{border-bottom:1px solid var(--sa11y-panel-bg-splitter);color:var(--sa11y-panel-primary);padding:10px 15px;width:100%}#readability-details{list-style-type:none;margin:0;padding:0;white-space:normal}#readability-details li{-webkit-padding-end:10px;display:inline-block;list-style-type:none;margin:0;padding-inline-end:10px}.readability-score{-webkit-margin-start:5px;background-color:var(--sa11y-panel-badge);border-radius:4px;color:var(--sa11y-panel-primary);margin-inline-start:5px;padding:2px 5px}#readability-info{-webkit-margin-start:10px;margin-inline-start:10px}#skip-to-page-issues{display:none}#panel.has-page-issues #skip-to-page-issues{clip:rect(0,0,0,0);background:var(--sa11y-panel-bg);border:0;border-radius:5px;display:block;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}#panel.has-page-issues #skip-to-page-issues:focus{clip:auto;height:auto;margin:0;overflow:visible;padding:5px 7px;white-space:normal;width:auto;z-index:1}.hide-settings-border{border-bottom:0!important;padding:0 15px!important}::-webkit-scrollbar{width:7px}::-webkit-scrollbar-thumb{background-color:var(--sa11y-button-outline);border-radius:6px}*{scrollbar-color:var(--sa11y-button-outline);scrollbar-width:thin}.scrollable:before{animation:fade 1s ease-in-out;background-image:linear-gradient(180deg,transparent 0,transparent 70%,var(--sa11y-panel-scrollable) 100%);background-position:bottom;bottom:auto;content:\"\";height:250px;left:0;position:absolute;right:0;top:auto;transition:opacity 1s ease-in-out;z-index:-1}#page-issues-content.scrollable:before{height:160px}#panel-alert.scrollable:before{height:200px}@keyframes sa11y-toggle-gradient{0%{background-position:50% 0}50%{background-position:50% 100%}to{background-position:50% 0}}@keyframes fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transform:none!important;transition:none!important}}#panel{width:375px}#container:lang(en) #panel{width:305px}#container:lang(da) #panel,#container:lang(de) #panel,#container:lang(nb) #panel,#container:lang(pl) #panel,#container:lang(sv) #panel,#container:lang(zh) #panel{width:335px}#container:lang(es) .switch{width:225px!important}#container:not(:lang(en)):not(:lang(de)) .switch{width:205px}";
+var panelStyles = "a,button,code,div,h1,h2,kbd,label,li,ol,p,pre,span,strong,svg,ul{all:unset;box-sizing:border-box!important}:after,:before{all:unset}div{display:block}*{-webkit-font-smoothing:auto!important;font-family:var(--sa11y-font-face)!important;line-height:22px!important}label,li,ol,p,ul{font-size:var(--sa11y-normal-text);font-weight:400;letter-spacing:normal;text-align:start;word-break:break-word}.sa11y-overflow{overflow:auto}iframe,img,video{border:0;display:block;height:auto;max-width:100%}audio{max-width:100%}#toggle{align-items:center;background:linear-gradient(0deg,#e040fb,#00bcd4);background-color:var(--sa11y-blue);background-size:150% 150%;border-radius:50%;bottom:15px;color:#fff;cursor:pointer;display:flex;height:55px;inset-inline-end:18px;justify-content:center;margin:0;overflow:visible;position:fixed;transition:all .2s ease-in-out;width:55px;z-index:2147483644}#toggle.left,#toggle.top-left{inset-inline-start:18px}#toggle.top-left,#toggle.top-right{bottom:unset;top:15px}@media screen and (forced-colors:active){#toggle{border:2px solid transparent}}#toggle svg{height:35px;width:35px}#toggle svg path{fill:var(--sa11y-panel-bg)}#toggle:focus,#toggle:hover{animation:sa11y-toggle-gradient 3s ease}#toggle:disabled:focus,#toggle:disabled:hover{animation:none}#toggle.on{background:linear-gradient(180deg,#e040fb,#00bcd4);background-color:var(--sa11y-blue)}#notification-badge{text-wrap:nowrap;align-items:center;background-color:#eb0000;border:1px solid transparent;border-radius:12px;color:#fff;display:none;font-size:13.5px;font-weight:400;height:20px;justify-content:center;min-width:20px;padding:3px;position:absolute;right:-3px;top:-5.5px}#notification-badge.notification-badge-warning{background-color:var(--sa11y-warning-hover);border:1px solid var(--sa11y-warning);color:var(--sa11y-warning-text)}#panel{background:var(--sa11y-panel-bg);border-radius:4px;bottom:25px;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15);inset-inline-end:42px;opacity:0;overflow:visible;position:fixed;transform:scale(0);transform-origin:100% 100%;transition:transform .2s,opacity background .2s .2s;visibility:hidden;z-index:2147483643}#panel.left,#panel.top-left{inset-inline-start:42px}#panel.top-left,#panel.top-right{bottom:unset;top:50px}#panel.active{height:auto;opacity:1;transform:scale(1);transform-origin:bottom right;transition:transform .2s,opacity .2s;visibility:visible}@media screen and (forced-colors:active){#panel{border:2px solid transparent}}#panel.active.left,[dir=rtl] #panel.active{transform-origin:bottom left}#panel.active.top-left{transform-origin:top left}#panel.active.top-right{transform-origin:top right}#panel-alert{display:none;opacity:0}#panel-alert.active{display:block;opacity:1}#panel-alert-content{align-items:center;border-bottom:1px solid var(--sa11y-panel-bg-splitter);color:var(--sa11y-panel-primary);max-height:400px;overflow-y:auto;padding:15px 20px 15px 15px;position:relative}#panel-alert-preview .close-tooltip{display:none}#panel-alert-preview,#panel-alert-text{font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text);font-weight:400;line-height:22px}.panel-alert-preview{background:var(--sa11y-panel-bg-secondary);border:1px dashed var(--sa11y-panel-bg-splitter);border-radius:5px;margin-top:15px;padding:10px}.element-preview{background-color:var(--sa11y-panel-badge);border-radius:3.2px;margin-bottom:10px;overflow-wrap:break-word;padding:5px}button[data-sa11y-dismiss]{background:var(--sa11y-panel-bg-secondary);border:2px solid var(--sa11y-button-outline);border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;display:block;margin:10px 5px 5px 0;padding:4px 8px}button[data-sa11y-dismiss]:focus,button[data-sa11y-dismiss]:hover{background:var(--sa11y-shortcut-hover)}h2{display:block;font-size:var(--sa11y-large-text);margin-bottom:3px}h2,strong{font-weight:600}a:not(#outline-list a){border-bottom:0;color:var(--sa11y-hyperlink);cursor:pointer;text-decoration:underline}a:focus,a:hover{text-decoration:none!important}hr{background:var(--sa11y-panel-bg-splitter);border:none;height:1px;margin:10px 0;opacity:1;padding:0}#dismiss-button,#skip-button{background:var(--sa11y-panel-bg-secondary);border:1px solid var(--sa11y-button-outline);border-radius:50px;cursor:pointer;display:none;height:36px;margin-inline-end:8px;margin-inline-start:2px;overflow:visible;position:relative;text-align:center;transition:all .1s ease-in-out;width:36px}#dismiss-button.active,#skip-button.active{display:block}#dismiss-button:disabled,#skip-button:disabled{background:none;border:0;box-shadow:none;cursor:default}#dismiss-button:before,#skip-button:before{bottom:-5px;content:\"\";left:-5px;position:absolute;right:-5px;top:-5px}#dismiss-button:focus:not(:disabled),#dismiss-button:hover:not(:disabled),#skip-button:focus:not(:disabled),#skip-button:hover:not(:disabled){background-color:var(--sa11y-shortcut-hover)}#panel.left #dismiss-button,#panel.left #skip-button,#panel.top-left #dismiss-button,#panel.top-left #skip-button{margin-inline-end:2px;margin-inline-start:8px}.dismiss-icon{background:var(--sa11y-setting-switch-bg-off);display:inline-block;height:24px;margin-bottom:-4px;-webkit-mask:var(--sa11y-dismiss-icon) center no-repeat;mask:var(--sa11y-dismiss-icon) center no-repeat;width:24px}@media screen and (forced-colors:active){.dismiss-icon{filter:invert(1)}}#panel-content{align-items:center;color:var(--sa11y-panel-primary);display:flex;padding:6px}#panel-content.errors .panel-icon,#panel-content.good .panel-icon,#panel-content.warnings .panel-icon{height:26px;margin:0 auto;width:26px}#panel-content.errors .panel-icon{background:var(--sa11y-panel-error);margin-top:-2px;-webkit-mask:var(--sa11y-error-svg) center no-repeat;mask:var(--sa11y-error-svg) center no-repeat}#panel-content.good .panel-icon{background:var(--sa11y-good);-webkit-mask:var(--sa11y-good-svg) center no-repeat;mask:var(--sa11y-good-svg) center no-repeat}#panel-content.warnings .panel-icon{background:var(--sa11y-warning-svg-color);-webkit-mask:var(--sa11y-warning-svg) center no-repeat;mask:var(--sa11y-warning-svg) center no-repeat;transform:scaleX(var(--sa11y-icon-direction))}@media screen and (forced-colors:active){#panel-content.errors .panel-icon,#panel-content.good .panel-icon,#panel-content.warnings .panel-icon{filter:invert(1)}}#panel.left #panel-content,#panel.top-left #panel-content{flex-direction:row-reverse}#status{font-size:var(--sa11y-large-text)}#status,.panel-count{color:var(--sa11y-panel-primary)}.panel-count{background-color:var(--sa11y-panel-badge);border-radius:4px;font-size:15px;font-weight:400;margin-left:3px;margin-right:3px;padding:2px 4px}#outline-panel,#page-issues,#settings-panel{color:var(--sa11y-panel-primary);display:none;opacity:0}#outline-panel.active,#page-issues.active,#settings-panel.active{display:block;opacity:1}.panel-header{padding:10px 15px 0;text-align:start}#outline-content,#page-issues-content,#settings-content{border-bottom:1px solid var(--sa11y-panel-bg-splitter);padding:0 15px 10px}#page-issues-content{max-height:160px;overflow-y:auto}#outline-content{max-height:250px;overflow-y:auto}#outline-panel .outline-list-item.sa11y-red-text,#settings-panel .sa11y-red-text{color:var(--sa11y-red-text)}#outline-list{display:block;margin:0;padding:0}#outline-list a{cursor:pointer;display:block;text-decoration:none}#outline-list li{display:block;list-style-type:none;margin-bottom:3px;margin-top:0;padding:0}#outline-list li:first-child{margin-top:5px}#outline-list li a:focus,#outline-list li a:hover{background:var(--sa11y-panel-outline-hover);border-radius:5px;box-shadow:0 0 0 2px var(--sa11y-panel-outline-hover);display:block}#outline-list .outline-2{margin-inline-start:15px}#outline-list .outline-3{margin-inline-start:30px}#outline-list .outline-4{margin-inline-start:45px}#outline-list .outline-5{margin-inline-start:60px}#outline-list .outline-6{margin-inline-start:75px}.badge{background-color:var(--sa11y-panel-badge);border:1px solid transparent;border-radius:10px;color:var(--sa11y-panel-primary);display:inline;font-size:13px;font-weight:700;min-width:10px;padding:2px 5px;text-align:center;white-space:nowrap}.error-badge{background:var(--sa11y-error);color:var(--sa11y-error-text)}.warning-badge{background:var(--sa11y-yellow-text);color:var(--sa11y-panel-bg)}.error-icon{background:var(--sa11y-error-text);-webkit-mask:var(--sa11y-error-svg) center no-repeat;mask:var(--sa11y-error-svg) center no-repeat}.error-icon,.hidden-icon{display:inline-block;height:16px;margin-bottom:-3px;width:16px}.hidden-icon{background:var(--sa11y-panel-primary);-webkit-mask:var(--sa11y-hidden-icon-svg) center no-repeat;mask:var(--sa11y-hidden-icon-svg) center no-repeat}.error-badge .hidden-icon{background:var(--sa11y-error-text)}.warning-badge .hidden-icon{background:var(--sa11y-panel-bg)}@media screen and (forced-colors:active){.hidden-icon{filter:invert(1)}}#panel-controls{border-radius:0 0 4px 4px;display:flex;overflow:hidden}#outline-toggle,#settings-toggle{background:var(--sa11y-panel-bg-secondary);background-color:var(--sa11y-panel-bg-secondary);border-bottom:1px solid var(--sa11y-panel-bg-splitter);border-top:1px solid var(--sa11y-panel-bg-splitter);color:var(--sa11y-panel-secondary);cursor:pointer;display:block;font-size:var(--sa11y-normal-text);font-weight:400;height:30px;line-height:0;margin:0;opacity:1;outline:0;padding:0;position:relative;text-align:center;transition:background .2s;width:100%}#outline-toggle.outline-active,#outline-toggle.settings-active,#outline-toggle:hover,#settings-toggle.outline-active,#settings-toggle.settings-active,#settings-toggle:hover{background-color:var(--sa11y-shortcut-hover)}#outline-toggle.outline-active,#outline-toggle.settings-active,#settings-toggle.outline-active,#settings-toggle.settings-active{font-weight:500}#outline-toggle{border-inline-end:1px solid var(--sa11y-panel-bg-splitter)}#export-results-mode,label{color:var(--sa11y-panel-primary);display:inline-block;font-weight:400;margin:0;width:100%}label:not(#colour-filter-mode,#export-results-mode){cursor:pointer}#settings-panel #export-csv,#settings-panel #export-html{padding:0;text-align:center;width:unset}#settings-panel #export-csv span,#settings-panel #export-html span{background:var(--sa11y-panel-bg-secondary);border-radius:5px;box-shadow:inset 0 0 0 2px var(--sa11y-setting-switch-bg-off);display:block;margin:0 4px;padding:7px 9px;width:65px}#settings-panel #export-csv:focus span,#settings-panel #export-csv:focus-within span,#settings-panel #export-csv:hover span,#settings-panel #export-html:focus span,#settings-panel #export-html:focus-within span,#settings-panel #export-html:hover span{background:var(--sa11y-shortcut-hover)}#settings-panel .switch{background:none;border:0;border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;font-size:var(--sa11y-normal-text);font-weight:400;height:44px;margin:0;padding:7px 10px;position:relative;text-align:end;width:105px}#settings-panel .switch[aria-pressed=false]:after,#settings-panel .switch[aria-pressed=true]:after{content:\"\";display:inline-block;height:27px;margin:0 4px 4px;vertical-align:middle;width:27px}#settings-panel .switch[aria-pressed=true]:after{background:var(--sa11y-setting-switch-bg-on);-webkit-mask:var(--sa11y-setting-switch-on-svg) center no-repeat;mask:var(--sa11y-setting-switch-on-svg) center no-repeat}#settings-panel .switch[aria-pressed=false]:after{background:var(--sa11y-setting-switch-bg-off);-webkit-mask:var(--sa11y-setting-switch-off-svg) center no-repeat;mask:var(--sa11y-setting-switch-off-svg) center no-repeat}@media screen and (forced-colors:active){#settings-panel .switch[aria-pressed=false]:after,#settings-panel .switch[aria-pressed=true]:after{filter:invert(1)}}#settings-panel #settings-options li{align-items:center;border-bottom:1px solid var(--sa11y-panel-bg-splitter);display:flex;justify-content:space-between;list-style-type:none;padding:1px 0}#settings-panel #settings-options li:last-child{border:none}#page-issues{align-items:center;color:var(--sa11y-panel-primary)}#page-issues-list{display:block;margin-top:4px}#page-issues-list li{display:block;margin:0 0 10px}#page-issues-list strong{display:block}#panel-colour-filters{align-items:center;color:var(--sa11y-panel-primary);display:none;font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text);font-weight:400;line-height:22px}#panel-colour-filters.active{display:flex}#panel-colour-filters p{padding:6px 20px 6px 6px;width:100%}#panel-colour-filters[data-colour=protanopia]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(94deg,#786719 11%,#e0c600 36%,#e0c600 47%,#0059e3 75%,#0042aa 91%);border-image:linear-gradient(94deg,#786719 11%,#e0c600 36%,#e0c600 47%,#0059e3 75%,#0042aa 91%);border-image-slice:1}#panel-colour-filters[data-colour=deuteranopia]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(270deg,#567fdb,#a4a28d 48%,#c3ad14 69%,#a79505);border-image:linear-gradient(270deg,#567fdb,#a4a28d 48%,#c3ad14 69%,#a79505);border-image-slice:1}#panel-colour-filters[data-colour=tritanopia]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(270deg,#b1506f,#0696c1 35%,#f3a9ba 70%,#d91c5d 87%,#fe015c);border-image:linear-gradient(270deg,#b1506f,#0696c1 35%,#f3a9ba 70%,#d91c5d 87%,#fe015c);border-image-slice:1}#panel-colour-filters[data-colour=monochromacy]{border-bottom:6px solid transparent;-o-border-image:linear-gradient(270deg,#000,#a7a7a7 50%,#000);border-image:linear-gradient(270deg,#000,#a7a7a7 50%,#000);border-image-slice:1}#panel-colour-filters[data-colour=protanopia] .panel-icon{background:var(--sa11y-panel-error)}#panel-colour-filters[data-colour=deuteranopia] .panel-icon{background:var(--sa11y-good-hover)}#panel-colour-filters[data-colour=tritanopia] .panel-icon{background:var(--sa11y-blue)}#panel-colour-filters[data-colour=monochromacy] .panel-icon{background:linear-gradient(90deg,#38a459 20%,red 50%,#0077c8 80%)}#panel-colour-filters .panel-icon{height:30px;margin-inline-end:5px;margin-inline-start:10px;-webkit-mask:var(--sa11y-low-vision-icon) center no-repeat;mask:var(--sa11y-low-vision-icon) center no-repeat;width:30px}@media screen and (forced-colors:active){#panel-colour-filters .panel-icon{forced-color-adjust:none}}.select-dropdown:after{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid var(--sa11y-setting-switch-bg-off);content:\" \";height:0;inset-inline-end:25px;margin-top:22.5px;position:absolute;width:0}#colour-filter-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--sa11y-panel-bg-secondary);border:2px solid var(--sa11y-setting-switch-bg-off);border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;font-size:var(--sa11y-normal-text);font-weight:400;height:30px;margin-inline-end:4px;padding-inline-end:25px;padding-inline-start:5px;position:relative;text-align:end;vertical-align:middle}#colour-filter-select:focus,#colour-filter-select:hover{background:var(--sa11y-shortcut-hover)}#colour-filter-select.active{box-shadow:0 0 0 2px var(--sa11y-setting-switch-bg-on)}#colour-filter-item label,#colour-filter-item select{margin-bottom:9px;margin-top:10px}#readability-panel{display:none;opacity:0}#readability-panel.active{display:block;opacity:1}#readability-content{border-bottom:1px solid var(--sa11y-panel-bg-splitter);color:var(--sa11y-panel-primary);padding:10px 15px;width:100%}#readability-details{list-style-type:none;margin:0;padding:0;white-space:normal}#readability-details li{display:inline-block;list-style-type:none;margin:0;padding-inline-end:10px}.readability-score{background-color:var(--sa11y-panel-badge);border-radius:4px;color:var(--sa11y-panel-primary);margin-inline-start:5px;padding:2px 5px}#readability-info{margin-inline-start:10px}#skip-to-page-issues{display:none}#panel.has-page-issues #skip-to-page-issues{clip:rect(0,0,0,0);background:var(--sa11y-panel-bg);border:0;border-radius:5px;display:block;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}#panel.has-page-issues #skip-to-page-issues:focus{clip:auto;height:auto;margin:0;overflow:visible;padding:5px 7px;white-space:normal;width:auto;z-index:1}.hide-settings-border{border-bottom:0!important;padding:0 15px!important}::-webkit-scrollbar{height:6px;width:7px}::-webkit-scrollbar-thumb{background-color:var(--sa11y-button-outline);border-radius:6px}*{scrollbar-color:var(--sa11y-button-outline);scrollbar-width:thin}.scrollable:before{animation:fade 1s ease-in-out;background-image:linear-gradient(180deg,transparent 0,transparent 70%,var(--sa11y-panel-scrollable) 100%);background-position:bottom;bottom:auto;content:\"\";height:250px;left:0;position:absolute;right:0;top:auto;transition:opacity 1s ease-in-out;z-index:-1}#page-issues-content.scrollable:before{height:160px}#panel-alert.scrollable:before{height:200px}@keyframes sa11y-toggle-gradient{0%{background-position:50% 0}50%{background-position:50% 100%}to{background-position:50% 0}}@keyframes fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transform:none!important;transition:none!important}}#panel{width:375px}#container:lang(en) #panel{width:305px}#container:lang(da) #panel,#container:lang(de) #panel,#container:lang(nb) #panel,#container:lang(pl) #panel,#container:lang(sv) #panel,#container:lang(zh) #panel{width:335px}#container:lang(es) .switch{width:225px!important}#container:not(:lang(en)):not(:lang(de)) .switch{width:205px}";
class ControlPanel extends HTMLElement {
connectedCallback() {
@@ -1466,13 +1707,13 @@ class ControlPanel extends HTMLElement {
const rememberReadability = store.getItem('sa11y-remember-readability') === 'On';
// If admin wants users to check everything, without toggleable checks.
- const checkAll = Constants.Global.checkAllHideToggles === true;
+ const checkAll = Constants.Global.checkAllHideToggles;
// Panel position: left or right side.
const { panelPosition } = Constants.Global;
/* TOGGLEABLE PLUGINS */
- const contrastPlugin = (Constants.Global.contrastPlugin === true) ? `
+ const contrastPlugin = Constants.Global.contrastPlugin ? `
+ ${exportResultsPlugin}
${colourFilterPlugin}
@@ -1689,7 +1942,7 @@ function settingsPanelToggles(checkAll, resetAll) {
/* ***************** */
/* Contrast toggle */
/* ***************** */
- if (Constants.Global.contrastPlugin === true) {
+ if (Constants.Global.contrastPlugin) {
Constants.Panel.contrastToggle.onclick = async () => {
if (store.getItem('sa11y-remember-contrast') === 'On') {
store.setItem('sa11y-remember-contrast', 'Off');
@@ -1712,7 +1965,7 @@ function settingsPanelToggles(checkAll, resetAll) {
/* ***************** */
/* Form Labels */
/* ***************** */
- if (Constants.Global.formLabelsPlugin === true) {
+ if (Constants.Global.formLabelsPlugin) {
Constants.Panel.labelsToggle.onclick = async () => {
if (store.getItem('sa11y-remember-labels') === 'On') {
store.setItem('sa11y-remember-labels', 'Off');
@@ -1735,7 +1988,7 @@ function settingsPanelToggles(checkAll, resetAll) {
/* ****************** */
/* Links (Advanced) */
/* ****************** */
- if (Constants.Global.linksAdvancedPlugin === true) {
+ if (Constants.Global.linksAdvancedPlugin) {
Constants.Panel.linksToggle.onclick = async () => {
if (store.getItem('sa11y-remember-links-advanced') === 'On') {
store.setItem('sa11y-remember-links-advanced', 'Off');
@@ -1758,7 +2011,7 @@ function settingsPanelToggles(checkAll, resetAll) {
/* ****************** */
/* Readability */
/* ****************** */
- if (Constants.Readability.Plugin === true) {
+ if (Constants.Readability.Plugin) {
Constants.Panel.readabilityToggle.onclick = async () => {
if (store.getItem('sa11y-remember-readability') === 'On') {
store.setItem('sa11y-remember-readability', 'Off');
@@ -1849,7 +2102,7 @@ function settingsPanelToggles(checkAll, resetAll) {
/* ****************** */
/* Colour filters */
/* ****************** */
- if (Constants.Global.colourFilterPlugin === true) {
+ if (Constants.Global.colourFilterPlugin) {
Constants.Panel.colourFilterSelect.addEventListener('change', async () => {
const option = parseInt(Constants.Panel.colourFilterSelect.value, 10);
@@ -1926,11 +2179,15 @@ function settingsPanelToggles(checkAll, resetAll) {
}
}
+/* eslint-disable no-return-assign */
+
/* **************************************************************** */
/* Main panel: Initialize Show Outline and Settings buttons/tabs. */
/* **************************************************************** */
function initializePanelToggles() {
- // Show outline panel
+ /* **************** */
+ /* Outline panel */
+ /* **************** */
Constants.Panel.outlineToggle.addEventListener('click', () => {
if (Constants.Panel.outlineToggle.getAttribute('aria-expanded') === 'true') {
Constants.Panel.outlineToggle.classList.remove('outline-active');
@@ -1940,7 +2197,6 @@ function initializePanelToggles() {
// Toggle visibility of heading labels
const $headingAnnotations = document.querySelectorAll('sa11y-heading-label');
- // eslint-disable-next-line no-return-assign, no-param-reassign
$headingAnnotations.forEach(($el) => $el.hidden = true);
isScrollable(Constants.Panel.outlineList, Constants.Panel.outlineContent);
} else {
@@ -1948,10 +2204,10 @@ function initializePanelToggles() {
Constants.Panel.outline.classList.add('active');
Constants.Panel.outlineToggle.setAttribute('aria-expanded', 'true');
store.setItem('sa11y-remember-outline', 'Opened');
+ store.setItem('sa11y-remember-settings', 'Closed');
// Toggle visibility of heading labels
const $headingAnnotations = document.querySelectorAll('sa11y-heading-label');
- // eslint-disable-next-line no-return-assign, no-param-reassign
$headingAnnotations.forEach(($el) => $el.hidden = false);
}
@@ -1976,16 +2232,21 @@ function initializePanelToggles() {
}, 0);
}
- // Show settings panel
+ /* **************** */
+ /* Settings panel */
+ /* **************** */
Constants.Panel.settingsToggle.addEventListener('click', () => {
if (Constants.Panel.settingsToggle.getAttribute('aria-expanded') === 'true') {
Constants.Panel.settingsToggle.classList.remove('settings-active');
Constants.Panel.settings.classList.remove('active');
Constants.Panel.settingsToggle.setAttribute('aria-expanded', 'false');
+ store.setItem('sa11y-remember-settings', 'Closed');
} else {
Constants.Panel.settingsToggle.classList.add('settings-active');
Constants.Panel.settings.classList.add('active');
Constants.Panel.settingsToggle.setAttribute('aria-expanded', 'true');
+ store.setItem('sa11y-remember-settings', 'Opened');
+ store.setItem('sa11y-remember-outline', 'Closed');
}
// Set focus on Settings heading for accessibility.
@@ -1993,7 +2254,6 @@ function initializePanelToggles() {
// Toggle visibility of heading labels
const $headingAnnotations = document.querySelectorAll('sa11y-heading-label');
- // eslint-disable-next-line no-return-assign, no-param-reassign
$headingAnnotations.forEach(($el) => $el.hidden = true);
// Close Show Outline panel when Settings is active.
@@ -2008,8 +2268,20 @@ function initializePanelToggles() {
Constants.Panel.settingsContent.setAttribute('aria-label', `${Lang._('SETTINGS')}`);
Constants.Panel.settingsContent.setAttribute('role', 'region');
}
+
+ // Close Outline panel when Show Outline is active.
+ Constants.Panel.outline.classList.remove('active');
+ Constants.Panel.outlineToggle.classList.remove('settings-active');
+ Constants.Panel.outlineToggle.setAttribute('aria-expanded', 'false');
});
+ // Remember to leave settings open
+ if (store.getItem('sa11y-remember-settings') === 'Opened') {
+ Constants.Panel.settingsToggle.classList.add('settings-active');
+ Constants.Panel.settings.classList.add('active');
+ Constants.Panel.settingsToggle.setAttribute('aria-expanded', 'true');
+ }
+
// Accessibility: Skip link to Page Issues
Constants.Panel.skipToPageIssues.addEventListener('click', () => {
Constants.Panel.pageIssuesHeader.focus();
@@ -2066,16 +2338,13 @@ function initializePanelToggles() {
* Create Page Outline.
*/
-function generatePageOutline(
- dismissed,
- headingOutline,
-) {
- // Create a single array that gets appended to heading outline, instead of creating a new HTML element everytime you iterate through each object.
+function generatePageOutline(dismissed, headingOutline, showHinPageOutline) {
+ // Create a single array that gets appended to heading outline.
const outlineArray = [];
// Find all dismissed headings and update headingOutline array.
const findDismissedHeadings = dismissed.map((e) => {
- const found = headingOutline.find((f) => (e.key.includes(f.dismiss) && e.href === Constants.Global.currentPage));
+ const found = headingOutline.find((f) => (e.key.includes(f.dismiss) && e.href === window.location.pathname));
if (found === undefined) return '';
return found;
});
@@ -2084,27 +2353,28 @@ function generatePageOutline(
});
// Iterate through object that contains all headings (and error type).
- headingOutline.forEach((obj) => {
- const $el = obj.element;
- const level = obj.headingLevel;
- const headingText = obj.text;
- const i = obj.index;
- const issue = obj.type;
- const visibility = obj.hidden;
- const parent = obj.visibleParent;
- const dismissedH = obj.dismissedHeading;
+ headingOutline.forEach((heading) => {
+ const $el = heading.element;
+ const level = heading.headingLevel;
+ const headingText = heading.text;
+ const i = heading.index;
+ const issue = heading.type;
+ const visibility = heading.hidden;
+ const parent = heading.visibleParent;
+ const dismissedH = heading.dismissedHeading;
+ const { isWithinRoot } = heading;
// Filter out specified headings in outlineIgnore prop.
- let ignoreArray = [];
- if (Constants.Exclusions.Outline) {
- ignoreArray = Array.from(document.querySelectorAll(Constants.Exclusions.Outline));
- }
+ const ignoreArray = Constants.Exclusions.Outline ? Array.from(document.querySelectorAll(Constants.Exclusions.Outline)) : [];
+
if (!ignoreArray.includes($el)) {
// Indicate if heading is totally hidden or visually hidden.
const visibleIcon = (visibility === true) ? 'Hidden' : '';
const visibleStatus = (visibility === true) ? 'class="hidden-h"' : '';
+ const badgeH = (showHinPageOutline === true) ? 'H' : '';
+
let append;
- if (issue === 'error') {
+ if (issue === 'error' && isWithinRoot === true) {
append = `
-
@@ -2112,18 +2382,18 @@ function generatePageOutline(
${Lang._('ERROR')} ${level}
+ ${Lang._('ERROR')} ${badgeH + level}
${headingText}
-
`;
outlineArray.push(append);
- } else if (issue === 'warning' && !dismissedH) {
+ } else if (issue === 'warning' && !dismissedH && isWithinRoot === true) {
append = `
-
${Lang._('WARNING')} ${level}
+
- ${Lang._('WARNING')} ${badgeH + level}
${headingText}
`;
@@ -2132,56 +2402,58 @@ function generatePageOutline(
append = `
-
- ${visibleIcon} ${level}
+ ${visibleIcon} ${badgeH + level}
${headingText}
`;
outlineArray.push(append);
}
- }
- /**
+ /**
* Append heading labels.
- */
- const label = document.createElement('sa11y-heading-label');
- const anchor = document.createElement('sa11y-heading-anchor');
- label.hidden = true;
-
- // If heading is in a hidden container, place the anchor just before it's most visible parent.
- if (parent !== null) {
- $el.insertAdjacentElement('beforeend', label);
- const hiddenParent = parent.previousElementSibling;
- anchor.setAttribute('id', `sa11y-h${i}`);
- if (hiddenParent) {
- hiddenParent.insertAdjacentElement('beforebegin', anchor);
- hiddenParent.setAttribute('data-sa11y-parent', `h${i}`);
+ */
+ const label = document.createElement('sa11y-heading-label');
+ const anchor = document.createElement('sa11y-heading-anchor');
+ label.hidden = true;
+
+ // If heading is in a hidden container, place the anchor just before it's most visible parent.
+ if (parent !== null) {
+ $el.insertAdjacentElement('beforeend', label);
+ const hiddenParent = parent.previousElementSibling;
+ anchor.setAttribute('id', `sa11y-h${i}`);
+ if (hiddenParent) {
+ hiddenParent.insertAdjacentElement('beforebegin', anchor);
+ hiddenParent.setAttribute('data-sa11y-parent', `h${i}`);
+ } else {
+ parent.parentNode.insertAdjacentElement('beforebegin', anchor);
+ parent.parentNode.setAttribute('data-sa11y-parent', `h${i}`);
+ }
} else {
- parent.parentNode.insertAdjacentElement('beforebegin', anchor);
- parent.parentNode.setAttribute('data-sa11y-parent', `h${i}`);
- }
- } else {
- // If the heading isn't hidden, append visible label.
- $el.insertAdjacentElement('beforeend', label);
+ // If the heading isn't hidden, append visible label.
+ $el.insertAdjacentElement('beforeend', label);
- // Create anchor above visible label.
- label.insertAdjacentElement('beforebegin', anchor);
- anchor.setAttribute('id', `sa11y-h${i}`);
- }
+ // Create anchor above visible label.
+ label.insertAdjacentElement('beforebegin', anchor);
+ anchor.setAttribute('id', `sa11y-h${i}`);
+ }
- // Populate heading label.
- const content = document.createElement('span');
- content.classList.add('heading-label');
- content.innerHTML = `H${level}`;
- label.shadowRoot.appendChild(content);
+ // Populate heading label.
+ const content = document.createElement('span');
+ content.classList.add('heading-label');
+ content.innerHTML = `H${level}`;
+ label.shadowRoot.appendChild(content);
- // Make heading labels visible when panel is open.
- if (store.getItem('sa11y-remember-outline') === 'Opened') {
- label.hidden = false;
+ // Make heading labels visible when panel is open.
+ if (store.getItem('sa11y-remember-outline') === 'Opened') {
+ label.hidden = false;
+ }
}
});
// Append headings to Page Outline.
- Constants.Panel.outlineList.innerHTML = outlineArray.join(' ');
+ Constants.Panel.outlineList.innerHTML = (outlineArray.length === 0)
+ ? `- ${Lang._('PANEL_NO_HEADINGS')}
`
+ : outlineArray.join(' ');
// Make clickable!
setTimeout(() => {
@@ -2195,10 +2467,11 @@ function generatePageOutline(
const headingID = find(
`#sa11y-h${i}, [data-sa11y-parent="h${i}"]`,
- 'root',
+ 'document',
Constants.Exclusions.Container,
);
+ // Scroll to.
const pulseAndScroll = (heading) => {
addPulse(heading.parentElement);
heading.scrollIntoView({
@@ -2207,6 +2480,7 @@ function generatePageOutline(
});
};
+ // Add pulse.
const smoothPulse = (e) => {
if ((e.type === 'keyup' && e.code === 'Enter') || e.type === 'click') {
headingID.forEach((heading) => {
@@ -2221,8 +2495,10 @@ function generatePageOutline(
}
e.preventDefault();
};
- outlineLink.addEventListener('click', smoothPulse, false);
- outlineLink.addEventListener('keyup', smoothPulse, false);
+
+ // Attach event listeners.
+ outlineLink?.addEventListener('click', smoothPulse, false);
+ outlineLink?.addEventListener('keyup', smoothPulse, false);
});
/**
@@ -2289,19 +2565,18 @@ function updatePanel(dismissCount, errorCount, warningCount) {
} else if (warningCount > 0) {
Constants.Panel.content.setAttribute('class', 'warnings');
Constants.Panel.status.innerHTML = `${Lang._('WARNINGS')} ${warningCount}`;
+ } else if (dismissCount > 0) {
+ Constants.Panel.status.innerHTML = `${Lang._('DISMISSED')} ${dismissCount}`;
+ Constants.Panel.skipButton.classList.remove('active');
} else {
- if (dismissCount > 0) {
- Constants.Panel.status.innerHTML = `${Lang._('DISMISSED')} ${dismissCount}`;
- Constants.Panel.skipButton.classList.remove('active');
- } else {
- Constants.Panel.content.setAttribute('class', 'good');
- Constants.Panel.status.innerHTML = `${Lang._('PANEL_STATUS_NONE')}`;
- }
- // If there are no button annotations, disable the Skip-to-Toggle switch.
- const annotations = document.querySelectorAll('sa11y-annotation');
- if (annotations.length === 0) {
- Constants.Panel.skipButton.disabled = true;
- }
+ Constants.Panel.content.setAttribute('class', 'good');
+ Constants.Panel.status.innerHTML = `${Lang._('PANEL_STATUS_NONE')}`;
+ }
+
+ // If there are no button annotations, disable the Skip-to-Toggle switch.
+ const annotations = document.querySelectorAll('sa11y-annotation');
+ if (annotations.length === 0) {
+ Constants.Panel.skipButton.disabled = true;
}
}
@@ -5649,7 +5924,7 @@ tippy.setDefaultProps({
render: render
});
-var tooltipStyles = "a,button,code,div,h1,h2,kbd,li,ol,p,span,strong,svg,ul{all:unset;box-sizing:border-box!important}div{display:block}:after,:before{all:unset}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}@media (forced-colors:active){[data-tippy-root]{border:2px solid transparent;border-radius:5px}}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{border-top-color:initial;border-width:8px 8px 0;bottom:-7px;left:0;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:initial;border-width:0 8px 8px;left:0;top:-7px;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-left-color:initial;border-width:8px 0 8px 8px;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{border-right-color:initial;border-width:8px 8px 8px 0;left:-7px;transform-origin:center right}.tippy-arrow{color:#333;height:16px;width:16px}.tippy-arrow:before{border-color:transparent;border-style:solid;content:\"\";position:absolute}.tippy-content{padding:5px 9px;position:relative;z-index:1}.tippy-box[data-theme~=sa11y-theme][role=tooltip]{box-sizing:border-box!important}.tippy-box[data-theme~=sa11y-theme][role=tooltip][data-animation=fade][data-state=hidden]{opacity:0}.tippy-box[data-theme~=sa11y-theme][role=tooltip][data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}[role=dialog]{min-width:300px;text-align:start}[role=tooltip]{min-width:185px;text-align:center}.tippy-box[data-theme~=sa11y-theme]{-webkit-font-smoothing:auto;background-color:var(--sa11y-panel-bg);border-radius:4px;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15)!important;color:var(--sa11y-panel-primary);display:block;font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text);font-weight:400;letter-spacing:normal;line-height:22px;outline:0;padding:8px;position:relative;transition-property:transform,visibility,opacity}.tippy-box[data-theme~=sa11y-theme] code{font-family:monospace}.tippy-box[data-theme~=sa11y-theme] code,.tippy-box[data-theme~=sa11y-theme] kbd{-webkit-font-smoothing:auto;background-color:var(--sa11y-panel-badge);border-radius:3.2px;color:var(--sa11y-panel-primary);letter-spacing:normal;line-height:22px;padding:1.6px 4.8px}.tippy-box[data-theme~=sa11y-theme][data-placement^=top]{text-align:center}.tippy-box[data-theme~=sa11y-theme] .tippy-content{padding:5px 9px}.tippy-box[data-theme~=sa11y-theme] sub,.tippy-box[data-theme~=sa11y-theme] sup{font-size:var(--sa11y-small-text)}.tippy-box[data-theme~=sa11y-theme] ul{-webkit-margin-after:0;-webkit-margin-before:0;margin:0;margin-block-end:0;margin-block-start:0;padding:0;position:relative}.tippy-box[data-theme~=sa11y-theme] li{display:list-item;margin:5px 10px 0 20px;padding-bottom:5px}.tippy-box[data-theme~=sa11y-theme] a{color:var(--sa11y-hyperlink);cursor:pointer;text-decoration:underline}.tippy-box[data-theme~=sa11y-theme] a:focus,.tippy-box[data-theme~=sa11y-theme] a:hover{text-decoration:none}.tippy-box[data-theme~=sa11y-theme] strong{font-weight:600}.tippy-box[data-theme~=sa11y-theme] hr{background:var(--sa11y-panel-bg-splitter);border:none;height:1px;margin:10px 0;opacity:1;padding:0}.tippy-box[data-theme~=sa11y-theme] button.close-btn{margin:0}.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]{background:var(--sa11y-panel-bg-secondary);border:1px solid var(--sa11y-button-outline);border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;display:block;margin:10px 5px 5px 0;padding:4px 8px}.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]:focus,.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]:hover{background:var(--sa11y-shortcut-hover)}.tippy-box[data-theme~=sa11y-theme][data-placement^=top]>.tippy-arrow:before{border-top-color:var(--sa11y-panel-bg)}.tippy-box[data-theme~=sa11y-theme][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:var(--sa11y-panel-bg)}.tippy-box[data-theme~=sa11y-theme][data-placement^=left]>.tippy-arrow:before{border-left-color:var(--sa11y-panel-bg)}.tippy-box[data-theme~=sa11y-theme][data-placement^=right]>.tippy-arrow:before{border-right-color:var(--sa11y-panel-bg)}@media (forced-colors:active){.tippy-box[data-theme~=sa11y-theme][data-placement^=bottom]>.tippy-arrow:before,.tippy-box[data-theme~=sa11y-theme][data-placement^=left]>.tippy-arrow:before,.tippy-box[data-theme~=sa11y-theme][data-placement^=right]>.tippy-arrow:before,.tippy-box[data-theme~=sa11y-theme][data-placement^=top]>.tippy-arrow:before{filter:invert(1);forced-color-adjust:none}.tippy-box[data-theme~=sa11y-theme] .tippy-arrow{z-index:-1}}";
+var tooltipStyles = "a,button,code,div,h1,h2,kbd,li,ol,p,span,strong,svg,ul{all:unset;box-sizing:border-box!important}div{display:block}:after,:before{all:unset}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}@media (forced-colors:active){[data-tippy-root]{border:2px solid transparent;border-radius:5px}}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{border-top-color:initial;border-width:8px 8px 0;bottom:-7px;left:0;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:initial;border-width:0 8px 8px;left:0;top:-7px;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-left-color:initial;border-width:8px 0 8px 8px;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{border-right-color:initial;border-width:8px 8px 8px 0;left:-7px;transform-origin:center right}.tippy-arrow{color:#333;height:16px;width:16px}.tippy-arrow:before{border-color:transparent;border-style:solid;content:\"\";position:absolute}.tippy-content{padding:5px 9px;position:relative;z-index:1}.tippy-box[data-theme~=sa11y-theme][role=tooltip]{box-sizing:border-box!important}.tippy-box[data-theme~=sa11y-theme][role=tooltip][data-animation=fade][data-state=hidden]{opacity:0}.tippy-box[data-theme~=sa11y-theme][role=tooltip][data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}[role=dialog]{min-width:300px;text-align:start}[role=tooltip]{min-width:185px;text-align:center}.tippy-box[data-theme~=sa11y-theme]{-webkit-font-smoothing:auto;background-color:var(--sa11y-panel-bg);border-radius:4px;box-shadow:0 0 20px 4px rgba(154,161,177,.15),0 4px 80px -8px rgba(36,40,47,.25),0 4px 4px -2px rgba(91,94,105,.15)!important;color:var(--sa11y-panel-primary);display:block;font-family:var(--sa11y-font-face);font-size:var(--sa11y-normal-text);font-weight:400;letter-spacing:normal;line-height:22px;outline:0;padding:8px;position:relative;transition-property:transform,visibility,opacity}.tippy-box[data-theme~=sa11y-theme] code{font-family:monospace;font-size:calc(var(--sa11y-normal-text) - 1px)}.tippy-box[data-theme~=sa11y-theme] code,.tippy-box[data-theme~=sa11y-theme] kbd{-webkit-font-smoothing:auto;background-color:var(--sa11y-panel-badge);border-radius:3.2px;color:var(--sa11y-panel-primary);letter-spacing:normal;line-height:22px;padding:1.6px 4.8px}.tippy-box[data-theme~=sa11y-theme][data-placement^=top]{text-align:center}.tippy-box[data-theme~=sa11y-theme] .tippy-content{padding:5px 9px}.tippy-box[data-theme~=sa11y-theme] sub,.tippy-box[data-theme~=sa11y-theme] sup{font-size:var(--sa11y-small-text)}.tippy-box[data-theme~=sa11y-theme] ul{margin:0;margin-block-end:0;margin-block-start:0;padding:0;position:relative}.tippy-box[data-theme~=sa11y-theme] li{display:list-item;margin:5px 10px 0 20px;padding-bottom:5px}.tippy-box[data-theme~=sa11y-theme] a{color:var(--sa11y-hyperlink);cursor:pointer;text-decoration:underline}.tippy-box[data-theme~=sa11y-theme] a:focus,.tippy-box[data-theme~=sa11y-theme] a:hover{text-decoration:none}.tippy-box[data-theme~=sa11y-theme] strong{font-weight:600}.tippy-box[data-theme~=sa11y-theme] hr{background:var(--sa11y-panel-bg-splitter);border:none;height:1px;margin:10px 0;opacity:1;padding:0}.tippy-box[data-theme~=sa11y-theme] button.close-btn{margin:0}.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]{background:var(--sa11y-panel-bg-secondary);border:2px solid var(--sa11y-button-outline);border-radius:5px;color:var(--sa11y-panel-primary);cursor:pointer;display:block;margin:10px 5px 5px 0;padding:4px 8px}.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]:focus,.tippy-box[data-theme~=sa11y-theme] button[data-sa11y-dismiss]:hover{background:var(--sa11y-shortcut-hover)}.tippy-box[data-theme~=sa11y-theme][data-placement^=top]>.tippy-arrow:before{border-top-color:var(--sa11y-panel-bg)}.tippy-box[data-theme~=sa11y-theme][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:var(--sa11y-panel-bg)}.tippy-box[data-theme~=sa11y-theme][data-placement^=left]>.tippy-arrow:before{border-left-color:var(--sa11y-panel-bg)}.tippy-box[data-theme~=sa11y-theme][data-placement^=right]>.tippy-arrow:before{border-right-color:var(--sa11y-panel-bg)}@media (forced-colors:active){.tippy-box[data-theme~=sa11y-theme][data-placement^=bottom]>.tippy-arrow:before,.tippy-box[data-theme~=sa11y-theme][data-placement^=left]>.tippy-arrow:before,.tippy-box[data-theme~=sa11y-theme][data-placement^=right]>.tippy-arrow:before,.tippy-box[data-theme~=sa11y-theme][data-placement^=top]>.tippy-arrow:before{filter:invert(1);forced-color-adjust:none}.tippy-box[data-theme~=sa11y-theme] .tippy-arrow{z-index:-1}}";
class TooltipComponent extends HTMLElement {
connectedCallback() {
@@ -5660,18 +5935,23 @@ class TooltipComponent extends HTMLElement {
style.innerHTML = tooltipStyles + sharedStyles;
shadowRoot.appendChild(style);
- // Hide on Escape key.
+ /* Hide on Escape key.
const hideOnEsc = {
name: 'hideOnEsc',
defaultValue: true,
- fn({ hide }) {
- const onKeyDown = (event) => { if (event.keyCode === 27) { hide(); } };
+ fn({ hide, instance }) {
+ const onKeyDown = (event) => {
+ if (event.keyCode === 27) {
+ hide();
+ Constants.Panel.skip.focus();
+ }
+ };
return {
onShow() { document.addEventListener('keydown', onKeyDown); },
onHide() { document.removeEventListener('keydown', onKeyDown); },
};
},
- };
+ }; */
const buttons = [];
Elements.Annotations.Array.forEach((annotation) => {
@@ -5697,25 +5977,45 @@ class TooltipComponent extends HTMLElement {
},
appendTo: shadowRoot,
zIndex: 2147483645,
- plugins: [hideOnEsc],
+ // plugins: [hideOnEsc],
onShow(instance) {
const openedTooltip = instance.popper;
+
+ // Hide previously opened tooltip.
annotations.forEach((popper) => {
- // Hide previously opened tooltip.
if (popper !== openedTooltip) {
popper.hide();
}
});
- // Last opened
+ // Last opened tooltip.
const annotation = instance.reference.getRootNode().host;
annotation.setAttribute('data-sa11y-opened', '');
// Close button for tooltip.
- openedTooltip.querySelector('.close-btn').addEventListener('click', () => {
+ const closeButton = openedTooltip.querySelector('.close-btn');
+ const closeButtonHandler = () => {
instance.hide();
instance.reference.focus();
- });
+ };
+ closeButton.addEventListener('click', closeButtonHandler);
+
+ // Event listener for the escape key.
+ const escapeListener = (event) => {
+ if (event.key === 'Escape') {
+ instance.hide();
+ instance.reference.focus();
+ }
+ };
+ openedTooltip.addEventListener('keydown', escapeListener);
+
+ // Remove all event listeners.
+ const onHiddenTooltip = () => {
+ closeButton.removeEventListener('click', closeButtonHandler);
+ openedTooltip.removeEventListener('keydown', escapeListener);
+ openedTooltip.removeEventListener('hidden', onHiddenTooltip);
+ };
+ openedTooltip.addEventListener('hidden', onHiddenTooltip);
},
onTrigger(instance, event) {
if (event.type === 'click') {
@@ -5819,6 +6119,7 @@ function annotate(
inline = false,
position,
index,
+ dismissKey,
dismissAnnotationsOption,
) {
const validTypes = [
@@ -5847,8 +6148,9 @@ function annotate(
[validTypes[2]]: Lang._('GOOD'),
};
- // Add dismiss button if prop enabled.
- const dismiss = (dismissAnnotationsOption === true && type === 'warning') ? `` : '';
+ // Add dismiss button if prop enabled & dismiss key was defined.
+ const dismiss = (dismissAnnotationsOption === true && type === 'warning' && dismissKey !== undefined)
+ ? `` : '';
const instance = document.createElement('sa11y-annotation');
instance.setAttribute('data-sa11y-annotation', index);
@@ -5859,7 +6161,7 @@ function annotate(
// Page errors displayed to main panel.
Constants.Panel.pageIssues.classList.add('active');
Constants.Panel.panel.classList.add('has-page-issues');
- listItem.innerHTML = `${ariaLabel[type]} ${content}`;
+ listItem.innerHTML = `${ariaLabel[type]} ${content}${dismiss}`;
Constants.Panel.pageIssuesList.insertAdjacentElement('afterbegin', listItem);
} else {
// Button annotations.
@@ -5872,7 +6174,7 @@ function annotate(
class="sa11y-btn ${[type]}-btn${inline ? '-text' : ''}"
data-tippy-content=
"
-
+
${ariaLabel[type]}
${escapeHTML(content)}
${dismiss}
@@ -5880,10 +6182,7 @@ function annotate(
>`;
// Make sure annotations always appended outside of interactive elements.
- let location = element.closest('a, button');
- if (!location) {
- location = element;
- }
+ const location = element.closest('a, button') || element;
location.insertAdjacentElement(position, instance);
instance.shadowRoot.appendChild(create);
}
@@ -5995,16 +6294,21 @@ const getHiddenParent = ($el) => {
};
// Find scroll position.
-const getScrollPosition = ($el) => {
+const getScrollPosition = ($el, results) => {
const offsetTopPosition = $el.offsetTop;
if (offsetTopPosition === 0) {
- const shadowParent = $el.getRootNode().host;
- const visiblePosition = findVisibleParent(shadowParent, 'display', 'none');
+ const annotationHost = $el.getRootNode().host;
+ const visiblePosition = findVisibleParent(annotationHost, 'display', 'none');
+ const annotationIndex = parseInt(annotationHost.getAttribute('data-sa11y-annotation'), 10);
+
+ // Generate element preview for panel & report.
+ const issueObject = results.find((issue) => issue.id === annotationIndex);
+ const elementPreview = generateElementPreview(issueObject);
// Alert if tooltip is hidden.
getHiddenParent($el);
const tooltip = $el.getAttribute('data-tippy-content');
- createAlert(`${Lang._('NOT_VISIBLE_ALERT')}`, tooltip);
+ createAlert(`${Lang._('NOT_VISIBLE_ALERT')}`, tooltip, elementPreview);
closeAnyActiveTooltips();
@@ -6037,7 +6341,7 @@ const determineIndex = () => {
if (opened[0]) index = parseInt(opened[0].getAttribute('data-sa11y-position'), 10);
};
-const goToNext = () => {
+const goToNext = (results) => {
determineIndex();
const issues = Elements.Annotations.Array;
@@ -6046,7 +6350,7 @@ const goToNext = () => {
const annotation = issues[index + 1];
const button = annotation.shadowRoot.querySelector('button');
- const scrollPos = getScrollPosition(button);
+ const scrollPos = getScrollPosition(button, results);
window.scrollTo({
top: scrollPos,
@@ -6062,11 +6366,11 @@ const goToNext = () => {
index += 1;
};
-const goToPrev = () => {
+const goToPrev = (results) => {
determineIndex();
if (index > 0) {
const button = Elements.Annotations.Array[index - 1].shadowRoot.querySelector('button');
- const scrollPos = getScrollPosition(button);
+ const scrollPos = getScrollPosition(button, results);
window.scrollTo({
top: scrollPos,
@@ -6086,295 +6390,457 @@ const goToPrev = () => {
}
};
-function keyboardShortcut(e) {
+function keyboardShortcut(e, results) {
if (
Elements.Annotations.Array.length
&& !Constants.Panel.skipButton.hasAttribute('disabled')
) {
if (e.altKey && e.code === 'KeyS') {
e.preventDefault();
- goToNext();
+ goToNext(results);
} else if (e.altKey && e.code === 'KeyW') {
e.preventDefault();
- goToPrev();
+ goToPrev(results);
}
}
}
-function handleSkipButton() {
- goToNext();
-}
-
-const keyboardShortcutHandler = (event) => keyboardShortcut(event);
-const handleSkipButtonHandler = (event) => handleSkipButton();
+// Attach event listeners.
+let keyboardShortcutHandler;
+let handleSkipButtonHandler;
+function skipToIssue(results) {
+ keyboardShortcutHandler = (e) => {
+ keyboardShortcut(e, results);
+ };
+ handleSkipButtonHandler = () => {
+ goToNext(results);
+ };
-function skipToIssue() {
- // Attach keyboard and click event listeners.
document.addEventListener('keydown', keyboardShortcutHandler);
Constants.Panel.skipButton.addEventListener('click', handleSkipButtonHandler);
}
-// Imported by reset.js
+// Imported by Reset function.
function removeSkipBtnListeners() {
document.removeEventListener('keydown', keyboardShortcutHandler);
Constants.Panel.skipButton.removeEventListener('click', handleSkipButtonHandler);
}
-function checkImages(results) {
- const containsAltTextStopWords = (alt) => {
- const altUrl = [
- '.png',
- '.jpg',
- '.jpeg',
- '.webp',
- '.gif',
- '.tiff',
- '.svg',
- 'DSC_',
- ];
+/* eslint-disable no-use-before-define */
- const hit = [null, null, null];
- altUrl.forEach((word) => {
- if (alt.toLowerCase().indexOf(word) >= 0) {
- hit[0] = word;
- }
- });
- Lang._('SUSPICIOUS_ALT_STOPWORDS').forEach((word) => {
- if (alt.toLowerCase().indexOf(word) >= 0) {
- hit[1] = word;
- }
- });
- Lang._('PLACEHOLDER_ALT_STOPWORDS').forEach((word) => {
- if (alt.length === word.length && alt.toLowerCase().indexOf(word) >= 0) {
- hit[2] = word;
- }
- });
- return hit;
- };
+/* Get text content of pseudo elements. */
+const wrapPseudoContent = (element, string) => {
+ const pseudo = [];
+ pseudo[0] = window.getComputedStyle(element, ':before').getPropertyValue('content');
+ pseudo[1] = window.getComputedStyle(element, ':after').getPropertyValue('content');
+ pseudo[0] = pseudo[0] === 'none' ? '' : pseudo[0].replace(/^"(.*)"$/, '$1');
+ pseudo[1] = pseudo[1] === 'none' ? '' : pseudo[1].replace(/^"(.*)"$/, '$1');
+ return ` ${pseudo[0]}${string}${pseudo[1]}`;
+};
- Elements.Found.Images.forEach(($el) => {
- const alt = $el.getAttribute('alt');
- if (alt === null) {
- if ($el.closest('a[href]')) {
- if (fnIgnore($el.closest('a[href]')).textContent.trim().length >= 1) {
- results.push({
- element: $el,
- type: 'error',
- content: Lang.sprintf('MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE'),
- inline: false,
- position: 'beforebegin',
- });
- } else if (fnIgnore($el.closest('a[href]')).textContent.trim().length === 0) {
- results.push({
- element: $el,
- type: 'error',
- content: Lang.sprintf('MISSING_ALT_LINK_MESSAGE'),
- inline: false,
- position: 'beforebegin',
- });
- }
- } else {
- // General failure message if image is missing alt.
- results.push({
- element: $el,
- type: 'error',
- content: Lang.sprintf('MISSING_ALT_MESSAGE'),
- inline: false,
- position: 'beforebegin',
- });
+/* Sets treeWalker loop to last node before next branch. */
+const nextTreeBranch = (tree) => {
+ for (let i = 0; i < 1000; i++) {
+ if (tree.nextSibling()) {
+ // Prepare for continue to advance.
+ return tree.previousNode();
+ }
+ // Next node will be in next branch.
+ if (!tree.parentNode()) {
+ return false;
+ }
+ }
+ return false;
+};
+
+/* Compute ARIA attributes. */
+const computeAriaLabel = (element, recursing = false) => {
+ const labelledBy = element.getAttribute('aria-labelledby');
+ if (!recursing && labelledBy) {
+ const target = labelledBy.split(/\s+/);
+ if (target.length > 0) {
+ let returnText = '';
+ target.forEach((x) => {
+ const targetSelector = document.querySelector(`#${CSS.escape(x)}`);
+ returnText += (!targetSelector) ? '' : `${computeAccessibleName(targetSelector, '', 1)}`;
+ });
+ return returnText;
+ }
+ }
+ if (element.ariaLabel && element.ariaLabel.trim().length > 0) {
+ // To-do: add empty and whitespace string tests.
+ return element.ariaLabel;
+ }
+ return 'noAria';
+};
+
+/**
+ * Computes the accessible name of an element.
+ * @param {Element} element The element for which the accessible name needs to be computed.
+ * @param {String} exclusions List of selectors which will be ignored.
+ * @param {Number} recursing Recursion depth.
+ * @returns {string} The computed accessible name of the element.
+ * @kudos to John Jameson, creator of the Editoria11y library, for developing this more robust calculation!
+ * @notes Uses a subset of the W3C accessible name algorithm.
+*/
+const computeAccessibleName = (element, exclusions, recursing = 0) => {
+ // Return immediately if there is an aria label.
+ const hasAria = computeAriaLabel(element, recursing);
+ if (hasAria !== 'noAria') {
+ return hasAria;
+ }
+
+ // Return immediately if there is only a text node.
+ let computedText = '';
+ if (!element.children.length) {
+ // Just text! Output immediately.
+ computedText = wrapPseudoContent(element, element.textContent);
+ if (!computedText.trim() && element.hasAttribute('title')) {
+ return element.getAttribute('title');
+ }
+ return computedText;
+ }
+
+ // Create tree walker object.
+ function createCustomTreeWalker(rootNode, showElement, showText) {
+ const acceptNode = (node) => {
+ if (showElement && node.nodeType === Node.ELEMENT_NODE) return NodeFilter.FILTER_ACCEPT;
+ if (showText && node.nodeType === Node.TEXT_NODE) return NodeFilter.FILTER_ACCEPT;
+ return NodeFilter.FILTER_REJECT;
+ };
+ return document.createTreeWalker(rootNode, NodeFilter.SHOW_ALL, { acceptNode });
+ }
+ const treeWalker = createCustomTreeWalker(element, true, true);
+
+ // Otherwise, recurse into children.
+ let addTitleIfNoName = false;
+ let aText = false;
+ let count = 0;
+ let shouldContinueWalker = true;
+
+ const exclude = (exclusions) ? element.querySelectorAll(exclusions) : '';
+
+ while (treeWalker.nextNode() && shouldContinueWalker) {
+ count += 1;
+
+ // Exclusions.
+ const currentNodeMatchesExclude = Array.from(exclude).some((excludedNode) => excludedNode.contains(treeWalker.currentNode));
+
+ if (currentNodeMatchesExclude) ; else if (treeWalker.currentNode.nodeType === Node.TEXT_NODE) {
+ computedText += ` ${treeWalker.currentNode.nodeValue}`;
+ } else if (addTitleIfNoName && !treeWalker.currentNode.closest('a')) {
+ if (aText === computedText) {
+ computedText += addTitleIfNoName;
}
+ addTitleIfNoName = false;
+ aText = false;
+ } else if (treeWalker.currentNode.hasAttribute('aria-hidden') && !(recursing && count < 3)) {
+ if (!nextTreeBranch(treeWalker)) shouldContinueWalker = false;
} else {
- // If alt attribute is present, further tests are done.
- const altText = sanitizeHTML(alt); // Prevent tooltip from breaking.
- const error = containsAltTextStopWords(altText);
- const altLength = alt.length;
- const src = $el.getAttribute('src');
- const baseSrc = (!src) ? $el.getAttribute('srcset') : src;
+ const aria = computeAriaLabel(treeWalker.currentNode, recursing);
+ if (aria !== 'noAria') {
+ computedText += ` ${aria}`;
+ if (!nextTreeBranch(treeWalker)) shouldContinueWalker = false;
+ } else {
+ switch (treeWalker.currentNode.tagName) {
+ case 'STYLE':
+ case 'NOSCRIPT':
+ if (!nextTreeBranch(treeWalker)) shouldContinueWalker = false;
+ break;
+ case 'IMG':
+ if (treeWalker.currentNode.hasAttribute('alt')) {
+ computedText += treeWalker.currentNode.getAttribute('alt');
+ }
+ break;
+ case 'SVG':
+ case 'svg':
+ if (treeWalker.currentNode.getAttribute('role') === 'image'
+ && treeWalker.currentNode.hasAttribute('alt')) {
+ computedText += wrapPseudoContent(
+ treeWalker.currentNode, treeWalker.currentNode.getAttribute('alt'),
+ );
+ if (!nextTreeBranch(treeWalker)) shouldContinueWalker = false;
+ }
+ break;
+ case 'A':
+ if (treeWalker.currentNode.hasAttribute('title')) {
+ addTitleIfNoName = treeWalker.currentNode.getAttribute('title');
+ aText = computedText;
+ } else {
+ addTitleIfNoName = false;
+ aText = false;
+ }
+ computedText += wrapPseudoContent(treeWalker.currentNode, '');
+ break;
+ default:
+ computedText += wrapPseudoContent(treeWalker.currentNode, '');
+ break;
+ }
+ }
+ }
+ }
- if ($el.closest('a[href]') && $el.closest('a[href]').getAttribute('tabindex') === '-1' && $el.closest('a[href]').getAttribute('aria-hidden') === 'true') ; else if (error[0] !== null && $el.closest('a[href]')) {
- // Image fails if a stop word was found.
- results.push({
- element: $el,
- type: 'error',
- content: Lang.sprintf('LINK_IMAGE_BAD_ALT_MESSAGE', error[0], altText),
- inline: false,
- position: 'beforebegin',
- });
- } else if (error[2] !== null && $el.closest('a[href]')) {
+ if (addTitleIfNoName && !aText) {
+ computedText += ` ${addTitleIfNoName}`;
+ }
+
+ // Replace Private Use Area (PUA) unicode characters.
+ // https://www.unicode.org/faq/private_use.html
+ const puaRegex = /[\uE000-\uF8FF]/gu;
+ computedText = computedText.replace(puaRegex, '');
+
+ // If computedText returns blank, fallback on title attribute.
+ if (!computedText.trim() && element.hasAttribute('title')) {
+ return element.getAttribute('title');
+ }
+
+ return computedText;
+};
+
+function checkImages(results, option) {
+ const containsAltTextStopWords = (alt) => {
+ const altUrl = [
+ '.png',
+ '.jpg',
+ '.jpeg',
+ '.webp',
+ '.gif',
+ '.tiff',
+ '.svg',
+ 'DSC_',
+ 'IMG_',
+ 'Photo_',
+ 'Pic_',
+ 'Pexels_',
+ 'AdobeStock_',
+ 'ScreenShot_',
+ 'Picture_',
+ 'Snap_',
+ 'Capture_',
+ ];
+
+ const hit = [null, null, null];
+ altUrl.forEach((word) => {
+ const stopword = word.toLowerCase();
+ if (alt.toLowerCase().indexOf(stopword) >= 0) {
+ hit[0] = word;
+ }
+ });
+ Lang._('SUSPICIOUS_ALT_STOPWORDS').forEach((word) => {
+ if (alt.toLowerCase().indexOf(word) >= 0) {
+ hit[1] = word;
+ }
+ });
+ Lang._('PLACEHOLDER_ALT_STOPWORDS').forEach((word) => {
+ if (alt.length === word.length && alt.toLowerCase().indexOf(word) >= 0) {
+ hit[2] = word;
+ }
+ });
+ return hit;
+ };
+
+ Elements.Found.Images.forEach(($el) => {
+ const alt = $el.getAttribute('alt');
+ const link = $el.closest('a[href]');
+
+ // Process link text exclusions.
+ const linkSpanExclusions = link
+ ? fnIgnore(link, Constants.Exclusions.LinkSpan).textContent : '';
+ const stringMatchExclusions = option.linkIgnoreStrings
+ ? linkSpanExclusions.replace(option.linkIgnoreStrings, '') : linkSpanExclusions;
+ const linkTextContentLength = link
+ ? removeWhitespace(stringMatchExclusions).length : 0;
+
+ // Has aria-hidden.
+ if ($el.getAttribute('aria-hidden') === 'true') {
+ return;
+ }
+
+ if (link && link.getAttribute('aria-hidden') === 'true') {
+ // If linked image has aria-hidden, but is still focusable.
+ const unfocusable = link.getAttribute('tabindex') === '-1';
+ if (!unfocusable) {
results.push({
element: $el,
type: 'error',
- content: Lang.sprintf('LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE', altText),
- inline: false,
- position: 'beforebegin',
- });
- } else if (error[1] !== null && $el.closest('a[href]')) {
- const key = prepareDismissal(`LINKEDIMAGE${baseSrc + altText}`);
- results.push({
- element: $el,
- type: 'warning',
- content: Lang.sprintf('LINK_IMAGE_SUS_ALT_MESSAGE', error[1], altText),
+ content: Lang.sprintf('LINK_HIDDEN_FOCUSABLE'),
inline: false,
position: 'beforebegin',
- dismiss: key,
});
- } else if (error[0] !== null) {
+ }
+ return;
+ }
+
+ // If alt is missing.
+ if (alt === null) {
+ if (link) {
+ const content = (linkTextContentLength === 0)
+ ? Lang.sprintf('MISSING_ALT_LINK_MESSAGE')
+ : Lang.sprintf('MISSING_ALT_LINK_BUT_HAS_TEXT_MESSAGE');
+
results.push({
element: $el,
type: 'error',
- content: Lang.sprintf('LINK_ALT_HAS_BAD_WORD_MESSAGE', error[0], altText),
+ content,
inline: false,
position: 'beforebegin',
});
- } else if (error[2] !== null) {
+ } else {
+ // General failure message if image is missing alt.
results.push({
element: $el,
type: 'error',
- content: Lang.sprintf('ALT_PLACEHOLDER_MESSAGE', altText),
- inline: false,
- position: 'beforebegin',
- });
- } else if (error[1] !== null) {
- const key = prepareDismissal(`IMAGE${baseSrc + altText + error[1]}`);
- results.push({
- element: $el,
- type: 'warning',
- content: Lang.sprintf('ALT_HAS_SUS_WORD', error[1], altText),
+ content: Lang.sprintf('MISSING_ALT_MESSAGE'),
inline: false,
position: 'beforebegin',
- dismiss: key,
});
- } else if ((alt === '' || alt === ' ') && $el.closest('a[href]')) {
- if ($el.closest('a[href]').getAttribute('tabindex') === '-1' && $el.closest('a[href]').getAttribute('aria-hidden') === 'true') ; else if ($el.closest('a[href]').getAttribute('aria-hidden') === 'true') {
+ }
+ } else {
+ // If image has alt.
+ const altText = sanitizeHTML(alt);
+ const error = containsAltTextStopWords(altText);
+ const decorative = (alt === '' || alt === ' ');
+
+ // Figure elements.
+ const figure = $el.closest('figure');
+ const figcaption = figure?.querySelector('figcaption');
+ const figcaptionText = (figcaption) ? figcaption.textContent.trim() : '';
+
+ // Image's source for key.
+ const src = ($el.getAttribute('src')) ? $el.getAttribute('src') : $el.getAttribute('srcset');
+
+ // Decorative images.
+ if (decorative) {
+ const key = prepareDismissal(`DECORATIVE${src}`);
+ if (link) {
+ const type = (linkTextContentLength === 0) ? 'error' : 'good';
+ const content = (linkTextContentLength === 0)
+ ? Lang.sprintf('LINK_IMAGE_NO_ALT_TEXT')
+ : Lang.sprintf('LINK_IMAGE_HAS_TEXT');
+
results.push({
element: $el,
- type: 'error',
- content: Lang.sprintf('LINK_IMAGE_ARIA_HIDDEN'),
+ type,
+ content,
inline: false,
position: 'beforebegin',
});
- } else if (fnIgnore($el.closest('a[href]')).textContent.trim().length === 0) {
+ } else if (figure) {
+ const content = (figcaption && figcaptionText.length)
+ ? Lang.sprintf('IMAGE_FIGURE_DECORATIVE')
+ : Lang.sprintf('IMAGE_DECORATIVE');
+
results.push({
element: $el,
- type: 'error',
- content: Lang.sprintf('LINK_IMAGE_NO_ALT_TEXT'),
+ type: 'warning',
+ content,
inline: false,
position: 'beforebegin',
+ dismiss: key,
});
} else {
results.push({
element: $el,
- type: 'good',
- content: Lang.sprintf('LINK_IMAGE_HAS_TEXT'),
+ type: 'warning',
+ content: Lang.sprintf('IMAGE_DECORATIVE'),
inline: false,
position: 'beforebegin',
+ dismiss: key,
});
}
- } else if (alt.length > 250 && $el.closest('a[href]')) {
- const key = prepareDismissal(`LINKEDIMAGE${baseSrc + altText + alt.length}`);
- // Link and contains alt text.
+ return;
+ }
+
+ // Alt text quality.
+ if (error[0] !== null) {
+ // Has stop words.
+ const content = (link)
+ ? Lang.sprintf('LINK_ALT_HAS_FILE_EXTENSION', error[0], altText)
+ : Lang.sprintf('ALT_HAS_FILE_EXTENSION', error[0], altText);
+
+ results.push({
+ element: $el,
+ type: 'error',
+ content,
+ inline: false,
+ position: 'beforebegin',
+ });
+ } else if (error[2] !== null) {
+ // Placeholder words.
+ const content = (link)
+ ? Lang.sprintf('LINK_IMAGE_PLACEHOLDER_ALT_MESSAGE', altText)
+ : Lang.sprintf('ALT_PLACEHOLDER_MESSAGE', altText);
+
+ results.push({
+ element: $el,
+ type: 'error',
+ content,
+ inline: false,
+ position: 'beforebegin',
+ });
+ } else if (error[1] !== null) {
+ // Suspicious words.
+ const key = prepareDismissal(`${src + altText}`);
+ const content = (link)
+ ? Lang.sprintf('LINK_IMAGE_SUS_ALT_MESSAGE', error[1], altText)
+ : Lang.sprintf('ALT_HAS_SUS_WORD', error[1], altText);
+
results.push({
element: $el,
type: 'warning',
- content: Lang.sprintf('LINK_IMAGE_LONG_ALT', altLength, altText),
+ content,
inline: false,
position: 'beforebegin',
dismiss: key,
});
- } else if (alt !== '' && $el.closest('a[href]') && fnIgnore($el.closest('a[href]')).textContent.trim().length === 0) {
- const key = prepareDismissal(`LINKEDIMAGE${baseSrc + altText}`);
- // Link and contains an alt text.
+ } else if (alt.length > option.altTextMaxCharLength) {
+ // Alt is too long.
+ const key = prepareDismissal(`${src + altText + alt.length}`);
+ const content = (link)
+ ? Lang.sprintf('LINK_IMAGE_LONG_ALT', alt.length, altText)
+ : Lang.sprintf('IMAGE_ALT_TOO_LONG', alt.length, altText);
+
results.push({
element: $el,
type: 'warning',
- content: Lang.sprintf('LINK_IMAGE_ALT_WARNING', altText),
+ content,
inline: false,
position: 'beforebegin',
dismiss: key,
});
- } else if (alt !== '' && $el.closest('a[href]') && fnIgnore($el.closest('a[href]')).textContent.trim().length >= 1) {
- const key = prepareDismissal(`LINKEDIMAGE${baseSrc + altText}`);
- // Contains alt text & surrounding link text.
+ } else if (link) {
+ // Has both link text and alt text.
+ const key = prepareDismissal(`${src + altText}`);
+ const accName = computeAccessibleName(link);
+ const removeWhitespace$1 = removeWhitespace(accName);
+ const sanitizedText = sanitizeHTML(removeWhitespace$1);
+ const content = (linkTextContentLength === 0)
+ ? Lang.sprintf('LINK_IMAGE_ALT_WARNING', altText)
+ : Lang.sprintf('LINK_IMAGE_ALT_AND_TEXT_WARNING', altText, sanitizedText);
+
results.push({
element: $el,
type: 'warning',
- content: Lang.sprintf('LINK_IMAGE_ALT_AND_TEXT_WARNING', altText),
+ content,
inline: false,
position: 'beforebegin',
dismiss: key,
});
- } else if (alt === '' || alt === ' ') {
- // Decorative alt and not a link.
- if ($el.closest('figure')) {
- const figcaption = $el.closest('figure').querySelector('figcaption');
- if (figcaption !== null && figcaption.textContent.trim().length >= 1) {
- const key = prepareDismissal(`DECORATIVE${baseSrc}`);
- results.push({
- element: $el,
- type: 'warning',
- content: Lang.sprintf('IMAGE_FIGURE_DECORATIVE'),
- inline: false,
- position: 'beforebegin',
- dismiss: key,
- });
- } else {
- const key = prepareDismissal(`DECORATIVE${baseSrc}`);
- results.push({
- element: $el,
- type: 'warning',
- content: Lang.sprintf('IMAGE_DECORATIVE'),
- inline: false,
- position: 'beforebegin',
- dismiss: key,
- });
- }
- } else {
- const key = prepareDismissal(`DECORATIVE${baseSrc}`);
+ } else if (figure) {
+ // Figure element has same alt and caption text.
+ const duplicate = !!figcaption && (figcaptionText.toLowerCase() === altText.trim().toLowerCase());
+ if (duplicate) {
+ const key = prepareDismissal(`FIGURE${src + altText}`);
results.push({
element: $el,
type: 'warning',
- content: Lang.sprintf('IMAGE_DECORATIVE'),
+ content: Lang.sprintf('IMAGE_FIGURE_DUPLICATE_ALT', altText),
inline: false,
position: 'beforebegin',
dismiss: key,
});
- }
- } else if (alt.length > 250) {
- const key = prepareDismissal(`IMAGE${baseSrc + altText + alt.length}`);
- results.push({
- element: $el,
- type: 'warning',
- content: Lang.sprintf('IMAGE_ALT_TOO_LONG', altLength, altText),
- inline: false,
- position: 'beforebegin',
- dismiss: key,
- });
- } else if (alt !== '') {
- // Figure element has same alt and caption text.
- if ($el.closest('figure')) {
- const figcaption = $el.closest('figure').querySelector('figcaption');
- if (!!figcaption
- && (figcaption.textContent.trim().toLowerCase() === altText.trim().toLowerCase())) {
- const key = prepareDismissal(`FIGURE${baseSrc + altText}`);
- results.push({
- element: $el,
- type: 'warning',
- content: Lang.sprintf('IMAGE_FIGURE_DUPLICATE_ALT', altText),
- inline: false,
- position: 'beforebegin',
- dismiss: key,
- });
- } else {
- results.push({
- element: $el,
- type: 'good',
- content: Lang.sprintf('IMAGE_PASS', altText),
- inline: false,
- position: 'beforebegin',
- });
- }
} else {
- // If image has alt text - pass!
+ // Figure has alt text!
results.push({
element: $el,
type: 'good',
@@ -6383,39 +6849,42 @@ function checkImages(results) {
position: 'beforebegin',
});
}
+ } else {
+ // Image has alt text!
+ results.push({
+ element: $el,
+ type: 'good',
+ content: Lang.sprintf('IMAGE_PASS', altText),
+ inline: false,
+ position: 'beforebegin',
+ });
}
}
});
- return { results };
+ return results;
}
-function checkHeaders(
- results,
- nonConsecutiveHeadingIsError,
- flagLongHeadings,
- missingH1,
- headingOutline,
-) {
+function checkHeaders(results, option, headingOutline) {
let prevLevel;
Elements.Found.Headings.forEach(($el, i) => {
- const ignore = fnIgnore($el); // Ignore unwanted \n \n \n \n ${t._("RESULTS")}
\n \n \n \n ${g}\n ${m}\n ${f}\n \n
\n \n ${l}\n ${d}\n ${c}\n \n \n