@prosopo/locale 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +2 -2
  2. package/.turbo/turbo-build$colon$tsc.log +5 -5
  3. package/.turbo/turbo-build.log +4 -4
  4. package/CHANGELOG.md +27 -0
  5. package/dist/cjs/locales/en/translation.cjs +22 -1
  6. package/dist/locales/ar/translation.json +22 -1
  7. package/dist/locales/az/translation.json +22 -1
  8. package/dist/locales/cs/translation.json +22 -1
  9. package/dist/locales/de/translation.json +22 -1
  10. package/dist/locales/el/translation.json +22 -1
  11. package/dist/locales/en/translation.js +22 -1
  12. package/dist/locales/en/translation.json +22 -1
  13. package/dist/locales/es/translation.json +22 -1
  14. package/dist/locales/fi/translation.json +22 -1
  15. package/dist/locales/fr/translation.json +22 -1
  16. package/dist/locales/hi/translation.json +22 -1
  17. package/dist/locales/hu/translation.json +22 -1
  18. package/dist/locales/id/translation.json +22 -1
  19. package/dist/locales/it/translation.json +22 -1
  20. package/dist/locales/ja/translation.json +22 -1
  21. package/dist/locales/jv/translation.json +22 -1
  22. package/dist/locales/ko/translation.json +22 -1
  23. package/dist/locales/ml/translation.json +22 -1
  24. package/dist/locales/ms/translation.json +22 -1
  25. package/dist/locales/nl/translation.json +22 -1
  26. package/dist/locales/no/translation.json +22 -1
  27. package/dist/locales/pl/translation.json +22 -1
  28. package/dist/locales/pt/translation.json +22 -1
  29. package/dist/locales/pt-BR/translation.json +22 -1
  30. package/dist/locales/ro/translation.json +22 -1
  31. package/dist/locales/ru/translation.json +22 -1
  32. package/dist/locales/sr/translation.json +22 -1
  33. package/dist/locales/sv/translation.json +22 -1
  34. package/dist/locales/th/translation.json +22 -1
  35. package/dist/locales/tr/translation.json +22 -1
  36. package/dist/locales/uk/translation.json +22 -1
  37. package/dist/locales/vi/translation.json +22 -1
  38. package/dist/locales/zh-CN/translation.json +22 -1
  39. package/package.json +1 -1
@@ -25,9 +25,9 @@ dist/cjs/index.cjs 1.20 kB │ gzip: 0.34 kB
25
25
  dist/cjs/i18nBackend.cjs 1.47 kB │ gzip: 0.62 kB
26
26
  dist/cjs/loadI18next.cjs 2.03 kB │ gzip: 0.84 kB
27
27
  dist/cjs/i18nFrontend.cjs 6.07 kB │ gzip: 2.44 kB
28
- dist/cjs/locales/en/translation.cjs 17.51 kB │ gzip: 6.27 kB
28
+ dist/cjs/locales/en/translation.cjs 18.33 kB │ gzip: 6.57 kB
29
29
 
30
- ✓ built in 88ms
30
+ ✓ built in 58ms
31
31
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/ar/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/ar/translation.json
32
32
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/az/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/az/translation.json
33
33
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/cs/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/cs/translation.json
@@ -1,14 +1,14 @@
1
1
  $ tsc --build --verbose
2
- 1:37:21 PM - Projects in this build:
2
+ 10:11:22 AM - Projects in this build:
3
3
  * ../../dev/config/tsconfig.json
4
4
  * ../util/tsconfig.json
5
5
  * tsconfig.json
6
6
 
7
- 1:37:21 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
7
+ 10:11:22 AM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
8
8
 
9
- 1:37:21 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
9
+ 10:11:22 AM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/table.ts' is older than output '../util/tsconfig.tsbuildinfo'
10
10
 
11
- 1:37:21 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
11
+ 10:11:22 AM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
12
12
 
13
- 1:37:21 PM - Building project '/home/runner/work/captcha/captcha/packages/locale/tsconfig.json'...
13
+ 10:11:22 AM - Building project '/home/runner/work/captcha/captcha/packages/locale/tsconfig.json'...
14
14
 
@@ -26,13 +26,13 @@ dist/translationKey.js 0.83 kB │ gzip: 0.43 kB
26
26
  dist/i18nBackend.js 1.01 kB │ gzip: 0.53 kB
27
27
  dist/loadI18next.js 1.93 kB │ gzip: 0.83 kB
28
28
  dist/i18nFrontend.js 5.98 kB │ gzip: 2.42 kB
29
- dist/locales/en/translation.js 17.27 kB │ gzip: 6.24 kB
29
+ dist/locales/en/translation.js 18.09 kB │ gzip: 6.53 kB
30
30
 
31
- ✓ built in 32ms
32
- [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/ar/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/ar/translation.json
31
+ ✓ built in 53ms
33
32
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/az/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/az/translation.json
34
33
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/cs/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/cs/translation.json
35
34
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/de/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/de/translation.json
35
+ [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/ar/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/ar/translation.json
36
36
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/el/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/el/translation.json
37
37
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/en/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/en/translation.json
38
38
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/es/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/es/translation.json
@@ -49,8 +49,8 @@ dist/locales/en/translation.js 17.27 kB │ gzip: 6.24 kB
49
49
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/ms/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/ms/translation.json
50
50
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/nl/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/nl/translation.json
51
51
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/no/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/no/translation.json
52
- [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/pt/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/pt/translation.json
53
52
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/pl/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/pl/translation.json
53
+ [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/pt/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/pt/translation.json
54
54
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/pt-BR/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/pt-BR/translation.json
55
55
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/ro/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/ro/translation.json
56
56
  [copy-plugin] copying /home/runner/work/captcha/captcha/packages/locale/src/locales/ru/translation.json to /home/runner/work/captcha/captcha/packages/locale/dist/locales/ru/translation.json
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @prosopo/locale
2
2
 
3
+ ## 3.8.0
4
+ ### Minor Changes
5
+
6
+ - b299a91: An audio challenge, offered only as an accessibility alternative, like reCAPTCHA's audio option. The user hears a short sequence of spoken digits and types them in.
7
+
8
+ It is off by default and needs two switches. Prosopo has to turn on the `captchaTypeFeatureFlags.audio` feature flag for the site, which the site owner cannot do, and the site owner has to set `audioAccessibilityEnabled`. When both are on, image, puzzle and icon-order challenges show a "Use audio instead" button. Pressing it swaps the visual challenge for the audio one. After a wrong answer the user stays on audio and gets a fresh clip.
9
+
10
+ Audio is never a captcha type that can be selected or routed to. A site's `captchaType`, traffic-filter categories, Restrict rules and the site-key CLI all reject it, and routing, PoW escalation and the severity tiers leave it out. The provider only serves audio against the visual session the user was already given, and only on a site with both switches on; any other audio request is refused before the session is used up, and a request without a session is always refused.
11
+
12
+ The spoken digits are synthesised by `@prosopo/audio-assets`, so there is no recorded set of clips to collect. The answer never leaves the provider, and a challenge can be submitted and verified only once, even under concurrent requests. `@prosopo/procaptcha-audio` is the widget. It and the "Use audio instead" button are built on the shared widget code in `@prosopo/procaptcha-common`, and the provider side is built on the shared interactive-captcha code that puzzle and icon-order use.
13
+
14
+ The demo playground has audio pages, and there is an end-to-end test for it.
15
+
16
+ ### Patch Changes
17
+
18
+ - e13d7a8: New captcha type: `iconOrder`. The user is shown a frame of icons and a legend, and clicks the legend's icons in the order given.
19
+
20
+ Icon-order is off by default. Only Prosopo can switch it on for a site, with the `captchaTypeFeatureFlags.iconOrder` feature flag; the site owner cannot. A site without the flag is never served icon-order by any route, and the challenge endpoint refuses it. Once the flag is on, the owner can still keep icon-order out of the frictionless flow with `frictionlessTypes.iconOrder`, the same way as image and puzzle.
21
+
22
+ The answer never leaves the provider. Icon positions are stored on the challenge record, and the widget receives only the rendered frame and legend. Grading checks order as well as position, and each icon's hit radius scales with its size. Verifying a token is single-use under concurrent requests.
23
+
24
+ `@prosopo/icon-order-assets` draws the imagery, and `@prosopo/procaptcha-icon-order` is the widget. Its text is translated into every supported language.
25
+
26
+ Puzzle and icon-order now share their server code: challenge and solution handlers, the verify route, the submit and verify pipeline, and the database record methods. The widget code they have in common moves into `@prosopo/procaptcha-common`: the lazy mount wrapper, manager expiry and dispose, spent-session handling, behavioural data encryption and trusted click coordinates. Puzzle's behaviour is unchanged.
27
+
28
+ The demo playground has icon-order pages, and there is an end-to-end test for it.
29
+
3
30
  ## 3.7.0
4
31
  ### Minor Changes
5
32
 
@@ -29,7 +29,28 @@ var WIDGET = {
29
29
  "CHECKING": "Checking your answer",
30
30
  "RETRY_ANNOUNCEMENT": "Not quite. A new puzzle has loaded and the piece is back at the start.",
31
31
  "REFRESH": "Show a different puzzle"
32
- }
32
+ },
33
+ "ICON_ORDER": {
34
+ "DIALOG_LABEL": "Icon order challenge",
35
+ "SELECT": "Select in this order",
36
+ "RETRY": "Not quite — try again",
37
+ "LEGEND_ALT": "Icons to select, in order",
38
+ "RESET": "Reset",
39
+ "CHECKING": "Checking…",
40
+ "SUBMIT": "OK"
41
+ },
42
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
43
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
44
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
45
+ "AUDIO_PLAY": "Play",
46
+ "AUDIO_REPLAY": "Play again",
47
+ "AUDIO_PLAYING": "Playing",
48
+ "AUDIO_FINISHED": "Playback finished",
49
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
50
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
51
+ "AUDIO_SUBMIT": "Verify",
52
+ "AUDIO_CHECKING": "Checking",
53
+ "AUDIO_ALTERNATIVE": "Use audio instead"
33
54
  };
34
55
  var GENERAL = {
35
56
  "JSON_LOAD_FAILED": "Failed to load JSON file",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "جارٍ التحقق من إجابتك",
401
401
  "RETRY_ANNOUNCEMENT": "اقتربت. تم تحميل أحجية جديدة وعادت القطعة إلى البداية.",
402
402
  "REFRESH": "أحجية مختلفة"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "تحدي ترتيب الأيقونات",
406
+ "SELECT": "اختر بهذا الترتيب",
407
+ "RETRY": "اقتربت — حاول مرة أخرى",
408
+ "LEGEND_ALT": "الأيقونات المطلوب اختيارها بالترتيب",
409
+ "RESET": "إعادة تعيين",
410
+ "CHECKING": "جارٍ التحقق…",
411
+ "SUBMIT": "موافق"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "فشل في ترميز عنوان غير صالح",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Cavabınız yoxlanılır",
401
401
  "RETRY_ANNOUNCEMENT": "Az qaldı. Yeni tapmaca yükləndi və hissə yenidən başlanğıcdadır.",
402
402
  "REFRESH": "Başqa tapmaca"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "İkon sırası tapşırığı",
406
+ "SELECT": "Bu ardıcıllıqla seçin",
407
+ "RETRY": "Az qaldı — yenidən cəhd edin",
408
+ "LEGEND_ALT": "Seçiləcək ikonlar, ardıcıllıqla",
409
+ "RESET": "Sıfırla",
410
+ "CHECKING": "Yoxlanılır…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Geçərsiz ünvan kodlanmadı",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Ověřujeme vaši odpověď",
401
401
  "RETRY_ANNOUNCEMENT": "Skoro. Načetla se nová skládačka a dílek je zpět na začátku.",
402
402
  "REFRESH": "Jiná skládačka"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Úloha s pořadím ikon",
406
+ "SELECT": "Vyberte v tomto pořadí",
407
+ "RETRY": "Skoro — zkuste to znovu",
408
+ "LEGEND_ALT": "Ikony k výběru, v daném pořadí",
409
+ "RESET": "Obnovit",
410
+ "CHECKING": "Ověřujeme…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Nepodařilo se zakódovat neplatnou adresu",
@@ -101,7 +101,28 @@
101
101
  "CHECKING": "Deine Antwort wird geprüft",
102
102
  "RETRY_ANNOUNCEMENT": "Knapp daneben. Ein neues Puzzle wurde geladen und das Teil steht wieder am Anfang.",
103
103
  "REFRESH": "Anderes Puzzle"
104
- }
104
+ },
105
+ "ICON_ORDER": {
106
+ "DIALOG_LABEL": "Symbolreihenfolge-Aufgabe",
107
+ "SELECT": "In dieser Reihenfolge auswählen",
108
+ "RETRY": "Knapp daneben — versuche es erneut",
109
+ "LEGEND_ALT": "Auszuwählende Symbole, in Reihenfolge",
110
+ "RESET": "Zurücksetzen",
111
+ "CHECKING": "Wird geprüft…",
112
+ "SUBMIT": "OK"
113
+ },
114
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
115
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
116
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
117
+ "AUDIO_PLAY": "Play",
118
+ "AUDIO_REPLAY": "Play again",
119
+ "AUDIO_PLAYING": "Playing",
120
+ "AUDIO_FINISHED": "Playback finished",
121
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
122
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
123
+ "AUDIO_SUBMIT": "Verify",
124
+ "AUDIO_CHECKING": "Checking",
125
+ "AUDIO_ALTERNATIVE": "Use audio instead"
105
126
  },
106
127
  "CONTRACT": {
107
128
  "INVALID_ADDRESS": "Ungültige Adresse konnte nicht codiert werden",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Ελέγχουμε την απάντησή σας",
401
401
  "RETRY_ANNOUNCEMENT": "Παραλίγο. Φορτώθηκε νέο παζλ και το κομμάτι επέστρεψε στην αρχή.",
402
402
  "REFRESH": "Άλλο παζλ"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Δοκιμασία σειράς εικονιδίων",
406
+ "SELECT": "Επιλέξτε με αυτή τη σειρά",
407
+ "RETRY": "Παραλίγο — δοκιμάστε ξανά",
408
+ "LEGEND_ALT": "Εικονίδια για επιλογή, με τη σειρά",
409
+ "RESET": "Επαναφορά",
410
+ "CHECKING": "Γίνεται έλεγχος…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Αποτυχία κωδικοποίησης μη έγκυρης διεύθυνσης",
@@ -29,7 +29,28 @@ var WIDGET = {
29
29
  "CHECKING": "Checking your answer",
30
30
  "RETRY_ANNOUNCEMENT": "Not quite. A new puzzle has loaded and the piece is back at the start.",
31
31
  "REFRESH": "Show a different puzzle"
32
- }
32
+ },
33
+ "ICON_ORDER": {
34
+ "DIALOG_LABEL": "Icon order challenge",
35
+ "SELECT": "Select in this order",
36
+ "RETRY": "Not quite — try again",
37
+ "LEGEND_ALT": "Icons to select, in order",
38
+ "RESET": "Reset",
39
+ "CHECKING": "Checking…",
40
+ "SUBMIT": "OK"
41
+ },
42
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
43
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
44
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
45
+ "AUDIO_PLAY": "Play",
46
+ "AUDIO_REPLAY": "Play again",
47
+ "AUDIO_PLAYING": "Playing",
48
+ "AUDIO_FINISHED": "Playback finished",
49
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
50
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
51
+ "AUDIO_SUBMIT": "Verify",
52
+ "AUDIO_CHECKING": "Checking",
53
+ "AUDIO_ALTERNATIVE": "Use audio instead"
33
54
  };
34
55
  var GENERAL = {
35
56
  "JSON_LOAD_FAILED": "Failed to load JSON file",
@@ -31,7 +31,28 @@
31
31
  "CHECKING": "Checking your answer",
32
32
  "RETRY_ANNOUNCEMENT": "Not quite. A new puzzle has loaded and the piece is back at the start.",
33
33
  "REFRESH": "Show a different puzzle"
34
- }
34
+ },
35
+ "ICON_ORDER": {
36
+ "DIALOG_LABEL": "Icon order challenge",
37
+ "SELECT": "Select in this order",
38
+ "RETRY": "Not quite — try again",
39
+ "LEGEND_ALT": "Icons to select, in order",
40
+ "RESET": "Reset",
41
+ "CHECKING": "Checking…",
42
+ "SUBMIT": "OK"
43
+ },
44
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
45
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
46
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
47
+ "AUDIO_PLAY": "Play",
48
+ "AUDIO_REPLAY": "Play again",
49
+ "AUDIO_PLAYING": "Playing",
50
+ "AUDIO_FINISHED": "Playback finished",
51
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
52
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
53
+ "AUDIO_SUBMIT": "Verify",
54
+ "AUDIO_CHECKING": "Checking",
55
+ "AUDIO_ALTERNATIVE": "Use audio instead"
35
56
  },
36
57
  "GENERAL": {
37
58
  "JSON_LOAD_FAILED": "Failed to load JSON file",
@@ -101,7 +101,28 @@
101
101
  "CHECKING": "Comprobando tu respuesta",
102
102
  "RETRY_ANNOUNCEMENT": "Casi. Se ha cargado un rompecabezas nuevo y la pieza vuelve a estar al principio.",
103
103
  "REFRESH": "Otro rompecabezas"
104
- }
104
+ },
105
+ "ICON_ORDER": {
106
+ "DIALOG_LABEL": "Desafío de orden de iconos",
107
+ "SELECT": "Selecciona en este orden",
108
+ "RETRY": "Casi — inténtalo de nuevo",
109
+ "LEGEND_ALT": "Iconos que seleccionar, en orden",
110
+ "RESET": "Restablecer",
111
+ "CHECKING": "Comprobando…",
112
+ "SUBMIT": "Aceptar"
113
+ },
114
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
115
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
116
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
117
+ "AUDIO_PLAY": "Play",
118
+ "AUDIO_REPLAY": "Play again",
119
+ "AUDIO_PLAYING": "Playing",
120
+ "AUDIO_FINISHED": "Playback finished",
121
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
122
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
123
+ "AUDIO_SUBMIT": "Verify",
124
+ "AUDIO_CHECKING": "Checking",
125
+ "AUDIO_ALTERNATIVE": "Use audio instead"
105
126
  },
106
127
  "CONTRACT": {
107
128
  "INVALID_ADDRESS": "Error al codificar dirección inválida",
@@ -438,7 +438,28 @@
438
438
  "CHECKING": "Tarkistetaan vastaustasi",
439
439
  "RETRY_ANNOUNCEMENT": "Melkein. Uusi palapeli ladattiin ja pala on taas alussa.",
440
440
  "REFRESH": "Toinen palapeli"
441
- }
441
+ },
442
+ "ICON_ORDER": {
443
+ "DIALOG_LABEL": "Kuvakkeiden järjestystehtävä",
444
+ "SELECT": "Valitse tässä järjestyksessä",
445
+ "RETRY": "Melkein — yritä uudelleen",
446
+ "LEGEND_ALT": "Valittavat kuvakkeet järjestyksessä",
447
+ "RESET": "Tyhjennä",
448
+ "CHECKING": "Tarkistetaan…",
449
+ "SUBMIT": "OK"
450
+ },
451
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
452
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
453
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
454
+ "AUDIO_PLAY": "Play",
455
+ "AUDIO_REPLAY": "Play again",
456
+ "AUDIO_PLAYING": "Playing",
457
+ "AUDIO_FINISHED": "Playback finished",
458
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
459
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
460
+ "AUDIO_SUBMIT": "Verify",
461
+ "AUDIO_CHECKING": "Checking",
462
+ "AUDIO_ALTERNATIVE": "Use audio instead"
442
463
  },
443
464
  "CONTRACT": {
444
465
  "INVALID_ADDRESS": "Epäonnistui koodata virheellinen osoite",
@@ -101,7 +101,28 @@
101
101
  "CHECKING": "Vérification de votre réponse",
102
102
  "RETRY_ANNOUNCEMENT": "Presque. Un nouveau puzzle a été chargé et la pièce est revenue au départ.",
103
103
  "REFRESH": "Autre puzzle"
104
- }
104
+ },
105
+ "ICON_ORDER": {
106
+ "DIALOG_LABEL": "Défi d’ordre des icônes",
107
+ "SELECT": "Sélectionnez dans cet ordre",
108
+ "RETRY": "Presque — réessayez",
109
+ "LEGEND_ALT": "Icônes à sélectionner, dans l’ordre",
110
+ "RESET": "Réinitialiser",
111
+ "CHECKING": "Vérification…",
112
+ "SUBMIT": "OK"
113
+ },
114
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
115
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
116
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
117
+ "AUDIO_PLAY": "Play",
118
+ "AUDIO_REPLAY": "Play again",
119
+ "AUDIO_PLAYING": "Playing",
120
+ "AUDIO_FINISHED": "Playback finished",
121
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
122
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
123
+ "AUDIO_SUBMIT": "Verify",
124
+ "AUDIO_CHECKING": "Checking",
125
+ "AUDIO_ALTERNATIVE": "Use audio instead"
105
126
  },
106
127
  "CONTRACT": {
107
128
  "INVALID_ADDRESS": "Échec de l'encodage de l'adresse invalide",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "आपका उत्तर जाँचा जा रहा है",
401
401
  "RETRY_ANNOUNCEMENT": "लगभग सही। एक नई पहेली आ गई है और टुकड़ा फिर से शुरुआत में है।",
402
402
  "REFRESH": "दूसरी पहेली"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "आइकन क्रम चुनौती",
406
+ "SELECT": "इस क्रम में चुनें",
407
+ "RETRY": "लगभग सही — फिर से कोशिश करें",
408
+ "LEGEND_ALT": "चुनने वाले आइकन, क्रम में",
409
+ "RESET": "रीसेट करें",
410
+ "CHECKING": "जाँच हो रही है…",
411
+ "SUBMIT": "ठीक है"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "अवैध पता को एन्कोड करने में विफल रहा",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Ellenőrizzük a válaszodat",
401
401
  "RETRY_ANNOUNCEMENT": "Majdnem. Új kirakós töltődött be, a darab pedig visszakerült a kiindulóhelyre.",
402
402
  "REFRESH": "Másik kirakós"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Ikonsorrend-feladat",
406
+ "SELECT": "Válasszon ebben a sorrendben",
407
+ "RETRY": "Majdnem — próbáld újra",
408
+ "LEGEND_ALT": "Kiválasztandó ikonok, sorrendben",
409
+ "RESET": "Visszaállítás",
410
+ "CHECKING": "Ellenőrzés…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Nem sikerült kódolni az érvénytelen címet",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Memeriksa jawaban Anda",
401
401
  "RETRY_ANNOUNCEMENT": "Nyaris. Teka-teki baru telah dimuat dan kepingan kembali ke awal.",
402
402
  "REFRESH": "Teka-teki lain"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Tantangan urutan ikon",
406
+ "SELECT": "Pilih dalam urutan ini",
407
+ "RETRY": "Nyaris — coba lagi",
408
+ "LEGEND_ALT": "Ikon yang harus dipilih, berurutan",
409
+ "RESET": "Atur ulang",
410
+ "CHECKING": "Memeriksa…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Gagal mengkodekan alamat yang tidak valid",
@@ -101,7 +101,28 @@
101
101
  "CHECKING": "Verifica della tua risposta in corso",
102
102
  "RETRY_ANNOUNCEMENT": "Quasi. È stato caricato un nuovo puzzle e il pezzo è tornato all'inizio.",
103
103
  "REFRESH": "Un altro puzzle"
104
- }
104
+ },
105
+ "ICON_ORDER": {
106
+ "DIALOG_LABEL": "Sfida sull’ordine delle icone",
107
+ "SELECT": "Seleziona in questo ordine",
108
+ "RETRY": "Quasi — riprova",
109
+ "LEGEND_ALT": "Icone da selezionare, in ordine",
110
+ "RESET": "Reimposta",
111
+ "CHECKING": "Verifica in corso…",
112
+ "SUBMIT": "OK"
113
+ },
114
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
115
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
116
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
117
+ "AUDIO_PLAY": "Play",
118
+ "AUDIO_REPLAY": "Play again",
119
+ "AUDIO_PLAYING": "Playing",
120
+ "AUDIO_FINISHED": "Playback finished",
121
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
122
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
123
+ "AUDIO_SUBMIT": "Verify",
124
+ "AUDIO_CHECKING": "Checking",
125
+ "AUDIO_ALTERNATIVE": "Use audio instead"
105
126
  },
106
127
  "CONTRACT": {
107
128
  "INVALID_ADDRESS": "Impossibile codificare l'indirizzo non valido",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "回答を確認しています",
401
401
  "RETRY_ANNOUNCEMENT": "惜しい。新しいパズルが読み込まれ、ピースは開始位置に戻りました。",
402
402
  "REFRESH": "別のパズル"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "アイコン順序チャレンジ",
406
+ "SELECT": "この順番で選択してください",
407
+ "RETRY": "惜しい — もう一度お試しください",
408
+ "LEGEND_ALT": "選択するアイコン(順番どおり)",
409
+ "RESET": "リセット",
410
+ "CHECKING": "確認中…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "無効なアドレスをエンコードできませんでした",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Mriksa wangsulan panjenengan",
401
401
  "RETRY_ANNOUNCEMENT": "Meh wae. Bedhekan anyar wis dimuat lan potongane bali menyang wiwitan.",
402
402
  "REFRESH": "Bedhekan liyane"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Tantangan urutan ikon",
406
+ "SELECT": "Pilih miturut urutan iki",
407
+ "RETRY": "Meh wae — coba maneh",
408
+ "LEGEND_ALT": "Ikon sing kudu dipilih, urut",
409
+ "RESET": "Balèni",
410
+ "CHECKING": "Lagi mriksa…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Gagal mengkodekan alamat yang tidak valid",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "답을 확인하는 중입니다",
401
401
  "RETRY_ANNOUNCEMENT": "아깝습니다. 새 퍼즐이 불러와졌고 조각은 처음 위치로 돌아갔습니다.",
402
402
  "REFRESH": "다른 퍼즐"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "아이콘 순서 챌린지",
406
+ "SELECT": "이 순서대로 선택하세요",
407
+ "RETRY": "아깝습니다 — 다시 시도해 주세요",
408
+ "LEGEND_ALT": "선택할 아이콘(순서대로)",
409
+ "RESET": "초기화",
410
+ "CHECKING": "확인 중…",
411
+ "SUBMIT": "확인"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "유효하지 않은 주소를 인코딩하는 데 실패함",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "നിങ്ങളുടെ ഉത്തരം പരിശോധിക്കുന്നു",
401
401
  "RETRY_ANNOUNCEMENT": "ഏതാണ്ട് ശരിയായി. പുതിയ പസിൽ വന്നു, കഷണം വീണ്ടും തുടക്കത്തിലാണ്.",
402
402
  "REFRESH": "മറ്റൊരു പസിൽ"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "ഐക്കൺ ക്രമം വെല്ലുവിളി",
406
+ "SELECT": "ഈ ക്രമത്തിൽ തിരഞ്ഞെടുക്കുക",
407
+ "RETRY": "ഏതാണ്ട് ശരിയായി — വീണ്ടും ശ്രമിക്കുക",
408
+ "LEGEND_ALT": "തിരഞ്ഞെടുക്കേണ്ട ഐക്കണുകൾ, ക്രമത്തിൽ",
409
+ "RESET": "പുനഃസജ്ജമാക്കുക",
410
+ "CHECKING": "പരിശോധിക്കുന്നു…",
411
+ "SUBMIT": "ശരി"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Nahimong pakyas ang pag-encode sa dili balido nga address",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Memeriksa jawapan anda",
401
401
  "RETRY_ANNOUNCEMENT": "Hampir. Teka-teki baharu telah dimuatkan dan kepingan kembali ke permulaan.",
402
402
  "REFRESH": "Teka-teki lain"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Cabaran susunan ikon",
406
+ "SELECT": "Pilih mengikut susunan ini",
407
+ "RETRY": "Hampir — cuba lagi",
408
+ "LEGEND_ALT": "Ikon untuk dipilih, mengikut susunan",
409
+ "RESET": "Set semula",
410
+ "CHECKING": "Menyemak…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Failed to encode invalid address",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Je antwoord wordt gecontroleerd",
401
401
  "RETRY_ANNOUNCEMENT": "Net niet. Er is een nieuwe puzzel geladen en het stukje staat weer aan het begin.",
402
402
  "REFRESH": "Andere puzzel"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Uitdaging met pictogramvolgorde",
406
+ "SELECT": "Selecteer in deze volgorde",
407
+ "RETRY": "Net niet — probeer het opnieuw",
408
+ "LEGEND_ALT": "Te selecteren pictogrammen, op volgorde",
409
+ "RESET": "Opnieuw",
410
+ "CHECKING": "Controleren…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Mislukt om ongeldig adres te coderen",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Kontrollerer svaret ditt",
401
401
  "RETRY_ANNOUNCEMENT": "Nesten. Et nytt puslespill er lastet inn, og brikken er tilbake ved start.",
402
402
  "REFRESH": "Et annet puslespill"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Oppgave med ikonrekkefølge",
406
+ "SELECT": "Velg i denne rekkefølgen",
407
+ "RETRY": "Nesten — prøv igjen",
408
+ "LEGEND_ALT": "Ikoner som skal velges, i rekkefølge",
409
+ "RESET": "Tilbakestill",
410
+ "CHECKING": "Kontrollerer…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Klarte ikke å kryptere ugyldig adresse",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Sprawdzanie odpowiedzi",
401
401
  "RETRY_ANNOUNCEMENT": "Prawie. Wczytano nową układankę, a element wrócił na początek.",
402
402
  "REFRESH": "Inna układanka"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Zadanie z kolejnością ikon",
406
+ "SELECT": "Wybierz w tej kolejności",
407
+ "RETRY": "Prawie — spróbuj ponownie",
408
+ "LEGEND_ALT": "Ikony do wybrania, w kolejności",
409
+ "RESET": "Resetuj",
410
+ "CHECKING": "Sprawdzanie…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Nie udało się zakodować nieprawidłowego adresu",
@@ -101,7 +101,28 @@
101
101
  "CHECKING": "A verificar a sua resposta",
102
102
  "RETRY_ANNOUNCEMENT": "Quase. Foi carregado um novo puzzle e a peça voltou ao início.",
103
103
  "REFRESH": "Outro puzzle"
104
- }
104
+ },
105
+ "ICON_ORDER": {
106
+ "DIALOG_LABEL": "Desafio de ordem de ícones",
107
+ "SELECT": "Selecione por esta ordem",
108
+ "RETRY": "Quase — tente novamente",
109
+ "LEGEND_ALT": "Ícones a selecionar, por ordem",
110
+ "RESET": "Repor",
111
+ "CHECKING": "A verificar…",
112
+ "SUBMIT": "OK"
113
+ },
114
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
115
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
116
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
117
+ "AUDIO_PLAY": "Play",
118
+ "AUDIO_REPLAY": "Play again",
119
+ "AUDIO_PLAYING": "Playing",
120
+ "AUDIO_FINISHED": "Playback finished",
121
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
122
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
123
+ "AUDIO_SUBMIT": "Verify",
124
+ "AUDIO_CHECKING": "Checking",
125
+ "AUDIO_ALTERNATIVE": "Use audio instead"
105
126
  },
106
127
  "CONTRACT": {
107
128
  "INVALID_ADDRESS": "Falha ao codificar endereço inválido",
@@ -101,7 +101,28 @@
101
101
  "CHECKING": "Verificando sua resposta",
102
102
  "RETRY_ANNOUNCEMENT": "Quase. Um novo quebra-cabeça foi carregado e a peça voltou ao início.",
103
103
  "REFRESH": "Outro quebra-cabeça"
104
- }
104
+ },
105
+ "ICON_ORDER": {
106
+ "DIALOG_LABEL": "Desafio de ordem dos ícones",
107
+ "SELECT": "Selecione nesta ordem",
108
+ "RETRY": "Quase — tente de novo",
109
+ "LEGEND_ALT": "Ícones para selecionar, em ordem",
110
+ "RESET": "Redefinir",
111
+ "CHECKING": "Verificando…",
112
+ "SUBMIT": "OK"
113
+ },
114
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
115
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
116
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
117
+ "AUDIO_PLAY": "Play",
118
+ "AUDIO_REPLAY": "Play again",
119
+ "AUDIO_PLAYING": "Playing",
120
+ "AUDIO_FINISHED": "Playback finished",
121
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
122
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
123
+ "AUDIO_SUBMIT": "Verify",
124
+ "AUDIO_CHECKING": "Checking",
125
+ "AUDIO_ALTERNATIVE": "Use audio instead"
105
126
  },
106
127
  "CONTRACT": {
107
128
  "INVALID_ADDRESS": "Falha ao codificar endereço inválido",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Îți verificăm răspunsul",
401
401
  "RETRY_ANNOUNCEMENT": "Aproape. S-a încărcat un puzzle nou, iar piesa este din nou la început.",
402
402
  "REFRESH": "Alt puzzle"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Provocare cu ordinea pictogramelor",
406
+ "SELECT": "Selectați în această ordine",
407
+ "RETRY": "Aproape — mai încearcă",
408
+ "LEGEND_ALT": "Pictograme de selectat, în ordine",
409
+ "RESET": "Resetează",
410
+ "CHECKING": "Se verifică…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Eroare la codificarea adresei invalide",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Проверяем ваш ответ",
401
401
  "RETRY_ANNOUNCEMENT": "Почти. Загружен новый пазл, фрагмент снова в начале.",
402
402
  "REFRESH": "Другой пазл"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Задание на порядок значков",
406
+ "SELECT": "Выберите в этом порядке",
407
+ "RETRY": "Почти — попробуйте ещё раз",
408
+ "LEGEND_ALT": "Значки для выбора, по порядку",
409
+ "RESET": "Сбросить",
410
+ "CHECKING": "Проверка…",
411
+ "SUBMIT": "ОК"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Не удалось закодировать неверный адрес",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Проверавамо ваш одговор",
401
401
  "RETRY_ANNOUNCEMENT": "За длаку. Учитана је нова слагалица и део је поново на почетку.",
402
402
  "REFRESH": "Друга слагалица"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Изазов редоследа иконица",
406
+ "SELECT": "Изаберите овим редоследом",
407
+ "RETRY": "За длаку — покушајте поново",
408
+ "LEGEND_ALT": "Иконице за избор, по редоследу",
409
+ "RESET": "Поништи",
410
+ "CHECKING": "Провера…",
411
+ "SUBMIT": "У реду"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Немогуће кодирање неважеће адресе",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Kontrollerar ditt svar",
401
401
  "RETRY_ANNOUNCEMENT": "Nästan. Ett nytt pussel har laddats och biten är tillbaka vid starten.",
402
402
  "REFRESH": "Ett annat pussel"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Utmaning med ikonordning",
406
+ "SELECT": "Välj i den här ordningen",
407
+ "RETRY": "Nästan — försök igen",
408
+ "LEGEND_ALT": "Ikoner att välja, i ordning",
409
+ "RESET": "Återställ",
410
+ "CHECKING": "Kontrollerar…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Misslyckades att koda ogiltig adress",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "กำลังตรวจคำตอบของคุณ",
401
401
  "RETRY_ANNOUNCEMENT": "เกือบแล้ว มีจิ๊กซอว์ชุดใหม่โหลดขึ้นมา และชิ้นส่วนกลับไปอยู่ที่จุดเริ่มต้น",
402
402
  "REFRESH": "จิ๊กซอว์ชุดอื่น"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "ภารกิจเรียงลำดับไอคอน",
406
+ "SELECT": "เลือกตามลำดับนี้",
407
+ "RETRY": "เกือบแล้ว — ลองอีกครั้ง",
408
+ "LEGEND_ALT": "ไอคอนที่ต้องเลือกตามลำดับ",
409
+ "RESET": "รีเซ็ต",
410
+ "CHECKING": "กำลังตรวจสอบ…",
411
+ "SUBMIT": "ตกลง"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "ล้มเหลวในการเข้ารหัสที่อยู่ไม่ถูกต้อง",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Cevabınız kontrol ediliyor",
401
401
  "RETRY_ANNOUNCEMENT": "Az kaldı. Yeni bir yapboz yüklendi ve parça yeniden başlangıçta.",
402
402
  "REFRESH": "Başka bir yapboz"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Simge sırası görevi",
406
+ "SELECT": "Bu sırayla seçin",
407
+ "RETRY": "Az kaldı — tekrar deneyin",
408
+ "LEGEND_ALT": "Seçilecek simgeler, sırayla",
409
+ "RESET": "Sıfırla",
410
+ "CHECKING": "Kontrol ediliyor…",
411
+ "SUBMIT": "Tamam"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Geçersiz adresi kodlama başarısız oldu",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Перевіряємо вашу відповідь",
401
401
  "RETRY_ANNOUNCEMENT": "Майже. Завантажено новий пазл, і фрагмент знову на початку.",
402
402
  "REFRESH": "Інший пазл"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Завдання на порядок значків",
406
+ "SELECT": "Виберіть у цьому порядку",
407
+ "RETRY": "Майже — спробуйте ще раз",
408
+ "LEGEND_ALT": "Значки для вибору, по порядку",
409
+ "RESET": "Скинути",
410
+ "CHECKING": "Перевірка…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Failed to encode invalid address",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "Đang kiểm tra câu trả lời của bạn",
401
401
  "RETRY_ANNOUNCEMENT": "Suýt nữa. Một hình ghép mới đã được tải và mảnh ghép trở lại vị trí ban đầu.",
402
402
  "REFRESH": "Hình ghép khác"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "Thử thách thứ tự biểu tượng",
406
+ "SELECT": "Chọn theo thứ tự này",
407
+ "RETRY": "Suýt nữa — hãy thử lại",
408
+ "LEGEND_ALT": "Các biểu tượng cần chọn, theo thứ tự",
409
+ "RESET": "Đặt lại",
410
+ "CHECKING": "Đang kiểm tra…",
411
+ "SUBMIT": "OK"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "Không thể mã hóa địa chỉ không hợp lệ",
@@ -400,7 +400,28 @@
400
400
  "CHECKING": "正在检查您的答案",
401
401
  "RETRY_ANNOUNCEMENT": "差一点。已加载新的拼图,拼块回到了起点。",
402
402
  "REFRESH": "换一个拼图"
403
- }
403
+ },
404
+ "ICON_ORDER": {
405
+ "DIALOG_LABEL": "图标顺序验证",
406
+ "SELECT": "请按此顺序选择",
407
+ "RETRY": "差一点 — 请再试一次",
408
+ "LEGEND_ALT": "按顺序需选择的图标",
409
+ "RESET": "重置",
410
+ "CHECKING": "正在检查…",
411
+ "SUBMIT": "确定"
412
+ },
413
+ "AUDIO_CHALLENGE_LABEL": "Audio verification challenge",
414
+ "AUDIO_INSTRUCTIONS": "Listen and type the {{count}} digits you hear.",
415
+ "AUDIO_INPUT_LABEL": "Type the {{count}} digits you hear",
416
+ "AUDIO_PLAY": "Play",
417
+ "AUDIO_REPLAY": "Play again",
418
+ "AUDIO_PLAYING": "Playing",
419
+ "AUDIO_FINISHED": "Playback finished",
420
+ "AUDIO_PLAYBACK_FAILED": "Audio could not be played. Check your device volume and try again.",
421
+ "AUDIO_INCORRECT": "That wasn't right. Here's a new one.",
422
+ "AUDIO_SUBMIT": "Verify",
423
+ "AUDIO_CHECKING": "Checking",
424
+ "AUDIO_ALTERNATIVE": "Use audio instead"
404
425
  },
405
426
  "CONTRACT": {
406
427
  "INVALID_ADDRESS": "无法编码无效地址",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/locale",
3
- "version": "3.7.0",
3
+ "version": "3.8.0",
4
4
  "description": "Prosopo locale library",
5
5
  "type": "module",
6
6
  "engines": {