diff --git a/image.css b/image.css index 3b7acb8..697cdc8 100644 --- a/image.css +++ b/image.css @@ -13,3 +13,30 @@ right: 0; transform: none; } +.h5p-image .h5p-image-button-play { + background-color: rgb(23,104,196); + border: none; + box-sizing: border-box; + color: #fff; + font-family: 'H5PFontAwesome4'; + height: 3em; + margin: 0; + padding: 0; + position: absolute; + right: 0.5em; + top: 0.5em; + width: 3em; +} +.h5p-image .h5p-image-button-play:hover { + background-color: rgba(23,104,196,0.9); + cursor: pointer; +} +.h5p-image .h5p-image-button-play:active { + background-color: rgba(23,104,196,0.95); +} +.h5p-image .h5p-image-button-play::before { + content: "\f04b"; +} +.h5p-image .h5p-image-button-play.pause::before { + content: "\f04c"; +} diff --git a/image.js b/image.js index 0a011a7..b3952be 100755 --- a/image.js +++ b/image.js @@ -11,6 +11,9 @@ var H5P = H5P || {}; H5P.Image = function (params, id, extras) { H5P.EventDispatcher.call(this); this.extras = extras; + this.params = params; + this.params.startImageAnimation = 'Start image animation'; + this.params.stopImageAnimation = 'Stop image animation'; if (params.file === undefined || !(params.file instanceof Object)) { this.placeholder = true; @@ -19,6 +22,7 @@ var H5P = H5P || {}; this.source = H5P.getPath(params.file.path, id); this.width = params.file.width; this.height = params.file.height; + this.mime = params.file.mime || ''; } this.alt = (!params.decorative && params.alt !== undefined) ? @@ -42,6 +46,7 @@ var H5P = H5P || {}; H5P.Image.prototype.attach = function ($wrapper) { var self = this; var source = this.source; + self.$wrapper = $wrapper; if (self.$img === undefined) { if(self.placeholder) { @@ -73,8 +78,205 @@ var H5P = H5P || {}; } $wrapper.addClass('h5p-image').html(self.$img); + + /* + * Only handle if image is gif, animation is essential and user requested + * reduced motion + * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion + */ + if ( + this.mime === 'image/gif' && + !this.params.isAnimationEssential && + window.matchMedia('(prefers-reduced-motion: reduce)')?.matches + ) { + self.on('loaded', function () { + const image = self.$img.get(0); + + // Promise resolving with true if src is animated gif + self.isGIFAnimated(image.src).then(function (isAnimated) { + if (!isAnimated) { + return; // GIF is not animated + } + + self.staticImage = self.buildStaticReplacement(image); + + // Add button to toggle gif animation on/off + self.playButton = document.createElement('button'); + self.playButton.classList.add('h5p-image-button-play'); + self.playButton.setAttribute('type', 'button'); + self.playButton.addEventListener('click', function () { + self.swapImage(); + }); + $wrapper.get(0).append(self.playButton); + + self.showsStaticImage = true; + self.swapImage(); + }, function () { + return; // Error + }); + }); + } + }; + + /** + * Swap image. Used to switch between animated image and static image. + */ + H5P.Image.prototype.swapImage = function() { + this.showsStaticImage = !this.showsStaticImage; + + this.playButton.classList.toggle('pause', this.showsStaticImage); + if (this.showsStaticImage) { + this.$wrapper.get(0).replaceChild(this.$img.get(0), this.staticImage); + this.playButton.setAttribute( + 'aria-label', this.params.stopImageAnimation + ); + } + else { + this.$wrapper.get(0).replaceChild(this.staticImage, this.$img.get(0)); + this.playButton.setAttribute( + 'aria-label', this.params.startImageAnimation + ); + } + + this.trigger('resize'); }; + /** + * Build static replacement of image. + * + * @param {HTMLImageElement} image Image to get static replacement for. + * @returns {HTMLImageElement|HTMLCanvasElement} Static replacement. + */ + H5P.Image.prototype.buildStaticReplacement = function (image) { + if (!image) { + return; + } + + // Image size is likely float, but canvas size cannot. + const style = window.getComputedStyle(image); + const imageSize = { + height: Math.round(parseFloat(style.getPropertyValue('height'))), + width: Math.round(parseFloat(style.getPropertyValue('width'))) + } + + // Copy image to canvas + const canvas = document.createElement('canvas'); + canvas.width = imageSize.width; + canvas.height = imageSize.height; + canvas + .getContext('2d') + .drawImage(image, 0, 0, imageSize.width, imageSize.height); + + // Try to retrieve encoded image URL + let newSrc; + let replacement; + try { + newSrc = canvas.toDataURL('image/gif'); + replacement = document.createElement('img'); + } + catch (error) { + // Fallback. e.g. cross-origin issues + replacement = canvas; + } + + /* + * toDataURL requires images on iOS to have a maximum size of 3 megapixels + * for devices with less than 256 MB RAM and 5 megapixels for devices with + * greater or equal than 256 MB RAM. + * https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html#//apple_ref/doc/uid/TP40006482-SW15 + */ + if (newSrc.length < 7) { + replacement = canvas; + } + + // Copy attributes of old source + for (let i = 0; i < image.attributes.length; i++) { + const attribute = image.attributes[i]; + replacement.setAttribute(attribute.name, attribute.value); + } + + if (newSrc) { + replacement.src = newSrc; + } + else { + // Common practice to make canvas behave like image to screen readers + replacement.setAttribute('role', 'img'); + if (image.getAttribute('alt')) { + replacement.setAttribute('aria-label', image.getAttribute('alt')); + } + } + + return replacement; + }; + + /** + * Determine whether a GIF file is animated. + * + * @param {string} url URL of GIF to be checked. + * @returns {Promise} Promise resolving with boolean, rejecting with xhr object extract. + */ + H5P.Image.prototype.isGIFAnimated = function (url) { + return new Promise(function (resolve, reject) { + const xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + + // Reject Promise if file could not be loaded + xhr.onreadystatechange = function () { + if (xhr.readyState === 4 && xhr.status !== 200) { + reject({ status: xhr.status, statusText: xhr.statusText }); + } + } + + /* + * Determine GIF delay time as indicator for animation + * @see https://gist.github.com/zakirt/faa4a58cec5a7505b10e3686a226f285 + */ + xhr.onload = function() { + const buffer = xhr.response; + + // Offset bytes for the header section + const HEADER_LEN = 6; + + // Offset bytes for logical screen description section + const LOGICAL_SCREEN_DESC_LEN = 7; + + // Start from last 4 bytes of Logical Screen Descriptor + const dv = new DataView(buffer, HEADER_LEN + LOGICAL_SCREEN_DESC_LEN - 3); + const globalColorTable = dv.getUint8(0); // aka packet byte + let globalColorTableSize = 0; + let offset = 0; + + // Check first bit, if 0, then we don't have Global Color Table + if (globalColorTable & 0x80) { + /* + * Grab last 3 bits to compute global color table + * size -> RGB * 2^(N+1). N is value in last 3 bits. + */ + globalColorTableSize = 3 * Math.pow(2, (globalColorTable & 0x7) + 1); + } + + // Move on to Graphics Control Extension + offset = 3 + globalColorTableSize; + + const extensionIntroducer = dv.getUint8(offset); + const graphicsConrolLabel = dv.getUint8(offset + 1); + let delayTime = 0; + + // Graphics Control Extension section is where GIF animation data is + // First 2 bytes must be 0x21 and 0xF9 + if (extensionIntroducer & 0x21 && graphicsConrolLabel & 0xf9) { + // Skip to 2 bytes with delay time + delayTime = dv.getUint16(offset + 4); + } + + resolve(Boolean(delayTime)); + }; + + xhr.send(); + }); + } + /** * Retrieve decoded HTML encoded string. * diff --git a/language/.en.json b/language/.en.json index 531c32d..a3fa264 100644 --- a/language/.en.json +++ b/language/.en.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternative text", "description": "Required. If the browser can't load the image this text will be displayed instead. Also used by \"text-to-speech\" readers." @@ -18,6 +22,14 @@ { "label": "Image content name", "default": "Image" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/af.json b/language/af.json index 221b91b..f944946 100644 --- a/language/af.json +++ b/language/af.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternatiewe teks", "description": "Vereis. Indien die webleser nie die prent kan laai nie, sal die teks vertoon word. Word ook gebruik vir \"teks-na-spraak\" lesers." @@ -18,6 +22,14 @@ { "label": "Prent inhoud naam", "default": "Prent" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/ar.json b/language/ar.json index f644c31..0043e3d 100644 --- a/language/ar.json +++ b/language/ar.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "النص البديل", "description": "مطلوبة. إذا كان المتصفح لم يتمكن من تحميل الصورة سيتم عرض هذا النص بدلا من ذلك. تستخدم أيضا من قبل مكبرات الصوت للقراءة" @@ -18,6 +22,14 @@ { "label": "اسم ملف الصورة", "default": "الصورة" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/bg.json b/language/bg.json index f261d30..9a36cc7 100644 --- a/language/bg.json +++ b/language/bg.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Алтернативен текст", "description": "Задължителен. Ако браузърът не може да зареди изображението, вместо него ще се покаже този текст. Използва се също и от екранните четци \"text-to-speech\"." @@ -18,6 +22,14 @@ { "label": "Име на тип съдържание Изображение", "default": "Изображение" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/bs.json b/language/bs.json index 4ece2ba..7d1c31d 100644 --- a/language/bs.json +++ b/language/bs.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternativni tekst", "description": "Obavezno. U slučaju da se slika ne pokaže onda će se pokazati ovaj tekst ili biti elektronskm glasom pročitan." @@ -18,6 +22,14 @@ { "label": "Naziv slike", "default": "Image" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/ca.json b/language/ca.json index 67627a3..05035d4 100644 --- a/language/ca.json +++ b/language/ca.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Text alternatiu", "description": "Requerit. Si el navegador no pot carregar la imatge es mostrarà aquest text. També s’utilitza per a lectors de \"text a veu\"." @@ -18,6 +22,14 @@ { "label": "Nom del contingut de la imatge", "default": "Imatge" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/cs.json b/language/cs.json index e28c9c8..64414fd 100644 --- a/language/cs.json +++ b/language/cs.json @@ -7,6 +7,10 @@ "label": "Pouze dekorační", "description": "Tuto možnost zvolte, pokud má být obrázek čistě dekoračního charakteru a nedodává obsahu stránky nové informace. Obrázek bude odečítači obrazovky ignorován a nebude doplněn alternativním textem." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternativní text", "description": "Povinné. Pokud prohlížeč nemůže načíst obrázek, zobrazí se místo toho tento text. Také se používá \"text-to-speech\" čtečka." @@ -18,6 +22,14 @@ { "label": "Název obsahu obrázku", "default": "Obrázek" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/cy.json b/language/cy.json index 5fc78f3..abff036 100644 --- a/language/cy.json +++ b/language/cy.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Testun amgen", "description": "Angenrheidiol. Os dyw'r porwr yn methu llwytho'r ddelwedd, caiff y testun hwn ei ddangos yn ei lle. Caiff ei ddefnyddio gan ddarllenwyr \"llefaru testun\" hefyd." @@ -18,6 +22,14 @@ { "label": "Enw cynnwys y ddelwedd", "default": "Delwedd" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/da.json b/language/da.json index 531c32d..a3fa264 100644 --- a/language/da.json +++ b/language/da.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternative text", "description": "Required. If the browser can't load the image this text will be displayed instead. Also used by \"text-to-speech\" readers." @@ -18,6 +22,14 @@ { "label": "Image content name", "default": "Image" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/de.json b/language/de.json index f35b6ff..936fdcc 100644 --- a/language/de.json +++ b/language/de.json @@ -7,6 +7,10 @@ "label": "Nur dekorativ", "description": "Wähle diese Option, wenn das Bild rein dekorativ ist und keine Informationen zum Inhalt der Seite hinzufügt. Es wird von Vorlesewerkzeugen ignoriert und erhält keinen Alternativtext." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternativtext", "description": "Erforderlich. Falls das Bild nicht geladen werden kann, wird dieser Text stattdessen angezeigt. Wird auch zum Vorlesen von Bildschirmtexten genutzt." @@ -18,6 +22,14 @@ { "label": "Name des Bildinhalts", "default": "Bild" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/el.json b/language/el.json index 8801316..7601214 100644 --- a/language/el.json +++ b/language/el.json @@ -7,6 +7,10 @@ "label": "Μόνο διακοσμητική", "description": "Ενεργοποιήστε αυτήν την επιλογή εάν η εικόνα είναι καθαρά διακοσμητική και δεν προσθέτει πληροφορίες στο περιεχόμενο της σελίδας. Θα αγνοηθεί από τους αναγνώστες οθόνης και δεν θα δοθεί εναλλακτικό κείμενο." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Εναλλακτικό κείμενο", "description": "Αυτό το κείμενο εμφανίζεται σε περίπτωση που ο φυλλομετρητής αδυνατεί να φορτώσει την εικόνα. Χρησιμοποιείται επίσης και κατά την ακουστική υποβοήθηση. (απαιτείται)" @@ -18,6 +22,14 @@ { "label": "Όνομα περιεχομένου εικόνας", "default": "Εικόνα" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/es-mx.json b/language/es-mx.json index dd8acad..eb2fcfc 100644 --- a/language/es-mx.json +++ b/language/es-mx.json @@ -7,6 +7,10 @@ "label": "Decorativo solamente", "description": "Habilite esta opción si la imagen es puramente decorativa y no añade información al contenido de la página. Será ignorada por lectores de pantalla en voz alta y no se le dará ningún texto alternativo." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Texto alternativo", "description": "Necesario. Si el navegador no puede cargar la imagen este texto será mostrado en su lugar. También es usado por lectores de \"texto-hablado\"." @@ -18,6 +22,14 @@ { "label": "Nombre del contenido de la imagen", "default": "Imagen" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/es.json b/language/es.json index 29c5b66..5d1c978 100644 --- a/language/es.json +++ b/language/es.json @@ -7,6 +7,10 @@ "label": "Decorativo solamente", "description": "Habilita esta opción si la imagen es puramente decorativa y no añade información al contenido de la página. Será ignorada por los lectores de pantalla y no se le dará ningún texto alternativo." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Texto alternativo", "description": "Necesario. Si el navegador no puede cargar la imagen, se mostrará este texto en su lugar. Usado también por lectores de pantalla." @@ -18,6 +22,14 @@ { "label": "Nombre del contenido de la imagen", "default": "Imagen" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/et.json b/language/et.json index 47ceb85..30900b1 100644 --- a/language/et.json +++ b/language/et.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternatiivtekst", "description": "Nõutud. Kui brauser ei saa pilti laadida, siis näidatakse seda teksti. Samuti kasutatakse \"text-to-speech\" lugejais." @@ -18,6 +22,14 @@ { "label": "Pildisisu nimi", "default": "Pilt" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/eu.json b/language/eu.json index b3d2d11..9334f29 100644 --- a/language/eu.json +++ b/language/eu.json @@ -7,6 +7,10 @@ "label": "Apaingarria baino ez", "description": "Aukera hau gaitu ezazu irudia apaingarria baino ez bada eta ez badio orriko edukiari informaziorik gehitzen. Pantaila irakurgailuek ez dute kontuan izango eta ez diote ordezko testurik emango." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Ordezko testua", "description": "Beharrezkoa da. Nabigatzaileak ezin badu irudia kargatu, bere ordez testu hau bistaratuko da. Testu-irakurleek ere erabilia." @@ -18,6 +22,14 @@ { "label": "Irudiaren edukiaren izena", "default": "Irudia" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/fa.json b/language/fa.json index 39948de..494ce55 100644 --- a/language/fa.json +++ b/language/fa.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "متن جایگزین", "description": "الزامی. اگر مروگر نتواند تصویر را بارگیری کند، این متن به جای آن نمایش داده خواهد شد. همچنین مبدل متن به گفتار از آن استفاده خواهد کرد." @@ -18,6 +22,14 @@ { "label": "نام محتوای تصویر", "default": "تصویر" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/fi.json b/language/fi.json index 8ed03ba..fb333c1 100644 --- a/language/fi.json +++ b/language/fi.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Vaihtoehtoinen kuvaus", "description": "Vaaditaan. Näytetään, jos selain ei saa ladattua kuvaa. Kuvausta käyttävät myös ruudunlukijasovellukset." @@ -18,6 +22,14 @@ { "label": "Sisältötyypin nimi", "default": "Kuva" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/fr.json b/language/fr.json index 394b881..03da209 100644 --- a/language/fr.json +++ b/language/fr.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Texte alternatif", "description": "Obligatoire. Ce texte sera affiché si l'image n'apparaît pas dans le navigateur." @@ -18,6 +22,14 @@ { "label": "Légende", "default": "Image" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/gl.json b/language/gl.json index e7a780d..a2bc459 100644 --- a/language/gl.json +++ b/language/gl.json @@ -7,6 +7,10 @@ "label": "Só decorativa", "description": "Activa esta opción se a imaxe e puramente decorativa e non engade ningunha información ao contido da páxina. Será ignorada polos lectores de pantalla e non terá texto alternativo." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Texto alternativo", "description": "Requirido. Se o navegador non pode cargar a imaxe, amosarase este texto no seu lugar. Úsase tamén para os lectores de pantalla." @@ -18,6 +22,14 @@ { "label": "Nome do contido da imaxe", "default": "Imaxe" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/he.json b/language/he.json index 07da29b..37005f1 100644 --- a/language/he.json +++ b/language/he.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "טקסט חלופי", "description": "נחוץ. אם הדפדפן לא יכול להעלות את התמונה טקסט זה יוצג במקום. בשימוש גם על ידי קוראי \"מטקסט לדיבור\"." @@ -18,6 +22,14 @@ { "label": "שם תוכן תמונה", "default": "תמונה" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/hu.json b/language/hu.json index 531c32d..a3fa264 100644 --- a/language/hu.json +++ b/language/hu.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternative text", "description": "Required. If the browser can't load the image this text will be displayed instead. Also used by \"text-to-speech\" readers." @@ -18,6 +22,14 @@ { "label": "Image content name", "default": "Image" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/it.json b/language/it.json index 17b7af7..c9cef6d 100644 --- a/language/it.json +++ b/language/it.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Testo alternativo", "description": "Richiesto. Se il browser non è in grado di caricare l'immagine sarà visualizzato questo testo. Usato anche per il lettore vocale." @@ -18,6 +22,14 @@ { "label": "Nome del contenuto dell'immagine", "default": "Immagine" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/ja.json b/language/ja.json index c98de17..e417764 100644 --- a/language/ja.json +++ b/language/ja.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "代替テキスト", "description": "必須。ブラウザーが画像をロードできない場合は、このテキストが代わりに表示されます。また、 リードスピーカーによって使用されます。" @@ -18,6 +22,14 @@ { "label": "画像のコンテンツ名", "default": "画像" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/ka.json b/language/ka.json index 64f9648..bcfd9fb 100644 --- a/language/ka.json +++ b/language/ka.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "ალტერნატიული ტექსტი", "description": "აუცილებელი. თუ ბრაუზერი გამოსახულებას არ ჩატვირთავს, ეს ტექსტი მის ნაცვლად გამოჩნდება. ასევე გამოიყენება \"ტექსტის გამხმოვანებლის მიერ\"." @@ -18,6 +22,14 @@ { "label": "გამოსახულების შიგთავსის დასახელება", "default": "გამოსახულება" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/km.json b/language/km.json index b852bc0..6a8c3a7 100644 --- a/language/km.json +++ b/language/km.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "ពាក្យជំនួស", "description": "ទាមទារ។ ប្រសិនបើកម្មវិធីបើកវិបសាយរបស់អ្នកមិនអាចដំណើរការរូបភាពនេះបាន វានឹងបង្ហាញពាក្យជំនួសនេះ។ ពាក្យនេះក៏ត្រូវបានប្រើក្នុងកម្មវិធីអានអត្ថបទជាសម្លេងផងដែរ។" @@ -18,6 +22,14 @@ { "label": "ឈ្មោះសម្រាប់មាតិកា «រូបភាព»", "default": "រូបភាព" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/ko.json b/language/ko.json index 14ecc72..a4f1c93 100644 --- a/language/ko.json +++ b/language/ko.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "대안 텍스트", "description": "필수. 브라우저에서 이미지를 로드할 수 없는 경우 이 텍스트가 대신 표시된다. 또한 \"text-to-speech\" 자동 문장 말하기 기능(text-to-speech)에 의해 사용됩니다." @@ -18,6 +22,14 @@ { "label": "이미지 콘텐츠 이름", "default": "이미지" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/lt.json b/language/lt.json index ebe2445..7e90413 100644 --- a/language/lt.json +++ b/language/lt.json @@ -7,6 +7,10 @@ "label": "Tik dekoratyvus", "description": "Įjunkite šią parinktį, jei vaizdas yra tik dekoratyvus ir neprideda jokios informacijos prie puslapio turinio. Ekrano skaitytuvai jo nepaisys ir nepateiks jokio alternatyvaus teksto." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternatyvus tekstas", "description": "Būtina. Jei naršyklė negali įkelti vaizdo, vietoj jo bus rodomas šis tekstas. Taip pat naudoja \"teksto į kalbą\" skaitytuvai." @@ -18,6 +22,14 @@ { "label": "Paveikslėlio turinio pavadinimas", "default": "Paveikslėlis" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/lv.json b/language/lv.json index f545c55..14bf644 100644 --- a/language/lv.json +++ b/language/lv.json @@ -7,6 +7,10 @@ "label": "Tikai dekoratīvs", "description": "Iespējojiet šo opciju, ja attēls ir tikai dekoratīvs un lapas saturam nepievieno nekādu informāciju. Ekrāna lasītāji to ignorēs, un tam netiks piešķirts alternatīvs teksts." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternatīvais teksts", "description": "Obligāts. Ja pārlūkprogramma nevar ielādēt attēlu, tā vietā tiks atspoguļots šis teksts. To izmanto arī asistīvās tehnoloģijas." @@ -18,6 +22,14 @@ { "label": "Attēla satura nosaukums", "default": "Attēls" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/mn.json b/language/mn.json index 72465af..e5c26cc 100644 --- a/language/mn.json +++ b/language/mn.json @@ -7,6 +7,10 @@ "label": "Засах боломжтой", "description": "Энэхүү сонголтыг сонгосноор зургыг засах боломжтой бөгөөд мэдээлэл нэмэх боломжгүй болно. Ямарваа нэгэн текстэн мэдээлэл нь харагдахгүй болно." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Нэмэлт текст", "description": "Шаардлагатай. Хэрэв броузер нь зургийг дэмжиж чадахгүй тохиолдолд текстэн мэдээлэл харагдана. Мөн текстээс яриа уруу хөврүүлэх болно." @@ -18,6 +22,14 @@ { "label": "Зургийн нэр", "default": "Зураг" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/nb.json b/language/nb.json index 0301fe8..f28eff8 100644 --- a/language/nb.json +++ b/language/nb.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternativ tekst", "description": "Påkrevd. Hvis bildet ikke kan lastes vises denne teksten istedenfor. Denne blir også brukt ved talesyntese." @@ -18,6 +22,14 @@ { "label": "Innholdsnavn for bilde", "default": "Image" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/nl.json b/language/nl.json index 0b33843..34bb3b5 100644 --- a/language/nl.json +++ b/language/nl.json @@ -7,6 +7,10 @@ "label": "Slechts decoratief", "description": "Schakel deze optie in als de afbeelding puur decoratief is en geen informatie aan de inhoud van de pagina toevoegt. Schermlezers negeren de afbeelding dan en geven ook geen alternatieve tekst." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternatieve tekst", "description": "Vereist. Als de browser deze afbeelding niet kan laden wordt deze tekst getoond. Ook gebruikt door \"tekst-naar-spraak\" lezers." @@ -18,6 +22,14 @@ { "label": "Naam afbeeldingsinhoud", "default": "Afbeelding" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/nn.json b/language/nn.json index 65064fb..eff232e 100644 --- a/language/nn.json +++ b/language/nn.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternativ tekst", "description": "Viss biletet ikkje kan lastast, blir denne teksten vist i istadenfor. Denne blir og nytta ved talesyntese." @@ -18,6 +22,14 @@ { "label": "Innhaldsnamn for bilete", "default": "Bilete" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/pl.json b/language/pl.json index 9eb243e..48084cb 100644 --- a/language/pl.json +++ b/language/pl.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Tekst alternatywny", "description": "Wymagany. Ten tekst zostanie wyświetlony, jeśli przeglądarka nie zdoła załadować obrazu. Potrzebny także dla czytników ekranu." @@ -18,6 +22,14 @@ { "label": "Nazwa obrazu", "default": "Obraz" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/pt-br.json b/language/pt-br.json index 0e6a4c3..3c71ab5 100644 --- a/language/pt-br.json +++ b/language/pt-br.json @@ -7,6 +7,10 @@ "label": "Apenas decorativo", "description": "Ative esta opção se a imagem for puramente decorativa e não acrescentar nenhuma informação ao conteúdo da página. Ela será ignorada pelos leitores de tela e não receberá nenhum texto alternativo." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Texto alternativo", "description": "Obrigatório. Se o navegador não for capaz de exibir a imagem, este texto será exibido. Também utilizado por leitores de tela." @@ -18,6 +22,14 @@ { "label": "Nome do conteúdo de imagem", "default": "Imagem" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/pt.json b/language/pt.json index 1133bd1..d78c7a1 100644 --- a/language/pt.json +++ b/language/pt.json @@ -7,6 +7,10 @@ "label": "Apenas decorativa", "description": "Selecionar esta opção se a imagem for apenas decorativa e não acrescentar qualquer informação ao conteúdo da página. Será assim ignorada pelos leitores de ecrã, e não lhe será atribuído um texto alternativo.." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Texto alternativo", "description": "Obrigatório. Se o navegador não puder carregar a imagem, será mostrado este texto. Também é usado por leitores de \"texto para voz\"." @@ -18,6 +22,14 @@ { "label": "Nome do conteúdo da imagem", "default": "Imagem" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/ro.json b/language/ro.json index 531c32d..a3fa264 100644 --- a/language/ro.json +++ b/language/ro.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternative text", "description": "Required. If the browser can't load the image this text will be displayed instead. Also used by \"text-to-speech\" readers." @@ -18,6 +22,14 @@ { "label": "Image content name", "default": "Image" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/ru.json b/language/ru.json index 3c353ee..c197749 100644 --- a/language/ru.json +++ b/language/ru.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Альтернативный текст", "description": "Обязательный. Если браузер не может загрузить изображение, этот текст будет отображаться вместо него. Также используется \"озвучкой текста\"." @@ -18,6 +22,14 @@ { "label": "Название содержимого изображения", "default": "Изображение" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/sl.json b/language/sl.json index b29ee22..8d719d5 100644 --- a/language/sl.json +++ b/language/sl.json @@ -7,6 +7,10 @@ "label": "Označi kot dekorativno", "description": "Oznaka opredeljuje sliko kot okrasno, ki ne dodaja vsebinskih informacij. Bralnik zaslona jo lahko zato prezre in ne posredujejo alternativnega besedila." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Nadomestno besedilo", "description": "Zahtevano. Besedilo se prikaže, če spletni brskalnik ne more naložiti slike. Besedilo uporabljajo tudi \"sintetizatorji govora\" (text-to-speech readers)." @@ -18,6 +22,14 @@ { "label": "Naslov vsebine slike", "default": "Slika" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/sma.json b/language/sma.json index 531c32d..a3fa264 100644 --- a/language/sma.json +++ b/language/sma.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternative text", "description": "Required. If the browser can't load the image this text will be displayed instead. Also used by \"text-to-speech\" readers." @@ -18,6 +22,14 @@ { "label": "Image content name", "default": "Image" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/sme.json b/language/sme.json index 531c32d..a3fa264 100644 --- a/language/sme.json +++ b/language/sme.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternative text", "description": "Required. If the browser can't load the image this text will be displayed instead. Also used by \"text-to-speech\" readers." @@ -18,6 +22,14 @@ { "label": "Image content name", "default": "Image" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/smj.json b/language/smj.json index 531c32d..a3fa264 100644 --- a/language/smj.json +++ b/language/smj.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternative text", "description": "Required. If the browser can't load the image this text will be displayed instead. Also used by \"text-to-speech\" readers." @@ -18,6 +22,14 @@ { "label": "Image content name", "default": "Image" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/sr.json b/language/sr.json index 531c32d..a3fa264 100644 --- a/language/sr.json +++ b/language/sr.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternative text", "description": "Required. If the browser can't load the image this text will be displayed instead. Also used by \"text-to-speech\" readers." @@ -18,6 +22,14 @@ { "label": "Image content name", "default": "Image" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/sv.json b/language/sv.json index 32cd116..5ad5ca7 100644 --- a/language/sv.json +++ b/language/sv.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternativ text", "description": "Obligatorisk. Om bilden inte kan laddas i användarens webbläsare så kommer denna text visas istället. Används också av \"skärmläsare\"." @@ -18,6 +22,14 @@ { "label": "Namn på bildinnehåll", "default": "Bild" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/sw.json b/language/sw.json index 8d2a9a3..10f8c7b 100644 --- a/language/sw.json +++ b/language/sw.json @@ -7,6 +7,10 @@ "label": "Mapambo tu", "description": "Washa chaguo hili ikiwa picha ni ya mapambo tu na haiongezi habari yoyote kwa maudhui kwenye ukurasa. Itapuuzwa na visoma skrini na haitapewa maandishi yoyote mbadala." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Maandishi mbadala", "description": "Inahitajika. Ikiwa kivinjari hakiwezi kupakia picha, maandishi haya yataonyeshwa badala yake. Inatumika pia na visomaji “maandishi-kwa-hotuba”." @@ -18,6 +22,14 @@ { "label": "Jina la maudhui ya picha", "default": "Picha" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/tr.json b/language/tr.json index d4416af..730ad1a 100644 --- a/language/tr.json +++ b/language/tr.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alt metin", "description": "Gerekli alan. Tarayıcı resmi yükleyemezse, bunun yerine bu metin görüntülenecektir. Ayrıca \"konuşma sentezleyiciler\" tarafından da kullanılır." @@ -18,6 +22,14 @@ { "label": "Resim içerik adı", "default": "Resim" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/uk.json b/language/uk.json index 7defccf..59f325f 100644 --- a/language/uk.json +++ b/language/uk.json @@ -7,6 +7,10 @@ "label": "Декоративне зображення", "description": "Виберіть цей параметр, якщо зображення є виключно декоративним і не додає жодної інформації до вмісту сторінки. Він ігнорується інструментами читання та не отримує альтернативний текст." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Альтернативний текст", "description": "Обов'язковий. Якщо браузер не може завантажити зображення, цей текст буде відображатись замість нього. Також використовується для \"озвучення тексту\"." @@ -18,6 +22,14 @@ { "label": "Назва вмісту зображення", "default": "Зображення" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/vi.json b/language/vi.json index 0af37f1..07950fa 100644 --- a/language/vi.json +++ b/language/vi.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "Alternative text", "description": "Required. If the browser can't load the image this text will be displayed instead. Also used by \"text-to-speech\" readers." @@ -18,6 +22,14 @@ { "label": "Image content name", "default": "Hình" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/zh-hans.json b/language/zh-hans.json index 8426c7c..22f6182 100644 --- a/language/zh-hans.json +++ b/language/zh-hans.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "替代文字", "description": "必填,当浏览器无法载入图片时会改显示此文字,同时这也作为视障者语音帮助。" @@ -18,6 +22,14 @@ { "label": "图像名称", "default": "图像" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/language/zh-hant.json b/language/zh-hant.json index e1e1327..fb54b12 100644 --- a/language/zh-hant.json +++ b/language/zh-hant.json @@ -7,6 +7,10 @@ "label": "Decorative only", "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "label": "Animation is essential", + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "label": "替代文字", "description": "必填,當瀏覽器無法載入圖片時會改顯示此文字,同時這也作為視障者語音幫助。" @@ -18,6 +22,14 @@ { "label": "圖像名稱", "default": "Image" + }, + { + "label": "Start image animation", + "default": "Start image animation" + }, + { + "label": "Stop image animation", + "default": "Stop image animation" } ] } diff --git a/library.json b/library.json index 28ffba1..bd31bb6 100644 --- a/library.json +++ b/library.json @@ -26,6 +26,13 @@ "disable": 0, "disableExtraTitleField": 1 }, + "preloadedDependencies": [ + { + "machineName": "FontAwesome", + "majorVersion": 4, + "minorVersion": 5 + } + ], "editorDependencies": [ { "machineName": "H5PEditor.ShowWhen", diff --git a/semantics.json b/semantics.json index 29621ca..0f282a5 100644 --- a/semantics.json +++ b/semantics.json @@ -13,6 +13,13 @@ "default": false, "description": "Enable this option if the image is purely decorative and does not add any information to the content on the page. It will be ignored by screen readers and not given any alternative text." }, + { + "name": "isAnimationEssential", + "type": "boolean", + "label": "Animation is essential", + "default": false, + "description": "Enable this option if the image is animated and playing this animation is essential. Otherwise, the user may have requested reduced motion and needs to actively start the animation." + }, { "name": "alt", "type": "text", @@ -45,5 +52,21 @@ "importance": "low", "common": true, "default": "Image" + }, + { + "name": "startImageAnimation", + "type": "text", + "label": "Start image animation", + "importance": "low", + "common": true, + "default": "Start image animation" + }, + { + "name": "stopImageAnimation", + "type": "text", + "label": "Stop image animation", + "importance": "low", + "common": true, + "default": "Stop image animation" } ]