diff --git a/card.js b/card.js index 660a9bf..28718f7 100644 --- a/card.js +++ b/card.js @@ -7,10 +7,12 @@ * @extends H5P.EventDispatcher * @param {Object} image * @param {number} id + * @param {string} alt + * @param {Object} l10n Localization * @param {string} [description] * @param {Object} [styles] */ - MemoryGame.Card = function (image, id, description, styles) { + MemoryGame.Card = function (image, id, alt, l10n, description, styles) { /** @alias H5P.MemoryGame.Card# */ var self = this; @@ -18,7 +20,9 @@ EventDispatcher.call(self); var path = H5P.getPath(image.path, id); - var width, height, margin, $card; + var width, height, margin, $card, $wrapper, removedState, flippedState; + + alt = alt || 'Missing description'; // Default for old games if (image.width !== undefined && image.height !== undefined) { if (image.width > image.height) { @@ -34,32 +38,71 @@ width = height = '100%'; } + /** + * Update the cards label to make it accessible to users with a readspeaker + * + * @param {boolean} isMatched The card has been matched + * @param {boolean} announce Announce the current state of the card + * @param {boolean} reset Go back to the default label + */ + self.updateLabel = function (isMatched, announce, reset) { + + // Determine new label from input params + var label = (reset ? l10n.cardUnturned : alt); + if (isMatched) { + label = l10n.cardMatched + ' ' + label; + } + + // Update the card's label + $wrapper.attr('aria-label', l10n.cardPrefix.replace('%num', $wrapper.index() + 1) + ' ' + label); + + // Update disabled property + $wrapper.attr('aria-disabled', reset ? null : 'true'); + + // Announce the label change + if (announce) { + $wrapper.blur().focus(); // Announce card label + } + }; + /** * Flip card. */ self.flip = function () { + if (flippedState) { + $wrapper.blur().focus(); // Announce card label again + return; + } + $card.addClass('h5p-flipped'); self.trigger('flip'); + flippedState = true; }; /** * Flip card back. */ self.flipBack = function () { + self.updateLabel(null, null, true); // Reset card label $card.removeClass('h5p-flipped'); + flippedState = false; }; /** * Remove. */ - self.remove = function () { + self.remove = function (announce) { $card.addClass('h5p-matched'); + removedState = true; }; /** * Reset card to natural state */ self.reset = function () { + self.updateLabel(null, null, true); // Reset card label + flippedState = false; + removedState = false; $card[0].classList.remove('h5p-flipped', 'h5p-matched'); }; @@ -87,28 +130,96 @@ * @param {H5P.jQuery} $container */ self.appendTo = function ($container) { - // TODO: Translate alt attr - $card = $('
  • ' + + $wrapper = $('
  • ' + '
    ' + (styles && styles.backImage ? '' : '') + '
    ' + '
    ' + - 'Memory Card' + + '' + alt + '' + '
    ' + '
  • ') .appendTo($container) - .children('.h5p-memory-card') - .children('.h5p-front') - .click(function () { + .on('keydown', function (event) { + switch (event.which) { + case 13: // Enter + case 32: // Space self.flip(); - }) - .end(); + event.preventDefault(); + return; + case 39: // Right + case 40: // Down + // Move focus forward + self.trigger('next'); + event.preventDefault(); + return; + case 37: // Left + case 38: // Up + // Move focus back + self.trigger('prev'); + event.preventDefault(); + return; + case 35: + // Move to last card + self.trigger('last'); + event.preventDefault(); + return; + case 36: + // Move to first card + self.trigger('first'); + event.preventDefault(); + return; + } + }); + + $wrapper.attr('aria-label', l10n.cardPrefix.replace('%num', $wrapper.index() + 1) + ' ' + l10n.cardUnturned); + $card = $wrapper.children('.h5p-memory-card') + .children('.h5p-front') + .click(function () { + self.flip(); + }) + .end(); }; /** - * Re-append to parent container + * Re-append to parent container. */ self.reAppend = function () { - var parent = $card[0].parentElement.parentElement; - parent.appendChild($card[0].parentElement); + var parent = $wrapper[0].parentElement; + parent.appendChild($wrapper[0]); + }; + + /** + * Make the card accessible when tabbing + */ + self.makeTabbable = function () { + if ($wrapper) { + $wrapper.attr('tabindex', '0'); + } + }; + + /** + * Prevent tabbing to the card + */ + self.makeUntabbable = function () { + if ($wrapper) { + $wrapper.attr('tabindex', '-1'); + } + }; + + /** + * Make card tabbable and move focus to it + */ + self.setFocus = function () { + self.makeTabbable(); + if ($wrapper) { + $wrapper.focus(); + } + }; + + /** + * Check if the card has been removed from the game, i.e. if has + * been matched. + */ + self.isRemoved = function () { + return removedState; }; }; diff --git a/language/.en.json b/language/.en.json index 8f501f2..7101e4c 100644 --- a/language/.en.json +++ b/language/.en.json @@ -18,6 +18,14 @@ "label": "Matching Image", "description": "An optional image to match against instead of using two cards with the same image." }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, { "label": "Description", "description": "An optional short text that will pop up once the two matching cards are found." @@ -49,8 +57,7 @@ { "label": "Theme Color", "description": "Choose a color to create a theme for your card game.", - "default": "#909090", - "spectrum": {} + "default": "#909090" }, { "label": "Card Back", @@ -80,6 +87,26 @@ { "label": "Close button label", "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/af.json b/language/af.json index 240360f..7101e4c 100644 --- a/language/af.json +++ b/language/af.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/ar.json b/language/ar.json index 2b1b46e..78a9852 100644 --- a/language/ar.json +++ b/language/ar.json @@ -1,89 +1,114 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"البطاقات", - "entity":"بطاقة", - "field":{ - "label":"البطاقة", - "fields":[ + "label": "البطاقات", + "entity": "بطاقة", + "field": { + "label": "البطاقة", + "fields": [ { - "label":"الصورة" + "label": "الصورة" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"الوصف", - "description":"نص قصير يتم عرضه مرة واحدة علي اثنين من البطاقات متساوية" + "label": "الوصف", + "description": "نص قصير يتم عرضه مرة واحدة علي اثنين من البطاقات متساوية" + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"الأقلمة", - "fields":[ + "label": "الأقلمة", + "fields": [ { - "label":"نص تدوير البطاقة", - "default":"Card turns" + "label": "نص تدوير البطاقة", + "default": "Card turns" }, { - "label":"نص التوقيت الزمني", - "default":"Time spent" + "label": "نص التوقيت الزمني", + "default": "Time spent" }, { - "label":"نص الملاحظات", - "default":"Good work!" + "label": "نص الملاحظات", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Reset" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } ] -} \ No newline at end of file +} diff --git a/language/bs.json b/language/bs.json index b1c4312..125eae6 100644 --- a/language/bs.json +++ b/language/bs.json @@ -1,89 +1,114 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Karte", - "entity":"karte", - "field":{ - "label":"Karte", - "fields":[ + "label": "Karte", + "entity": "karte", + "field": { + "label": "Karte", + "fields": [ { - "label":"Slika" + "label": "Slika" }, { - "label":"Ista slika", - "description":"Opcionalna slika koja se koristi umjestodvije iste slike." + "label": "Ista slika", + "description": "Opcionalna slika koja se koristi umjestodvije iste slike." }, { - "label":"Opis", - "description":"Kratak tekst koji će biti prikazan čim se pronađu dvije iste karte." + "label": "Opis", + "description": "Kratak tekst koji će biti prikazan čim se pronađu dvije iste karte." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Podešavanje ponašanja", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Podešavanje ponašanja", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Poredaj karte u redove ", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Poredaj karte u redove ", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Broj karata za upotrebu", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Broj karata za upotrebu", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Prijevod", - "fields":[ + "label": "Prijevod", + "fields": [ { - "label":"Tekst kad se okrene karta ", - "default":"Okrenuta karta" + "label": "Tekst kad se okrene karta ", + "default": "Okrenuta karta" }, { - "label":"Tekst za provedeno vrijeme", - "default":"Provedeno vrijeme" + "label": "Tekst za provedeno vrijeme", + "default": "Provedeno vrijeme" }, { - "label":"Feedback tekst", - "default":"BRAVO!" + "label": "Feedback tekst", + "default": "BRAVO!" }, { - "label":"Tekst na dugmetu pokušaj ponovo", - "default":"Pokušaj ponovo?" + "label": "Tekst na dugmetu pokušaj ponovo", + "default": "Pokušaj ponovo?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } ] -} \ No newline at end of file +} diff --git a/language/ca.json b/language/ca.json index 240360f..7101e4c 100644 --- a/language/ca.json +++ b/language/ca.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/cs.json b/language/cs.json index 240360f..7101e4c 100644 --- a/language/cs.json +++ b/language/cs.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/da.json b/language/da.json index 5a248a2..2938029 100644 --- a/language/da.json +++ b/language/da.json @@ -1,89 +1,114 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Standard" + "label": "Standard" } ], - "label":"Kort", - "entity":"card", - "field":{ - "label":"Kort", - "fields":[ + "label": "Kort", + "entity": "card", + "field": { + "label": "Kort", + "fields": [ { - "label":"Billede" + "label": "Billede" }, { - "label":"Matchende billede", - "description":"Valgfrit billede som match i stedet for at have to kort med det samme billede." + "label": "Matchende billede", + "description": "Valgfrit billede som match i stedet for at have to kort med det samme billede." }, { - "label":"Beskrivelse", - "description":"Valgfri tekst, som popper op, når to matchende billeder er fundet." + "label": "Beskrivelse", + "description": "Valgfri tekst, som popper op, når to matchende billeder er fundet." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Indstillinger", - "description":"Disse indstillinger giver dig mulighed for at bestemme, hvordan spillet fremstår.", - "fields":[ + "label": "Indstillinger", + "description": "Disse indstillinger giver dig mulighed for at bestemme, hvordan spillet fremstår.", + "fields": [ { - "label":"Placer kortene kvadratisk", - "description":"Vil forsøge at matche antallet af kolonner og rækker, når kortene placeres. Efterfølgende vil størrelsen på kortene blive tilpasset." + "label": "Placer kortene kvadratisk", + "description": "Vil forsøge at matche antallet af kolonner og rækker, når kortene placeres. Efterfølgende vil størrelsen på kortene blive tilpasset." }, { - "label":"Antal kort i opgaven", - "description":"Vælges et større tal end 2, vælges kort tilfældigt fra listen af kort." + "label": "Antal kort i opgaven", + "description": "Vælges et større tal end 2, vælges kort tilfældigt fra listen af kort." }, { - "label":"Tilføj knap for at prøve spillet igen, når spillet er afsluttet." + "label": "Tilføj knap for at prøve spillet igen, når spillet er afsluttet." } ] }, { - "label":"Udseende", - "description":"Indstil spillets udseende.", - "fields":[ + "label": "Udseende", + "description": "Indstil spillets udseende.", + "fields": [ { - "label":"Farvetema", - "description":"Vælg en farve til bagsiden af dine kort.", - "default":"#909090", - "spectrum":{ - - } + "label": "Farvetema", + "description": "Vælg en farve til bagsiden af dine kort.", + "default": "#909090" }, { - "label":"Bagsidebillede", - "description":"Brug et billede som bagside på dine kort." + "label": "Bagsidebillede", + "description": "Brug et billede som bagside på dine kort." } ] }, { - "label":"Oversættelse", - "fields":[ + "label": "Oversættelse", + "fields": [ { - "label":"Tekst når kort vendes", - "default":"Kort vendes" + "label": "Tekst når kort vendes", + "default": "Kort vendes" }, { - "label":"Tekst for tidsforbrug", - "default":"Tidsforbrug" + "label": "Tekst for tidsforbrug", + "default": "Tidsforbrug" }, { - "label":"Feedback tekst", - "default":"Godt klaret!" + "label": "Feedback tekst", + "default": "Godt klaret!" }, { - "label":"Prøv igen knaptekst", - "default":"Prøv igen?" + "label": "Prøv igen knaptekst", + "default": "Prøv igen?" }, { - "label":"Luk knaptekst", - "default":"Luk" + "label": "Luk knaptekst", + "default": "Luk" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } ] -} +} \ No newline at end of file diff --git a/language/de.json b/language/de.json index 5c725a1..550d6b0 100644 --- a/language/de.json +++ b/language/de.json @@ -1,89 +1,114 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Vorgaben" + "label": "Default" } ], - "label":"Karten", - "entity":"karte", - "field":{ - "label":"Karte", - "fields":[ + "label": "Karten", + "entity": "karte", + "field": { + "label": "Karte", + "fields": [ { - "label":"Bild" + "label": "Bild" }, { - "label":"Passendes Bild", - "description":"Ein optionales anderes Bild als Gegenstück statt zwei Karten mit dem selben Bild zu nutzen" + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Beschreibung", - "description":"Ein kurzer Text, der angezeigt wird, sobald zwei identische Karten gefunden werden." + "label": "Beschreibung", + "description": "Ein kurzer Text, der angezeigt wird, sobald zwei identische Karten gefunden werden." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Interaktionseinstellungen", - "description":"Mit diesen Einstellungen kannst du das Verhalten des Spiels anpassen.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Positioniere die Karten in einem Quadrat.", - "description":"Es wird versucht, die Anzahl der Zeilen und Spalten passend zu den Karten einzustellen. Danach werden die Karten passend skaliert." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Anzahl der zu nutzenden Karten", - "description":"Wird hier eine Zahl größer als 2 eingestellt, werden zufällig Karten aus der Kartenliste gezogen." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Füge einen Button hinzu, um das Spiel noch einmal neu zu starten zu können, wenn es vorbei ist." + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Design-Aspekte", - "description":"Beeinflusse die Optik des Spiels", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Themenfarbe", - "description":"Wähle eine Farbe, um ein Theme für deine Karten zu erstellen.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Kartenrückseite", - "description":"Nutze eine individuelle Rückseite für deine Karten." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Übersetzung", - "fields":[ + "label": "Übersetzung", + "fields": [ { - "label":"Text für die Anzahl der Züge", - "default":"Züge" + "label": "Text für die Anzahl der Züge", + "default": "Züge" }, { - "label":"Text für die benötigte Zeit", - "default":"Benötigte Zeit" + "label": "Text für die benötigte Zeit", + "default": "Benötigte Zeit" }, { - "label":"Text als Rückmeldung", - "default":"Gute Arbeit!" + "label": "Text als Rückmeldung", + "default": "Gute Arbeit!" }, { - "label":"Text des Wiederholen-Buttons", - "default":"Erneut versuchen?" + "label": "Try again button text", + "default": "Reset" }, { - "label":"Beschriftung des \"Abbrechen\"-Buttons", - "default":"Schließen" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } ] -} \ No newline at end of file +} diff --git a/language/el.json b/language/el.json index 240360f..7101e4c 100644 --- a/language/el.json +++ b/language/el.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/es.json b/language/es.json index ba7edf2..ad9acad 100644 --- a/language/es.json +++ b/language/es.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Predeterminado" + "label": "Predeterminado" } ], - "label":"Tarjetas", - "entity":"card", - "field":{ - "label":"Tarjeta", - "fields":[ + "label": "Tarjetas", + "entity": "card", + "field": { + "label": "Tarjeta", + "fields": [ { - "label":"Imagen" + "label": "Imagen" }, { - "label":"Imagen coincidente", - "description":"Una imagen opcional para emparejar, en vez de usar dos tarjetas con la misma imagen." + "label": "Imagen coincidente", + "description": "Una imagen opcional para emparejar, en vez de usar dos tarjetas con la misma imagen." }, { - "label":"Descripción", - "description":"Un breve texto opcional que aparecerá una vez se encuentren las dos cartas coincidentes." + "label": "Descripción", + "description": "Un breve texto opcional que aparecerá una vez se encuentren las dos cartas coincidentes." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Ajustes de comportamiento", - "description":"Estas opciones le permitirán controlar cómo se comporta el juego.", - "fields":[ + "label": "Ajustes de comportamiento", + "description": "Estas opciones le permitirán controlar cómo se comporta el juego.", + "fields": [ { - "label":"Coloca las tarjetas en un cuadrado", - "description":"Intentará igualar el número de columnas y filas al distribuir las tarjetas. Después, las tarjetas se escalarán para que se ajusten al contenedor." + "label": "Coloca las tarjetas en un cuadrado", + "description": "Intentará igualar el número de columnas y filas al distribuir las tarjetas. Después, las tarjetas se escalarán para que se ajusten al contenedor." }, { - "label":"Número de tarjetas a utilizar", - "description":"Establecer esto a un número mayor que 2 hará que el juego seleccione tarjetas aleatorias de la lista de tarjetas." + "label": "Número de tarjetas a utilizar", + "description": "Establecer esto a un número mayor que 2 hará que el juego seleccione tarjetas aleatorias de la lista de tarjetas." }, { - "label":"Añadir botón para volver a intentarlo cuando el juego ha terminado" + "label": "Añadir botón para volver a intentarlo cuando el juego ha terminado" } ] }, { - "label":"Aspecto y comportamiento", - "description":"Controla los efectos visuales del juego.", - "fields":[ + "label": "Aspecto y comportamiento", + "description": "Controla los efectos visuales del juego.", + "fields": [ { - "label":"Color del tema", - "description":"Elegir un color para crear un tema para su juego de cartas.", - "default":"#909090", - "spectrum":{ - - } + "label": "Color del tema", + "description": "Elegir un color para crear un tema para su juego de cartas.", + "default": "#909090" }, { - "label":"Parte posterior de la tarjeta", - "description":"Utilice una parte posterior personalizada para sus tarjetas." + "label": "Parte posterior de la tarjeta", + "description": "Utilice una parte posterior personalizada para sus tarjetas." } ] }, { - "label":"Localización", - "fields":[ + "label": "Localización", + "fields": [ { - "label":"Texto para los giros de tarjetas", - "default":"Giros de tarjeta" + "label": "Texto para los giros de tarjetas", + "default": "Giros de tarjeta" }, { - "label":"Texto de tiempo usado", - "default":"Tiempo usado" + "label": "Texto de tiempo usado", + "default": "Tiempo usado" }, { - "label":"Texto de comentarios", - "default":"¡Buen trabajo!" + "label": "Texto de comentarios", + "default": "¡Buen trabajo!" }, { - "label":"Intente del botón Intente de nuevo", - "default":"¿Volver a intentarlo?" + "label": "Intente del botón Intente de nuevo", + "default": "¿Volver a intentarlo?" }, { - "label":"Etiqueta del botón Cerrar", - "default":"Cerrar" + "label": "Etiqueta del botón Cerrar", + "default": "Cerrar" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/et.json b/language/et.json index 240360f..7101e4c 100644 --- a/language/et.json +++ b/language/et.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/fi.json b/language/fi.json index 240360f..7101e4c 100644 --- a/language/fi.json +++ b/language/fi.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/fr.json b/language/fr.json index d2952ac..32ca798 100644 --- a/language/fr.json +++ b/language/fr.json @@ -1,89 +1,114 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cartes", - "entity":"carte", - "field":{ - "label":"Carte", - "fields":[ + "label": "Cartes", + "entity": "carte", + "field": { + "label": "Carte", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"Petit texte affiché quand deux cartes identiques sont trouvées." + "label": "Description", + "description": "Petit texte affiché quand deux cartes identiques sont trouvées." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Interface", - "fields":[ + "label": "Interface", + "fields": [ { - "label":"Texte pour le nombre de cartes retournées", - "default":"Cartes retournées :" + "label": "Texte pour le nombre de cartes retournées", + "default": "Cartes retournées :" }, { - "label":"Texte pour le temps passé", - "default":"Temps écoulé :" + "label": "Texte pour le temps passé", + "default": "Temps écoulé :" }, { - "label":"Texte de l'appréciation finale", - "default":"Bien joué !" + "label": "Texte de l'appréciation finale", + "default": "Bien joué !" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Reset" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } ] -} \ No newline at end of file +} diff --git a/language/he.json b/language/he.json index 240360f..7101e4c 100644 --- a/language/he.json +++ b/language/he.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/hu.json b/language/hu.json index 240360f..7101e4c 100644 --- a/language/hu.json +++ b/language/hu.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/it.json b/language/it.json index 606af60..6a2e4c3 100644 --- a/language/it.json +++ b/language/it.json @@ -1,89 +1,114 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Carte", - "entity":"carta", - "field":{ - "label":"Carta", - "fields":[ + "label": "Carte", + "entity": "carta", + "field": { + "label": "Carta", + "fields": [ { - "label":"Immagine" + "label": "Immagine" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Descrizione", - "description":"Breve testo visualizzato quando due carte uguali vengono trovate." + "label": "Descrizione", + "description": "Breve testo visualizzato quando due carte uguali vengono trovate." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localizzazione", - "fields":[ + "label": "Localizzazione", + "fields": [ { - "label":"Testo Gira carta", - "default":"Card turns" + "label": "Testo Gira carta", + "default": "Card turns" }, { - "label":"Testo Tempo trascorso", - "default":"Time spent" + "label": "Testo Tempo trascorso", + "default": "Time spent" }, { - "label":"Testo Feedback", - "default":"Good work!" + "label": "Testo Feedback", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Reset" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } ] -} \ No newline at end of file +} diff --git a/language/ja.json b/language/ja.json index 5f235f6..ca82581 100644 --- a/language/ja.json +++ b/language/ja.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"デフォルト" + "label": "デフォルト" } ], - "label":"カード", - "entity":"card", - "field":{ - "label":"カード", - "fields":[ + "label": "カード", + "entity": "card", + "field": { + "label": "カード", + "fields": [ { - "label":"画像" + "label": "画像" }, { - "label":"一致させる画像", - "description":"同じ画像の2枚のカードを使用する代わりに、別に一致させるためのオプション画像" + "label": "一致させる画像", + "description": "同じ画像の2枚のカードを使用する代わりに、別に一致させるためのオプション画像" }, { - "label":"説明", - "description":"一致する2つのカードが見つかるとポップアップするオプションの短文テキスト。" + "label": "説明", + "description": "一致する2つのカードが見つかるとポップアップするオプションの短文テキスト。" + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"動作設定", - "description":"これらのオプションを使用して、ゲームの動作を制御できます。", - "fields":[ + "label": "動作設定", + "description": "これらのオプションを使用して、ゲームの動作を制御できます。", + "fields": [ { - "label":"カードを正方形に配置", - "description":"カードをレイアウトするときに、列と行の数を一致させてみてください。そうすると、カードは、コンテナに合わせてスケーリングされます。" + "label": "カードを正方形に配置", + "description": "カードをレイアウトするときに、列と行の数を一致させてみてください。そうすると、カードは、コンテナに合わせてスケーリングされます。" }, { - "label":"使用するカードの数", - "description":"これを2よりも大きい数値に設定すると、カードのリストからランダムなカードが選ばれるようになります。" + "label": "使用するカードの数", + "description": "これを2よりも大きい数値に設定すると、カードのリストからランダムなカードが選ばれるようになります。" }, { - "label":"ゲームが終了したときに、リトライのためのボタンを追加" + "label": "ゲームが終了したときに、リトライのためのボタンを追加" } ] }, { - "label":"ルック&フィール", - "description":"ゲームの外観を制御します。", - "fields":[ + "label": "ルック&フィール", + "description": "ゲームの外観を制御します。", + "fields": [ { - "label":"テーマ色", - "description":"カードゲームのテーマとなる色を選択してください。", - "default":"#909090", - "spectrum":{ - - } + "label": "テーマ色", + "description": "カードゲームのテーマとなる色を選択してください。", + "default": "#909090" }, { - "label":"カード裏", - "description":"カードに独自の裏を使います。" + "label": "カード裏", + "description": "カードに独自の裏を使います。" } ] }, { - "label":"ローカリゼーション", - "fields":[ + "label": "ローカリゼーション", + "fields": [ { - "label":"カードターン のテキスト", - "default":"カードターン" + "label": "カードターン のテキスト", + "default": "カードターン" }, { - "label":"経過時間のテキスト", - "default":"経過時間" + "label": "経過時間のテキスト", + "default": "経過時間" }, { - "label":"フィードバックテキスト", - "default":"よくできました!" + "label": "フィードバックテキスト", + "default": "よくできました!" }, { - "label":"リトライボタンのテキスト", - "default":"もう一度トライしますか ?" + "label": "リトライボタンのテキスト", + "default": "もう一度トライしますか ?" }, { - "label":"閉じるボタンのテキスト", - "default":"閉じる" + "label": "閉じるボタンのテキスト", + "default": "閉じる" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/ko.json b/language/ko.json index 240360f..7101e4c 100644 --- a/language/ko.json +++ b/language/ko.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/nb.json b/language/nb.json index 0a422f9..21218d7 100644 --- a/language/nb.json +++ b/language/nb.json @@ -1,89 +1,114 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Kort", - "entity":"kort", - "field":{ - "label":"Kort", - "fields":[ + "label": "Kort", + "entity": "kort", + "field": { + "label": "Kort", + "fields": [ { - "label":"Bilde" + "label": "Bilde" }, { - "label":"Tilhørende bilde", - "description":"Et valgfritt bilde som brukes av kort nummer to istedenfor å bruke to kort med samme bilde." + "label": "Tilhørende bilde", + "description": "Et valgfritt bilde som brukes av kort nummer to istedenfor å bruke to kort med samme bilde." }, { - "label":"Beskrivelse", - "description":"En valgfri kort tekst som spretter opp når kort-paret er funnet." + "label": "Beskrivelse", + "description": "En valgfri kort tekst som spretter opp når kort-paret er funnet." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Innstillinger for oppførsel", - "description":"Disse instillingene lar deg bestemme hvordan spillet skal oppføre seg.", - "fields":[ + "label": "Innstillinger for oppførsel", + "description": "Disse instillingene lar deg bestemme hvordan spillet skal oppføre seg.", + "fields": [ { - "label":"Plasser kortene i en firkant", - "description":"Vil forsøk å samsvare antall kolonner og rader når kortene legges ut. Etterpå vil kortene bli skalert til å passe beholderen." + "label": "Plasser kortene i en firkant", + "description": "Vil forsøk å samsvare antall kolonner og rader når kortene legges ut. Etterpå vil kortene bli skalert til å passe beholderen." }, { - "label":"Antall kort som skal brukes", - "description":"Ved å sette antallet høyere enn 2 vil spillet plukke tilfeldige kort fra listen over kort." + "label": "Antall kort som skal brukes", + "description": "Ved å sette antallet høyere enn 2 vil spillet plukke tilfeldige kort fra listen over kort." }, { - "label":"Legg til knapp for å prøve på nytt når spillet er over" + "label": "Legg til knapp for å prøve på nytt når spillet er over" } ] }, { - "label":"Tilpass utseende", - "description":"Kontroller de visuelle aspektene ved spillet.", - "fields":[ + "label": "Tilpass utseende", + "description": "Kontroller de visuelle aspektene ved spillet.", + "fields": [ { - "label":"Temafarge", - "description":"Velg en farge for å skape et tema over kortspillet ditt.", - "default":"#909090", - "spectrum":{ - - } + "label": "Temafarge", + "description": "Velg en farge for å skape et tema over kortspillet ditt.", + "default": "#909090" }, { - "label":"Kortbaksiden", - "description":"Bruk en tilpasset kortbakside for kortene dine." + "label": "Kortbaksiden", + "description": "Bruk en tilpasset kortbakside for kortene dine." } ] }, { - "label":"Oversettelser", - "fields":[ + "label": "Oversettelser", + "fields": [ { - "label":"Etikett for antall vendte kort", - "default":"Kort vendt" + "label": "Etikett for antall vendte kort", + "default": "Kort vendt" }, { - "label":"Etikett for tid brukt", - "default":"Tid brukt" + "label": "Etikett for tid brukt", + "default": "Tid brukt" }, { - "label":"Tilbakemeldingstekst", - "default":"Godt jobbet!" + "label": "Tilbakemeldingstekst", + "default": "Godt jobbet!" }, { - "label":"Prøv på nytt-tekst", - "default":"Prøv på nytt?" + "label": "Prøv på nytt-tekst", + "default": "Prøv på nytt?" }, { - "label":"Lukk knapp-merkelapp", - "default":"Lukk" + "label": "Lukk knapp-merkelapp", + "default": "Lukk" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } ] -} \ No newline at end of file +} diff --git a/language/nl.json b/language/nl.json index 240360f..7101e4c 100644 --- a/language/nl.json +++ b/language/nl.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/nn.json b/language/nn.json index 240360f..7101e4c 100644 --- a/language/nn.json +++ b/language/nn.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/pl.json b/language/pl.json index 240360f..7101e4c 100644 --- a/language/pl.json +++ b/language/pl.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/pt.json b/language/pt.json index 240360f..7101e4c 100644 --- a/language/pt.json +++ b/language/pt.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/ro.json b/language/ro.json index 240360f..7101e4c 100644 --- a/language/ro.json +++ b/language/ro.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/ru.json b/language/ru.json index 240360f..7101e4c 100644 --- a/language/ru.json +++ b/language/ru.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/sr.json b/language/sr.json index 240360f..7101e4c 100644 --- a/language/sr.json +++ b/language/sr.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/sv.json b/language/sv.json index 240360f..7101e4c 100644 --- a/language/sv.json +++ b/language/sv.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/tr.json b/language/tr.json index 240360f..7101e4c 100644 --- a/language/tr.json +++ b/language/tr.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/language/vi.json b/language/vi.json index 240360f..7101e4c 100644 --- a/language/vi.json +++ b/language/vi.json @@ -1,87 +1,112 @@ { - "semantics":[ + "semantics": [ { - "widgets":[ + "widgets": [ { - "label":"Default" + "label": "Default" } ], - "label":"Cards", - "entity":"card", - "field":{ - "label":"Card", - "fields":[ + "label": "Cards", + "entity": "card", + "field": { + "label": "Card", + "fields": [ { - "label":"Image" + "label": "Image" }, { - "label":"Matching Image", - "description":"An optional image to match against instead of using two cards with the same image." + "label": "Matching Image", + "description": "An optional image to match against instead of using two cards with the same image." }, { - "label":"Description", - "description":"An optional short text that will pop up once the two matching cards are found." + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." + }, + { + "label": "Alternative text for Matching Image", + "description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users." + }, + { + "label": "Description", + "description": "An optional short text that will pop up once the two matching cards are found." } ] } }, { - "label":"Behavioural settings", - "description":"These options will let you control how the game behaves.", - "fields":[ + "label": "Behavioural settings", + "description": "These options will let you control how the game behaves.", + "fields": [ { - "label":"Position the cards in a square", - "description":"Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." + "label": "Position the cards in a square", + "description": "Will try to match the number of columns and rows when laying out the cards. Afterward, the cards will be scaled to fit the container." }, { - "label":"Number of cards to use", - "description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards." + "label": "Number of cards to use", + "description": "Setting this to a number greater than 2 will make the game pick random cards from the list of cards." }, { - "label":"Add button for retrying when the game is over" + "label": "Add button for retrying when the game is over" } ] }, { - "label":"Look and feel", - "description":"Control the visuals of the game.", - "fields":[ + "label": "Look and feel", + "description": "Control the visuals of the game.", + "fields": [ { - "label":"Theme Color", - "description":"Choose a color to create a theme for your card game.", - "default":"#909090", - "spectrum":{ - - } + "label": "Theme Color", + "description": "Choose a color to create a theme for your card game.", + "default": "#909090" }, { - "label":"Card Back", - "description":"Use a custom back for your cards." + "label": "Card Back", + "description": "Use a custom back for your cards." } ] }, { - "label":"Localization", - "fields":[ + "label": "Localization", + "fields": [ { - "label":"Card turns text", - "default":"Card turns" + "label": "Card turns text", + "default": "Card turns" }, { - "label":"Time spent text", - "default":"Time spent" + "label": "Time spent text", + "default": "Time spent" }, { - "label":"Feedback text", - "default":"Good work!" + "label": "Feedback text", + "default": "Good work!" }, { - "label":"Try again button text", - "default":"Try again?" + "label": "Try again button text", + "default": "Try again?" }, { - "label":"Close button label", - "default":"Close" + "label": "Close button label", + "default": "Close" + }, + { + "label": "Game label", + "default": "Memory Game. Find the matching cards." + }, + { + "label": "Game finished label", + "default": "All of the cards have been found." + }, + { + "label": "Card indexing label", + "default": "Card %num:" + }, + { + "label": "Card unturned label", + "default": "Unturned." + }, + { + "label": "Card matched label", + "default": "Match found." } ] } diff --git a/memory-game.css b/memory-game.css index 5808ffb..cdb63cd 100644 --- a/memory-game.css +++ b/memory-game.css @@ -1,6 +1,14 @@ .h5p-memory-game { overflow: hidden; } +.h5p-memory-game .h5p-memory-hidden-read { + position: absolute; + top: -1px; + left: -1px; + width: 1px; + height: 1px; + color: transparent; +} .h5p-memory-game > ul { list-style: none !important; padding: 0.25em 0.5em !important; @@ -186,9 +194,6 @@ margin: 0 1em 0 0; font-weight: bold; } -.h5p-memory-game .h5p-status > dt:after { - content: ":"; -} .h5p-memory-game .h5p-status > dd { margin: 0; } @@ -307,3 +312,6 @@ transform: translate(-50%,-450%) scale(0) rotate(360deg); opacity: 0; } +.h5p-memory-complete { + display: none; +} diff --git a/memory-game.js b/memory-game.js index a0029f6..7c61076 100644 --- a/memory-game.js +++ b/memory-game.js @@ -5,6 +5,7 @@ H5P.MemoryGame = (function (EventDispatcher, $) { var CARD_STD_SIZE = 116; // PX var STD_FONT_SIZE = 16; // PX var LIST_PADDING = 1; // EMs + var numInstances = 0; /** * Memory Game Constructor @@ -21,11 +22,28 @@ H5P.MemoryGame = (function (EventDispatcher, $) { // Initialize event inheritance EventDispatcher.call(self); - var flipped, timer, counter, popup, $feedback, $wrapper, maxWidth, numCols; + var flipped, timer, counter, popup, $bottom, $taskComplete, $feedback, $wrapper, maxWidth, numCols; var cards = []; var flipBacks = []; // Que of cards to be flipped back var numFlipped = 0; var removed = 0; + numInstances++; + + // Add defaults + parameters = $.extend(true, { + l10n: { + cardTurns: 'Card turns', + timeSpent: 'Time spent', + feedback: 'Good work!', + tryAgain: 'Reset', + closeLabel: 'Close', + label: 'Memory Game. Find the matching cards.', + done: 'All of the cards have been found.', + cardPrefix: 'Card %num: ', + cardUnturned: 'Unturned.', + cardMatched: 'Match found.' + } + }, parameters); /** * Check if these two cards belongs together. @@ -49,17 +67,17 @@ H5P.MemoryGame = (function (EventDispatcher, $) { return; } - // Remove them from the game. - card.remove(); - mate.remove(); - // Update counters numFlipped -= 2; removed += 2; var isFinished = (removed === cards.length); - var desc = card.getDescription(); + // Remove them from the game. + card.remove(!isFinished); + mate.remove(); + + var desc = card.getDescription(); if (desc !== undefined) { // Pause timer and show desciption. timer.pause(); @@ -67,19 +85,25 @@ H5P.MemoryGame = (function (EventDispatcher, $) { if (card.hasTwoImages) { imgs.push(mate.getImage()); } - popup.show(desc, imgs, cardStyles ? cardStyles.back : undefined, function () { + popup.show(desc, imgs, cardStyles ? cardStyles.back : undefined, function (refocus) { if (isFinished) { // Game done + card.makeUntabbable(); finished(); } else { // Popup is closed, continue. timer.play(); + + if (refocus) { + card.setFocus(); + } } }); } else if (isFinished) { // Game done + card.makeUntabbable(); finished(); } }; @@ -90,7 +114,9 @@ H5P.MemoryGame = (function (EventDispatcher, $) { */ var finished = function () { timer.stop(); - $feedback.addClass('h5p-show'); + $taskComplete.show(); + $feedback.addClass('h5p-show'); // Announce + $bottom.focus(); // Create and trigger xAPI event 'completed' var completedEvent = self.createXAPIEventTemplate('completed'); @@ -113,7 +139,7 @@ H5P.MemoryGame = (function (EventDispatcher, $) { }); retryButton.classList.add('h5p-memory-transin'); setTimeout(function () { - // Remove class on nextTick to get transition effect + // Remove class on nextTick to get transition effectupd retryButton.classList.remove('h5p-memory-transin'); }, 0); @@ -132,12 +158,10 @@ H5P.MemoryGame = (function (EventDispatcher, $) { // Reset cards removed = 0; - for (var i = 0; i < cards.length; i++) { - cards[i].reset(); - } // Remove feedback $feedback[0].classList.remove('h5p-show'); + $taskComplete.hide(); // Reset timer and counter timer.reset(); @@ -151,11 +175,15 @@ H5P.MemoryGame = (function (EventDispatcher, $) { for (var i = 0; i < cards.length; i++) { cards[i].reAppend(); } + for (var j = 0; j < cards.length; j++) { + cards[j].reset(); + } // Scale new layout $wrapper.children('ul').children('.h5p-row-break').removeClass('h5p-row-break'); maxWidth = -1; self.trigger('resize'); + cards[0].setFocus(); }, 600); }; @@ -190,6 +218,14 @@ H5P.MemoryGame = (function (EventDispatcher, $) { */ var addCard = function (card, mate) { card.on('flip', function () { + + // Always return focus to the card last flipped + for (var i = 0; i < cards.length; i++) { + cards[i].makeUntabbable(); + } + card.makeTabbable(); + + popup.close(); self.triggerXAPI('interacted'); // Keep track of time spent timer.play(); @@ -197,6 +233,11 @@ H5P.MemoryGame = (function (EventDispatcher, $) { // Keep track of the number of flipped cards numFlipped++; + // Announce the card unless it's the last one and it's correct + var isMatched = (flipped === mate); + var isLast = ((removed + 2) === cards.length); + card.updateLabel(isMatched, !(isMatched && isLast)); + if (flipped !== undefined) { var matie = flipped; // Reset the flipped card. @@ -220,6 +261,72 @@ H5P.MemoryGame = (function (EventDispatcher, $) { counter.increment(); }); + /** + * Create event handler for moving focus to the next or the previous + * card on the table. + * + * @private + * @param {number} direction +1/-1 + * @return {function} + */ + var createCardChangeFocusHandler = function (direction) { + return function () { + // Locate next card + for (var i = 0; i < cards.length; i++) { + if (cards[i] === card) { + // Found current card + + var nextCard, fails = 0; + do { + fails++; + nextCard = cards[i + (direction * fails)]; + if (!nextCard) { + return; // No more cards + } + } + while (nextCard.isRemoved()); + + card.makeUntabbable(); + nextCard.setFocus(); + + return; + } + } + }; + }; + + // Register handlers for moving focus to next and previous card + card.on('next', createCardChangeFocusHandler(1)); + card.on('prev', createCardChangeFocusHandler(-1)); + + /** + * Create event handler for moving focus to the first or the last card + * on the table. + * + * @private + * @param {number} direction +1/-1 + * @return {function} + */ + var createEndCardFocusHandler = function (direction) { + return function () { + var focusSet = false; + for (var i = 0; i < cards.length; i++) { + var j = (direction === -1 ? cards.length - (i + 1) : i); + if (!focusSet && !cards[j].isRemoved()) { + cards[j].setFocus(); + focusSet = true; + } + else if (cards[j] === card) { + card.makeUntabbable(); + } + } + }; + }; + + // Register handlers for moving focus to first and last card + card.on('first', createEndCardFocusHandler(1)); + card.on('last', createEndCardFocusHandler(-1)); + cards.push(card); }; @@ -277,16 +384,16 @@ H5P.MemoryGame = (function (EventDispatcher, $) { var cardParams = cardsToUse[i]; if (MemoryGame.Card.isValid(cardParams)) { // Create first card - var cardTwo, cardOne = new MemoryGame.Card(cardParams.image, id, cardParams.description, cardStyles); + var cardTwo, cardOne = new MemoryGame.Card(cardParams.image, id, cardParams.imageAlt, parameters.l10n, cardParams.description, cardStyles); if (MemoryGame.Card.hasTwoImages(cardParams)) { // Use matching image for card two - cardTwo = new MemoryGame.Card(cardParams.match, id, cardParams.description, cardStyles); + cardTwo = new MemoryGame.Card(cardParams.match, id, cardParams.matchAlt, parameters.l10n, cardParams.description, cardStyles); cardOne.hasTwoImages = cardTwo.hasTwoImages = true; } else { // Add two cards with the same image - cardTwo = new MemoryGame.Card(cardParams.image, id, cardParams.description, cardStyles); + cardTwo = new MemoryGame.Card(cardParams.image, id, cardParams.imageAlt, parameters.l10n, cardParams.description, cardStyles); } // Add cards to card list for shuffeling @@ -310,25 +417,45 @@ H5P.MemoryGame = (function (EventDispatcher, $) { } // Add cards to list - var $list = $('