Compare commits
221 Commits
l10n_maste
...
master
Author | SHA1 | Date |
---|---|---|
|
f203ba9100 | |
|
0049b3f440 | |
|
dba19815dd | |
|
464f4f209c | |
|
24ae3a9309 | |
|
da3e156c27 | |
|
f564f9fdd6 | |
|
8e17f296e1 | |
|
6d2a4ba4c6 | |
|
f55bbfa80d | |
|
d623b91afd | |
|
32a7286b8d | |
|
902a0c7acf | |
|
3c328682ee | |
|
037645a9f0 | |
|
d043122e38 | |
|
247164af8c | |
|
c501c7c6ab | |
|
1eb269fa58 | |
|
364b8d01da | |
|
a3f0dbdcac | |
|
791c9dbed1 | |
|
81d533d809 | |
|
1b74abc01a | |
|
a0b8dc0ef7 | |
|
fda7a125b2 | |
|
fa032c071c | |
|
707ee5d63c | |
|
628909b162 | |
|
4b7ae4908b | |
|
d8996d1a7b | |
|
77fcccd33d | |
|
29a052ad23 | |
|
061ee0be19 | |
|
0f54ca3051 | |
|
4738f9722f | |
|
27c72f0f85 | |
|
eb6bf7f67b | |
|
b829418729 | |
|
1b24fe1bdc | |
|
e44d57ce56 | |
|
bc4fea40ea | |
|
c29dac1a43 | |
|
0f09ca5c66 | |
|
8ffc865115 | |
|
102253f5da | |
|
94353c5c8f | |
|
d04e65088f | |
|
1ab9e318b1 | |
|
71791f5c7c | |
|
efecfa5584 | |
|
b6c8fe1490 | |
|
7f564f20fd | |
|
cdd232b0f3 | |
|
17c429c8c1 | |
|
47b4c36774 | |
|
9683babe69 | |
|
16f6a30626 | |
|
0bae7f1a1d | |
|
b2bdc3b6ed | |
|
0c019fe73f | |
|
bdfd63e480 | |
|
5da1d3c462 | |
|
f1797a078f | |
|
bc5fd0481f | |
|
087f466a70 | |
|
b43e017c8f | |
|
46e476fc10 | |
|
73f034eca0 | |
|
2ee4fe2b77 | |
|
cdf5235029 | |
|
46ce58f9ed | |
|
6c1f358ef9 | |
|
527ddb2c91 | |
|
ff123ad877 | |
|
e0fdbb7e37 | |
|
e5c2f1ed21 | |
|
6915f25372 | |
|
30ce3e4e7c | |
|
3be4c4960a | |
|
5cf4e78e7e | |
|
6dbde945a0 | |
|
e37bdaabe8 | |
|
17f576d8fd | |
|
d9073529d4 | |
|
70f58807f4 | |
|
f315e810ac | |
|
bed4eb969d | |
|
8fe9642726 | |
|
98afe4d830 | |
|
0cab7ec862 | |
|
4927aa18f2 | |
|
fefb6d1c45 | |
|
4d2abc1839 | |
|
3a551aa21f | |
|
0cae222048 | |
|
13eed97d3c | |
|
758c38c2c8 | |
|
3c361e8d6d | |
|
db6a3c33da | |
|
5c63b1f7ed | |
|
7872731e34 | |
|
2f44a88c45 | |
|
19b5108dac | |
|
e5ce754c92 | |
|
ca4d37c85c | |
|
e0d639c406 | |
|
3519a3c158 | |
|
89b63e6546 | |
|
977ce375fc | |
|
77d07a09a5 | |
|
22b5f4e0a4 | |
|
77d6e10290 | |
|
6633c32b2c | |
|
54732eab2d | |
|
27680da092 | |
|
7ca312bc5a | |
|
a874abe951 | |
|
cb9b195966 | |
|
ccc19f5784 | |
|
c743b59e53 | |
|
9b8880392c | |
|
ff6033b355 | |
|
044ca54954 | |
|
3a6f7cd948 | |
|
30b4d65f64 | |
|
158698d135 | |
|
e3e0465619 | |
|
c609bdbead | |
|
191326cf10 | |
|
af920a3d2d | |
|
1b9f2dc61b | |
|
22e344067d | |
|
e74962230a | |
|
3efa816d2c | |
|
1c5779a181 | |
|
fac881fa0f | |
|
212877f489 | |
|
5538f4c356 | |
|
0051def977 | |
|
065a409b56 | |
|
219a90a5b8 | |
|
f1f2d1e33a | |
|
c6c6621826 | |
|
7f7263c0a9 | |
|
f4affddc74 | |
|
937db708e3 | |
|
eeb424b212 | |
|
4223b8faf9 | |
|
422986b408 | |
|
13b4ee88e7 | |
|
0efb9a6f3c | |
|
59313952f1 | |
|
7b6bde3d70 | |
|
26a858ee18 | |
|
d1d84a2cdc | |
|
dc2a869a3b | |
|
dc100143bc | |
|
f25ab323e5 | |
|
9b5ee19fe5 | |
|
69de120fef | |
|
127471cc13 | |
|
cf3dfe10ec | |
|
da04deb269 | |
|
a97055cb78 | |
|
5c078d8afd | |
|
375328cb2c | |
|
04362d33f3 | |
|
000cb99912 | |
|
9b473b035b | |
|
52cf3883d2 | |
|
bff82ed8c2 | |
|
33a73712c0 | |
|
cd4947476f | |
|
46d769ef0b | |
|
6f62cf9da0 | |
|
8be0616e07 | |
|
4ecc636ab0 | |
|
f17d7cb4b2 | |
|
d0f007bc40 | |
|
fbe10b4fe2 | |
|
6d8752dd38 | |
|
65f2d1d5e3 | |
|
472507f943 | |
|
459455f3ae | |
|
d69df7b899 | |
|
3fa7df69fb | |
|
1927eda0b4 | |
|
252bae0220 | |
|
fcee67e2f8 | |
|
4e134784a2 | |
|
23c477c1f0 | |
|
f00b632cc1 | |
|
9bd173ebe0 | |
|
26cccd6530 | |
|
f08b18bbaf | |
|
4cedecf944 | |
|
196c112243 | |
|
aead8728d8 | |
|
746e599208 | |
|
857b5069b6 | |
|
1ca7cc70f4 | |
|
11bc5fa2a2 | |
|
aa5cc002b3 | |
|
7dd0d60758 | |
|
8289ff5f8c | |
|
2ac7ca6721 | |
|
ce33c50ab9 | |
|
f99003cf4c | |
|
fb65581a8c | |
|
d5d3b6f488 | |
|
5583307cb6 | |
|
c5ac5f8760 | |
|
9347b17279 | |
|
8b2eb9e544 | |
|
8ff21e2215 | |
|
9a794fc55a | |
|
5b26b3095c | |
|
cae7bd5301 | |
|
4997beeb4b | |
|
9d3b20445c |
|
@ -9,10 +9,10 @@ Create your own memory games and test the memory of your site users with this si
|
||||||
|
|
||||||
(The MIT License)
|
(The MIT License)
|
||||||
|
|
||||||
Copyright (c) 2014 Amendor AS
|
Copyright (c) 2014 Joubel AS
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
320
card.js
320
card.js
|
@ -7,45 +7,133 @@
|
||||||
* @extends H5P.EventDispatcher
|
* @extends H5P.EventDispatcher
|
||||||
* @param {Object} image
|
* @param {Object} image
|
||||||
* @param {number} id
|
* @param {number} id
|
||||||
|
* @param {string} alt
|
||||||
|
* @param {Object} l10n Localization
|
||||||
* @param {string} [description]
|
* @param {string} [description]
|
||||||
|
* @param {Object} [styles]
|
||||||
*/
|
*/
|
||||||
MemoryGame.Card = function (image, id, description) {
|
MemoryGame.Card = function (image, id, alt, l10n, description, styles, audio) {
|
||||||
/** @alias H5P.MemoryGame.Card# */
|
/** @alias H5P.MemoryGame.Card# */
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
// Initialize event inheritance
|
// Initialize event inheritance
|
||||||
EventDispatcher.call(self);
|
EventDispatcher.call(self);
|
||||||
|
|
||||||
var path = H5P.getPath(image.path, id);
|
var path, width, height, $card, $wrapper, removedState, flippedState, audioPlayer;
|
||||||
var width, height, margin, $card;
|
|
||||||
|
|
||||||
if (image.width !== undefined && image.height !== undefined) {
|
alt = alt || 'Missing description'; // Default for old games
|
||||||
if (image.width > image.height) {
|
|
||||||
width = '100%';
|
if (image && image.path) {
|
||||||
height = 'auto';
|
path = H5P.getPath(image.path, id);
|
||||||
|
|
||||||
|
if (image.width !== undefined && image.height !== undefined) {
|
||||||
|
if (image.width > image.height) {
|
||||||
|
width = '100%';
|
||||||
|
height = 'auto';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
height = '100%';
|
||||||
|
width = 'auto';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
height = '100%';
|
width = height = '100%';
|
||||||
width = 'auto';
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
width = height = '100%';
|
if (audio) {
|
||||||
|
// Check if browser supports audio.
|
||||||
|
audioPlayer = document.createElement('audio');
|
||||||
|
if (audioPlayer.canPlayType !== undefined) {
|
||||||
|
// Add supported source files.
|
||||||
|
for (var i = 0; i < audio.length; i++) {
|
||||||
|
if (audioPlayer.canPlayType(audio[i].mime)) {
|
||||||
|
var source = document.createElement('source');
|
||||||
|
source.src = H5P.getPath(audio[i].path, id);
|
||||||
|
source.type = audio[i].mime;
|
||||||
|
audioPlayer.appendChild(source);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!audioPlayer.children.length) {
|
||||||
|
audioPlayer = null; // Not supported
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
audioPlayer.controls = false;
|
||||||
|
audioPlayer.preload = 'auto';
|
||||||
|
|
||||||
|
var handlePlaying = function () {
|
||||||
|
if ($card) {
|
||||||
|
$card.addClass('h5p-memory-audio-playing');
|
||||||
|
self.trigger('audioplay');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var handleStopping = function () {
|
||||||
|
if ($card) {
|
||||||
|
$card.removeClass('h5p-memory-audio-playing');
|
||||||
|
self.trigger('audiostop');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
audioPlayer.addEventListener('play', handlePlaying);
|
||||||
|
audioPlayer.addEventListener('ended', handleStopping);
|
||||||
|
audioPlayer.addEventListener('pause', handleStopping);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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.
|
* Flip card.
|
||||||
*/
|
*/
|
||||||
self.flip = function () {
|
self.flip = function () {
|
||||||
|
if (flippedState) {
|
||||||
|
$wrapper.blur().focus(); // Announce card label again
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$card.addClass('h5p-flipped');
|
$card.addClass('h5p-flipped');
|
||||||
self.trigger('flip');
|
self.trigger('flip');
|
||||||
|
flippedState = true;
|
||||||
|
|
||||||
|
if (audioPlayer) {
|
||||||
|
audioPlayer.play();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flip card back.
|
* Flip card back.
|
||||||
*/
|
*/
|
||||||
self.flipBack = function () {
|
self.flipBack = function () {
|
||||||
|
self.stopAudio();
|
||||||
|
self.updateLabel(null, null, true); // Reset card label
|
||||||
$card.removeClass('h5p-flipped');
|
$card.removeClass('h5p-flipped');
|
||||||
|
flippedState = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -53,12 +141,17 @@
|
||||||
*/
|
*/
|
||||||
self.remove = function () {
|
self.remove = function () {
|
||||||
$card.addClass('h5p-matched');
|
$card.addClass('h5p-matched');
|
||||||
|
removedState = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reset card to natural state
|
* Reset card to natural state
|
||||||
*/
|
*/
|
||||||
self.reset = function () {
|
self.reset = function () {
|
||||||
|
self.stopAudio();
|
||||||
|
self.updateLabel(null, null, true); // Reset card label
|
||||||
|
flippedState = false;
|
||||||
|
removedState = false;
|
||||||
$card[0].classList.remove('h5p-flipped', 'h5p-matched');
|
$card[0].classList.remove('h5p-flipped', 'h5p-matched');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -86,28 +179,118 @@
|
||||||
* @param {H5P.jQuery} $container
|
* @param {H5P.jQuery} $container
|
||||||
*/
|
*/
|
||||||
self.appendTo = function ($container) {
|
self.appendTo = function ($container) {
|
||||||
// TODO: Translate alt attr
|
$wrapper = $('<li class="h5p-memory-wrap" tabindex="-1" role="button"><div class="h5p-memory-card">' +
|
||||||
$card = $('<li class="h5p-memory-wrap"><div class="h5p-memory-card" role="button" tabindex="1">' +
|
'<div class="h5p-front"' + (styles && styles.front ? styles.front : '') + '>' + (styles && styles.backImage ? '' : '<span></span>') + '</div>' +
|
||||||
'<div class="h5p-front"></div>' +
|
'<div class="h5p-back"' + (styles && styles.back ? styles.back : '') + '>' +
|
||||||
'<div class="h5p-back">' +
|
(path ? '<img src="' + path + '" alt="' + alt + '" style="width:' + width + ';height:' + height + '"/>' + (audioPlayer ? '<div class="h5p-memory-audio-button"></div>' : '') : '<i class="h5p-memory-audio-instead-of-image">') +
|
||||||
'<img src="' + path + '" alt="Memory Card" style="width:' + width + ';height:' + height + '"/>' +
|
|
||||||
'</div>' +
|
'</div>' +
|
||||||
'</div></li>')
|
'</div></li>')
|
||||||
.appendTo($container)
|
.appendTo($container)
|
||||||
.children('.h5p-memory-card')
|
.on('keydown', function (event) {
|
||||||
.children('.h5p-front')
|
switch (event.which) {
|
||||||
.click(function () {
|
case 13: // Enter
|
||||||
|
case 32: // Space
|
||||||
self.flip();
|
self.flip();
|
||||||
})
|
event.preventDefault();
|
||||||
.end();
|
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();
|
||||||
|
|
||||||
|
if (audioPlayer) {
|
||||||
|
$card.children('.h5p-back')
|
||||||
|
.click(function () {
|
||||||
|
if ($card.hasClass('h5p-memory-audio-playing')) {
|
||||||
|
self.stopAudio();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
audioPlayer.play();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Re-append to parent container
|
* Re-append to parent container.
|
||||||
*/
|
*/
|
||||||
self.reAppend = function () {
|
self.reAppend = function () {
|
||||||
var parent = $card[0].parentElement.parentElement;
|
var parent = $wrapper[0].parentElement;
|
||||||
parent.appendChild($card[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;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stop any audio track that might be playing.
|
||||||
|
*/
|
||||||
|
self.stopAudio = function () {
|
||||||
|
if (audioPlayer) {
|
||||||
|
audioPlayer.pause();
|
||||||
|
audioPlayer.currentTime = 0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -124,8 +307,9 @@
|
||||||
*/
|
*/
|
||||||
MemoryGame.Card.isValid = function (params) {
|
MemoryGame.Card.isValid = function (params) {
|
||||||
return (params !== undefined &&
|
return (params !== undefined &&
|
||||||
params.image !== undefined &&
|
(params.image !== undefined &&
|
||||||
params.image.path !== undefined);
|
params.image.path !== undefined) ||
|
||||||
|
params.audio);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -137,8 +321,88 @@
|
||||||
*/
|
*/
|
||||||
MemoryGame.Card.hasTwoImages = function (params) {
|
MemoryGame.Card.hasTwoImages = function (params) {
|
||||||
return (params !== undefined &&
|
return (params !== undefined &&
|
||||||
params.match !== undefined &&
|
(params.match !== undefined &&
|
||||||
params.match.path !== undefined);
|
params.match.path !== undefined) ||
|
||||||
|
params.matchAudio);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines the theme for how the cards should look
|
||||||
|
*
|
||||||
|
* @param {string} color The base color selected
|
||||||
|
* @param {number} invertShades Factor used to invert shades in case of bad contrast
|
||||||
|
*/
|
||||||
|
MemoryGame.Card.determineStyles = function (color, invertShades, backImage) {
|
||||||
|
var styles = {
|
||||||
|
front: '',
|
||||||
|
back: '',
|
||||||
|
backImage: !!backImage
|
||||||
|
};
|
||||||
|
|
||||||
|
// Create color theme
|
||||||
|
if (color) {
|
||||||
|
var frontColor = shade(color, 43.75 * invertShades);
|
||||||
|
var backColor = shade(color, 56.25 * invertShades);
|
||||||
|
|
||||||
|
styles.front += 'color:' + color + ';' +
|
||||||
|
'background-color:' + frontColor + ';' +
|
||||||
|
'border-color:' + frontColor +';';
|
||||||
|
styles.back += 'color:' + color + ';' +
|
||||||
|
'background-color:' + backColor + ';' +
|
||||||
|
'border-color:' + frontColor +';';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add back image for card
|
||||||
|
if (backImage) {
|
||||||
|
var backgroundImage = "background-image:url('" + backImage + "')";
|
||||||
|
|
||||||
|
styles.front += backgroundImage;
|
||||||
|
styles.back += backgroundImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prep style attribute
|
||||||
|
if (styles.front) {
|
||||||
|
styles.front = ' style="' + styles.front + '"';
|
||||||
|
}
|
||||||
|
if (styles.back) {
|
||||||
|
styles.back = ' style="' + styles.back + '"';
|
||||||
|
}
|
||||||
|
|
||||||
|
return styles;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert hex color into shade depending on given percent
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @param {string} color
|
||||||
|
* @param {number} percent
|
||||||
|
* @return {string} new color
|
||||||
|
*/
|
||||||
|
var shade = function (color, percent) {
|
||||||
|
var newColor = '#';
|
||||||
|
|
||||||
|
// Determine if we should lighten or darken
|
||||||
|
var max = (percent < 0 ? 0 : 255);
|
||||||
|
|
||||||
|
// Always stay positive
|
||||||
|
if (percent < 0) {
|
||||||
|
percent *= -1;
|
||||||
|
}
|
||||||
|
percent /= 100;
|
||||||
|
|
||||||
|
for (var i = 1; i < 6; i += 2) {
|
||||||
|
// Grab channel and convert from hex to dec
|
||||||
|
var channel = parseInt(color.substr(i, 2), 16);
|
||||||
|
|
||||||
|
// Calculate new shade and convert back to hex
|
||||||
|
channel = (Math.round((max - channel) * percent) + channel).toString(16);
|
||||||
|
|
||||||
|
// Make sure to always use two digits
|
||||||
|
newColor += (channel.length < 2 ? '0' + channel : channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
return newColor;
|
||||||
};
|
};
|
||||||
|
|
||||||
})(H5P.MemoryGame, H5P.EventDispatcher, H5P.jQuery);
|
})(H5P.MemoryGame, H5P.EventDispatcher, H5P.jQuery);
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
files:
|
files:
|
||||||
- source: /language/source/en.json
|
- source: /language/.en.json
|
||||||
translation: /language/%two_letters_code%.json
|
translation: /language/%two_letters_code%.json
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 225">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.cls-1 {
|
||||||
|
isolation: isolate;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-2 {
|
||||||
|
fill: #589b42;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-3 {
|
||||||
|
fill: #8ac97a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-4 {
|
||||||
|
opacity: 0.2;
|
||||||
|
mix-blend-mode: multiply;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-5 {
|
||||||
|
fill: #f26262;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-6 {
|
||||||
|
fill: #f7cf5c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cls-7 {
|
||||||
|
fill: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<title>memmory game</title>
|
||||||
|
<g class="cls-1">
|
||||||
|
<g id="Layer_2" data-name="Layer 2">
|
||||||
|
<g id="memmory_game" data-name="memmory game">
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<rect class="cls-2" x="131" y="42.5" width="37" height="39"/>
|
||||||
|
<path class="cls-3" d="M166,45.5v31H133v-31h33m6-7H127v45h45v-45Z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect class="cls-2" x="184" y="42.5" width="38" height="39"/>
|
||||||
|
<path class="cls-3" d="M218,45.5v31H186v-31h32m6-7H181v45h43v-45Z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g class="cls-4">
|
||||||
|
<rect x="237" y="41.5" width="44" height="43"/>
|
||||||
|
</g>
|
||||||
|
<rect class="cls-5" x="235" y="38.5" width="43" height="45"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g class="cls-4">
|
||||||
|
<rect x="131" y="94.5" width="43" height="44"/>
|
||||||
|
</g>
|
||||||
|
<rect class="cls-5" x="127" y="93.5" width="46" height="43"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect class="cls-2" x="184" y="95.5" width="38" height="39"/>
|
||||||
|
<path class="cls-3" d="M218,97.5v34H186v-34h32m6-4H181v43h43v-43Z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect class="cls-2" x="237" y="95.5" width="38" height="39"/>
|
||||||
|
<path class="cls-3" d="M273,97.5v34H241v-34h32m4-4H235v43h42v-43Z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect class="cls-2" x="131" y="147.5" width="37" height="38"/>
|
||||||
|
<path class="cls-3" d="M166,151.5v33H133v-33h33m6-6H127v44h45v-44Z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect class="cls-2" x="184" y="147.5" width="38" height="38"/>
|
||||||
|
<path class="cls-3" d="M218,151.5v33H186v-33h32m6-6H181v44h43v-44Z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect class="cls-2" x="237" y="147.5" width="38" height="38"/>
|
||||||
|
<path class="cls-3" d="M273,151.5v33H241v-33h32m4-6H235v44h42v-44Z"/>
|
||||||
|
</g>
|
||||||
|
<path class="cls-6" d="M162.47,111.19l-5.61,5.47,1.33,7.73a2.07,2.07,0,0,1,0,.31c0,.4-.19.77-.63.77a1.26,1.26,0,0,1-.62-.19L150,121.65l-6.94,3.65a1.31,1.31,0,0,1-.62.19c-.45,0-.65-.37-.65-.77a2.09,2.09,0,0,1,0-.31l1.33-7.73-5.63-5.47a1.2,1.2,0,0,1-.39-.74c0-.46.48-.65.87-.71l7.76-1.13,3.48-7c.14-.29.4-.63.76-.63s.62.34.76.63l3.48,7,7.76,1.13c.37.06.87.25.87.71A1.15,1.15,0,0,1,162.47,111.19Z"/>
|
||||||
|
<path class="cls-6" d="M269.28,57.35l-5.61,5.47L265,70.55a2.07,2.07,0,0,1,0,.31c0,.4-.19.77-.63.77a1.26,1.26,0,0,1-.62-.19l-6.94-3.65-6.94,3.65a1.31,1.31,0,0,1-.62.19c-.45,0-.65-.37-.65-.77a2.09,2.09,0,0,1,0-.31L250,62.82l-5.63-5.47a1.2,1.2,0,0,1-.39-.74c0-.46.48-.65.87-.71l7.76-1.13,3.48-7c.14-.29.4-.63.76-.63s.62.34.76.63l3.48,7,7.76,1.13c.37.06.87.25.87.71A1.15,1.15,0,0,1,269.28,57.35Z"/>
|
||||||
|
</g>
|
||||||
|
<rect class="cls-7" width="400" height="225"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.2 KiB |
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "Default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "Cards",
|
||||||
|
"entity": "card",
|
||||||
|
"field": {
|
||||||
|
"label": "Card",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alternative text for 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": "Audio Track",
|
||||||
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Image",
|
||||||
|
"description": "An optional image to match against instead of using two cards with the same image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "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": "Add button for retrying when the game is over"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card Back",
|
||||||
|
"description": "Use a custom back for your cards."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Localization",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Card turns text",
|
||||||
|
"default": "Card turns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Time spent text",
|
||||||
|
"default": "Time spent"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Feedback text",
|
||||||
|
"default": "Good work!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Try again button text",
|
||||||
|
"default": "Try again?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
122
language/af.json
122
language/af.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Verstek"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Kaarte",
|
||||||
"entity":"card",
|
"entity": "kaart",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Kaart",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Beeld"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Alternatiewe teks vir prent",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "Beskryf wat jy in die foto kan sien. Die teks word gelees deur teks-na-spraak instrumente wat vir visueel beperkte gebruikers gebruik word."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "Klankgreep",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "'n Opsionele klank wat speel wanneer die kaartjie omgedraai word."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Passende Prent",
|
||||||
|
"description": "'n Opsionele prent om dit daar teenoor te laat pas in stede daarvan om twee kaartjies met dieselfde prent te gebruik."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alternatiewe teks vir die passende prent",
|
||||||
|
"description": "Beskryf wat jy in die foto kan sien. Die teks word gelees deur teks-na-spraak instrumente wat vir visueel beperkte gebruikers gebruik word."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Passende klankgreep",
|
||||||
|
"description": "'n Opsionele klank wat speel wanneer die tweede kaartjie omgedraai word."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Beskrywing",
|
||||||
|
"description": "'n Opsionele kort teks wat opspring sodra die twee passende kaartjies gevind is."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Gedragsinstellings",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Hierdie opsies laat jou beheer hoe die spelletjie werk.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Plaas die kaartjies in 'n vierkant",
|
||||||
"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."
|
"description": "Sal probeer om die aantal kolomme en rye te pas wanneer jy die kaarte uitlê. Daarna sal die kaarte volgens die houer se grote aangepas word."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "Aantal kaartjies om te gebruik",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "As jy dit op 'n getal groter as 2 stel, sal die spelletjie willekeurige kaartjies uit die kaartlys kies."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Voeg 'n probeer weer knoppie by wanneer die spelletjie verby is"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Aansig en gevoel",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Beheer die visuele van die spelletjie.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Temakleur",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Kies 'n kleur om 'n tema vir jou kaartjie te skep."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Kaartjie agterkant",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Gebruik verstek agterkant vir jou kaartjies."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Lokalisasie",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Kaartjie draaiteks",
|
||||||
"default":"Card turns"
|
"default": "Kaartjie draai"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Tyd bestee teks",
|
||||||
"default":"Time spent"
|
"default": "Tyd bestee"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Terugvoerteks",
|
||||||
"default":"Good work!"
|
"default": "Goeie werk!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Probeer weer knoppie teks",
|
||||||
"default":"Try again?"
|
"default": "Probeer weer?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Maak toe knoppie etiket",
|
||||||
"default":"Close"
|
"default": "Maak toe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Spelletjie etiket",
|
||||||
|
"default": "Geheue spelletjie. Vind die passend kaartjies."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Speletjie verby etiket",
|
||||||
|
"default": "Al die kaartjies is gevind."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kaart indeks etiket",
|
||||||
|
"default": "Kaartjie %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Onaangeraakte kaartjie etiket",
|
||||||
|
"default": "Onaangeraak."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kaartjie gepas etiket",
|
||||||
|
"default": "Pasmaat gevind."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
122
language/ar.json
122
language/ar.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Default"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"البطاقات",
|
"label": "البطاقات",
|
||||||
"entity":"بطاقة",
|
"entity": "بطاقة",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"البطاقة",
|
"label": "البطاقة",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"الصورة"
|
"label": "الصورة"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Alternative text for Image",
|
||||||
"description":"An optional image to match against instead of using two cards with the same 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":"الوصف",
|
"label": "Audio Track",
|
||||||
"description":"نص قصير يتم عرضه مرة واحدة علي اثنين من البطاقات متساوية"
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Image",
|
||||||
|
"description": "An optional image to match against instead of using two cards with the same image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "الوصف",
|
||||||
|
"description": "نص قصير يتم عرضه مرة واحدة علي اثنين من البطاقات متساوية"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Behavioural settings",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "These options will let you control how the game behaves.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"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."
|
"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",
|
"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."
|
"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",
|
"label": "Look and feel",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Control the visuals of the game.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Theme Color",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Choose a color to create a theme for your card game."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Card Back",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Use a custom back for your cards."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"الأقلمة",
|
"label": "الأقلمة",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"نص تدوير البطاقة",
|
"label": "نص تدوير البطاقة",
|
||||||
"default":"Card turns"
|
"default": "Card turns"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"نص التوقيت الزمني",
|
"label": "نص التوقيت الزمني",
|
||||||
"default":"Time spent"
|
"default": "Time spent"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"نص الملاحظات",
|
"label": "نص الاراء",
|
||||||
"default":"Good work!"
|
"default": "Good work!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Try again button text",
|
||||||
"default":"Try again?"
|
"default": "Reset"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Close button label",
|
||||||
"default":"Close"
|
"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."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "По подразбиране"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "Карти",
|
||||||
|
"entity": "карта",
|
||||||
|
"field": {
|
||||||
|
"label": "Карта",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Изображение"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Алтернативен текст за изображението",
|
||||||
|
"description": "Опишете какво може да се види на снимката. Текстът се чете от инструментите за преобразуване на текст в реч, необходими на потребители с увредено зрение."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Аудиозапис",
|
||||||
|
"description": "Допълнителен звук, който се възпроизвежда при завъртане на картата."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Съответстващо изображение",
|
||||||
|
"description": "Незадължително изображение, с което да се сравнява, вместо да се използват две карти със същото изображение."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Алтернативен текст за съответстващо изображение",
|
||||||
|
"description": "Опишете какво може да се види на снимката. Текстът се чете от инструментите за преобразуване на текст в реч, необходими на потребители с увредено зрение."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Съответстващ аудио запис",
|
||||||
|
"description": "Допълнителен звук, който се възпроизвежда, когато втората карта е обърната."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Description",
|
||||||
|
"description": "Незадължителен кратък текст, който ще се появи след като бъдат намерени двете съвпадащи карти."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Настройки за поведение",
|
||||||
|
"description": "Тези опции ще ви позволят да контролирате поведението на играта.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Позиционирайте картите в квадрат",
|
||||||
|
"description": "Ще бъдат съпоставени броя на колоните и редовете, когато поставяме картите. След това картите ще бъдат мащабирани, за да пасват на карето, в което се показват."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Брой на използваните карти",
|
||||||
|
"description": "Задаването на това число, по-голямо от 2, ще накара играта да избере случайни карти от списъка с карти."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Добавете бутон за повторен опит, когато играта приключи"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Изглед и усещане",
|
||||||
|
"description": "Управление на визуалните ефекти на играта.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Цвят на темата",
|
||||||
|
"description": "Изберете цвят, за да създадете тема за вашата игра на карти."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Карта назад",
|
||||||
|
"description": "Използвайте персонализиран бутон назад за вашите карти."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Превод и локализация",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Брой обърнати карти",
|
||||||
|
"default": "Обърнати карти"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Вашето време",
|
||||||
|
"default": "Вашето време"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Обратна връзка",
|
||||||
|
"default": "Браво!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Бутон за повторен опит",
|
||||||
|
"default": "Искаш ли да опиташ пак?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Бутон за затваряне",
|
||||||
|
"default": "Затвори"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Етикет на Играта",
|
||||||
|
"default": "Имате ли добра памет? Намерете еднаквите карти"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Етикет за край на играта",
|
||||||
|
"default": "Всички карти са намерени"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card indexing label",
|
||||||
|
"default": "Card %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Етикет за необърната карта.",
|
||||||
|
"default": "Необърната карта."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Етикет за открито съвпадение на карти",
|
||||||
|
"default": "Имате съвпадение."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
122
language/bs.json
122
language/bs.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Default"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Karte",
|
"label": "Karte",
|
||||||
"entity":"karte",
|
"entity": "karte",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Karte",
|
"label": "Karte",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Slika"
|
"label": "Slika"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Ista slika",
|
"label": "Alternativni tekst za sliku",
|
||||||
"description":"Opcionalna slika koja se koristi umjestodvije iste slike."
|
"description": "Opiši šta može biti viđeno na slici. Tekst se čita elektronski za vizualno neuparene korisnike."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Opis",
|
"label": "Audio traka",
|
||||||
"description":"Kratak tekst koji će biti prikazan čim se pronađu dvije iste karte."
|
"description": "Opcionalan zvuk koji se čuje kada se okrene karta."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ista slika",
|
||||||
|
"description": "Opcionalna slika koja se koristi umjesto dvije iste slike."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alternativni tekst za sliku podudaranja",
|
||||||
|
"description": "Opiši šta može biti viđeno na slici. Tekst se čita elektronski za vizualno neuparene korisnike."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Zvuk podudaranja",
|
||||||
|
"description": "Opcionalan zvuk koji se čuje kada se okrene druga karta."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Opis",
|
||||||
|
"description": "Kratak tekst koji će biti prikazan čim se pronađu dvije iste karte."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Podešavanje ponašanja",
|
"label": "Podešavanje ponašanja",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "These options will let you control how the game behaves.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Poredaj karte u redove ",
|
"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."
|
"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",
|
"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."
|
"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": "Dodaj dugme za ponovni pokušaj kada je igra gotova"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Pogledaj i osjeti",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Kontroliraj u igri ono što vidiš.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Boja teme",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Choose a color to create a theme for your card game."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Pozadina karte",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Use a custom back for your cards."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Prijevod",
|
"label": "Prijevod",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Tekst kad se okrene karta ",
|
"label": "Tekst kad se okrene karta ",
|
||||||
"default":"Okrenuta karta"
|
"default": "Okrenuta karta"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Tekst za provedeno vrijeme",
|
"label": "Tekst za provedeno vrijeme",
|
||||||
"default":"Provedeno vrijeme"
|
"default": "Provedeno vrijeme"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback tekst",
|
"label": "Feedback tekst",
|
||||||
"default":"BRAVO!"
|
"default": "BRAVO!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Tekst na dugmetu pokušaj ponovo",
|
"label": "Tekst na dugmetu pokušaj ponovo",
|
||||||
"default":"Pokušaj ponovo?"
|
"default": "Pokušaj ponovo?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Oznaka za dugme zatvori",
|
||||||
"default":"Close"
|
"default": "Zatvori"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Oznaka za igru",
|
||||||
|
"default": "Memory igra. Pronađi kartu koja se podudara."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Oznaka za završenu igru",
|
||||||
|
"default": "Sve karte su pronađene."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Oznaka za indeksiranje karata",
|
||||||
|
"default": "Karta %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Oznaka za neokrenutu kartu",
|
||||||
|
"default": "Neokrenuta."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Oznaka za kartu podudaranja",
|
||||||
|
"default": "Pronađeno podudaranje."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
122
language/ca.json
122
language/ca.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Opció predeterminada"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Cartes",
|
||||||
"entity":"card",
|
"entity": "carta",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Carta",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Imatge"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Text alternatiu per a la imatge",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "Descriu el que es pot veure a la foto. El text és llegit per les eines de text a veu que necessiten els usuaris amb deficiència visual."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "Pista d’àudio",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "So opcional que es reprodueix en girar una carta."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Imatge coincident",
|
||||||
|
"description": "Imatge opcional per emparellar en lloc d’utilitzar dues cartes amb la mateixa imatge."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Text alternatiu per a la imatge",
|
||||||
|
"description": "Descriu el que es pot veure a la foto. El text és llegit per les eines de text a veu que necessiten els usuaris amb deficiència visual."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pista d’àudio per a una coincidència",
|
||||||
|
"description": "So opcional que es reprodueix quan es gira la segona carta."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Descripció",
|
||||||
|
"description": "Text breu opcional que es mostrarà quan es trobin les dues cartes coincidents."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Opcions de comportament",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Aquestes opcions us permeten controlar com es comporta el joc.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Distribueix les cartes formant un quadrat",
|
||||||
"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."
|
"description": "Es provarà de fer coincidir el nombre de files i de columnes en disposar les cartes. Després, les cartes s’ajustaran al contenidor."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "Nombre de targetes a utilitzar",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "Si configureu aquest valor amb un número més gran que 2, el joc seleccionarà les cartes aleatòriament de la llista de cartes."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Afegeix el botó per tornar-ho a provar quan el joc finalitzi"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Aspecte visual",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Controleu els elements visuals del joc.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Color del tema",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Trieu un color per crear un tema per al joc de cartes."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Revers de la carta",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Utilitzeu un revers personalitzat per a les cartes."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Localització",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Text dels girs de cartes",
|
||||||
"default":"Card turns"
|
"default": "Girs de cartes"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Text de temps transcorregut",
|
||||||
"default":"Time spent"
|
"default": "Temps dedicat"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Text del suggeriment",
|
||||||
"default":"Good work!"
|
"default": "Correcte!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Text del botó \"Torna-ho a provar\"",
|
||||||
"default":"Try again?"
|
"default": "Voleu tornar-ho a provar?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Etiqueta del botó de tancar",
|
||||||
"default":"Close"
|
"default": "Tanca"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta del joc",
|
||||||
|
"default": "Joc de memòria. Cerca les targetes coincidents."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta \"El joc ha finalitzat\"",
|
||||||
|
"default": "S’han emparellat totes les cartes."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta d’indexació de les cartes",
|
||||||
|
"default": "Carta %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta per a les cartes no girades",
|
||||||
|
"default": "Sense girar."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta per a les cartes coincidents",
|
||||||
|
"default": "S’ha trobat una coincidència."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
122
language/cs.json
122
language/cs.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Výchozí"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Karty",
|
||||||
"entity":"card",
|
"entity": "karta",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Karta",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Obrázek"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Alternativní text pro obrázek",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "Popište, co lze na fotografii vidět. Text je čten pomocí nástrojů převodu textu na řeč, které potřebují zrakově hendikepovaní uživatelé."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "Zvuková stopa",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "Volitelný zvuk, který se přehraje při otočení karty."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Odpovídající obrázek",
|
||||||
|
"description": "Volitelný obrázek, který bude odpovídat namísto použití dvou karet se stejným obrázkem."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alternativní text pro odpovídající obrázek",
|
||||||
|
"description": "Popište, co lze na fotografii vidět. Text je čten pomocí nástrojů převodu textu na řeč, které potřebují zrakově hendikepovaní uživatelé."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Odpovídající zvuková stopa",
|
||||||
|
"description": "Volitelný zvuk, který se přehraje při otočení druhé karty."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Popis",
|
||||||
|
"description": "Volitelný krátký text, který se objeví, jakmile jsou nalezeny dvě odpovídající karty."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Nastavení chování",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Tyto možnosti vám umožní řídit, jak se hra bude chovat.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Umístit karty do čtverce",
|
||||||
"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."
|
"description": "Při rozložení karet se bude snažit porovnat počet sloupců a řádků. Poté budou karty upraveny podle velikosti kontejneru."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "Počet karet k použití",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "Pokud toto nastavíte na číslo větší než 2, bude hra vybírat náhodné karty ze seznamu karet."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Tlačítko pro opakování pokusu o ukončení hry"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Vzhled a pocit",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Ovládat vizuální prvky hry.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Barva motivu",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Vyberte barvu pro vytvoření motivu pro vaši karetní hru."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Zadní strana karty",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Použijte vlastní zadní stranu karet."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Localizace",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Text pro otočení karet",
|
||||||
"default":"Card turns"
|
"default": "Otočení karet"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Text pro strávený čas",
|
||||||
"default":"Time spent"
|
"default": "Strávený čas"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Text zpětné vazby",
|
||||||
"default":"Good work!"
|
"default": "Výborně!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Text tlačítka Zkusit znovu",
|
||||||
"default":"Try again?"
|
"default": "Zkusit znovu?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Text tlačítka Zavřít",
|
||||||
"default":"Close"
|
"default": "Zavřít"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Popisek hry",
|
||||||
|
"default": "Paměťová hra. Najděte odpovídající karty. (Pexeso)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Popisek konce hry",
|
||||||
|
"default": "Všechny karty byly nalezeny."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Popisek indexu karty",
|
||||||
|
"default": "Karta %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Popisek neotočené karty",
|
||||||
|
"default": "Neotočená."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Popisek shody karet",
|
||||||
|
"default": "Nalezena shoda."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
120
language/da.json
120
language/da.json
|
@ -1,87 +1,119 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Standard"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Kort",
|
||||||
"entity":"card",
|
"entity": "card",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Kort",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Billede"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Alternative text for Image",
|
||||||
"description":"An optional image to match against instead of using two cards with the same 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",
|
"label": "Audio Track",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matchende billede",
|
||||||
|
"description": "Valgfrit billede som match i stedet for at have to kort med det samme billede."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Beskrivelse",
|
||||||
|
"description": "Valgfri tekst, som popper op, når to matchende billeder er fundet."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Indstillinger",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Disse indstillinger giver dig mulighed for at bestemme, hvordan spillet fremstår.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Placer kortene kvadratisk",
|
||||||
"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."
|
"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":"Number of cards to use",
|
"label": "Antal kort i opgaven",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "Vælges et større tal end 2, vælges kort tilfældigt fra listen af kort."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Tilføj knap for at prøve spillet igen, når spillet er afsluttet."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Udseende",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Indstil spillets udseende.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Farvetema",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Vælg en farve til bagsiden af dine kort."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Bagsidebillede",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Brug et billede som bagside på dine kort."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Oversættelse",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Tekst når kort vendes",
|
||||||
"default":"Card turns"
|
"default": "Kort vendes"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Tekst for tidsforbrug",
|
||||||
"default":"Time spent"
|
"default": "Tidsforbrug"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Feedback tekst",
|
||||||
"default":"Good work!"
|
"default": "Godt klaret!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Prøv igen knaptekst",
|
||||||
"default":"Try again?"
|
"default": "Prøv igen?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Luk knaptekst",
|
||||||
"default":"Close"
|
"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."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
120
language/de.json
120
language/de.json
|
@ -1,87 +1,119 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Vorgaben"
|
"label": "Eingabemaske"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Karten",
|
"label": "Karten",
|
||||||
"entity":"karte",
|
"entity": "Karte",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Karte",
|
"label": "Karte",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Bild"
|
"label": "Bild"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Passendes Bild",
|
"label": "Alternativtext für das Bild",
|
||||||
"description":"Ein optionales anderes Bild als Gegenstück statt zwei Karten mit dem selben Bild zu nutzen"
|
"description": "Beschreibt, was im Bild zu sehen ist. Dieser Text wird von Vorlesewerkzeugen für Sehbehinderte genutzt."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Beschreibung",
|
"label": "Ton",
|
||||||
"description":"Ein kurzer Text, der angezeigt wird, sobald zwei identische Karten gefunden werden."
|
"description": "Optionaler Ton, der abgespielt wird, wenn die Karte umgedreht wird."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Zugehöriges Bild",
|
||||||
|
"description": "Ein optionales zweites Bild, das mit dem ersten ein Paar bildet, anstatt zweimal das selbe Bild zu verwenden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alternativtext für das zweite Bild",
|
||||||
|
"description": "Beschreibt, was im Bild zu sehen ist. Dieser Text wird von Vorlesewerkzeugen für Sehbehinderte genutzt."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ton zum zweiten Bild",
|
||||||
|
"description": "Optionaler Ton, der abgespielt wird, wenn die zweite Karte umgedreht wird."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Beschreibung",
|
||||||
|
"description": "Ein kurzer optionaler Text, der angezeigt wird, wenn das Kartenpaar gefunden wurde."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Interaktionseinstellungen",
|
"label": "Verhaltenseinstellungen",
|
||||||
"description":"Mit diesen Einstellungen kannst du das Verhalten des Spiels anpassen.",
|
"description": "Diese Optionen legen fest, wie das Spiel im Detail funktioniert.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Positioniere die Karten in einem Quadrat.",
|
"label": "Karten in einem Quadrat anordnen",
|
||||||
"description":"Es wird versucht, die Anzahl der Zeilen und Spalten passend zu den Karten einzustellen. Danach werden die Karten passend skaliert."
|
"description": "Versucht die Karten in der gleichen Zahl von Reihen und Spalten zu anzuordnen. Danach wird die Kartengröße an den verfügbaren Platz angepasst."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Anzahl der zu nutzenden Karten",
|
"label": "Anzahl der zu verwendenden Karten",
|
||||||
"description":"Wird hier eine Zahl größer als 2 eingestellt, werden zufällig Karten aus der Kartenliste gezogen."
|
"description": "Wenn die Anzahl größer als 2 ist, werden zufällige Karten aus der Liste ausgewählt."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Füge einen Button hinzu, um das Spiel noch einmal neu zu starten zu können, wenn es vorbei ist."
|
"label": "\"Wiederholen\"-Button anzeigen"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Design-Aspekte",
|
"label": "Erscheinungsbild",
|
||||||
"description":"Beeinflusse die Optik des Spiels",
|
"description": "Legt fest, wie das Spiel aussieht.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Themenfarbe",
|
"label": "Themenfarbe",
|
||||||
"description":"Wähle eine Farbe, um ein Theme für deine Karten zu erstellen.",
|
"description": "Wähle eine Farbe, um das Spiel zu individualisieren."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Kartenrückseite",
|
"label": "Kartenrückseite",
|
||||||
"description":"Nutze eine individuelle Rückseite für deine Karten."
|
"description": "Verwende eine benutzerdefinierte Rückseite für die Karten."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Übersetzung",
|
"label": "Bezeichnungen und Beschriftungen",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Text für die Anzahl der Züge",
|
"label": "Text mit der Anzahl der Züge",
|
||||||
"default":"Züge"
|
"default": "Züge"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Text für die benötigte Zeit",
|
"label": "Text mit der bisher benötigten Zeit",
|
||||||
"default":"Benötigte Zeit"
|
"default": "Benötigte Zeit"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Text als Rückmeldung",
|
"label": "Rückmeldungstext",
|
||||||
"default":"Gute Arbeit!"
|
"default": "Gut gemacht!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Text des Wiederholen-Buttons",
|
"label": "Beschriftung des \"Wiederholen\"-Buttons",
|
||||||
"default":"Erneut versuchen?"
|
"default": "Nochmal spielen"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Beschriftung des \"Abbrechen\"-Buttons",
|
"label": "Beschriftung des \"Schließen\"-Buttons",
|
||||||
"default":"Schließen"
|
"default": "Schließen"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Bezeichnung des Spiels",
|
||||||
|
"default": "Memory - Finde die Kartenpaare!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Meldung, wenn das Spiel abgeschlossen wurde",
|
||||||
|
"default": "Du hast alle Kartenpaare gefunden!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Beschriftung der Kartennummer",
|
||||||
|
"default": "Karte %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Text, wenn eine Karte wieder zugedeckt wurde",
|
||||||
|
"default": "Zugedeckt."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Text, wenn ein Paar gefunden wurde",
|
||||||
|
"default": "Paar gefunden."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
122
language/el.json
122
language/el.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Βασικό"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Κάρτες",
|
||||||
"entity":"card",
|
"entity": "καρτας",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Κάρτα",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Εικόνα"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Εναλλακτικό κείμενο εικόνας",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "Δώστε μια περιγραφή της εικόνας. Το κείμενο διαβάζεται από εργαλεία ανάγνωσης κειμένου (text-to-speech) που χρησιμοποιούνται από χρήστες με προβλήματα όρασης."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "Ήχος ανοίγματος",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "Ήχος που ακούγεται κάθε φορά που μια κάρτα ανοίγει (προαιρετικά)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Αντίστοιχη εικόνα",
|
||||||
|
"description": "Αντίστοιχη εικόνα που μπορεί να χρησιμοποιηθεί προαιρετικά αντί της χρήσης της ίδιας εικόνας σε δύο κάρτες (προαιρετικά)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Εναλλακτικό κείμενο αντίστοιχης εικόνας",
|
||||||
|
"description": "Δώστε μια περιγραφή της εικόνας. Το κείμενο διαβάζεται από εργαλεία ανάγνωσης κειμένου (text-to-speech) που χρησιμοποιούνται από χρήστες με προβλήματα όρασης."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ήχος αντιστοίχισης",
|
||||||
|
"description": "Ήχος που ακούγεται κάθε φορά που δύο κάρτες αντιστοιχίζονται μεταξύ τους (προαιρετικά)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Κείμενο αντιστοίχισης",
|
||||||
|
"description": "Σύντομο κείμενο που εμφανίζεται κάθε φορά που δύο κάρτες αντιστοιχίζονται μεταξύ τους (προαιρετικά)."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Ρυθμίσεις παιχνιδιού",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Αυτές οι ρυθμίσεις σας επιτρέπουν να καθορίσετε τον τρόπο λειτουργίας του παιχνιδιού.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Διάταξη καρτών σε τετράγωνο",
|
||||||
"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."
|
"description": "Κατά τη διάταξη των καρτών επιχειρείται ο αριθμός των στηλών να είναι ίδιος με τον αριθμό των γραμμών. Οι διαστάσεις των καρτών προσαρμόζονται."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "Αριθμός καρτών που χρησιμοποιούνται",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "Επιλέγοντας αριθμό μεγαλύτερο του δύο (2) οδηγείτε το παιχνίδι στην τυχαία επιλογή καρτών από τη συνολική λίστα."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Προσθήκη κουμπιού νέας προσπάθειας μετά την ολοκλήρωση του παιχνιδιού"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Εμφάνιση",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Έλεγχος της εμφάνισης του παιχνιδιού.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Χρώμα \"θέματος\"",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Επιλέξτε ένα χρώμα για τη δημιουργία \"θέματος\" για το παιχνίδι μνήμης."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Πίσω πλευρά καρτών",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Χρησιμοποιήστε μια δική σας εικόνα για την πίσω πλευρά των καρτών."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Προσαρμογή",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Κείμενο ανοίγματος κάρτας",
|
||||||
"default":"Card turns"
|
"default": "Άνοιγμα κάρτας"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Κείμενο χρόνου που πέρασε",
|
||||||
"default":"Time spent"
|
"default": "Χρόνος"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Κείμενο ανατροφοδότησης",
|
||||||
"default":"Good work!"
|
"default": "Μπράβο!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Κείμενο κουμπιού νέας προσπάθειας",
|
||||||
"default":"Try again?"
|
"default": "Επανάληψη"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Ετικέτα κουμπιού κλεισίματος",
|
||||||
"default":"Close"
|
"default": "Κλείσιμο"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ετικέτα παιχνιδιού",
|
||||||
|
"default": "Παιχνίδι μνήμης. Αντιστοίχισε τις κάρτες που ταιριάζουν μεταξύ τους."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ετικέτα ολοκλήρωσης παιχνιδιού",
|
||||||
|
"default": "Έχουν αντιστοιχιστεί όλες οι κάρτες!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ετικέτα ταξινόμησης κάρτας",
|
||||||
|
"default": "Κάρτα %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ετικέτα κλειστής κάρτας",
|
||||||
|
"default": "Κλειστή."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ετικέτα κάρτας που έχει αντιστοιχιστεί",
|
||||||
|
"default": "Έχει αντιστοιχιστεί."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "Predeterminado"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "Tarjetas",
|
||||||
|
"entity": "tarjeta",
|
||||||
|
"field": {
|
||||||
|
"label": "Tarjeta",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Imagen"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto alternativo para la imagen",
|
||||||
|
"description": "Describe lo que se puede ver en la foto. El texto es leído por herramientas de conversión de texto a voz, necesarias para usuarios con discapacidad visual."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pista de Audio",
|
||||||
|
"description": "Un sonido opcional que se reproduce cuando se voltea la carta."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Imagen Coincidente",
|
||||||
|
"description": "Una imagen opcional para coincidir, en vez de usar dos tarjetas con la misma imagen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto alternativo para Imagen Coincidente",
|
||||||
|
"description": "Describir lo que puede verse en la foto. El texto es leído por herramientas de conversión de texto a voz, necesarias para usuarios con discapacidad visual."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pista de Audio Coincidente",
|
||||||
|
"description": "Un sonido opcional que se reproduce cuando se voltea la segunda carta."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Descripción",
|
||||||
|
"description": "Un breve texto opcional que aparecerá una vez se encuentren las dos cartas coincidentes."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Configuraciones del comportamiento",
|
||||||
|
"description": "Estas opciones le permitirán controlar cómo se comporta el juego.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Colocar 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": "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": "Color del Tema",
|
||||||
|
"description": "Elegir un color para crear un tema para su juego de tarjetas."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Reverso de la Tarjeta",
|
||||||
|
"description": "Utilice una parte posterior personalizada para sus tarjetas."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Localización",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Texto para los giros de tarjetas",
|
||||||
|
"default": "Giros de tarjeta"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto de tiempo usado",
|
||||||
|
"default": "Tiempo usado"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto de retroalimentación",
|
||||||
|
"default": "¡Buen trabajo!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto del botón Intente de nuevo",
|
||||||
|
"default": "¿Volver a intentarlo?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto del botón Cerrar",
|
||||||
|
"default": "Cerrar"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta del juego",
|
||||||
|
"default": "Juego de Memoria. Encuentra las cartas que coinciden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta de juego terminado",
|
||||||
|
"default": "Todas las cartas han sido encontradas."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta de indexación de tarjeta",
|
||||||
|
"default": "Tarjeta %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto de tarjeta sin voltear",
|
||||||
|
"default": "Sin voltear."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto de tarjeta coincidente",
|
||||||
|
"default": "Coincidencia encontrada."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
122
language/es.json
122
language/es.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Predeterminado"
|
"label": "Predeterminado"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Tarjetas",
|
"label": "Tarjetas",
|
||||||
"entity":"card",
|
"entity": "tarjeta",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Tarjeta",
|
"label": "Tarjeta",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Imagen"
|
"label": "Imagen"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Imagen coincidente",
|
"label": "Texto alternativo para la imagen",
|
||||||
"description":"Una imagen opcional para emparejar, en vez de usar dos tarjetas con la misma imagen."
|
"description": "Describe lo que se puede ver en la foto. El texto es leído por herramientas de conversión de texto a voz, necesarias para usuarios con discapacidad visual."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Descripción",
|
"label": "Pista de Audio",
|
||||||
"description":"Un breve texto opcional que aparecerá una vez se encuentren las dos cartas coincidentes."
|
"description": "Un sonido opcional que se reproduce cuando se voltea la carta."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Imagen Coincidente",
|
||||||
|
"description": "Una imagen opcional para emparejar, en vez de usar dos tarjetas con la misma imagen."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto alternativo para Imagen Coincidente",
|
||||||
|
"description": "Describir lo que puede verse en la foto. El texto es leído por herramientas de conversión de texto a voz, necesarias para usuarios con discapacidad visual."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pista de Audio Coincidente",
|
||||||
|
"description": "Un sonido opcional que se reproduce cuando se voltea la segunda carta."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Descripción",
|
||||||
|
"description": "Un breve texto opcional que aparecerá una vez se encuentren las dos cartas coincidentes."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Ajustes de comportamiento",
|
"label": "Configuraciones del comportamiento",
|
||||||
"description":"Estas opciones le permitirán controlar cómo se comporta el juego.",
|
"description": "Estas opciones le permitirán controlar cómo se comporta el juego.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Coloca las tarjetas en un cuadrado",
|
"label": "Colocar 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."
|
"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",
|
"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."
|
"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",
|
"label": "Aspecto y comportamiento",
|
||||||
"description":"Controla los efectos visuales del juego.",
|
"description": "Controla los efectos visuales del juego.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Color del tema",
|
"label": "Color del Tema",
|
||||||
"description":"Elegir un color para crear un tema para su juego de cartas.",
|
"description": "Elegir un color para crear un tema para su juego de tarjetas."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Parte posterior de la tarjeta",
|
"label": "Reverso de la Tarjeta",
|
||||||
"description":"Utilice una parte posterior personalizada para sus tarjetas."
|
"description": "Utilice una parte posterior personalizada para sus tarjetas."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localización",
|
"label": "Localización",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Texto para los giros de tarjetas",
|
"label": "Texto para los giros de tarjetas",
|
||||||
"default":"Giros de tarjeta"
|
"default": "Giros de tarjeta"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Texto de tiempo usado",
|
"label": "Texto de tiempo usado",
|
||||||
"default":"Tiempo usado"
|
"default": "Tiempo usado"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Texto de comentarios",
|
"label": "Texto de retroalimentación",
|
||||||
"default":"¡Buen trabajo!"
|
"default": "¡Buen trabajo!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Intente del botón Intente de nuevo",
|
"label": "Texto del botón Intente de nuevo",
|
||||||
"default":"¿Volver a intentarlo?"
|
"default": "¿Volver a intentarlo?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Etiqueta del botón Cerrar",
|
"label": "Texto del botón Cerrar",
|
||||||
"default":"Cerrar"
|
"default": "Cerrar"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta del juego",
|
||||||
|
"default": "Juego de Memoria. Encuentra las cartas que coinciden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta de juego terminado",
|
||||||
|
"default": "Todas las cartas han sido encontradas."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta de indexación de tarjeta",
|
||||||
|
"default": "Tarjeta %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto de tarjetas sin voltear",
|
||||||
|
"default": "Sin voltear."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto de tarjeta coincidente",
|
||||||
|
"default": "Coincidencia encontrada."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
120
language/et.json
120
language/et.json
|
@ -1,87 +1,119 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Vaikimisi"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Kaardid",
|
||||||
"entity":"card",
|
"entity": "kaart",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Kaart",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Pilt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Pildi alternatiivtekst",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "Kirjelda, mis pildil näha on. Tekst on mõeldud vaegnägijaile tekstilugeriga kuulamiseks."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "Heliriba",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "Valikheli, mida mängitakse kaardi pööramisel."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Sobituv pilt",
|
||||||
|
"description": "Valikuline pilt võrdlemiseks, selmet kasutada kahte kaarti sama pildiga."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Sobituva pildi alternatiivtekst",
|
||||||
|
"description": "Kirjelda, mis pildil näha on. Tekst on mõeldud vaegnägijaile tekstilugeriga kuulamiseks."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Sobituv heliriba",
|
||||||
|
"description": "Valikheli, mida mängitakse teise kaardi pööramisel."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kirjeldus",
|
||||||
|
"description": "Valikuline lühitekst, mida näidatakse hüpikaknas peale kahe sobituva kaardi leidmist."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Käitumisseaded",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Need valikud võimaldavad sul kontrollida mängu käitumist.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Aseta kaardid väljakule",
|
||||||
"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."
|
"description": "Proovib sobitada ridade ja veergude arvu kaartide asetamisel. Peale seda muudetakse kaartide suurust, et täita neid hoidev raam."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "Kasutatav kaartide arv",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "Määrates selle arvu kahest suuremaks valib mäng kaartide loetelust juhuslikud kaardid."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Lisa Proovi uuesti nupp lõppenud mängule"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Välimus",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Säti mängu visuaali.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Teemavärv",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Vali oma mängu teemavärv."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Kaardi taust",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Kasuta kohandatud kaarditausta."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Kohandamine",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Kaardi pööramise tekst",
|
||||||
"default":"Card turns"
|
"default": "Kaart pöörab"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Aega kulunud tekst",
|
||||||
"default":"Time spent"
|
"default": "Aega kulunud"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Tagasiside tekst",
|
||||||
"default":"Good work!"
|
"default": "Hea töö!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Proovi uuesti nupu tekst",
|
||||||
"default":"Try again?"
|
"default": "Proovida uuesti?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Sulge nupu tekst",
|
||||||
"default":"Close"
|
"default": "Sulge"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Mängu pealkiri",
|
||||||
|
"default": "Mälumäng. Leida sobituvad kaardid."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Mäng on lõppenud silt",
|
||||||
|
"default": "Kõik kaardid on leitud."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kaardi indeksi silt",
|
||||||
|
"default": "Kaart %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kaart pööramata silt",
|
||||||
|
"default": "Pööramata."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kaart sobitub silt",
|
||||||
|
"default": "Vaste leitud."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "Lehenetsia"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "Txartelak",
|
||||||
|
"entity": "karta",
|
||||||
|
"field": {
|
||||||
|
"label": "Karta",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Irudia"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Irudiaren ordezko testua",
|
||||||
|
"description": "Deskribatu irudian ikusi daitekeena. Testua irakurketa tresna automatikoek irakurriko dute ikusmen urritasunak dituztenentzat."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Audio Pista",
|
||||||
|
"description": "Karta itzultzen denean erreproduzitzeko aukerazko soinua."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pareko irudia",
|
||||||
|
"description": "Irudi bera duten bi karta ez erabiltzeko parekatzeko aukeran eskainiko den irudia."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pareko irudiaren ordezko irudia",
|
||||||
|
"description": "Deskribatu argazkian ikusi daitekeena. Testua irakurketa tresna automatikoek irakurriko dute ikusmen urritasunak dituztenentzat."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pareko Audio Pista",
|
||||||
|
"description": "Bigarren karta itzultzen denean erreproduzitzeko aukerazko soinua."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Deskribapena",
|
||||||
|
"description": "Bi karta parekatzen direnean bat-batean agertu den aukerako testu laburra."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Portaera-ezarpenak",
|
||||||
|
"description": "Aukera hauen bidez kontrolatu ahal izango duzu zereginaren portaera.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Kokatu karta karratuan",
|
||||||
|
"description": "Txartelak banatzean lerro eta zutabe kopurua betetzen saiatuko da. Gero, kartak eskalatuko dira."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Erabiliko den karta kopurua",
|
||||||
|
"description": "2 baino altuagoa den zenbaki bat ezarriz gero jokoak hausazko karta hartuko du karta-zerrendatik."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Saiakera berria egiteko botoia txertatu jokoa amaitzerakoan"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Itxura",
|
||||||
|
"description": "Jokoaren itxura kontrolatu",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Estiloaren kolorea",
|
||||||
|
"description": "Aukeratu kolorea zure karta jokoarentzat estiloa sortzeko."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kartaren atzeko aldea",
|
||||||
|
"description": "Erabili karta-atzeko alde pertsonalizatua."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Lokalizazioa",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Txartelak buelta ematen du testua",
|
||||||
|
"default": "Txartelak buelta ematen du"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Igarotako denboraren testua",
|
||||||
|
"default": "Igarotako denbora"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Feedback testua",
|
||||||
|
"default": "Lan bikaina!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Saiatu berriro botoiaren",
|
||||||
|
"default": "Saiatu berriro?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Itxi botoiaren etiketa",
|
||||||
|
"default": "Itxi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Jokoaren etiketa",
|
||||||
|
"default": "Memoria jokoa. Aurkitu pareko kartak."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Amaitutako jokoaren etiketa",
|
||||||
|
"default": "Karta guztiak aurkitu dira."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Txartela zenbakiaren etiketa",
|
||||||
|
"default": "%num. txartela:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "buelta eman gabeko txartela",
|
||||||
|
"default": "Itzuli gabe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Parekatutako txartelaren etiketa",
|
||||||
|
"default": "Parekoa topatuta."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
120
language/fi.json
120
language/fi.json
|
@ -1,87 +1,119 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Oletus"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Kortit",
|
||||||
"entity":"card",
|
"entity": "kortti",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Kortti",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Kuva"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Vaihtoehtoinen teksti kuvalle.",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "Kuvaile tekstillä mitä kuvassa näkyy. Tämä teksti luetaan ruudunlukijasovelluksella henkilöille jotka käyttävät ko. sovelluksia."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "Audioraita.",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "Vapaaehtoinen äänitehoste joka soitetaan kun kortti käännetään."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Vastattava kuva",
|
||||||
|
"description": "Valinnainen kuva johon verrata korttia sen sijaan, että kortille etsitään toista samaa kuvaa pariksi."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Vaihtoehtoinen teksti kuvapareille.",
|
||||||
|
"description": "Kuvaile tekstillä mitä kuvassa näkyy. Tämä teksti luetaan ruudunlukijasovelluksella henkilöille jotka käyttävät ko. sovelluksia."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Vastaavien parien audioraita.",
|
||||||
|
"description": "Vapaaehtoinen äänitehoste joka soitetaan kun toinen kortti käännetään."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Selite",
|
||||||
|
"description": "Valinnainen lyhyt teksti, joka näytetään kun oikea pari on löydetty."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Yleisasetukset",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Näillä valinnoilla voit muokata pelin asetuksia.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Aseta kortit säännöllisesti",
|
||||||
"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."
|
"description": "Yrittää sovittaa kortit ruudukkomuotoon rivien sijaan."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "Korttien lukumäärä",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "Kun lukumäärä on suurempi kuin kaksi, annettu määrä kortteja arvotaan kaikista korteista pelattavaksi."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Salli Yritä uudelleen -painike pelin päätyttyä"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Ulkoasu",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Hallinnoi pelin ulkoasua.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Väriteema",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Valitse väri luodaksesi teeman pelille."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Kortin kääntöpuoli",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Mukauta korttien kääntöpuoli."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Tekstit",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Kortteja käännetty",
|
||||||
"default":"Card turns"
|
"default": "Kortteja käännetty"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Aikaa kulunut",
|
||||||
"default":"Time spent"
|
"default": "Aikaa kulunut"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Palaute",
|
||||||
"default":"Good work!"
|
"default": "Hyvää työtä!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Painikkeen Yritä uudelleen teksti",
|
||||||
"default":"Try again?"
|
"default": "Yritä uudelleen?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Painikkeen Sulje teksti",
|
||||||
"default":"Close"
|
"default": "Sulje"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pelin kuvaus",
|
||||||
|
"default": "Muistipeli. Löydä parit."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Peli päättynyt",
|
||||||
|
"default": "Kaikki parit löydetty."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kortin yksilöllinen järjestysnumero",
|
||||||
|
"default": "Kortti %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kääntämätön",
|
||||||
|
"default": "Kääntämätön."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pari löytynyt",
|
||||||
|
"default": "Pari löydetty."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
120
language/fr.json
120
language/fr.json
|
@ -1,87 +1,119 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Par défaut"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cartes",
|
"label": "Cartes",
|
||||||
"entity":"carte",
|
"entity": "carte",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Carte",
|
"label": "Carte",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Image"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Texte alternatif pour l'image",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "Décrivez ce que représente l'image. Le texte est lu par la synthèse vocale."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "Audio Track",
|
||||||
"description":"Petit texte affiché quand deux cartes identiques sont trouvées."
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Image correspondante",
|
||||||
|
"description": "Une image facultative à comparer au lieu d'utiliser deux cartes avec la même image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texte alternatif pour l'image correspondante",
|
||||||
|
"description": "Décrivez ce que représente l'image correspondante. Le texte est lu par la synthèse vocale."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Description",
|
||||||
|
"description": "Un texte court optionnel qui apparaîtra une fois que les deux cartes correspondantes auront été trouvées."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Paramètres comportementaux",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Ces options vous permettent de définir le \"comportement\" du jeu de mémoire.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Positionnez les cartes en carré",
|
||||||
"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."
|
"description": "Essaiera de faire correspondre le nombre de colonnes et de rangées lors de la disposition des cartes. Ensuite, les cartes seront mises à l'échelle pour s'adapter au conteneur."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "Nombre de cartes à utiliser",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "Régler ce nombre sur un nombre supérieur à 2 fera que le jeu choisira des cartes aléatoires dans la liste des cartes."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Ajoutez un bouton pour essayer à nouveau quand le jeu est terminé"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Apparence",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Définissez l'apparence visuelle des éléments dans le jeu.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Couleur du thème",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Choisissez une couleur pour créer un thème pour votre jeu de cartes."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Dos des cartes",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Utilisez un dos personnalisé pour vos cartes."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Interface",
|
"label": "Interface",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Texte pour le nombre de cartes retournées",
|
"label": "Texte pour le nombre de cartes retournées",
|
||||||
"default":"Cartes retournées :"
|
"default": "Cartes retournées :"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Texte pour le temps passé",
|
"label": "Texte pour le temps passé",
|
||||||
"default":"Temps écoulé :"
|
"default": "Temps écoulé :"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Texte de l'appréciation finale",
|
"label": "Texte de l'appréciation finale",
|
||||||
"default":"Bien joué !"
|
"default": "Bien joué !"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Texte pour le bouton Réessayez",
|
||||||
"default":"Try again?"
|
"default": "Réessayer"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Texte du bouton Fermer",
|
||||||
"default":"Close"
|
"default": "Fermer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Le nom du jeu",
|
||||||
|
"default": "Jeu de mémoire. Trouver les cartes qui se correspondent."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texte pour Le jeu est terminé",
|
||||||
|
"default": "Toutes les cartes ont été trouvées."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texte de numérotation des cartes",
|
||||||
|
"default": "Carte %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texte pour les cartes non retournées",
|
||||||
|
"default": "Non retournées."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texte quand les cartes correspondent",
|
||||||
|
"default": "Correspondance trouvée."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "Por defecto"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "Tarxetas",
|
||||||
|
"entity": "tarxeta",
|
||||||
|
"field": {
|
||||||
|
"label": "Tarxeta",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Imaxe"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto alternativo para a imaxe",
|
||||||
|
"description": "Describe o que pode verse na imaxe. Este texto será lido polas ferramentas de texto a voz que precisan os usuarios con discapaciade visual."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pista de audio",
|
||||||
|
"description": "Son opcional que se escoita ao xirar a tarxeta."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Imaxe Coincidente",
|
||||||
|
"description": "Imaxe opcional coa que coincidir en lugar de usar dúas tarxetas coa mesma imaxe."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto alternativo para imaxe coincidente",
|
||||||
|
"description": "Describe o que se pode ver na imaxe. Este texto será lido polas ferramentas de texto a voz que precisan os usuarios con discapaciade visual."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Pista de audio coincidente",
|
||||||
|
"description": "Un son opcional que se escoita ao xirar a segunda tarxeta."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Descrición",
|
||||||
|
"description": "Texto curto opcional que aparece cando se emparellan as dúas tarxetas."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Configuración de comportamento",
|
||||||
|
"description": "Estas opcións permiten controlar o comportamento do xogo.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Colocar as tarxetas nun cadrado",
|
||||||
|
"description": "Intentará emparellar o número de filas e columnas ao colocar as tarxetas. Despois, escalaranse as tarxetas para que encaixen no contedor."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Número de tarxetas a usar",
|
||||||
|
"description": "Se este valor e maior que 2, o xogo escollerá tarxetas ao chou da lista de tarxetas."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Engadir botón para reintentar cando remate o xogo"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Aspecto",
|
||||||
|
"description": "Controla o aspecto visual do xogo.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Cor do tema",
|
||||||
|
"description": "Escolle unha cor para crear un tema para o teu xogo de tarxetas."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Reverso da tarxeta",
|
||||||
|
"description": "Usar un reverso personalizado nas tarxetas."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Localización",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Texto para xiros de tarxeta",
|
||||||
|
"default": "Xiros de tarxeta"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto para tempo transcorrido",
|
||||||
|
"default": "Tempo transcorrido"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto de retroalimentación",
|
||||||
|
"default": "Bo traballo!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto para o botón reintentar",
|
||||||
|
"default": "Probar outra vez?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta para o botón pechar",
|
||||||
|
"default": "Pechar"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta do xogo",
|
||||||
|
"default": "Xogo de memoria. Atopa as tarxetas coincidentes."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta para xogo rematado",
|
||||||
|
"default": "Atoparonse todas as tarxetas."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta para o índice das tarxetas",
|
||||||
|
"default": "Tarxeta %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta para as tarxetas non xiradas",
|
||||||
|
"default": "Sen xirar."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etiqueta para coincidencia atopada",
|
||||||
|
"default": "Coincidencia atopada."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
122
language/he.json
122
language/he.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "ברירת מחדל"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "קלפים",
|
||||||
"entity":"card",
|
"entity": "קלף",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "קלף",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "תמונה"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "תוכן חלופי לתמונה",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "תאר מה אפשר לראות בתמונה. הטקסט נקרא על ידי כלי טקסט-לדיבור הנחוצים למשתמשים בעלי לקויות ראייה."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "ערוץ שמע",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "צליל אופציונלי שמתנגן כאשר הופכים את הקלף."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "תמונה תואמת",
|
||||||
|
"description": "תמונה אופציונלית להתאמה במקום להשתמש בשני קלפים עם אותה התמונה."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "טקסט חליפי לתמונה תואמת",
|
||||||
|
"description": "תאר מה אפשר לראות בתמונה. הטקסט נקרא על ידי כלי טקסט-לדיבור שנחוצים למשתמשים בעלי לקויות ראייה."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "ערוץ שמע תואם",
|
||||||
|
"description": "צליל אופציונלי שמתנן כאשר הופכים את הקלף השני."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "תיאור",
|
||||||
|
"description": "טקסט קצר אופציונלי יקפוץ ברגע ששני הקלפים התואמים יימצאו."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "הגדרות כלליות",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "These options will let you control how the game behaves.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "סדרו את הכרטיסים בריבוע",
|
||||||
"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."
|
"description": "ניסיון להתאים בין מספר הטורים והשורות בעת סידור הכרטיסים. לאחר מכן, גודל הכרטיסים יותאם למכל."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "מספר כרטיסים לשימוש",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "להגדיר את זה למספר גדול מ-2 יגרום למשחק לבחור אקראית קלפים מרשימת הקלפים"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "הוסף כפתור כדי לנסות שוב כאשר המשחק נגמר"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "הבט וחוש",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "שליטה בהגדרות החזותיות של המשחק.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "צבע נושא",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "בחר צבע ליצירת נושא למשחק הקלפים שלך"
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "גב הקלף",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "השתמשו בגב מותאם אישית עבור הכרטיסים."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "תרגום מקומי",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "טקסט הפיכת קלף",
|
||||||
"default":"Card turns"
|
"default": "הופכים קלף"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "טקסט זמן שהושקע",
|
||||||
"default":"Time spent"
|
"default": "זמן שהושקע"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "משוב",
|
||||||
"default":"Good work!"
|
"default": "עבודה טובה!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "טקסט של כפתור נסה שוב",
|
||||||
"default":"Try again?"
|
"default": "נסה שוב?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "תווית כפתור סגור",
|
||||||
"default":"Close"
|
"default": "סגור"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "תווית משחק",
|
||||||
|
"default": "משחק זיכרון. מצא את הקלפים המתאימים."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "תווית המשחק נגמר",
|
||||||
|
"default": "נמצאו כל הקלפים."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "תווית מפתוח קלף",
|
||||||
|
"default": "כרטיס %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "תווית קלף לא הפוך",
|
||||||
|
"default": "לא הפוך."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "תווית קלף מותאם",
|
||||||
|
"default": "נמצאה התאמה."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
120
language/hu.json
120
language/hu.json
|
@ -1,87 +1,119 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Default"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Cards",
|
||||||
"entity":"card",
|
"entity": "card",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Card",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Image"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Alternative text for Image",
|
||||||
"description":"An optional image to match against instead of using two cards with the same 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",
|
"label": "Audio Track",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Image",
|
||||||
|
"description": "An optional image to match against instead of using two cards with the same image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Description",
|
||||||
|
"description": "An optional short text that will pop up once the two matching cards are found."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Behavioural settings",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "These options will let you control how the game behaves.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"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."
|
"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",
|
"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."
|
"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",
|
"label": "Look and feel",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Control the visuals of the game.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Theme Color",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Choose a color to create a theme for your card game."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Card Back",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Use a custom back for your cards."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Localization",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Card turns text",
|
||||||
"default":"Card turns"
|
"default": "Card turns"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Time spent text",
|
||||||
"default":"Time spent"
|
"default": "Time spent"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Feedback text",
|
||||||
"default":"Good work!"
|
"default": "Good work!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Try again button text",
|
||||||
"default":"Try again?"
|
"default": "Try again?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Close button label",
|
||||||
"default":"Close"
|
"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."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
122
language/it.json
122
language/it.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Predefinito"
|
"label": "Predefinito"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Carte",
|
"label": "Carte",
|
||||||
"entity":"carta",
|
"entity": "carta",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Carta",
|
"label": "Carta",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Immagine"
|
"label": "Immagine"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Immagine abbinata",
|
"label": "Testo alternativo per l'immagine",
|
||||||
"description":"Un'immagine facoltativa da abbinare invece di utilizzare due carte con la stessa immagine."
|
"description": "Descrivi cosa si può vedere nella foto. Il testo è letto da strumenti di sintesi vocale necessari a utenti ipovedenti"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Descrizione",
|
"label": "Traccia audio",
|
||||||
"description":"Un breve testo opzionale che appare quando si trovano due carte abbinate."
|
"description": "Un suono facoltativo che viene riprodotto quando si gira la scheda"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Immagine corrispondente",
|
||||||
|
"description": "Un'immagine facoltativa da abbinare anziché usare due carte con la stessa immagine"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Testo alternativo per immagini corrispondenti",
|
||||||
|
"description": "Descrivi cosa si può vedere nella foto. Il testo è letto da strumenti di sintesi vocale necessari a utenti ipovedenti"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Traccia audio corrispondente",
|
||||||
|
"description": "Un suono facoltativo che viene riprodotto quando si gira la seconda carta"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Descrizione",
|
||||||
|
"description": "Un breve testo facoltativo che apparirà quando vengono trovate due carte corrispondenti"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Impostazioni di esecuzione",
|
"label": "Impostazioni di esecuzione",
|
||||||
"description":"Queste opzioni ti consentono di controllare l'esecuzione del compito.",
|
"description": "Queste opzioni permettono di controllare il comportamento del gioco",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Posiziona le carte in un riquadro",
|
"label": "Posiziona le carte in un quadrato",
|
||||||
"description":"Cercherà di abbinare il numero di colonne e righe quando si dispongono le carte. In seguito, le carte saranno ridimensionate per adattarsi al contenitore."
|
"description": "Cercherà di far corrispondere il numero di colonne e righe durante la disposizione delle carte. In seguito, le carte saranno ridimensionate per adattarsi al contenitore"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Numero di carte da utilizzare",
|
"label": "Numero di carte da usare",
|
||||||
"description":"Impostare a un numero maggiore di 2 farà pescare le carte dal mazzo in maniera casuale."
|
"description": "Impostandolo su un numero maggiore di 2, il gioco sceglierà le carte dall'elenco in maniera del tutto casuale"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Aggiungi il pulsante per riprovare quando il gioco è finito"
|
"label": "Aggiungi un pulsante per riprovare quanto il gioco è finito"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Aspetto",
|
"label": "Aspetto e soddisfazione (look and feel)",
|
||||||
"description":"Controlla gli effetti grafici del gioco.",
|
"description": "Controlla gli effetti visivi del gioco",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Colore del tema",
|
"label": "Colore del tema",
|
||||||
"description":"Scegli un colore per creare il tema del tuo gioco a carte.",
|
"description": "Scegli un colore per creare una tema per il tuo gioco di carte"
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Retro della carta",
|
"label": "Dietro della carta",
|
||||||
"description":"Utilizzare un retro personalizzato per le vostre carte."
|
"description": "Usa un retro personalizzato per le tue carte"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localizzazione",
|
"label": "Localizzazione",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Testo per i giri di carta",
|
"label": "Testo per i giri di carta",
|
||||||
"default":"Giri di carta"
|
"default": "Giri di carta"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Testo per il tempo trascorso",
|
"label": "Testo per il tempo trascorso",
|
||||||
"default":"Tempo trascorso"
|
"default": "Tempo trascorso"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Testo del feedback",
|
"label": "Testo del feedback",
|
||||||
"default":"Buon lavoro!"
|
"default": "Buon lavoro!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Testo del pulsante per riprovare di nuovo",
|
"label": "Testo del pulsante per riprovare",
|
||||||
"default":"Vuoi riprovare?"
|
"default": "Vuoi riprovare?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Etichetta del pulsante Chiudi",
|
"label": "Etichetta del pulsante di chiusura",
|
||||||
"default":"Chiudi"
|
"default": "Chiudi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etichetta del gioco",
|
||||||
|
"default": "Gioco di memoria. Trova le carte corrispondenti"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etichetta di fine gioco",
|
||||||
|
"default": "Tutte le carte sono state trovate"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etichetta di indicizzazione della carta",
|
||||||
|
"default": "Carta %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etichetta della carta non voltata",
|
||||||
|
"default": "Non voltata"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Etichetta della cartata abbinata",
|
||||||
|
"default": "Trovata corrispondenza"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
120
language/ja.json
120
language/ja.json
|
@ -1,87 +1,119 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"デフォルト"
|
"label": "デフォルト"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"カード",
|
"label": "カード",
|
||||||
"entity":"card",
|
"entity": "card",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"カード",
|
"label": "カード",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"画像"
|
"label": "画像"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"一致させる画像",
|
"label": "Alternative text for Image",
|
||||||
"description":"同じ画像の2枚のカードを使用する代わりに、別に一致させるためのオプション画像"
|
"description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"説明",
|
"label": "Audio Track",
|
||||||
"description":"一致する2つのカードが見つかるとポップアップするオプションの短文テキスト。"
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "説明",
|
||||||
|
"description": "一致する2つのカードが見つかるとポップアップするオプションの短文テキスト。"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"動作設定",
|
"label": "動作設定",
|
||||||
"description":"これらのオプションを使用して、ゲームの動作を制御できます。",
|
"description": "これらのオプションを使用して、ゲームの動作を制御できます。",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"カードを正方形に配置",
|
"label": "カードを正方形に配置",
|
||||||
"description":"カードをレイアウトするときに、列と行の数を一致させてみてください。そうすると、カードは、コンテナに合わせてスケーリングされます。"
|
"description": "カードをレイアウトするときに、列と行の数を一致させてみてください。そうすると、カードは、コンテナに合わせてスケーリングされます。"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"使用するカードの数",
|
"label": "使用するカードの数",
|
||||||
"description":"これを2よりも大きい数値に設定すると、カードのリストからランダムなカードが選ばれるようになります。"
|
"description": "これを2よりも大きい数値に設定すると、カードのリストからランダムなカードが選ばれるようになります。"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"ゲームが終了したときに、リトライのためのボタンを追加"
|
"label": "ゲームが終了したときに、リトライのためのボタンを追加"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"ルック&フィール",
|
"label": "ルック&フィール",
|
||||||
"description":"ゲームの外観を制御します。",
|
"description": "ゲームの外観を制御します。",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"テーマ色",
|
"label": "テーマ色",
|
||||||
"description":"カードゲームのテーマとなる色を選択してください。",
|
"description": "カードゲームのテーマとなる色を選択してください。"
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"カード裏",
|
"label": "カード裏",
|
||||||
"description":"カードに独自の裏を使います。"
|
"description": "カードに独自の裏を使います。"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"ローカリゼーション",
|
"label": "ローカリゼーション",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"カードターン のテキスト",
|
"label": "カードターン のテキスト",
|
||||||
"default":"カードターン"
|
"default": "カードターン"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"経過時間のテキスト",
|
"label": "経過時間のテキスト",
|
||||||
"default":"経過時間"
|
"default": "経過時間"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"フィードバックテキスト",
|
"label": "フィードバックテキスト",
|
||||||
"default":"よくできました!"
|
"default": "よくできました!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"リトライボタンのテキスト",
|
"label": "リトライボタンのテキスト",
|
||||||
"default":"もう一度トライしますか ?"
|
"default": "もう一度トライしますか ?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"閉じるボタンのテキスト",
|
"label": "閉じるボタンのテキスト",
|
||||||
"default":"閉じる"
|
"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."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "Default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "Cards",
|
||||||
|
"entity": "card",
|
||||||
|
"field": {
|
||||||
|
"label": "Card",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alternative text for 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": "Audio Track",
|
||||||
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Image",
|
||||||
|
"description": "An optional image to match against instead of using two cards with the same image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "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": "Add button for retrying when the game is over"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card Back",
|
||||||
|
"description": "Use a custom back for your cards."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Localization",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Card turns text",
|
||||||
|
"default": "កាតបង្វិល"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Time spent text",
|
||||||
|
"default": "ពេលចំណាយ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Feedback text",
|
||||||
|
"default": "ល្អណាស់!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Try again button text",
|
||||||
|
"default": "សាកម្តងទៀត?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Close button label",
|
||||||
|
"default": "បិទ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Game label",
|
||||||
|
"default": "ល្បែងចងចាំ! រកកាតដែលផ្គូផ្គង"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Game finished label",
|
||||||
|
"default": "អ្នកបានរកឃើញកាតទាំងអស់ហើយ!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card indexing label",
|
||||||
|
"default": "កាត %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card unturned label",
|
||||||
|
"default": "មិនបានបង្វិល។"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card matched label",
|
||||||
|
"default": "រកឃើញកាតផ្គូផ្គង។"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
123
language/ko.json
123
language/ko.json
|
@ -1,89 +1,122 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "기본값"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "카드",
|
||||||
"entity":"card",
|
"entity": "카드",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "카드",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "이미지"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "이미지의 대체 텍스트",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "사진에서 볼 수 있는 것을 묘사하세요. 이 텍스트는 시각 장애 사용자가 필요로 하는 텍스트 음성 변환 도구로 읽힌다."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "오디오 트랙",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "카드를 돌렸을 때 재생되는 선택적 사운드."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "매칭 이미지",
|
||||||
|
"description": "(선택사항) 같은 이미지의 두 카드를 사용하는 대신에 매칭할 수 있는 선택적 이미지."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "매칭 이미지에 대한 대체 텍스트",
|
||||||
|
"description": "사진에서 볼 수 있는 것을 묘사하세요. 이 텍스트는 시각 장애 사용자가 필요로 하는 텍스트 음성 변환 도구로 읽힌다.."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "매칭 오디오 트랙",
|
||||||
|
"description": "(선택사항)두 번째 카드를 돌릴 때 재생되는 사운드"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "설명",
|
||||||
|
"description": "(선택사항) 일치되는 두 장의 카드가 발견되면 팝업될 짧은 텍스트."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "과제가 수행되는 방법 설정.",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "이 옵션은 과제가 어떻게 수행될 지 환경을 설정합니다.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "카드를 정사각형으로 배열하기",
|
||||||
"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."
|
"description": "카드를 놓을 때 열과 행의 개수를 맞추려고 할 것이다. 이후, 카드는 용기에 맞게 크기가 조정될 것이다."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "사용할 카드 수",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "이것을 2보다 큰 숫자로 설정하면 게임이 카드 목록에서 무작위 카드를 선택하게 될 것이다."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "게임 종료 시 재시도하기 위한 버튼 추가"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "외관과 느낌",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "게임의 비주얼 관리",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "테마 색깔",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "카드 게임의 테마를 만들 색을 선택하십시오."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "카드 뒷면",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "카드의 뒷면을 맞춤형으로 사용하십시오."
|
||||||
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "맞춤형 설정",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "카드가 돌려질 때 텍스트",
|
||||||
"default":"Card turns"
|
"default": "카드가 돌려집니다."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "걸린 시간 텍스트",
|
||||||
"default":"Time spent"
|
"default": "걸린 시간"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "피드백 텍스트",
|
||||||
"default":"Good work!"
|
"default": "잘 했습니다.!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "재시도 버튼 텍스트",
|
||||||
"default":"Try again?"
|
"default": "다시 시도하시겠습니까?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "닫기 버튼 텍스트",
|
||||||
"default":"Close"
|
"default": "닫기"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "게임 라벨",
|
||||||
|
"default": "메모리 게임. 매칭되는 카드를 찾으세요."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "게임 완료 텍스트",
|
||||||
|
"default": "모든 카드가 발견되었습니다."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "카드 색인 라벨",
|
||||||
|
"default": "카드 %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "돌려지지 않은 카드 라벨",
|
||||||
|
"default": "돌려지지 않음."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "매칭된 카드 라벨",
|
||||||
|
"default": "매칭되었습니다."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
120
language/nb.json
120
language/nb.json
|
@ -1,87 +1,119 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Default"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Kort",
|
"label": "Kort",
|
||||||
"entity":"kort",
|
"entity": "kort",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Kort",
|
"label": "Kort",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Bilde"
|
"label": "Bilde"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Tilhørende bilde",
|
"label": "Alternative text for Image",
|
||||||
"description":"Et valgfritt bilde som brukes av kort nummer to istedenfor å bruke to kort med samme bilde."
|
"description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Beskrivelse",
|
"label": "Audio Track",
|
||||||
"description":"En valgfri kort tekst som spretter opp når kort-paret er funnet."
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Tilhørende bilde",
|
||||||
|
"description": "Et valgfritt bilde som brukes av kort nummer to istedenfor å bruke to kort med samme bilde."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Beskrivelse",
|
||||||
|
"description": "En valgfri kort tekst som spretter opp når kort-paret er funnet."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Innstillinger for oppførsel",
|
"label": "Innstillinger for oppførsel",
|
||||||
"description":"Disse instillingene lar deg bestemme hvordan spillet skal oppføre seg.",
|
"description": "Disse instillingene lar deg bestemme hvordan spillet skal oppføre seg.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Plasser kortene i en firkant",
|
"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."
|
"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",
|
"label": "Antall kort som skal brukes",
|
||||||
"description":"Ved å sette antallet høyere enn 2 vil spillet plukke tilfeldige kort fra listen over kort."
|
"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",
|
"label": "Tilpass utseende",
|
||||||
"description":"Kontroller de visuelle aspektene ved spillet.",
|
"description": "Kontroller de visuelle aspektene ved spillet.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Temafarge",
|
"label": "Temafarge",
|
||||||
"description":"Velg en farge for å skape et tema over kortspillet ditt.",
|
"description": "Velg en farge for å skape et tema over kortspillet ditt."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Kortbaksiden",
|
"label": "Kortbaksiden",
|
||||||
"description":"Bruk en tilpasset kortbakside for kortene dine."
|
"description": "Bruk en tilpasset kortbakside for kortene dine."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Oversettelser",
|
"label": "Oversettelser",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Etikett for antall vendte kort",
|
"label": "Etikett for antall vendte kort",
|
||||||
"default":"Kort vendt"
|
"default": "Kort vendt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Etikett for tid brukt",
|
"label": "Etikett for tid brukt",
|
||||||
"default":"Tid brukt"
|
"default": "Tid brukt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Tilbakemeldingstekst",
|
"label": "Tilbakemeldingstekst",
|
||||||
"default":"Godt jobbet!"
|
"default": "Godt jobbet!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Prøv på nytt-tekst",
|
"label": "Prøv på nytt-tekst",
|
||||||
"default":"Prøv på nytt?"
|
"default": "Prøv på nytt?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Lukk knapp-merkelapp",
|
"label": "Lukk knapp-merkelapp",
|
||||||
"default":"Lukk"
|
"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."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
122
language/nl.json
122
language/nl.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Standaard"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Kaarten",
|
||||||
"entity":"card",
|
"entity": "kaart",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Kaart",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Afbeelding"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Bijpassende afbeelding",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "Een optionele afbeelding die past in plaats van 2 kaarten met dezelfde afbeelding."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "Audio Track",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "Een optioneel geluid dat afspeelt wanneer de kaart wordt omgedraaid."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Omschrijving",
|
||||||
|
"description": "Een optionele korte tekst die zal verschijnen zodra de 2 overeenkomende kaarten zijn gevonden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "De alternatieve tekst voor de bijpassende afbeelding",
|
||||||
|
"description": "Omschrijf wat de afbeelding voorstelt. De tekst zal worden gelezen door tekst-naar-spraak tools voor slechtzienden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Audio Track",
|
||||||
|
"description": "Een optioneel geluid dat afspeelt wanneer de tweede kaart wordt omgedraaid."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Omschrijving",
|
||||||
|
"description": "Een optionele korte tekst die zal verschijnen zodra de 2 overeenkomende kaarten zijn gevonden."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Gedragsinstellingen",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Met deze opties kun je bepalen hoe het spel zich gedraagt.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Plaats de kaarten in een vierkant",
|
||||||
"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."
|
"description": "Bij het leggen van de kaarten zullen het aantal kolommen en rijen op elkaar worden afgestemd. Daarna zal de omvang van de kaarten worden aangepast om in de beschikbare omgeving te passen."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "Het aantal te gebruiken kaarten",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "Als je dit getal instelt op een aantal groter dan 2, dan zal het spel willekeurig kaarten kiezen uit de complete lijst met kaarten."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Voeg de knop 'Opnieuw proberen? toe als het spel is afgelopen"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "De vormgeving",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Stel de beelden van het spel in.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Themakleur",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Kies een themakleur voor kaarten van je geheugenspel."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Achterkant kaart",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Gebruik een aangepaste achterkant voor je kaarten."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Localiseer",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Label gedraaide kaarten",
|
||||||
"default":"Card turns"
|
"default": "Gedraaide kaarten"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Label verstreken tijd",
|
||||||
"default":"Time spent"
|
"default": "Verstreken tijd"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Label feedback",
|
||||||
"default":"Good work!"
|
"default": "Goed gedaan!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Label opnieuw proberen knop",
|
||||||
"default":"Try again?"
|
"default": "Opnieuw proberen?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Label sluiten knop",
|
||||||
"default":"Close"
|
"default": "Sluiten"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Label spel",
|
||||||
|
"default": "Geheugenspel. Vind de overeenkomende kaarten."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": ":Label einde spel",
|
||||||
|
"default": "Alle kaarten zijn gevonden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Label kaartenindex",
|
||||||
|
"default": "Kaart %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Label niet gedraaide kaarten",
|
||||||
|
"default": "Niet gedraaid."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Label overeenkomende kaarten",
|
||||||
|
"default": "Paar gevonden."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
122
language/nn.json
122
language/nn.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Default"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Cards",
|
||||||
"entity":"card",
|
"entity": "card",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Card",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Image"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Alternative text for Image",
|
||||||
"description":"An optional image to match against instead of using two cards with the same 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",
|
"label": "Audio Track",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Image",
|
||||||
|
"description": "An optional image to match against instead of using two cards with the same image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Description",
|
||||||
|
"description": "An optional short text that will pop up once the two matching cards are found."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Behavioural settings",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "These options will let you control how the game behaves.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"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."
|
"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",
|
"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."
|
"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",
|
"label": "Look and feel",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Control the visuals of the game.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Theme Color",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Choose a color to create a theme for your card game."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Card Back",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Use a custom back for your cards."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Localization",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Card turns text",
|
||||||
"default":"Card turns"
|
"default": "Kort snur"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Time spent text",
|
||||||
"default":"Time spent"
|
"default": "Tid brukt"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Feedback text",
|
||||||
"default":"Good work!"
|
"default": "Bra jobba!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Try again button text",
|
||||||
"default":"Try again?"
|
"default": "prøv igjen?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Close button label",
|
||||||
"default":"Close"
|
"default": "Lukk"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Game label",
|
||||||
|
"default": "Memory-spel. Finn dei matchande korta."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Game finished label",
|
||||||
|
"default": "Alle korta har blitt funne."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card indexing label",
|
||||||
|
"default": "Kort %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card unturned label",
|
||||||
|
"default": "Ikkje snudd."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card matched label",
|
||||||
|
"default": "Match funne."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
120
language/pl.json
120
language/pl.json
|
@ -1,87 +1,119 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Default"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Cards",
|
||||||
"entity":"card",
|
"entity": "card",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Card",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Image"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Alternative text for Image",
|
||||||
"description":"An optional image to match against instead of using two cards with the same 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",
|
"label": "Audio Track",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Image",
|
||||||
|
"description": "An optional image to match against instead of using two cards with the same image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Description",
|
||||||
|
"description": "An optional short text that will pop up once the two matching cards are found."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Behavioural settings",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "These options will let you control how the game behaves.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"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."
|
"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",
|
"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."
|
"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",
|
"label": "Look and feel",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Control the visuals of the game.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Theme Color",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Choose a color to create a theme for your card game."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Card Back",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Use a custom back for your cards."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Localization",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Card turns text",
|
||||||
"default":"Card turns"
|
"default": "Card turns"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Time spent text",
|
||||||
"default":"Time spent"
|
"default": "Time spent"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Feedback text",
|
||||||
"default":"Good work!"
|
"default": "Good work!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Try again button text",
|
||||||
"default":"Try again?"
|
"default": "Try again?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Close button label",
|
||||||
"default":"Close"
|
"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."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "Padrão"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "Cartões",
|
||||||
|
"entity": "card",
|
||||||
|
"field": {
|
||||||
|
"label": "Cartão",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Imagem"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto alternativo para a imagem",
|
||||||
|
"description": "Descreva o que pode ser visto na foto. O texto será lido para os usuários que necessitam utilizar leitores de tela."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Audio Track",
|
||||||
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Imagem-par",
|
||||||
|
"description": "Uma imagem opcional para ser combinada ao invés de utilizar dois cartões com a mesma imagem."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto alternativo para a Imagem-par",
|
||||||
|
"description": "Descreva o que pode ser visto na foto. O texto será lido para os usuários que necessitam utilizar leitores de tela."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Descrição",
|
||||||
|
"description": "Um texto curto opcional que aparecerá quando duas cartas forem combinadas corretamente."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Configurações comportamentais",
|
||||||
|
"description": "Estas opções permitirão que você controle como o jogo funciona.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Posicionar os cartões em um quadrado",
|
||||||
|
"description": "Tentará coincidir o número de linhas e colunas quando distribuir os cartões. Após, os cartões serão dimensionados para preencher o espaço."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Número de cartas para serem usadas",
|
||||||
|
"description": "Colocando um número maior que 2 fara com que o jogo escolha cartões aleatórios da lista de cartões."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Adicionar botão para tentar novamente quando o jogo acabar"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Aparência e percepção",
|
||||||
|
"description": "Controla o visual do jogo.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Cor tema",
|
||||||
|
"description": "Escolha uma cor para criar um tema para seu jogo."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Verso do cartão",
|
||||||
|
"description": "Use um verso customizado para seus cartões."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Localização",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Texto de virada de cartão",
|
||||||
|
"default": "Cartão virou"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto de tempo gasto",
|
||||||
|
"default": "Tempo gasto"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto de feedback",
|
||||||
|
"default": "Bom trabalho!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto do botão Tentar Novamente",
|
||||||
|
"default": "Tentar novamente?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Rótulo do botão Fechar",
|
||||||
|
"default": "Fechar"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Rótulo do jogo",
|
||||||
|
"default": "Jogo da memória. Forme pares de cartões."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Rótulo de fim de jogo",
|
||||||
|
"default": "Todas os cartões foram encontrados."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Rótulo de índice de cartão",
|
||||||
|
"default": "Cartão %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Rótulo de cartão não virado",
|
||||||
|
"default": "Não virado."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Rótulo de combinação",
|
||||||
|
"default": "Combinação encontrada."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
120
language/pt.json
120
language/pt.json
|
@ -1,87 +1,119 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Padrão"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Cartões",
|
||||||
"entity":"card",
|
"entity": "card",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Cartão",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Imagem"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Texto alternativo para a imagem",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "Descreva o que pode ser visto na foto. O texto será lido para os usuários que necessitam utilizar leitores de tela."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "Audio Track",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Imagem-par",
|
||||||
|
"description": "Uma imagem opcional para ser combinada ao invés de utilizar dois cartões com a mesma imagem."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Texto alternativo para a Imagem-par",
|
||||||
|
"description": "Descreva o que pode ser visto na foto. O texto será lido para os usuários que necessitam utilizar leitores de tela."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Descrição",
|
||||||
|
"description": "Um texto curto opcional que aparecerá quando duas cartas forem combinadas corretamente."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Configurações comportamentais",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Estas opções permitirão que você controle como o jogo funciona.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Posicionar os cartões em um quadrado",
|
||||||
"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."
|
"description": "Tentará coincidir o número de linhas e colunas quando distribuir os cartões. Após, os cartões serão dimensionados para preencher o espaço."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "Número de cartas para serem usadas",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "Colocando um número maior que 2 fara com que o jogo escolha cartões aleatórios da lista de cartões."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Adicionar botão para tentar novamente quando o jogo acabar"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Aparência e percepção",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Controla o visual do jogo.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Cor tema",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Escolha uma cor para criar um tema para seu jogo."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Verso do cartão",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Use um verso customizado para seus cartões."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Localização",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Texto de virada de cartão",
|
||||||
"default":"Card turns"
|
"default": "Cartão virou"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Texto de tempo gasto",
|
||||||
"default":"Time spent"
|
"default": "Tempo gasto"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Texto de feedback",
|
||||||
"default":"Good work!"
|
"default": "Bom trabalho!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Texto do botão Tentar Novamente",
|
||||||
"default":"Try again?"
|
"default": "Tentar novamente?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Rótulo do botão Fechar",
|
||||||
"default":"Close"
|
"default": "Fechar"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Rótulo do jogo",
|
||||||
|
"default": "Jogo da memória. Forme pares de cartões."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Rótulo de fim de jogo",
|
||||||
|
"default": "Todas os cartões foram encontrados."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Rótulo de índice de cartão",
|
||||||
|
"default": "Cartão %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Rótulo de cartão não virado",
|
||||||
|
"default": "Não virado."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Rótulo de combinação",
|
||||||
|
"default": "Combinação encontrada."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
122
language/ro.json
122
language/ro.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Default"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Cards",
|
||||||
"entity":"card",
|
"entity": "card",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Card",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Image"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Alternative text for Image",
|
||||||
"description":"An optional image to match against instead of using two cards with the same 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",
|
"label": "Audio Track",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Image",
|
||||||
|
"description": "An optional image to match against instead of using two cards with the same image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Description",
|
||||||
|
"description": "An optional short text that will pop up once the two matching cards are found."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Behavioural settings",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "These options will let you control how the game behaves.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"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."
|
"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",
|
"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."
|
"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",
|
"label": "Look and feel",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Control the visuals of the game.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Theme Color",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Choose a color to create a theme for your card game."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Card Back",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Use a custom back for your cards."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Localization",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Card turns text",
|
||||||
"default":"Card turns"
|
"default": "Card turns"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Time spent text",
|
||||||
"default":"Time spent"
|
"default": "Time spent"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Text de feedback",
|
||||||
"default":"Good work!"
|
"default": "Good work!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Try again button text",
|
||||||
"default":"Try again?"
|
"default": "Try again?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Close button label",
|
||||||
"default":"Close"
|
"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."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
120
language/ru.json
120
language/ru.json
|
@ -1,87 +1,119 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "По умолчанию"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Карточки",
|
||||||
"entity":"card",
|
"entity": "карточка",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Карточка",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Изображение"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Альтернативный текст для изображения",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "Опишите, что видно на фото. Текст читается с помощью инструментов преобразования текста в речь, необходимых пользователям с нарушениями зрения."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "Звуковая дорожка",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "Дополнительный звук, который воспроизводится при повороте карточки."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Соответствующее изображения",
|
||||||
|
"description": "Необязательное изображение для сравнения вместо использования двух карточек с одинаковым изображением."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Альтернативный текст для соответствующего изображения",
|
||||||
|
"description": "Describe what can be seen in the photo. Текст читается с помощью инструментов преобразования текста в речь, необходимых пользователям с нарушениями зрения."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Соответствующая звуковая дорожка",
|
||||||
|
"description": "Дополнительный звук, который воспроизводится при повороте второй карточки."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Описание",
|
||||||
|
"description": "Дополнительный короткий текст, который появится после того, как найдены две подходящие карточки."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Настройки поведения",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Эти параметры позволят вам контролировать поведение игры.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Положение карточки на площадке",
|
||||||
"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."
|
"description": "Постарайтесь сопоставить количество столбцов и строк при разложении карточек. После чего карточки будут масштабироваться до размера контейнера."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "Количество карточек для использования",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "Если установить значение больше 2, игра будет выбирать случайные карточки из списка."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Добавить кнопку для повтора, когда игра закончена"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Смотреть и чувствовать",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Управление визуальными эффектами игры.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Цвет темы",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Выберите цвет, чтобы создать тему для своей карточной игры."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Обратная сторона карточки",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Использование произвольной спины для своих карточек."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Локализация",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Текст перевернутой карточки",
|
||||||
"default":"Card turns"
|
"default": "Карточка перевернута"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Текст затраченного времени",
|
||||||
"default":"Time spent"
|
"default": "Затраченное время"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Текст обратной связи",
|
||||||
"default":"Good work!"
|
"default": "Хорошая работа!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Текст кнопки повтора",
|
||||||
"default":"Try again?"
|
"default": "Попробовать еще раз?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Надпись кнопки закрытия",
|
||||||
"default":"Close"
|
"default": "Закрыть"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Надпись игры",
|
||||||
|
"default": "Игра на запоминание. Найти подходящие карточки."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Надпись завершения игры",
|
||||||
|
"default": "Все карточки были найдены."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Надпись номера карточки",
|
||||||
|
"default": "Карточка %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Надпись неперевернутой карточки",
|
||||||
|
"default": "Неперевернутая."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Надпись подходящей карточки",
|
||||||
|
"default": "Соответствие найдено."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "Privzeto"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "Kartice",
|
||||||
|
"entity": "kartica",
|
||||||
|
"field": {
|
||||||
|
"label": "Kartica",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Slika"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Nadomestno besedilo za prvo kartico v paru",
|
||||||
|
"description": "Besedilo opisuje videno na sliki in služi bralnikom zaslona."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Avdiozapis",
|
||||||
|
"description": "Neobvezen avdiozapis za spremljavo slike na prvi kartici para."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ujemajoča slika",
|
||||||
|
"description": "Neobvezna slika za drugo kartico v paru. V nasprotnem primeru bosta par sestavljali kartici z enako sliko."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Nadomestno besedilo za drugo kartico v paru",
|
||||||
|
"description": "Besedilo opisuje videno na sliki in služi bralnikom zaslona."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Avdiozapis za drugo kartico v paru",
|
||||||
|
"description": "Neobvezen avdiozapis za spremljavo slike na drugi kartici para."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Opis rešitve",
|
||||||
|
"description": "Neobvezno besedilo ob uspešni povezavi kartic para."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Nastavitve interakcije",
|
||||||
|
"description": "Nastavitve omogočajo nadzor nad interakcijo aktivnosti za udeležence.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Kartice poravnaj v pravokotnik",
|
||||||
|
"description": "Kartice prikaže enakomerno v obliki pravokotnika in ne zgolj poravnano v eni vrsti."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Uporabi naslednje število parov",
|
||||||
|
"description": "V primeru večjega nabora pripravljenih parov kartic, lahko izvajalec tukaj omeji (najmanj 2), koliko parov se dejansko uporabi. Ob ponovitvi aktivnosti bodo pari kartic iz celotnega nabora spet izbrani naključno."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Prikaži gumb za ponovitev aktivnosti po zaključku"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Vizualizacija",
|
||||||
|
"description": "Nastavitve izgleda kartic.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Barvna shema",
|
||||||
|
"description": "Izbira barvne sheme kartic."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Slika hrbta kartic",
|
||||||
|
"description": "Izbira slike za hrbet kartic."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Določitev kartic",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Besedilo za obrnjene kartice",
|
||||||
|
"default": "Obrnjenih kartic"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Besedilo za porabljen čas",
|
||||||
|
"default": "Porabljen čas"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Besedilo ob zaključku naloge",
|
||||||
|
"default": "Dobro opravljeno!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Besedilo gumba za ponoven poskus",
|
||||||
|
"default": "Poskusi ponovno?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Besedilo gumba Zapri",
|
||||||
|
"default": "Zapri"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Besedilo aktivnosti spomin",
|
||||||
|
"default": "Poveži pare kartic."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Besedilo ob zaključku naloge",
|
||||||
|
"default": "Povezani so vsi pari."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Besedilo za razlikovanje kartic",
|
||||||
|
"default": "Kartica %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Besedilo za neobrnjene kartice",
|
||||||
|
"default": "Neobrnjeno."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Besedilo ob povezanem paru",
|
||||||
|
"default": "Najden par."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "Default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "Cards",
|
||||||
|
"entity": "card",
|
||||||
|
"field": {
|
||||||
|
"label": "Card",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alternative text for 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": "Audio Track",
|
||||||
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Image",
|
||||||
|
"description": "An optional image to match against instead of using two cards with the same image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "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": "Add button for retrying when the game is over"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card Back",
|
||||||
|
"description": "Use a custom back for your cards."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Localization",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Card turns text",
|
||||||
|
"default": "Card turns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Time spent text",
|
||||||
|
"default": "Time spent"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Feedback text",
|
||||||
|
"default": "Good work!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Try again button text",
|
||||||
|
"default": "Try again?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "Default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "Cards",
|
||||||
|
"entity": "card",
|
||||||
|
"field": {
|
||||||
|
"label": "Card",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alternative text for 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": "Audio Track",
|
||||||
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Image",
|
||||||
|
"description": "An optional image to match against instead of using two cards with the same image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "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": "Add button for retrying when the game is over"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card Back",
|
||||||
|
"description": "Use a custom back for your cards."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Localization",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Card turns text",
|
||||||
|
"default": "Card turns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Time spent text",
|
||||||
|
"default": "Time spent"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Feedback text",
|
||||||
|
"default": "Good work!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Try again button text",
|
||||||
|
"default": "Try again?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "Default"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "Cards",
|
||||||
|
"entity": "card",
|
||||||
|
"field": {
|
||||||
|
"label": "Card",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Image"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alternative text for 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": "Audio Track",
|
||||||
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Image",
|
||||||
|
"description": "An optional image to match against instead of using two cards with the same image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "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": "Add button for retrying when the game is over"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card Back",
|
||||||
|
"description": "Use a custom back for your cards."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Localization",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Card turns text",
|
||||||
|
"default": "Card turns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Time spent text",
|
||||||
|
"default": "Time spent"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Feedback text",
|
||||||
|
"default": "Good work!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Try again button text",
|
||||||
|
"default": "Try again?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,62 +0,0 @@
|
||||||
{
|
|
||||||
"semantics": [
|
|
||||||
{
|
|
||||||
"label": "Cards",
|
|
||||||
"entity": "card",
|
|
||||||
"field": {
|
|
||||||
"label": "Card",
|
|
||||||
"fields": [
|
|
||||||
{
|
|
||||||
"label": "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": "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": "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": "Localization",
|
|
||||||
"fields": [
|
|
||||||
{
|
|
||||||
"label": "Card turns text",
|
|
||||||
"default": "Card turns"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Time spent text",
|
|
||||||
"default": "Time spent"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Feedback text",
|
|
||||||
"default": "Good work!"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"label": "Try again button text",
|
|
||||||
"default": "Try again?"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
122
language/sr.json
122
language/sr.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Уобичајено"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Картице",
|
||||||
"entity":"card",
|
"entity": "card",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Картица",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Слика"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Алтернативни текст за слику",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "Опишите шта се може видети на фотографији. Текст читају алати за претварање текста у говор који су потребни корисницима са оштећеним видом."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "Аудио запис",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "Опционални звук који се чује када се картица окрене."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Упарене слике",
|
||||||
|
"description": "Опционална слика за упоређивање уместо да користите две картице са истом сликом."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Алтернативни текст за подударање слике",
|
||||||
|
"description": "пишите шта се може видети на фотографији. Текст читају алати за претварање текста у говор који су потребни корисницима са оштећеним видом."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Подударање аудио записа",
|
||||||
|
"description": "Опционални звук који се чује када се окрене друга карта."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Опис",
|
||||||
|
"description": "Необавезни кратак текст који ће се појавити када се пронађу две одговарајуће картице."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Поставке понашања",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Ове опције ће вам омогућити да контролишете понашање игре.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Позиција карте у квадрат",
|
||||||
"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."
|
"description": "Покушаће да усклади број колона и редова приликом полагања карата. Након тога, картице ће се скалирати тако да одговарају контејнеру."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "Број карата које треба користити",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "Ако ово поставите на број већи од 2, игра ће изабрати случајне карте са листе карата."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Додај дугме за поновни покушај када се игра заврши"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Погледај и осети",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Контролишите визуелне елементе игре.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Боја теме",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Одаберите боју да бисте креирали тему за своју игру."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Полеђина карте",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Користите прилагођену полеђину за картице."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Локализација",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Текст окрета картице",
|
||||||
"default":"Card turns"
|
"default": "Окретање карата"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Текст утрошеног времена",
|
||||||
"default":"Time spent"
|
"default": "Утрошено време"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Текст повратне информације",
|
||||||
"default":"Good work!"
|
"default": "Одлично!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Текст дугмета Покушај поново",
|
||||||
"default":"Try again?"
|
"default": "Покушај поново?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Наслов дугмета Затвори",
|
||||||
"default":"Close"
|
"default": "Затвори"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Наслов Игре",
|
||||||
|
"default": "Игра Меморија"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Текст завршетка игре",
|
||||||
|
"default": "Све карте су пронађене."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Ознака за индексирање картица",
|
||||||
|
"default": "Картица %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Наслов Неокренуте картице",
|
||||||
|
"default": "Неокренуте."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Наслов Картице се подударају",
|
||||||
|
"default": "Подударају се картице."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
122
language/sv.json
122
language/sv.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Default"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Cards",
|
||||||
"entity":"card",
|
"entity": "card",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Card",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Image"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Alternative text for Image",
|
||||||
"description":"An optional image to match against instead of using two cards with the same 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",
|
"label": "Audio Track",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Image",
|
||||||
|
"description": "An optional image to match against instead of using two cards with the same image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Description",
|
||||||
|
"description": "An optional short text that will pop up once the two matching cards are found."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Beteende-inställningar",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "These options will let you control how the game behaves.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"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."
|
"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",
|
"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."
|
"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",
|
"label": "Look and feel",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Control the visuals of the game.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Theme Color",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Choose a color to create a theme for your card game."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Card Back",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Use a custom back for your cards."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Localization",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Card turns text",
|
||||||
"default":"Card turns"
|
"default": "Card turns"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Time spent text",
|
||||||
"default":"Time spent"
|
"default": "Time spent"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Feedbacktext",
|
||||||
"default":"Good work!"
|
"default": "Good work!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Try again button text",
|
||||||
"default":"Try again?"
|
"default": "Try again?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Close button label",
|
||||||
"default":"Close"
|
"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."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
122
language/tr.json
122
language/tr.json
|
@ -1,89 +1,121 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Varsayılan"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Kartlar",
|
||||||
"entity":"card",
|
"entity": "kart",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "kart",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Resim"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Resim için alt metin",
|
||||||
"description":"An optional image to match against instead of using two cards with the same image."
|
"description": "Resimde neler göründüğünü açıklayın. Alt metin, görme engelli kullanıcıların resim için ihtiyaç duyduğu açıklamadır. Yardımcı teknolojiler ile okunur."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Description",
|
"label": "Müzik Parçası",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "Kart döndürüldüğünde çalınması istenen ses (isteğe bağlı)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Eşleştirilen Resim",
|
||||||
|
"description": "Aynı görüntüye sahip iki kart kullanmak yerine eşleştirilecek farklı bir resim seçebilirsiniz (isteğe bağlı)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Eşleştirilen resim için alt metin",
|
||||||
|
"description": "Resimde neler göründüğünü açıklayın. Alt metin, görme engelli kullanıcıların resim için ihtiyaç duyduğu açıklamadır. Yardımcı teknolojiler ile okunur."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Eşleştirilen için müzik parçası",
|
||||||
|
"description": "İkinci kart döndürüldüğünde çalınması istenen ses (isteğe bağlı)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Açıklama",
|
||||||
|
"description": "Kartlar eşleştiğinde açılır kutuda kısa metin (isteğe bağlı)."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Etkinlik ayarları",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "Bu seçenekler aktivitenin çalışma şeklini denetlemenize izin verir.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"label": "Kartları kare şeklinde yerleştirin.",
|
||||||
"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."
|
"description": "Kartları yerleştirirken satır ve sütun sayısını eşitlenmeye çalışılacaktır. Daha sonra kartlar çerçeveye sığacak şekilde ölçeklendirilecektir."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Number of cards to use",
|
"label": "Kullanılacak kart sayısı",
|
||||||
"description":"Setting this to a number greater than 2 will make the game pick random cards from the list of cards."
|
"description": "İkiden büyük bir sayı girerek, oyunda kart havuzundan belirttiğiniz sayıda rastgele kartlar kullanabilirsiniz."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Add button for retrying when the game is over"
|
"label": "Oyun bittiğinde yeniden başlatmak için bir buton ekleyin"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Look and feel",
|
"label": "Görünüm ve doku",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Oyunun görselliğini değiştirin.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Tema rengi",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Kart oyunu teması için bir renk seçiniz."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Kart Görünümü",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Kart arkası için bir görünüm seçin."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Yerelleştirme",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Kart döndürme metni",
|
||||||
"default":"Card turns"
|
"default": "Kart dönüşleri"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Geçen süre metni",
|
||||||
"default":"Time spent"
|
"default": "Geçen süre"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Geri bildirim meni",
|
||||||
"default":"Good work!"
|
"default": "İyi oyundu!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Tekrar",
|
||||||
"default":"Try again?"
|
"default": "Tekrar denemek ister misiniz?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Kapatma butonu etiketi",
|
||||||
"default":"Close"
|
"default": "Kapat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Oyun Başlığı",
|
||||||
|
"default": "Hazfıza oyunu. Kartları eşleştirin."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Oyun bitti etiketi",
|
||||||
|
"default": "Tüm kartlar eşleştirildi."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kart sıra etiketi",
|
||||||
|
"default": "Kart %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kart döndürülmemiş etiketi",
|
||||||
|
"default": "Döndürülmedi."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Kart eşleşme etiketi",
|
||||||
|
"default": "Eşleştirildi."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "По умовчанню"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "Карточки",
|
||||||
|
"entity": "карточка",
|
||||||
|
"field": {
|
||||||
|
"label": "Карточка",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Зображення"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Альтернативний текст для зображення",
|
||||||
|
"description": "Опишіть, що видно на фото. Текст читаеться за допомогою інструментів перетворення тексту в мову, необхідну користувачам з порушенням зору."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Звукова доріжка",
|
||||||
|
"description": "Додатковий звук, який відтворюється при повороті карточки."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Відповідне зображення",
|
||||||
|
"description": "Необов'язкове зображення для співставлення замість використання двох карточок з однаковими зображеннями."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Альтернативний текст для відповідного зображення",
|
||||||
|
"description": "Опишіть, що видно на фото. Текст читаеться за допомогою інструментів перетворення тексту в мову, необхідну користувачам з порушенням зору."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Відповідна звукова доріжка",
|
||||||
|
"description": "Додатковий звук, який відтворюється при повороті карточки."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Опис",
|
||||||
|
"description": "Додатковий короткий текст, який появиться після того, як знайдено дві відповідні карточки."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Настройки поведінки",
|
||||||
|
"description": "Ці параметри дозволять вам контролювати поведінку гри.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Розміщення карточки на площадці",
|
||||||
|
"description": "Постарайтеся співставити кількість стовпчиків і рядків при разкладанні карточок. Після чого карточки будуть масштабуватися до разміру контейнера."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Кількість карточок для використання",
|
||||||
|
"description": "Якщо встановити значення більше 2, гра будет обирати випадкові карточки із списку."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Добавити кнопку для повтору, коли гра закінчена"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Дивитися і відчувати",
|
||||||
|
"description": "Керування візуальними ефектами гри.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Колір теми",
|
||||||
|
"description": "Оберіть колір, щоб створити тему для своеї карточної гри."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Зворотня сторона карточки",
|
||||||
|
"description": "Використання довільної сорочки для своїх карточок."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Локалізація",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "Текст перевернутої карточки",
|
||||||
|
"default": "Карточка перевернута"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Текст витраченого часу",
|
||||||
|
"default": "Витречено часу"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Текст зворотнього зв'зку",
|
||||||
|
"default": "Гарна робота!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Текст кнопки повтору",
|
||||||
|
"default": "Спробувати ще раз?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Надпис кнопки закриття",
|
||||||
|
"default": "Закрить"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Надпис гри",
|
||||||
|
"default": "Гра на запам'ятовування. Знайди відповідні карточки."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Надпис завершення гри",
|
||||||
|
"default": "Всі карточки були знайдені."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Надпис номера карточки",
|
||||||
|
"default": "Карточка %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Надпис неперевернутої карточки",
|
||||||
|
"default": "Неперевернута."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Надпис відповідної карточки",
|
||||||
|
"default": "Відповідність знайдено."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
120
language/vi.json
120
language/vi.json
|
@ -1,87 +1,119 @@
|
||||||
{
|
{
|
||||||
"semantics":[
|
"semantics": [
|
||||||
{
|
{
|
||||||
"widgets":[
|
"widgets": [
|
||||||
{
|
{
|
||||||
"label":"Default"
|
"label": "Default"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"label":"Cards",
|
"label": "Cards",
|
||||||
"entity":"card",
|
"entity": "card",
|
||||||
"field":{
|
"field": {
|
||||||
"label":"Card",
|
"label": "Card",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Image"
|
"label": "Image"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Matching Image",
|
"label": "Alternative text for Image",
|
||||||
"description":"An optional image to match against instead of using two cards with the same 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",
|
"label": "Audio Track",
|
||||||
"description":"An optional short text that will pop up once the two matching cards are found."
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Image",
|
||||||
|
"description": "An optional image to match against instead of using two cards with the same image."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Description",
|
||||||
|
"description": "An optional short text that will pop up once the two matching cards are found."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Behavioural settings",
|
"label": "Behavioural settings",
|
||||||
"description":"These options will let you control how the game behaves.",
|
"description": "These options will let you control how the game behaves.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Position the cards in a square",
|
"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."
|
"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",
|
"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."
|
"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",
|
"label": "Look and feel",
|
||||||
"description":"Control the visuals of the game.",
|
"description": "Control the visuals of the game.",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Theme Color",
|
"label": "Theme Color",
|
||||||
"description":"Choose a color to create a theme for your card game.",
|
"description": "Choose a color to create a theme for your card game."
|
||||||
"default":"#909090",
|
|
||||||
"spectrum":{
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Card Back",
|
"label": "Card Back",
|
||||||
"description":"Use a custom back for your cards."
|
"description": "Use a custom back for your cards."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Localization",
|
"label": "Localization",
|
||||||
"fields":[
|
"fields": [
|
||||||
{
|
{
|
||||||
"label":"Card turns text",
|
"label": "Card turns text",
|
||||||
"default":"Card turns"
|
"default": "Card turns"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Time spent text",
|
"label": "Time spent text",
|
||||||
"default":"Time spent"
|
"default": "Time spent"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Feedback text",
|
"label": "Feedback text",
|
||||||
"default":"Good work!"
|
"default": "Good work!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Try again button text",
|
"label": "Try again button text",
|
||||||
"default":"Try again?"
|
"default": "Try again?"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"label":"Close button label",
|
"label": "Close button label",
|
||||||
"default":"Close"
|
"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."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "预设"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "所有卡片",
|
||||||
|
"entity": "卡片",
|
||||||
|
"field": {
|
||||||
|
"label": "卡片",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "图像"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "配对图像(非必要项)",
|
||||||
|
"description": "如果游戏中要配对的不是同一张图像,那么可以在这里添加要配对的另一张图像。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "音轨",
|
||||||
|
"description": "翻转卡片时可选声音."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "配对成功文字(非必要项)",
|
||||||
|
"description": "在找到配对时会显示的文字讯息。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "配对图像的替代文字",
|
||||||
|
"description": "在报读器上用、或是配对图像无法正常输出时的文字。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "匹配音轨",
|
||||||
|
"description": "翻转第二张卡片时可选声音."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "配对成功文字(非必要项)",
|
||||||
|
"description": "在找到配对时会显示的文字讯息。"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "行为设置",
|
||||||
|
"description": "让你控制游戏行为的一些设置。",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "将所有卡片显示在方形容器",
|
||||||
|
"description": "在布置卡片时,将尝试匹配列数和行数。之后,卡片将被缩放以适合容器。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "卡片的使用数量",
|
||||||
|
"description": "游戏中配对的卡片组合数量,设定后会从卡片集中随机挑选指定组合数,数字必须大于 2。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "显示「再试一次」按钮"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "外观",
|
||||||
|
"description": "控制游戏的视觉效果。",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "主题色调",
|
||||||
|
"description": "选择游戏环境要使用的色调。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "背面图像(非必要项)",
|
||||||
|
"description": "允许自定义卡片背景要使用的图片。"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "本地化",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "翻牌次数的显示文字",
|
||||||
|
"default": "翻牌次数"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "花费时间的显示文字",
|
||||||
|
"default": "花费时间"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "游戏过关的显示文字",
|
||||||
|
"default": "干得好!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "重试按钮的显示文字",
|
||||||
|
"default": "再试一次"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "关闭按钮的显示文字",
|
||||||
|
"default": "关闭"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "游戏说明的显示文字",
|
||||||
|
"default": "卡片记忆游戏,找出配对的所有图片吧!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "游戏结束的显示文字",
|
||||||
|
"default": "已配对完所有卡片。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "卡片索引的显示文字",
|
||||||
|
"default": "%num: 张卡片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "卡片未翻开的显示文字",
|
||||||
|
"default": "还没翻开。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "卡片已配对的显示文字",
|
||||||
|
"default": "配对成功。"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "預設"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "所有卡片",
|
||||||
|
"entity": "卡片",
|
||||||
|
"field": {
|
||||||
|
"label": "卡片",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "圖像"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "配對圖像(非必要項)",
|
||||||
|
"description": "如果遊戲中要配對的不是同一張圖像,那麼可以在這裡添加要配對的另一張圖像。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Audio Track",
|
||||||
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "配對成功文字(非必要項)",
|
||||||
|
"description": "在找到配對時會跳出的文字訊息。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "配對圖像的替代文字",
|
||||||
|
"description": "在報讀器上用、或是配對圖像無法正常輸出時顯示的文字。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "配對成功文字(非必要項)",
|
||||||
|
"description": "在找到配對時會跳出的文字訊息。"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "行為設置",
|
||||||
|
"description": "讓你控制遊戲行為的一些設置。",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "將所有卡片顯示在方形容器",
|
||||||
|
"description": "在佈置卡片時,將嘗試匹配列數和行數。之後,卡片將被縮放以適合容器。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "卡片的使用數量",
|
||||||
|
"description": "遊戲中配對的卡片組合數量,設定後會從卡片集中隨機挑選指定組合數,數字必須大於 2。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "顯示「再試一次」按鈕"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "外觀",
|
||||||
|
"description": "控制遊戲的視覺效果。",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "主題色調",
|
||||||
|
"description": "選擇遊戲環境要使用的色調。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "背面圖像(非必要項)",
|
||||||
|
"description": "允許自訂卡片背景要使用的圖片。"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "本地化",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "翻牌次數的顯示文字",
|
||||||
|
"default": "翻牌次數"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "花費時間的顯示文字",
|
||||||
|
"default": "花費時間"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "遊戲過關的顯示文字",
|
||||||
|
"default": "幹得好!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "重試按鈕的顯示文字",
|
||||||
|
"default": "再試一次"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "關閉按鈕的顯示文字",
|
||||||
|
"default": "關閉"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "遊戲說明的顯示文字",
|
||||||
|
"default": "卡片記憶遊戲,找出配對的所有卡片吧!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "遊戲結束的的顯示文字",
|
||||||
|
"default": "已配對完所有卡片。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "卡片索引的顯示文字",
|
||||||
|
"default": "%num: 張卡片"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "卡片未翻開的顯示文字",
|
||||||
|
"default": "還沒翻開。"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "卡片已配對的顯示文字",
|
||||||
|
"default": "配對成功。"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,121 @@
|
||||||
|
{
|
||||||
|
"semantics": [
|
||||||
|
{
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"label": "預設"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"label": "記憶牌",
|
||||||
|
"entity": "記憶牌",
|
||||||
|
"field": {
|
||||||
|
"label": "記憶牌",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "圖示"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Alternative text for 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": "Audio Track",
|
||||||
|
"description": "An optional sound that plays when the card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "相稱圖示",
|
||||||
|
"description": "可選用一張與主圖示相稱的圖示,並非使用兩張相同的圖示."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "相稱圖示的替代文字",
|
||||||
|
"description": "請描述此張圖示中可以看到什麼. 此段文字將做為閱讀器導讀文字,對視障使用者更為友善."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "描述",
|
||||||
|
"description": "選填。當找到兩張相稱圖示時所顯示的文字."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "行為設定",
|
||||||
|
"description": "這些選項可以讓你控制遊戲的行為.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "將記憶牌顯示於正方形中",
|
||||||
|
"description": "當設定多組記憶牌時,將依組數平均分配顯示行列數及顯示大小."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "使用的記憶牌組數量",
|
||||||
|
"description": "設定大於2的組數時,即可讓遊戲隨機顯示記憶牌."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "遊戲結束後顯示重試功能鈕"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "外觀視覺",
|
||||||
|
"description": "控制遊戲的視覺效果.",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "主題顏色",
|
||||||
|
"description": "為您的翻轉記憶牌遊戲設定一種顏色主題."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "記憶牌背面圖示",
|
||||||
|
"description": "為您的卡片背面設定圖示."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "在地化",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"label": "翻轉記憶牌功能鈕名稱",
|
||||||
|
"default": "翻轉記憶牌"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "花費時間",
|
||||||
|
"default": "實際花費時間"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "回饋文字",
|
||||||
|
"default": "做得好!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "重試功能鈕名稱",
|
||||||
|
"default": "重試?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "關閉功能鈕名稱",
|
||||||
|
"default": "關閉"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "遊戲名稱",
|
||||||
|
"default": "翻轉記憶牌遊戲. 請找出相稱的記憶牌."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "遊戲完成名稱",
|
||||||
|
"default": "所有的記憶牌皆已找出."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "記憶牌索引名稱",
|
||||||
|
"default": "記憶牌數量 %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "未翻轉記憶牌名稱",
|
||||||
|
"default": "未翻轉."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "相稱記憶牌名稱",
|
||||||
|
"default": "已找到相稱的記憶牌."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
28
library.json
28
library.json
|
@ -2,10 +2,10 @@
|
||||||
"title": "Memory Game",
|
"title": "Memory Game",
|
||||||
"description": "See how many cards you can remember!",
|
"description": "See how many cards you can remember!",
|
||||||
"majorVersion": 1,
|
"majorVersion": 1,
|
||||||
"minorVersion": 2,
|
"minorVersion": 3,
|
||||||
"patchVersion": 2,
|
"patchVersion": 7,
|
||||||
"runnable": 1,
|
"runnable": 1,
|
||||||
"author": "Joubel AS",
|
"author": "Joubel",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"machineName": "H5P.MemoryGame",
|
"machineName": "H5P.MemoryGame",
|
||||||
"preloadedCss": [
|
"preloadedCss": [
|
||||||
|
@ -35,6 +35,28 @@
|
||||||
"machineName": "H5P.Timer",
|
"machineName": "H5P.Timer",
|
||||||
"majorVersion": 0,
|
"majorVersion": 0,
|
||||||
"minorVersion": 4
|
"minorVersion": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machineName": "FontAwesome",
|
||||||
|
"majorVersion": 4,
|
||||||
|
"minorVersion": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"editorDependencies": [
|
||||||
|
{
|
||||||
|
"machineName": "H5PEditor.ColorSelector",
|
||||||
|
"majorVersion": 1,
|
||||||
|
"minorVersion": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machineName": "H5PEditor.VerticalTabs",
|
||||||
|
"majorVersion": 1,
|
||||||
|
"minorVersion": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"machineName": "H5PEditor.AudioRecorder",
|
||||||
|
"majorVersion": 1,
|
||||||
|
"minorVersion": 0
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
171
memory-game.css
171
memory-game.css
|
@ -1,6 +1,14 @@
|
||||||
.h5p-memory-game {
|
.h5p-memory-game {
|
||||||
overflow: hidden;
|
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 {
|
.h5p-memory-game > ul {
|
||||||
list-style: none !important;
|
list-style: none !important;
|
||||||
padding: 0.25em 0.5em !important;
|
padding: 0.25em 0.5em !important;
|
||||||
|
@ -25,6 +33,7 @@
|
||||||
display: inline-block !important;
|
display: inline-block !important;
|
||||||
margin: auto !important;
|
margin: auto !important;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
.h5p-memory-game .h5p-memory-wrap {
|
.h5p-memory-game .h5p-memory-wrap {
|
||||||
float: left;
|
float: left;
|
||||||
|
@ -55,6 +64,7 @@
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background: #cfcfcf;
|
background: #cfcfcf;
|
||||||
|
background-size: cover;
|
||||||
border: 2px solid #d0d0d0;
|
border: 2px solid #d0d0d0;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
-moz-box-sizing: border-box;
|
-moz-box-sizing: border-box;
|
||||||
|
@ -75,14 +85,32 @@
|
||||||
.h5p-memory-game .h5p-memory-card .h5p-front {
|
.h5p-memory-game .h5p-memory-card .h5p-front {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
color: #909090;
|
||||||
}
|
}
|
||||||
.h5p-memory-game .h5p-memory-card .h5p-front:hover {
|
.h5p-memory-game .h5p-memory-card .h5p-front:before,
|
||||||
background: #dfdfdf;
|
.h5p-memory-game .h5p-memory-card .h5p-back:before,
|
||||||
|
.h5p-memory-game .h5p-memory-image:before {
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
content: "";
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: #fff;
|
||||||
|
opacity: 0;
|
||||||
}
|
}
|
||||||
.h5p-memory-game .h5p-memory-card .h5p-front:before {
|
.h5p-memory-game.h5p-invert-shades .h5p-memory-card .h5p-front:before,
|
||||||
|
.h5p-memory-game.h5p-invert-shades .h5p-memory-card .h5p-back:before,
|
||||||
|
.h5p-memory-game.h5p-invert-shades .h5p-memory-image:before {
|
||||||
|
background: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h5p-memory-game .h5p-memory-card .h5p-front:hover:before {
|
||||||
|
opacity: 0.4;
|
||||||
|
}
|
||||||
|
.h5p-memory-game .h5p-memory-card .h5p-front > span:before {
|
||||||
|
position: relative;
|
||||||
content: "?";
|
content: "?";
|
||||||
font-size: 3.75em;
|
font-size: 3.75em;
|
||||||
color: #909090;
|
|
||||||
line-height: 1.67em;
|
line-height: 1.67em;
|
||||||
}
|
}
|
||||||
.h5p-memory-game .h5p-memory-card .h5p-front:after {
|
.h5p-memory-game .h5p-memory-card .h5p-front:after {
|
||||||
|
@ -100,15 +128,19 @@
|
||||||
background-image: radial-gradient(ellipse closest-side, rgba(0, 0, 0, 0.1) 0%, rgba(0, 0, 0, 0) 100%);
|
background-image: radial-gradient(ellipse closest-side, rgba(0, 0, 0, 0.1) 0%, rgba(0, 0, 0, 0) 100%);
|
||||||
}
|
}
|
||||||
.h5p-memory-game .h5p-memory-card .h5p-back {
|
.h5p-memory-game .h5p-memory-card .h5p-back {
|
||||||
line-height: 5.9em;
|
line-height: 5.83em;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
background: #f0f0f0;
|
background-color: #f0f0f0;
|
||||||
-webkit-transform: rotateY(-180deg);
|
-webkit-transform: rotateY(-180deg);
|
||||||
-moz-transform: rotateY(-180deg);
|
-moz-transform: rotateY(-180deg);
|
||||||
transform: rotateY(-180deg);
|
transform: rotateY(-180deg);
|
||||||
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
|
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
|
||||||
-ms-transform: scale(0,1.1);
|
-ms-transform: scale(0,1.1);
|
||||||
}
|
}
|
||||||
|
.h5p-memory-game .h5p-memory-card .h5p-back:before,
|
||||||
|
.h5p-memory-game .h5p-memory-image:before {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
.h5p-memory-game .h5p-memory-card.h5p-flipped .h5p-back {
|
.h5p-memory-game .h5p-memory-card.h5p-flipped .h5p-back {
|
||||||
-webkit-transform: rotateY(0deg);
|
-webkit-transform: rotateY(0deg);
|
||||||
-moz-transform: rotateY(0deg);
|
-moz-transform: rotateY(0deg);
|
||||||
|
@ -124,6 +156,8 @@
|
||||||
}
|
}
|
||||||
.h5p-memory-game .h5p-memory-card.h5p-matched {
|
.h5p-memory-game .h5p-memory-card.h5p-matched {
|
||||||
opacity: 0.3;
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
.h5p-memory-game .h5p-memory-card.h5p-matched img {
|
||||||
filter: grayscale(100%);
|
filter: grayscale(100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,9 +194,6 @@
|
||||||
margin: 0 1em 0 0;
|
margin: 0 1em 0 0;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
.h5p-memory-game .h5p-status > dt:after {
|
|
||||||
content: ":";
|
|
||||||
}
|
|
||||||
.h5p-memory-game .h5p-status > dd {
|
.h5p-memory-game .h5p-status > dd {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
@ -170,19 +201,32 @@
|
||||||
.h5p-memory-game .h5p-memory-pop {
|
.h5p-memory-game .h5p-memory-pop {
|
||||||
display: none;
|
display: none;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
padding: 1em;
|
padding: 0.25em;
|
||||||
width: 20em;
|
width: 24em;
|
||||||
max-width: 90%;
|
max-width: 90%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
box-shadow: 0 0 1em #666;
|
box-shadow: 0 0 2em #666;
|
||||||
|
border-radius: 0.25em;
|
||||||
-webkit-transform: translate(-50%,-50%);
|
-webkit-transform: translate(-50%,-50%);
|
||||||
-moz-transform: translate(-50%,-50%);
|
-moz-transform: translate(-50%,-50%);
|
||||||
transform: translate(-50%,-50%);
|
transform: translate(-50%,-50%);
|
||||||
}
|
}
|
||||||
|
.h5p-memory-game .h5p-memory-top {
|
||||||
|
padding: 0em 1em;
|
||||||
|
background-color: #f0f0f0;
|
||||||
|
background-size: cover;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 1.75em;
|
||||||
|
border-bottom: 1px solid #d0d0d0;
|
||||||
|
}
|
||||||
.h5p-memory-game .h5p-memory-image {
|
.h5p-memory-game .h5p-memory-image {
|
||||||
float: left;
|
display: inline-block;
|
||||||
|
line-height: 5.83em;
|
||||||
|
position: relative;
|
||||||
|
top: 1.5em;
|
||||||
|
left: -0.5em;
|
||||||
border: 2px solid #d0d0d0;
|
border: 2px solid #d0d0d0;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
-moz-box-sizing: border-box;
|
-moz-box-sizing: border-box;
|
||||||
|
@ -191,24 +235,111 @@
|
||||||
width: 6.25em;
|
width: 6.25em;
|
||||||
height: 6.25em;
|
height: 6.25em;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 0 1em rgba(125,125,125,0.5);
|
||||||
|
background-size: cover;
|
||||||
|
}
|
||||||
|
.h5p-memory-game .h5p-memory-image:first-child {
|
||||||
|
top: 1em;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.h5p-memory-game .h5p-memory-two-images .h5p-memory-image:first-child {
|
||||||
|
left: 0.5em;
|
||||||
}
|
}
|
||||||
.h5p-memory-game .h5p-row-break {
|
.h5p-memory-game .h5p-row-break {
|
||||||
clear: left;
|
clear: left;
|
||||||
}
|
}
|
||||||
.h5p-memory-game .h5p-memory-desc {
|
.h5p-memory-game .h5p-memory-desc {
|
||||||
margin-left: 7em;
|
padding: 1em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.h5p-memory-game .h5p-memory-close {
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 0.5em;
|
||||||
|
right: 0.5em;
|
||||||
|
font-size: 2em;
|
||||||
|
width: 1em;
|
||||||
|
height: 1em;
|
||||||
|
text-align: center;
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
.h5p-memory-game .h5p-memory-close:before {
|
||||||
|
content: "\00D7"
|
||||||
|
}
|
||||||
|
.h5p-memory-game .h5p-memory-close:hover {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.h5p-memory-game .h5p-memory-close:focus {
|
||||||
|
outline: 2px solid #a5c7fe;
|
||||||
}
|
}
|
||||||
.h5p-memory-reset {
|
.h5p-memory-reset {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translate(-50%,-50%);
|
transform: translate(-50%,-50%) scale(1) rotate(0);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-style: italic;
|
line-height: 1.2;
|
||||||
text-shadow: 0 0 0.5em white;
|
white-space: nowrap;
|
||||||
padding: 0.125em 0.25em;
|
padding: 0.5em 1.25em;
|
||||||
line-height: 1;
|
border-radius: 2em;
|
||||||
|
background: #1a73d9;
|
||||||
|
color: #ffffff;
|
||||||
|
box-shadow: 0 0.5em 1em #999;
|
||||||
|
opacity: 1;
|
||||||
|
transition: box-shadow 200ms linear, margin 200ms linear, transform 300ms ease-out, opacity 300ms ease-out;
|
||||||
|
}
|
||||||
|
.h5p-memory-reset:before {
|
||||||
|
font-family: 'H5PFontAwesome4';
|
||||||
|
content: "\f01e";
|
||||||
|
margin-right: 0.5em;
|
||||||
|
}
|
||||||
|
.h5p-memory-reset:hover,
|
||||||
|
.h5p-memory-reset:focus {
|
||||||
|
background: #1356a3;
|
||||||
|
box-shadow: 0 1em 1.5em #999;
|
||||||
|
margin-top: -0.2em;
|
||||||
}
|
}
|
||||||
.h5p-memory-reset:focus {
|
.h5p-memory-reset:focus {
|
||||||
outline: dashed pink;
|
outline: 2px solid #a5c7fe;
|
||||||
|
}
|
||||||
|
.h5p-memory-transin {
|
||||||
|
transform: translate(-50%,-50%) scale(0) rotate(180deg);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
.h5p-memory-transout {
|
||||||
|
transform: translate(-50%,-450%) scale(0) rotate(360deg);
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
.h5p-memory-complete {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.h5p-memory-game .h5p-programatically-focusable {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
.h5p-memory-audio-instead-of-image {
|
||||||
|
font-family: 'H5PFontAwesome4';
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
font-style: normal;
|
||||||
|
color: #404040;
|
||||||
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
.h5p-memory-audio-button {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
font-family: 'H5PFontAwesome4';
|
||||||
|
width: 1em;
|
||||||
|
height: 1em;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
.h5p-memory-audio-instead-of-image:before,
|
||||||
|
.h5p-memory-audio-button:before {
|
||||||
|
content: "\f026";
|
||||||
|
}
|
||||||
|
.h5p-memory-audio-playing .h5p-memory-audio-instead-of-image:before,
|
||||||
|
.h5p-memory-audio-playing .h5p-memory-audio-button:before {
|
||||||
|
content: "\f028";
|
||||||
}
|
}
|
||||||
|
|
261
memory-game.js
261
memory-game.js
|
@ -5,6 +5,7 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
var CARD_STD_SIZE = 116; // PX
|
var CARD_STD_SIZE = 116; // PX
|
||||||
var STD_FONT_SIZE = 16; // PX
|
var STD_FONT_SIZE = 16; // PX
|
||||||
var LIST_PADDING = 1; // EMs
|
var LIST_PADDING = 1; // EMs
|
||||||
|
var numInstances = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Memory Game Constructor
|
* Memory Game Constructor
|
||||||
|
@ -21,11 +22,28 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
// Initialize event inheritance
|
// Initialize event inheritance
|
||||||
EventDispatcher.call(self);
|
EventDispatcher.call(self);
|
||||||
|
|
||||||
var flipped, timer, counter, popup, $feedback, $wrapper, maxWidth, numCols;
|
var flipped, timer, counter, popup, $bottom, $taskComplete, $feedback, $wrapper, maxWidth, numCols, audioCard;
|
||||||
var cards = [];
|
var cards = [];
|
||||||
var flipBacks = []; // Que of cards to be flipped back
|
var flipBacks = []; // Que of cards to be flipped back
|
||||||
var numFlipped = 0;
|
var numFlipped = 0;
|
||||||
var removed = 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.
|
* Check if these two cards belongs together.
|
||||||
|
@ -49,37 +67,43 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove them from the game.
|
|
||||||
card.remove();
|
|
||||||
mate.remove();
|
|
||||||
|
|
||||||
// Update counters
|
// Update counters
|
||||||
numFlipped -= 2;
|
numFlipped -= 2;
|
||||||
removed += 2;
|
removed += 2;
|
||||||
|
|
||||||
var isFinished = (removed === cards.length);
|
var isFinished = (removed === cards.length);
|
||||||
|
|
||||||
|
// Remove them from the game.
|
||||||
|
card.remove(!isFinished);
|
||||||
|
mate.remove();
|
||||||
|
|
||||||
var desc = card.getDescription();
|
var desc = card.getDescription();
|
||||||
|
|
||||||
if (isFinished) {
|
|
||||||
self.triggerXAPIScored(1, 1, 'completed');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (desc !== undefined) {
|
if (desc !== undefined) {
|
||||||
// Pause timer and show desciption.
|
// Pause timer and show desciption.
|
||||||
timer.pause();
|
timer.pause();
|
||||||
popup.show(desc, card.getImage(), function () {
|
var imgs = [card.getImage()];
|
||||||
|
if (card.hasTwoImages) {
|
||||||
|
imgs.push(mate.getImage());
|
||||||
|
}
|
||||||
|
popup.show(desc, imgs, cardStyles ? cardStyles.back : undefined, function (refocus) {
|
||||||
if (isFinished) {
|
if (isFinished) {
|
||||||
// Game done
|
// Game done
|
||||||
|
card.makeUntabbable();
|
||||||
finished();
|
finished();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Popup is closed, continue.
|
// Popup is closed, continue.
|
||||||
timer.play();
|
timer.play();
|
||||||
|
|
||||||
|
if (refocus) {
|
||||||
|
card.setFocus();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (isFinished) {
|
else if (isFinished) {
|
||||||
// Game done
|
// Game done
|
||||||
|
card.makeUntabbable();
|
||||||
finished();
|
finished();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -90,20 +114,37 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
*/
|
*/
|
||||||
var finished = function () {
|
var finished = function () {
|
||||||
timer.stop();
|
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');
|
||||||
|
completedEvent.setScoredResult(1, 1, self, true, true);
|
||||||
|
completedEvent.data.statement.result.duration = 'PT' + (Math.round(timer.getTime() / 10) / 100) + 'S';
|
||||||
|
self.trigger(completedEvent);
|
||||||
|
|
||||||
if (parameters.behaviour && parameters.behaviour.allowRetry) {
|
if (parameters.behaviour && parameters.behaviour.allowRetry) {
|
||||||
// Create retry button
|
// Create retry button
|
||||||
var retryButton = createButton('reset', parameters.l10n.tryAgain || 'Try again?', function () {
|
var retryButton = createButton('reset', parameters.l10n.tryAgain || 'Reset', function () {
|
||||||
// Trigger handler (action)
|
// Trigger handler (action)
|
||||||
|
|
||||||
resetGame();
|
retryButton.classList.add('h5p-memory-transout');
|
||||||
|
setTimeout(function () {
|
||||||
|
// Remove button on nextTick to get transition effect
|
||||||
|
$wrapper[0].removeChild(retryButton);
|
||||||
|
}, 300);
|
||||||
|
|
||||||
// Remove button from DOM
|
resetGame();
|
||||||
$wrapper[0].removeChild(this);
|
|
||||||
});
|
});
|
||||||
|
retryButton.classList.add('h5p-memory-transin');
|
||||||
|
setTimeout(function () {
|
||||||
|
// Remove class on nextTick to get transition effectupd
|
||||||
|
retryButton.classList.remove('h5p-memory-transin');
|
||||||
|
}, 0);
|
||||||
|
|
||||||
// Same size as cards
|
// Same size as cards
|
||||||
retryButton.style.fontSize = $wrapper.children('ul')[0].style.fontSize;
|
retryButton.style.fontSize = (parseFloat($wrapper.children('ul')[0].style.fontSize) * 0.75) + 'px';
|
||||||
|
|
||||||
$wrapper[0].appendChild(retryButton); // Add to DOM
|
$wrapper[0].appendChild(retryButton); // Add to DOM
|
||||||
}
|
}
|
||||||
|
@ -113,16 +154,14 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
* Shuffle the cards and restart the game!
|
* Shuffle the cards and restart the game!
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
var resetGame = function () {
|
var resetGame = function () {
|
||||||
|
|
||||||
// Reset cards
|
// Reset cards
|
||||||
removed = 0;
|
removed = 0;
|
||||||
for (var i = 0; i < cards.length; i++) {
|
|
||||||
cards[i].reset();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove feedback
|
// Remove feedback
|
||||||
$feedback[0].classList.remove('h5p-show');
|
$feedback[0].classList.remove('h5p-show');
|
||||||
|
$taskComplete.hide();
|
||||||
|
|
||||||
// Reset timer and counter
|
// Reset timer and counter
|
||||||
timer.reset();
|
timer.reset();
|
||||||
|
@ -136,11 +175,15 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
for (var i = 0; i < cards.length; i++) {
|
for (var i = 0; i < cards.length; i++) {
|
||||||
cards[i].reAppend();
|
cards[i].reAppend();
|
||||||
}
|
}
|
||||||
|
for (var j = 0; j < cards.length; j++) {
|
||||||
|
cards[j].reset();
|
||||||
|
}
|
||||||
|
|
||||||
// Scale new layout
|
// Scale new layout
|
||||||
$wrapper.children('ul').children('.h5p-row-break').removeClass('h5p-row-break');
|
$wrapper.children('ul').children('.h5p-row-break').removeClass('h5p-row-break');
|
||||||
maxWidth = -1;
|
maxWidth = -1;
|
||||||
self.trigger('resize');
|
self.trigger('resize');
|
||||||
|
cards[0].setFocus();
|
||||||
}, 600);
|
}, 600);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -154,7 +197,7 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
buttonElement.innerHTML = label;
|
buttonElement.innerHTML = label;
|
||||||
buttonElement.setAttribute('role', 'button');
|
buttonElement.setAttribute('role', 'button');
|
||||||
buttonElement.tabIndex = 0;
|
buttonElement.tabIndex = 0;
|
||||||
buttonElement.addEventListener('click', function (event) {
|
buttonElement.addEventListener('click', function () {
|
||||||
action.apply(buttonElement);
|
action.apply(buttonElement);
|
||||||
}, false);
|
}, false);
|
||||||
buttonElement.addEventListener('keypress', function (event) {
|
buttonElement.addEventListener('keypress', function (event) {
|
||||||
|
@ -175,6 +218,17 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
*/
|
*/
|
||||||
var addCard = function (card, mate) {
|
var addCard = function (card, mate) {
|
||||||
card.on('flip', function () {
|
card.on('flip', function () {
|
||||||
|
if (audioCard) {
|
||||||
|
audioCard.stopAudio();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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');
|
self.triggerXAPI('interacted');
|
||||||
// Keep track of time spent
|
// Keep track of time spent
|
||||||
timer.play();
|
timer.play();
|
||||||
|
@ -182,6 +236,11 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
// Keep track of the number of flipped cards
|
// Keep track of the number of flipped cards
|
||||||
numFlipped++;
|
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) {
|
if (flipped !== undefined) {
|
||||||
var matie = flipped;
|
var matie = flipped;
|
||||||
// Reset the flipped card.
|
// Reset the flipped card.
|
||||||
|
@ -204,6 +263,81 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
// Count number of cards turned
|
// Count number of cards turned
|
||||||
counter.increment();
|
counter.increment();
|
||||||
});
|
});
|
||||||
|
card.on('audioplay', function () {
|
||||||
|
if (audioCard) {
|
||||||
|
audioCard.stopAudio();
|
||||||
|
}
|
||||||
|
audioCard = card;
|
||||||
|
});
|
||||||
|
card.on('audiostop', function () {
|
||||||
|
audioCard = undefined;
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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);
|
cards.push(card);
|
||||||
};
|
};
|
||||||
|
@ -247,21 +381,31 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
return cardsToUse;
|
return cardsToUse;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var cardStyles, invertShades;
|
||||||
|
if (parameters.lookNFeel) {
|
||||||
|
// If the contrast between the chosen color and white is too low we invert the shades to create good contrast
|
||||||
|
invertShades = (parameters.lookNFeel.themeColor &&
|
||||||
|
getContrast(parameters.lookNFeel.themeColor) < 1.7 ? -1 : 1);
|
||||||
|
var backImage = (parameters.lookNFeel.cardBack ? H5P.getPath(parameters.lookNFeel.cardBack.path, id) : null);
|
||||||
|
cardStyles = MemoryGame.Card.determineStyles(parameters.lookNFeel.themeColor, invertShades, backImage);
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize cards.
|
// Initialize cards.
|
||||||
var cardsToUse = getCardsToUse();
|
var cardsToUse = getCardsToUse();
|
||||||
for (var i = 0; i < cardsToUse.length; i++) {
|
for (var i = 0; i < cardsToUse.length; i++) {
|
||||||
var cardParams = cardsToUse[i];
|
var cardParams = cardsToUse[i];
|
||||||
if (MemoryGame.Card.isValid(cardParams)) {
|
if (MemoryGame.Card.isValid(cardParams)) {
|
||||||
// Create first card
|
// Create first card
|
||||||
var cardTwo, cardOne = new MemoryGame.Card(cardParams.image, id, cardParams.description);
|
var cardTwo, cardOne = new MemoryGame.Card(cardParams.image, id, cardParams.imageAlt, parameters.l10n, cardParams.description, cardStyles, cardParams.audio);
|
||||||
|
|
||||||
if (MemoryGame.Card.hasTwoImages(cardParams)) {
|
if (MemoryGame.Card.hasTwoImages(cardParams)) {
|
||||||
// Use matching image for card two
|
// Use matching image for card two
|
||||||
cardTwo = new MemoryGame.Card(cardParams.match, id, cardParams.description);
|
cardTwo = new MemoryGame.Card(cardParams.match, id, cardParams.matchAlt, parameters.l10n, cardParams.description, cardStyles, cardParams.matchAudio);
|
||||||
|
cardOne.hasTwoImages = cardTwo.hasTwoImages = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Add two cards with the same image
|
// Add two cards with the same image
|
||||||
cardTwo = new MemoryGame.Card(cardParams.image, id, cardParams.description);
|
cardTwo = new MemoryGame.Card(cardParams.image, id, cardParams.imageAlt, parameters.l10n, cardParams.description, cardStyles, cardParams.audio);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add cards to card list for shuffeling
|
// Add cards to card list for shuffeling
|
||||||
|
@ -280,42 +424,74 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
this.triggerXAPI('attempted');
|
this.triggerXAPI('attempted');
|
||||||
// TODO: Only create on first attach!
|
// TODO: Only create on first attach!
|
||||||
$wrapper = $container.addClass('h5p-memory-game').html('');
|
$wrapper = $container.addClass('h5p-memory-game').html('');
|
||||||
|
if (invertShades === -1) {
|
||||||
|
$container.addClass('h5p-invert-shades');
|
||||||
|
}
|
||||||
|
|
||||||
// Add cards to list
|
// Add cards to list
|
||||||
var $list = $('<ul/>');
|
var $list = $('<ul/>', {
|
||||||
|
role: 'application',
|
||||||
|
'aria-labelledby': 'h5p-intro-' + numInstances
|
||||||
|
});
|
||||||
for (var i = 0; i < cards.length; i++) {
|
for (var i = 0; i < cards.length; i++) {
|
||||||
cards[i].appendTo($list);
|
cards[i].appendTo($list);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($list.children().length) {
|
if ($list.children().length) {
|
||||||
|
cards[0].makeTabbable();
|
||||||
|
|
||||||
|
$('<div/>', {
|
||||||
|
id: 'h5p-intro-' + numInstances,
|
||||||
|
'class': 'h5p-memory-hidden-read',
|
||||||
|
html: parameters.l10n.label,
|
||||||
|
appendTo: $container
|
||||||
|
});
|
||||||
$list.appendTo($container);
|
$list.appendTo($container);
|
||||||
|
|
||||||
$feedback = $('<div class="h5p-feedback">' + parameters.l10n.feedback + '</div>').appendTo($container);
|
$bottom = $('<div/>', {
|
||||||
|
'class': 'h5p-programatically-focusable',
|
||||||
|
tabindex: '-1',
|
||||||
|
appendTo: $container
|
||||||
|
});
|
||||||
|
$taskComplete = $('<div/>', {
|
||||||
|
'class': 'h5p-memory-complete h5p-memory-hidden-read',
|
||||||
|
html: parameters.l10n.done,
|
||||||
|
appendTo: $bottom
|
||||||
|
});
|
||||||
|
|
||||||
|
$feedback = $('<div class="h5p-feedback">' + parameters.l10n.feedback + '</div>').appendTo($bottom);
|
||||||
|
|
||||||
// Add status bar
|
// Add status bar
|
||||||
var $status = $('<dl class="h5p-status">' +
|
var $status = $('<dl class="h5p-status">' +
|
||||||
'<dt>' + parameters.l10n.timeSpent + '</dt>' +
|
'<dt>' + parameters.l10n.timeSpent + ':</dt>' +
|
||||||
'<dd class="h5p-time-spent">0:00</dd>' +
|
'<dd class="h5p-time-spent"><time role="timer" datetime="PT0M0S">0:00</time><span class="h5p-memory-hidden-read">.</span></dd>' +
|
||||||
'<dt>' + parameters.l10n.cardTurns + '</dt>' +
|
'<dt>' + parameters.l10n.cardTurns + ':</dt>' +
|
||||||
'<dd class="h5p-card-turns">0</dd>' +
|
'<dd class="h5p-card-turns">0<span class="h5p-memory-hidden-read">.</span></dd>' +
|
||||||
'</dl>').appendTo($container);
|
'</dl>').appendTo($bottom);
|
||||||
|
|
||||||
timer = new MemoryGame.Timer($status.find('.h5p-time-spent')[0]);
|
timer = new MemoryGame.Timer($status.find('time')[0]);
|
||||||
counter = new MemoryGame.Counter($status.find('.h5p-card-turns'));
|
counter = new MemoryGame.Counter($status.find('.h5p-card-turns'));
|
||||||
popup = new MemoryGame.Popup($container);
|
popup = new MemoryGame.Popup($container, parameters.l10n);
|
||||||
|
|
||||||
$container.click(function () {
|
$container.click(function () {
|
||||||
popup.close();
|
popup.close();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
const $foo = $('<div/>')
|
||||||
|
.text('No card was added to the memory game!')
|
||||||
|
.appendTo($list);
|
||||||
|
|
||||||
|
$list.appendTo($container);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will try to scale the game so that it fits within its container.
|
* Will try to scale the game so that it fits within its container.
|
||||||
* Puts the cards into a grid layout to make it as square as possible –
|
* Puts the cards into a grid layout to make it as square as possible –
|
||||||
* which improves the playability on multiple devices.
|
* which improves the playability on multiple devices.
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
var scaleGameSize = function () {
|
var scaleGameSize = function () {
|
||||||
|
|
||||||
|
@ -380,5 +556,18 @@ H5P.MemoryGame = (function (EventDispatcher, $) {
|
||||||
MemoryGame.prototype = Object.create(EventDispatcher.prototype);
|
MemoryGame.prototype = Object.create(EventDispatcher.prototype);
|
||||||
MemoryGame.prototype.constructor = MemoryGame;
|
MemoryGame.prototype.constructor = MemoryGame;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine color contrast level compared to white(#fff)
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @param {string} color hex code
|
||||||
|
* @return {number} From 1 to Infinity.
|
||||||
|
*/
|
||||||
|
var getContrast = function (color) {
|
||||||
|
return 255 / ((parseInt(color.substr(1, 2), 16) * 299 +
|
||||||
|
parseInt(color.substr(3, 2), 16) * 587 +
|
||||||
|
parseInt(color.substr(5, 2), 16) * 144) / 1000);
|
||||||
|
};
|
||||||
|
|
||||||
return MemoryGame;
|
return MemoryGame;
|
||||||
})(H5P.EventDispatcher, H5P.jQuery);
|
})(H5P.EventDispatcher, H5P.jQuery);
|
||||||
|
|
39
popup.js
39
popup.js
|
@ -5,57 +5,74 @@
|
||||||
*
|
*
|
||||||
* @class H5P.MemoryGame.Popup
|
* @class H5P.MemoryGame.Popup
|
||||||
* @param {H5P.jQuery} $container
|
* @param {H5P.jQuery} $container
|
||||||
|
* @param {Object.<string, string>} l10n
|
||||||
*/
|
*/
|
||||||
MemoryGame.Popup = function ($container) {
|
MemoryGame.Popup = function ($container, l10n) {
|
||||||
/** @alias H5P.MemoryGame.Popup# */
|
/** @alias H5P.MemoryGame.Popup# */
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
var closed;
|
var closed;
|
||||||
|
|
||||||
var $popup = $('<div class="h5p-memory-pop"><div class="h5p-memory-image"></div><div class="h5p-memory-desc"></div></div>').appendTo($container);
|
var $popup = $('<div class="h5p-memory-pop" role="dialog"><div class="h5p-memory-top"></div><div class="h5p-memory-desc h5p-programatically-focusable" tabindex="-1"></div><div class="h5p-memory-close" role="button" tabindex="0" title="' + (l10n.closeLabel || 'Close') + '" aria-label="' + (l10n.closeLabel || 'Close') + '"></div></div>').appendTo($container);
|
||||||
var $desc = $popup.find('.h5p-memory-desc');
|
var $desc = $popup.find('.h5p-memory-desc');
|
||||||
var $image = $popup.find('.h5p-memory-image');
|
var $top = $popup.find('.h5p-memory-top');
|
||||||
|
|
||||||
|
// Hook up the close button
|
||||||
|
$popup.find('.h5p-memory-close').on('click', function () {
|
||||||
|
self.close(true);
|
||||||
|
}).on('keypress', function (event) {
|
||||||
|
if (event.which === 13 || event.which === 32) {
|
||||||
|
self.close(true);
|
||||||
|
event.preventDefault();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Show the popup.
|
* Show the popup.
|
||||||
*
|
*
|
||||||
* @param {string} desc
|
* @param {string} desc
|
||||||
* @param {H5P.jQuery} $img
|
* @param {H5P.jQuery[]} imgs
|
||||||
* @param {function} done
|
* @param {function} done
|
||||||
*/
|
*/
|
||||||
self.show = function (desc, $img, done) {
|
self.show = function (desc, imgs, styles, done) {
|
||||||
$desc.html(desc);
|
$desc.html(desc);
|
||||||
$img.appendTo($image.html(''));
|
$top.html('').toggleClass('h5p-memory-two-images', imgs.length > 1);
|
||||||
|
for (var i = 0; i < imgs.length; i++) {
|
||||||
|
$('<div class="h5p-memory-image"' + (styles ? styles : '') + '></div>').append(imgs[i]).appendTo($top);
|
||||||
|
}
|
||||||
$popup.show();
|
$popup.show();
|
||||||
|
$desc.focus();
|
||||||
closed = done;
|
closed = done;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close the popup.
|
* Close the popup.
|
||||||
|
*
|
||||||
|
* @param {boolean} refocus Sets focus after closing the dialog
|
||||||
*/
|
*/
|
||||||
self.close = function () {
|
self.close = function (refocus) {
|
||||||
if (closed !== undefined) {
|
if (closed !== undefined) {
|
||||||
$popup.hide();
|
$popup.hide();
|
||||||
closed();
|
closed(refocus);
|
||||||
closed = undefined;
|
closed = undefined;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets popup size relative to the card size
|
* Sets popup size relative to the card size
|
||||||
|
*
|
||||||
* @param {number} fontSize
|
* @param {number} fontSize
|
||||||
*/
|
*/
|
||||||
self.setSize = function (fontSize) {
|
self.setSize = function (fontSize) {
|
||||||
// Set image size
|
// Set image size
|
||||||
$image[0].style.fontSize = fontSize + 'px';
|
$top[0].style.fontSize = fontSize + 'px';
|
||||||
|
|
||||||
// Determine card size
|
// Determine card size
|
||||||
var cardSize = fontSize * 6.25; // From CSS
|
var cardSize = fontSize * 6.25; // From CSS
|
||||||
|
|
||||||
// Set popup size
|
// Set popup size
|
||||||
$popup[0].style.minWidth = (cardSize * 2) + 'px';
|
$popup[0].style.minWidth = (cardSize * 2.5) + 'px';
|
||||||
$popup[0].style.minHeight = cardSize + 'px';
|
$popup[0].style.minHeight = cardSize + 'px';
|
||||||
$desc[0].style.marginLeft = (cardSize + 20) + 'px';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
115
semantics.json
115
semantics.json
|
@ -2,6 +2,12 @@
|
||||||
{
|
{
|
||||||
"name": "cards",
|
"name": "cards",
|
||||||
"type": "list",
|
"type": "list",
|
||||||
|
"widgets": [
|
||||||
|
{
|
||||||
|
"name": "VerticalTabs",
|
||||||
|
"label": "Default"
|
||||||
|
}
|
||||||
|
],
|
||||||
"label": "Cards",
|
"label": "Cards",
|
||||||
"importance": "high",
|
"importance": "high",
|
||||||
"entity": "card",
|
"entity": "card",
|
||||||
|
@ -20,6 +26,22 @@
|
||||||
"importance": "high",
|
"importance": "high",
|
||||||
"ratio": 1
|
"ratio": 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "imageAlt",
|
||||||
|
"type": "text",
|
||||||
|
"label": "Alternative text for Image",
|
||||||
|
"importance": "high",
|
||||||
|
"description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "audio",
|
||||||
|
"type": "audio",
|
||||||
|
"importance": "high",
|
||||||
|
"label": "Audio Track",
|
||||||
|
"description": "An optional sound that plays when the card is turned.",
|
||||||
|
"optional": true,
|
||||||
|
"widgetExtensions": ["AudioRecorder"]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "match",
|
"name": "match",
|
||||||
"type": "image",
|
"type": "image",
|
||||||
|
@ -29,6 +51,23 @@
|
||||||
"description": "An optional image to match against instead of using two cards with the same image.",
|
"description": "An optional image to match against instead of using two cards with the same image.",
|
||||||
"ratio": 1
|
"ratio": 1
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "matchAlt",
|
||||||
|
"type": "text",
|
||||||
|
"label": "Alternative text for Matching Image",
|
||||||
|
"importance": "low",
|
||||||
|
"optional": true,
|
||||||
|
"description": "Describe what can be seen in the photo. The text is read by text-to-speech tools needed by visually impaired users."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "matchAudio",
|
||||||
|
"type": "audio",
|
||||||
|
"importance": "low",
|
||||||
|
"label": "Matching Audio Track",
|
||||||
|
"description": "An optional sound that plays when the second card is turned.",
|
||||||
|
"optional": true,
|
||||||
|
"widgetExtensions": ["AudioRecorder"]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "description",
|
"name": "description",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
|
@ -75,6 +114,38 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "lookNFeel",
|
||||||
|
"type": "group",
|
||||||
|
"label": "Look and feel",
|
||||||
|
"importance": "low",
|
||||||
|
"description": "Control the visuals of the game.",
|
||||||
|
"optional": true,
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"name": "themeColor",
|
||||||
|
"type": "text",
|
||||||
|
"label": "Theme Color",
|
||||||
|
"importance": "low",
|
||||||
|
"description": "Choose a color to create a theme for your card game.",
|
||||||
|
"optional": true,
|
||||||
|
"default": "#909090",
|
||||||
|
"widget": "colorSelector",
|
||||||
|
"spectrum": {
|
||||||
|
"showInput": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cardBack",
|
||||||
|
"type": "image",
|
||||||
|
"label": "Card Back",
|
||||||
|
"importance": "low",
|
||||||
|
"optional": true,
|
||||||
|
"description": "Use a custom back for your cards.",
|
||||||
|
"ratio": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"label": "Localization",
|
"label": "Localization",
|
||||||
"importance": "low",
|
"importance": "low",
|
||||||
|
@ -108,7 +179,49 @@
|
||||||
"importance": "low",
|
"importance": "low",
|
||||||
"name": "tryAgain",
|
"name": "tryAgain",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"default": "Try again?"
|
"default": "Reset"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Close button label",
|
||||||
|
"importance": "low",
|
||||||
|
"name": "closeLabel",
|
||||||
|
"type": "text",
|
||||||
|
"default": "Close"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Game label",
|
||||||
|
"importance": "low",
|
||||||
|
"name": "label",
|
||||||
|
"type": "text",
|
||||||
|
"default": "Memory Game. Find the matching cards."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Game finished label",
|
||||||
|
"importance": "low",
|
||||||
|
"name": "done",
|
||||||
|
"type": "text",
|
||||||
|
"default": "All of the cards have been found."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card indexing label",
|
||||||
|
"importance": "low",
|
||||||
|
"name": "cardPrefix",
|
||||||
|
"type": "text",
|
||||||
|
"default": "Card %num:"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card unturned label",
|
||||||
|
"importance": "low",
|
||||||
|
"name": "cardUnturned",
|
||||||
|
"type": "text",
|
||||||
|
"default": "Unturned."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "Card matched label",
|
||||||
|
"importance": "low",
|
||||||
|
"name": "cardMatched",
|
||||||
|
"type": "text",
|
||||||
|
"default": "Match found."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
5
timer.js
5
timer.js
|
@ -28,6 +28,11 @@
|
||||||
|
|
||||||
var minutes = Timer.extractTimeElement(time, 'minutes');
|
var minutes = Timer.extractTimeElement(time, 'minutes');
|
||||||
var seconds = Timer.extractTimeElement(time, 'seconds') % 60;
|
var seconds = Timer.extractTimeElement(time, 'seconds') % 60;
|
||||||
|
|
||||||
|
// Update duration attribute
|
||||||
|
element.setAttribute('datetime', 'PT' + minutes + 'M' + seconds + 'S');
|
||||||
|
|
||||||
|
// Add leading zero
|
||||||
if (seconds < 10) {
|
if (seconds < 10) {
|
||||||
seconds = '0' + seconds;
|
seconds = '0' + seconds;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
var H5PUpgrades = H5PUpgrades || {};
|
var H5PUpgrades = H5PUpgrades || {};
|
||||||
|
|
||||||
H5PUpgrades['H5P.MemoryGame'] = (function ($) {
|
H5PUpgrades['H5P.MemoryGame'] = (function () {
|
||||||
return {
|
return {
|
||||||
1: {
|
1: {
|
||||||
/**
|
/**
|
||||||
|
@ -42,4 +42,4 @@ H5PUpgrades['H5P.MemoryGame'] = (function ($) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
})(H5P.jQuery);
|
})();
|
||||||
|
|
Loading…
Reference in New Issue