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 ? '' : '') + '
' +
'
' +
- '' +
+ '' +
'
' +
'
')
.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 = $('