@zoreal/oauth2-js 0.1.12 → 0.1.14
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.
- package/README.md +2 -1
- package/dist/index.cjs +237 -113
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +26 -2
- package/dist/index.d.ts +26 -2
- package/dist/index.js +236 -113
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -37,6 +37,7 @@ __export(index_exports, {
|
|
|
37
37
|
isMobileUserAgent: () => isMobileUserAgent,
|
|
38
38
|
mountPairingModal: () => mountPairingModal,
|
|
39
39
|
pollUntilApproved: () => pollUntilApproved,
|
|
40
|
+
resolveIntent: () => resolveIntent,
|
|
40
41
|
startLogin: () => startLogin,
|
|
41
42
|
startPairing: () => startPairing,
|
|
42
43
|
unsafeClaims: () => unsafeClaims
|
|
@@ -59,7 +60,7 @@ function unsafeClaims(idToken) {
|
|
|
59
60
|
|
|
60
61
|
// src/wire.ts
|
|
61
62
|
var WIRE_VERSION = 1;
|
|
62
|
-
var SDK_VERSION = "0.1.
|
|
63
|
+
var SDK_VERSION = "0.1.14";
|
|
63
64
|
var SDK_NAME = "@zoreal/oauth2-js";
|
|
64
65
|
var DEFAULT_ISSUER = "https://id.zoreal.com";
|
|
65
66
|
var POLL_INTERVAL_MS = 2e3;
|
|
@@ -188,9 +189,27 @@ function isMobileUserAgent() {
|
|
|
188
189
|
return /android|iphone|ipad|ipod/i.test(navigator.userAgent);
|
|
189
190
|
}
|
|
190
191
|
|
|
192
|
+
// src/intent.ts
|
|
193
|
+
var SIGN_IN_SCOPES = /* @__PURE__ */ new Set(["openid", "email", "profile.name"]);
|
|
194
|
+
function resolveIntent(intent, scope, acrValues) {
|
|
195
|
+
if (intent) return intent;
|
|
196
|
+
const scopes = (scope ?? "openid").split(/\s+/).filter(Boolean);
|
|
197
|
+
if (scopes.some((s) => !SIGN_IN_SCOPES.has(s))) return "identify";
|
|
198
|
+
const acr = typeof acrValues === "string" ? acrValues.split(/\s+/) : acrValues ?? [];
|
|
199
|
+
if (scopes.every((s) => s === "openid") && acr.includes("zoreal.live")) return "presence";
|
|
200
|
+
return "sign-in";
|
|
201
|
+
}
|
|
202
|
+
function titleFor(t, intent) {
|
|
203
|
+
if (intent === "identify") return t.titleIdentify;
|
|
204
|
+
if (intent === "presence") return t.titlePresence;
|
|
205
|
+
return t.title;
|
|
206
|
+
}
|
|
207
|
+
|
|
191
208
|
// src/i18n.ts
|
|
192
209
|
var en = {
|
|
193
210
|
title: "Scan to sign in",
|
|
211
|
+
titleIdentify: "Scan to verify your identity",
|
|
212
|
+
titlePresence: "Scan to prove you are a real human",
|
|
194
213
|
titleApprove: "Approve on your phone",
|
|
195
214
|
bodyScan: "Scan with your phone camera or the ZOREAL ID app.",
|
|
196
215
|
bodyApprove: "Approve the login in your ZOREAL ID app.",
|
|
@@ -203,12 +222,15 @@ var en = {
|
|
|
203
222
|
noIdBody: "Scan the same code to download the app and create one for free. It only takes a minute.",
|
|
204
223
|
cancel: "Cancel",
|
|
205
224
|
close: "Close",
|
|
206
|
-
qrAlt: "QR code to sign in with ZOREAL"
|
|
225
|
+
qrAlt: "QR code to sign in with ZOREAL",
|
|
226
|
+
buttonContinue: "Continue with ZOREAL"
|
|
207
227
|
};
|
|
208
228
|
var TRANSLATIONS = {
|
|
209
229
|
en,
|
|
210
230
|
sv: {
|
|
211
231
|
title: "Skanna f\xF6r att logga in",
|
|
232
|
+
titleIdentify: "Skanna f\xF6r att verifiera din identitet",
|
|
233
|
+
titlePresence: "Skanna f\xF6r att bevisa att du \xE4r en riktig m\xE4nniska",
|
|
212
234
|
titleApprove: "Godk\xE4nn p\xE5 telefonen",
|
|
213
235
|
bodyScan: "Skanna med telefonens kamera eller ZOREAL ID-appen.",
|
|
214
236
|
bodyApprove: "Godk\xE4nn inloggningen i ZOREAL ID-appen.",
|
|
@@ -221,10 +243,13 @@ var TRANSLATIONS = {
|
|
|
221
243
|
noIdBody: "Skanna samma kod f\xF6r att ladda ner appen och skapa ett gratis. Det tar bara en minut.",
|
|
222
244
|
cancel: "Avbryt",
|
|
223
245
|
close: "St\xE4ng",
|
|
224
|
-
qrAlt: "QR-kod f\xF6r att logga in med ZOREAL"
|
|
246
|
+
qrAlt: "QR-kod f\xF6r att logga in med ZOREAL",
|
|
247
|
+
buttonContinue: "Forts\xE4tt med ZOREAL"
|
|
225
248
|
},
|
|
226
249
|
es: {
|
|
227
250
|
title: "Escanea para iniciar sesi\xF3n",
|
|
251
|
+
titleIdentify: "Escanea para verificar tu identidad",
|
|
252
|
+
titlePresence: "Escanea para demostrar que eres una persona real",
|
|
228
253
|
titleApprove: "Apru\xE9balo en tu tel\xE9fono",
|
|
229
254
|
bodyScan: "Escanea con la c\xE1mara de tu tel\xE9fono o con la app ZOREAL ID.",
|
|
230
255
|
bodyApprove: "Aprueba el inicio de sesi\xF3n en tu app ZOREAL ID.",
|
|
@@ -237,10 +262,13 @@ var TRANSLATIONS = {
|
|
|
237
262
|
noIdBody: "Escanea el mismo c\xF3digo para descargar la app y crear una gratis. Solo toma un minuto.",
|
|
238
263
|
cancel: "Cancelar",
|
|
239
264
|
close: "Cerrar",
|
|
240
|
-
qrAlt: "C\xF3digo QR para iniciar sesi\xF3n con ZOREAL"
|
|
265
|
+
qrAlt: "C\xF3digo QR para iniciar sesi\xF3n con ZOREAL",
|
|
266
|
+
buttonContinue: "Continuar con ZOREAL"
|
|
241
267
|
},
|
|
242
268
|
pt: {
|
|
243
269
|
title: "Digitalize para entrar",
|
|
270
|
+
titleIdentify: "Digitalize para verificar a sua identidade",
|
|
271
|
+
titlePresence: "Digitalize para provar que \xE9 uma pessoa real",
|
|
244
272
|
titleApprove: "Aprove no seu telefone",
|
|
245
273
|
bodyScan: "Digitalize com a c\xE2mara do seu telefone ou com a app ZOREAL ID.",
|
|
246
274
|
bodyApprove: "Aprove o login no app ZOREAL ID.",
|
|
@@ -253,10 +281,13 @@ var TRANSLATIONS = {
|
|
|
253
281
|
noIdBody: "Digitalize o mesmo c\xF3digo para baixar o app e criar uma conta gr\xE1tis. Leva s\xF3 um minuto.",
|
|
254
282
|
cancel: "Cancelar",
|
|
255
283
|
close: "Fechar",
|
|
256
|
-
qrAlt: "C\xF3digo QR para entrar com ZOREAL"
|
|
284
|
+
qrAlt: "C\xF3digo QR para entrar com ZOREAL",
|
|
285
|
+
buttonContinue: "Continuar com ZOREAL"
|
|
257
286
|
},
|
|
258
287
|
fr: {
|
|
259
288
|
title: "Scannez pour vous connecter",
|
|
289
|
+
titleIdentify: "Scannez pour v\xE9rifier votre identit\xE9",
|
|
290
|
+
titlePresence: "Scannez pour prouver que vous \xEAtes bien un humain",
|
|
260
291
|
titleApprove: "Approuvez sur votre t\xE9l\xE9phone",
|
|
261
292
|
bodyScan: "Scannez avec l'appareil photo de votre t\xE9l\xE9phone ou l'app ZOREAL ID.",
|
|
262
293
|
bodyApprove: "Approuvez la connexion dans votre app ZOREAL ID.",
|
|
@@ -269,10 +300,13 @@ var TRANSLATIONS = {
|
|
|
269
300
|
noIdBody: "Scannez le m\xEAme code pour t\xE9l\xE9charger l'app et en cr\xE9er un gratuitement. Cela prend une minute.",
|
|
270
301
|
cancel: "Annuler",
|
|
271
302
|
close: "Fermer",
|
|
272
|
-
qrAlt: "Code QR pour se connecter avec ZOREAL"
|
|
303
|
+
qrAlt: "Code QR pour se connecter avec ZOREAL",
|
|
304
|
+
buttonContinue: "Continuer avec ZOREAL"
|
|
273
305
|
},
|
|
274
306
|
de: {
|
|
275
307
|
title: "Zum Anmelden scannen",
|
|
308
|
+
titleIdentify: "Scannen, um Ihre Identit\xE4t zu verifizieren",
|
|
309
|
+
titlePresence: "Scannen, um zu beweisen, dass Sie ein echter Mensch sind",
|
|
276
310
|
titleApprove: "Auf dem Handy best\xE4tigen",
|
|
277
311
|
bodyScan: "Mit der Handykamera oder der ZOREAL ID App scannen.",
|
|
278
312
|
bodyApprove: "Anmeldung in der ZOREAL ID App best\xE4tigen.",
|
|
@@ -285,10 +319,13 @@ var TRANSLATIONS = {
|
|
|
285
319
|
noIdBody: "Denselben Code scannen, um die App zu laden und kostenlos eine zu erstellen. Dauert nur eine Minute.",
|
|
286
320
|
cancel: "Abbrechen",
|
|
287
321
|
close: "Schlie\xDFen",
|
|
288
|
-
qrAlt: "QR-Code f\xFCr die Anmeldung mit ZOREAL"
|
|
322
|
+
qrAlt: "QR-Code f\xFCr die Anmeldung mit ZOREAL",
|
|
323
|
+
buttonContinue: "Weiter mit ZOREAL"
|
|
289
324
|
},
|
|
290
325
|
ru: {
|
|
291
326
|
title: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0432\u043E\u0439\u0442\u0438",
|
|
327
|
+
titleIdentify: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \u043B\u0438\u0447\u043D\u043E\u0441\u0442\u044C",
|
|
328
|
+
titlePresence: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0434\u043E\u043A\u0430\u0437\u0430\u0442\u044C, \u0447\u0442\u043E \u0432\u044B \u0440\u0435\u0430\u043B\u044C\u043D\u044B\u0439 \u0447\u0435\u043B\u043E\u0432\u0435\u043A",
|
|
292
329
|
titleApprove: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0435",
|
|
293
330
|
bodyScan: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435 \u043A\u0430\u043C\u0435\u0440\u043E\u0439 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438 \u0447\u0435\u0440\u0435\u0437 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 ZOREAL ID.",
|
|
294
331
|
bodyApprove: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0432\u0445\u043E\u0434 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 ZOREAL ID.",
|
|
@@ -301,10 +338,13 @@ var TRANSLATIONS = {
|
|
|
301
338
|
noIdBody: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435 \u0442\u043E\u0442 \u0436\u0435 \u043A\u043E\u0434, \u0447\u0442\u043E\u0431\u044B \u0441\u043A\u0430\u0447\u0430\u0442\u044C \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0438 \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0435\u0433\u043E \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E. \u042D\u0442\u043E \u0437\u0430\u0439\u043C\u0451\u0442 \u043C\u0438\u043D\u0443\u0442\u0443.",
|
|
302
339
|
cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
|
|
303
340
|
close: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C",
|
|
304
|
-
qrAlt: "QR-\u043A\u043E\u0434 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 ZOREAL"
|
|
341
|
+
qrAlt: "QR-\u043A\u043E\u0434 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 ZOREAL",
|
|
342
|
+
buttonContinue: "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C \u0441 ZOREAL"
|
|
305
343
|
},
|
|
306
344
|
ja: {
|
|
307
345
|
title: "\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u30ED\u30B0\u30A4\u30F3",
|
|
346
|
+
titleIdentify: "\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u672C\u4EBA\u78BA\u8A8D",
|
|
347
|
+
titlePresence: "\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u5B9F\u5728\u306E\u4EBA\u7269\u3067\u3042\u308B\u3053\u3068\u3092\u8A3C\u660E",
|
|
308
348
|
titleApprove: "\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u3067\u627F\u8A8D",
|
|
309
349
|
bodyScan: "\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u306E\u30AB\u30E1\u30E9\u307E\u305F\u306FZOREAL ID\u30A2\u30D7\u30EA\u3067\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
310
350
|
bodyApprove: "ZOREAL ID\u30A2\u30D7\u30EA\u3067\u30ED\u30B0\u30A4\u30F3\u3092\u627F\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
@@ -317,10 +357,13 @@ var TRANSLATIONS = {
|
|
|
317
357
|
noIdBody: "\u540C\u3058\u30B3\u30FC\u30C9\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u30A2\u30D7\u30EA\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u3001\u7121\u6599\u3067\u4F5C\u6210\u3067\u304D\u307E\u3059\u30021\u5206\u307B\u3069\u3067\u5B8C\u4E86\u3057\u307E\u3059\u3002",
|
|
318
358
|
cancel: "\u30AD\u30E3\u30F3\u30BB\u30EB",
|
|
319
359
|
close: "\u9589\u3058\u308B",
|
|
320
|
-
qrAlt: "ZOREAL\u3067\u30ED\u30B0\u30A4\u30F3\u3059\u308B\u305F\u3081\u306EQR\u30B3\u30FC\u30C9"
|
|
360
|
+
qrAlt: "ZOREAL\u3067\u30ED\u30B0\u30A4\u30F3\u3059\u308B\u305F\u3081\u306EQR\u30B3\u30FC\u30C9",
|
|
361
|
+
buttonContinue: "ZOREAL\u3067\u7D9A\u884C"
|
|
321
362
|
},
|
|
322
363
|
hi: {
|
|
323
364
|
title: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902",
|
|
365
|
+
titleIdentify: "\u0905\u092A\u0928\u0940 \u092A\u0939\u091A\u093E\u0928 \u0938\u0924\u094D\u092F\u093E\u092A\u093F\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902",
|
|
366
|
+
titlePresence: "\u092F\u0939 \u0938\u093E\u092C\u093F\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902 \u0915\u093F \u0906\u092A \u090F\u0915 \u0935\u093E\u0938\u094D\u0924\u0935\u093F\u0915 \u0907\u0902\u0938\u093E\u0928 \u0939\u0948\u0902",
|
|
324
367
|
titleApprove: "\u0905\u092A\u0928\u0947 \u092B\u094B\u0928 \u092A\u0930 \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0947\u0902",
|
|
325
368
|
bodyScan: "\u0905\u092A\u0928\u0947 \u092B\u094B\u0928 \u0915\u0947 \u0915\u0948\u092E\u0930\u0947 \u092F\u093E ZOREAL ID \u0910\u092A \u0938\u0947 \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902\u0964",
|
|
326
369
|
bodyApprove: "\u0905\u092A\u0928\u0947 ZOREAL ID \u0910\u092A \u092E\u0947\u0902 \u0932\u0949\u0917\u093F\u0928 \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0947\u0902\u0964",
|
|
@@ -333,10 +376,13 @@ var TRANSLATIONS = {
|
|
|
333
376
|
noIdBody: "\u0910\u092A \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0928\u0947 \u0914\u0930 \u092E\u0941\u092B\u094D\u0924 \u092E\u0947\u0902 \u090F\u0915 \u092C\u0928\u093E\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0935\u0939\u0940 \u0915\u094B\u0921 \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902\u0964 \u0907\u0938\u092E\u0947\u0902 \u092C\u0938 \u090F\u0915 \u092E\u093F\u0928\u091F \u0932\u0917\u0924\u093E \u0939\u0948\u0964",
|
|
334
377
|
cancel: "\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902",
|
|
335
378
|
close: "\u092C\u0902\u0926 \u0915\u0930\u0947\u0902",
|
|
336
|
-
qrAlt: "ZOREAL \u0938\u0947 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F QR \u0915\u094B\u0921"
|
|
379
|
+
qrAlt: "ZOREAL \u0938\u0947 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F QR \u0915\u094B\u0921",
|
|
380
|
+
buttonContinue: "ZOREAL \u0915\u0947 \u0938\u093E\u0925 \u091C\u093E\u0930\u0940 \u0930\u0916\u0947\u0902"
|
|
337
381
|
},
|
|
338
382
|
zhs: {
|
|
339
383
|
title: "\u626B\u7801\u767B\u5F55",
|
|
384
|
+
titleIdentify: "\u626B\u7801\u9A8C\u8BC1\u8EAB\u4EFD",
|
|
385
|
+
titlePresence: "\u626B\u7801\u8BC1\u660E\u60A8\u662F\u771F\u4EBA",
|
|
340
386
|
titleApprove: "\u5728\u624B\u673A\u4E0A\u6279\u51C6",
|
|
341
387
|
bodyScan: "\u4F7F\u7528\u624B\u673A\u76F8\u673A\u6216 ZOREAL ID \u5E94\u7528\u626B\u63CF\u3002",
|
|
342
388
|
bodyApprove: "\u8BF7\u5728 ZOREAL ID \u5E94\u7528\u4E2D\u6279\u51C6\u767B\u5F55\u3002",
|
|
@@ -349,10 +395,13 @@ var TRANSLATIONS = {
|
|
|
349
395
|
noIdBody: "\u626B\u63CF\u540C\u4E00\u4E2A\u4E8C\u7EF4\u7801\u5373\u53EF\u4E0B\u8F7D\u5E94\u7528\u5E76\u514D\u8D39\u521B\u5EFA\uFF0C\u53EA\u9700\u4E00\u5206\u949F\u3002",
|
|
350
396
|
cancel: "\u53D6\u6D88",
|
|
351
397
|
close: "\u5173\u95ED",
|
|
352
|
-
qrAlt: "\u4F7F\u7528 ZOREAL \u767B\u5F55\u7684\u4E8C\u7EF4\u7801"
|
|
398
|
+
qrAlt: "\u4F7F\u7528 ZOREAL \u767B\u5F55\u7684\u4E8C\u7EF4\u7801",
|
|
399
|
+
buttonContinue: "\u4F7F\u7528 ZOREAL \u7EE7\u7EED"
|
|
353
400
|
},
|
|
354
401
|
zht: {
|
|
355
402
|
title: "\u6383\u78BC\u767B\u5165",
|
|
403
|
+
titleIdentify: "\u6383\u78BC\u9A57\u8B49\u8EAB\u5206",
|
|
404
|
+
titlePresence: "\u6383\u78BC\u8B49\u660E\u60A8\u662F\u771F\u4EBA",
|
|
356
405
|
titleApprove: "\u5728\u624B\u6A5F\u4E0A\u6838\u51C6",
|
|
357
406
|
bodyScan: "\u4F7F\u7528\u624B\u6A5F\u76F8\u6A5F\u6216 ZOREAL ID \u61C9\u7528\u7A0B\u5F0F\u6383\u63CF\u3002",
|
|
358
407
|
bodyApprove: "\u8ACB\u5728 ZOREAL ID \u61C9\u7528\u7A0B\u5F0F\u4E2D\u6838\u51C6\u767B\u5165\u3002",
|
|
@@ -365,10 +414,13 @@ var TRANSLATIONS = {
|
|
|
365
414
|
noIdBody: "\u6383\u63CF\u540C\u4E00\u500B QR code \u5373\u53EF\u4E0B\u8F09\u61C9\u7528\u7A0B\u5F0F\u4E26\u514D\u8CBB\u5EFA\u7ACB\uFF0C\u53EA\u9700\u4E00\u5206\u9418\u3002",
|
|
366
415
|
cancel: "\u53D6\u6D88",
|
|
367
416
|
close: "\u95DC\u9589",
|
|
368
|
-
qrAlt: "\u4F7F\u7528 ZOREAL \u767B\u5165\u7684 QR code"
|
|
417
|
+
qrAlt: "\u4F7F\u7528 ZOREAL \u767B\u5165\u7684 QR code",
|
|
418
|
+
buttonContinue: "\u4F7F\u7528 ZOREAL \u7E7C\u7E8C"
|
|
369
419
|
},
|
|
370
420
|
ar: {
|
|
371
421
|
title: "\u0627\u0645\u0633\u062D \u0644\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644",
|
|
422
|
+
titleIdentify: "\u0627\u0645\u0633\u062D \u0644\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0647\u0648\u064A\u062A\u0643",
|
|
423
|
+
titlePresence: "\u0627\u0645\u0633\u062D \u0644\u0625\u062B\u0628\u0627\u062A \u0623\u0646\u0643 \u0625\u0646\u0633\u0627\u0646 \u062D\u0642\u064A\u0642\u064A",
|
|
372
424
|
titleApprove: "\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u0647\u0627\u062A\u0641\u0643",
|
|
373
425
|
bodyScan: "\u0627\u0645\u0633\u062D \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0643\u0627\u0645\u064A\u0631\u0627 \u0647\u0627\u062A\u0641\u0643 \u0623\u0648 \u062A\u0637\u0628\u064A\u0642 ZOREAL ID.",
|
|
374
426
|
bodyApprove: "\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0641\u064A \u062A\u0637\u0628\u064A\u0642 ZOREAL ID.",
|
|
@@ -381,10 +433,13 @@ var TRANSLATIONS = {
|
|
|
381
433
|
noIdBody: "\u0627\u0645\u0633\u062D \u0627\u0644\u0631\u0645\u0632 \u0646\u0641\u0633\u0647 \u0644\u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0648\u0625\u0646\u0634\u0627\u0621 \u062D\u0633\u0627\u0628 \u0645\u062C\u0627\u0646\u064A. \u064A\u0633\u062A\u063A\u0631\u0642 \u0627\u0644\u0623\u0645\u0631 \u062F\u0642\u064A\u0642\u0629 \u0648\u0627\u062D\u062F\u0629 \u0641\u0642\u0637.",
|
|
382
434
|
cancel: "\u0625\u0644\u063A\u0627\u0621",
|
|
383
435
|
close: "\u0625\u063A\u0644\u0627\u0642",
|
|
384
|
-
qrAlt: "\u0631\u0645\u0632 QR \u0644\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 ZOREAL"
|
|
436
|
+
qrAlt: "\u0631\u0645\u0632 QR \u0644\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 ZOREAL",
|
|
437
|
+
buttonContinue: "\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 ZOREAL"
|
|
385
438
|
},
|
|
386
439
|
ko: {
|
|
387
440
|
title: "\uC2A4\uCE94\uD558\uC5EC \uB85C\uADF8\uC778",
|
|
441
|
+
titleIdentify: "\uC2A4\uCE94\uD558\uC5EC \uC2E0\uC6D0 \uD655\uC778",
|
|
442
|
+
titlePresence: "\uC2A4\uCE94\uD558\uC5EC \uC2E4\uC81C \uC0AC\uB78C\uC784\uC744 \uC99D\uBA85",
|
|
388
443
|
titleApprove: "\uD734\uB300\uD3F0\uC5D0\uC11C \uC2B9\uC778",
|
|
389
444
|
bodyScan: "\uD734\uB300\uD3F0 \uCE74\uBA54\uB77C \uB610\uB294 ZOREAL ID \uC571\uC73C\uB85C \uC2A4\uCE94\uD558\uC138\uC694.",
|
|
390
445
|
bodyApprove: "ZOREAL ID \uC571\uC5D0\uC11C \uB85C\uADF8\uC778\uC744 \uC2B9\uC778\uD558\uC138\uC694.",
|
|
@@ -397,11 +452,14 @@ var TRANSLATIONS = {
|
|
|
397
452
|
noIdBody: "\uAC19\uC740 \uCF54\uB4DC\uB97C \uC2A4\uCE94\uD574 \uC571\uC744 \uB0B4\uB824\uBC1B\uACE0 \uBB34\uB8CC\uB85C \uB9CC\uB4DC\uC138\uC694. 1\uBD84\uC774\uBA74 \uB429\uB2C8\uB2E4.",
|
|
398
453
|
cancel: "\uCDE8\uC18C",
|
|
399
454
|
close: "\uB2EB\uAE30",
|
|
400
|
-
qrAlt: "ZOREAL\uB85C \uB85C\uADF8\uC778\uD558\uAE30 \uC704\uD55C QR \uCF54\uB4DC"
|
|
455
|
+
qrAlt: "ZOREAL\uB85C \uB85C\uADF8\uC778\uD558\uAE30 \uC704\uD55C QR \uCF54\uB4DC",
|
|
456
|
+
buttonContinue: "ZOREAL\uB85C \uACC4\uC18D"
|
|
401
457
|
},
|
|
402
458
|
// Български
|
|
403
459
|
bg: {
|
|
404
460
|
title: "\u0421\u043A\u0430\u043D\u0438\u0440\u0430\u0439\u0442\u0435 \u0437\u0430 \u0432\u0445\u043E\u0434",
|
|
461
|
+
titleIdentify: "\u0421\u043A\u0430\u043D\u0438\u0440\u0430\u0439\u0442\u0435, \u0437\u0430 \u0434\u0430 \u043F\u043E\u0442\u0432\u044A\u0440\u0434\u0438\u0442\u0435 \u0441\u0430\u043C\u043E\u043B\u0438\u0447\u043D\u043E\u0441\u0442\u0442\u0430 \u0441\u0438",
|
|
462
|
+
titlePresence: "\u0421\u043A\u0430\u043D\u0438\u0440\u0430\u0439\u0442\u0435, \u0437\u0430 \u0434\u0430 \u0434\u043E\u043A\u0430\u0436\u0435\u0442\u0435, \u0447\u0435 \u0441\u0442\u0435 \u0438\u0441\u0442\u0438\u043D\u0441\u043A\u0438 \u0447\u043E\u0432\u0435\u043A",
|
|
405
463
|
titleApprove: "\u041F\u043E\u0442\u0432\u044A\u0440\u0434\u0435\u0442\u0435 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0441\u0438",
|
|
406
464
|
bodyScan: "\u0421\u043A\u0430\u043D\u0438\u0440\u0430\u0439\u0442\u0435 \u0441 \u043A\u0430\u043C\u0435\u0440\u0430\u0442\u0430 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438 \u0441 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E ZOREAL ID.",
|
|
407
465
|
bodyApprove: "\u041F\u043E\u0442\u0432\u044A\u0440\u0434\u0435\u0442\u0435 \u0432\u0445\u043E\u0434\u0430 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E ZOREAL ID.",
|
|
@@ -414,11 +472,14 @@ var TRANSLATIONS = {
|
|
|
414
472
|
noIdBody: "\u0421\u043A\u0430\u043D\u0438\u0440\u0430\u0439\u0442\u0435 \u0441\u044A\u0449\u0438\u044F \u043A\u043E\u0434, \u0437\u0430 \u0434\u0430 \u0438\u0437\u0442\u0435\u0433\u043B\u0438\u0442\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E \u0438 \u0434\u0430 \u0441\u0438 \u0441\u044A\u0437\u0434\u0430\u0434\u0435\u0442\u0435 \u0431\u0435\u0437\u043F\u043B\u0430\u0442\u0435\u043D \u0430\u043A\u0430\u0443\u043D\u0442. \u041E\u0442\u043D\u0435\u043C\u0430 \u0441\u0430\u043C\u043E \u043C\u0438\u043D\u0443\u0442\u0430.",
|
|
415
473
|
cancel: "\u041E\u0442\u043A\u0430\u0437",
|
|
416
474
|
close: "\u0417\u0430\u0442\u0432\u043E\u0440\u0438",
|
|
417
|
-
qrAlt: "QR \u043A\u043E\u0434 \u0437\u0430 \u0432\u0445\u043E\u0434 \u0441\u044A\u0441 ZOREAL"
|
|
475
|
+
qrAlt: "QR \u043A\u043E\u0434 \u0437\u0430 \u0432\u0445\u043E\u0434 \u0441\u044A\u0441 ZOREAL",
|
|
476
|
+
buttonContinue: "\u041F\u0440\u043E\u0434\u044A\u043B\u0436\u0438 \u0441\u044A\u0441 ZOREAL"
|
|
418
477
|
},
|
|
419
478
|
// বাংলা
|
|
420
479
|
bn: {
|
|
421
480
|
title: "\u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u0995\u09B0\u09A4\u09C7 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",
|
|
481
|
+
titleIdentify: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u09B0\u09BF\u099A\u09AF\u09BC \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09A4\u09C7 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",
|
|
482
|
+
titlePresence: "\u0986\u09AA\u09A8\u09BF \u098F\u0995\u099C\u09A8 \u09AA\u09CD\u09B0\u0995\u09C3\u09A4 \u09AE\u09BE\u09A8\u09C1\u09B7 \u09A4\u09BE \u09AA\u09CD\u09B0\u09AE\u09BE\u09A3 \u0995\u09B0\u09A4\u09C7 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",
|
|
422
483
|
titleApprove: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09CB\u09A8\u09C7 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u0995\u09B0\u09C1\u09A8",
|
|
423
484
|
bodyScan: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09CB\u09A8\u09C7\u09B0 \u0995\u09CD\u09AF\u09BE\u09AE\u09C7\u09B0\u09BE \u09AC\u09BE ZOREAL ID \u0985\u09CD\u09AF\u09BE\u09AA \u09A6\u09BF\u09AF\u09BC\u09C7 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8\u0964",
|
|
424
485
|
bodyApprove: "\u0986\u09AA\u09A8\u09BE\u09B0 ZOREAL ID \u0985\u09CD\u09AF\u09BE\u09AA\u09C7 \u09B2\u0997\u0987\u09A8 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u0995\u09B0\u09C1\u09A8\u0964",
|
|
@@ -431,11 +492,14 @@ var TRANSLATIONS = {
|
|
|
431
492
|
noIdBody: "\u0985\u09CD\u09AF\u09BE\u09AA \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C7 \u09AC\u09BF\u09A8\u09BE\u09AE\u09C2\u09B2\u09CD\u09AF\u09C7 \u098F\u0995\u099F\u09BF \u09A4\u09C8\u09B0\u09BF \u0995\u09B0\u09A4\u09C7 \u098F\u0995\u0987 \u0995\u09CB\u09A1 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8\u0964 \u098F\u09A4\u09C7 \u09AE\u09BE\u09A4\u09CD\u09B0 \u098F\u0995 \u09AE\u09BF\u09A8\u09BF\u099F \u09B8\u09AE\u09AF\u09BC \u09B2\u09BE\u0997\u09C7\u0964",
|
|
432
493
|
cancel: "\u09AC\u09BE\u09A4\u09BF\u09B2",
|
|
433
494
|
close: "\u09AC\u09A8\u09CD\u09A7",
|
|
434
|
-
qrAlt: "ZOREAL \u09A6\u09BF\u09AF\u09BC\u09C7 \u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u0995\u09B0\u09BE\u09B0 \u099C\u09A8\u09CD\u09AF QR \u0995\u09CB\u09A1"
|
|
495
|
+
qrAlt: "ZOREAL \u09A6\u09BF\u09AF\u09BC\u09C7 \u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u0995\u09B0\u09BE\u09B0 \u099C\u09A8\u09CD\u09AF QR \u0995\u09CB\u09A1",
|
|
496
|
+
buttonContinue: "ZOREAL \u09A6\u09BF\u09AF\u09BC\u09C7 \u099A\u09BE\u09B2\u09BF\u09AF\u09BC\u09C7 \u09AF\u09BE\u09A8"
|
|
435
497
|
},
|
|
436
498
|
// Bosanski
|
|
437
499
|
bs: {
|
|
438
500
|
title: "Skenirajte za prijavu",
|
|
501
|
+
titleIdentify: "Skenirajte da potvrdite svoj identitet",
|
|
502
|
+
titlePresence: "Skenirajte da doka\u017Eete da ste stvarna osoba",
|
|
439
503
|
titleApprove: "Odobrite na svom telefonu",
|
|
440
504
|
bodyScan: "Skenirajte kamerom svog telefona ili aplikacijom ZOREAL ID.",
|
|
441
505
|
bodyApprove: "Odobrite prijavu u aplikaciji ZOREAL ID.",
|
|
@@ -448,11 +512,14 @@ var TRANSLATIONS = {
|
|
|
448
512
|
noIdBody: "Skenirajte isti kod da preuzmete aplikaciju i besplatno ga napravite. Traje samo minutu.",
|
|
449
513
|
cancel: "Otka\u017Ei",
|
|
450
514
|
close: "Zatvori",
|
|
451
|
-
qrAlt: "QR kod za prijavu putem ZOREAL-a"
|
|
515
|
+
qrAlt: "QR kod za prijavu putem ZOREAL-a",
|
|
516
|
+
buttonContinue: "Nastavi sa ZOREAL-om"
|
|
452
517
|
},
|
|
453
518
|
// Čeština
|
|
454
519
|
cs: {
|
|
455
520
|
title: "P\u0159ihlaste se naskenov\xE1n\xEDm",
|
|
521
|
+
titleIdentify: "Naskenujte pro ov\u011B\u0159en\xED toto\u017Enosti",
|
|
522
|
+
titlePresence: "Naskenujte a proka\u017Ete, \u017Ee jste skute\u010Dn\xFD \u010Dlov\u011Bk",
|
|
456
523
|
titleApprove: "Potvr\u010Fte v telefonu",
|
|
457
524
|
bodyScan: "Naskenujte fotoapar\xE1tem telefonu nebo aplikac\xED ZOREAL ID.",
|
|
458
525
|
bodyApprove: "Potvr\u010Fte p\u0159ihl\xE1\u0161en\xED v aplikaci ZOREAL ID.",
|
|
@@ -465,11 +532,14 @@ var TRANSLATIONS = {
|
|
|
465
532
|
noIdBody: "Naskenov\xE1n\xEDm stejn\xE9ho k\xF3du si st\xE1hnete aplikaci a zdarma vytvo\u0159\xEDte ZOREAL ID. Zabere to jen minutu.",
|
|
466
533
|
cancel: "Zru\u0161it",
|
|
467
534
|
close: "Zav\u0159\xEDt",
|
|
468
|
-
qrAlt: "QR k\xF3d pro p\u0159ihl\xE1\u0161en\xED pomoc\xED ZOREAL"
|
|
535
|
+
qrAlt: "QR k\xF3d pro p\u0159ihl\xE1\u0161en\xED pomoc\xED ZOREAL",
|
|
536
|
+
buttonContinue: "Pokra\u010Dovat se ZOREAL"
|
|
469
537
|
},
|
|
470
538
|
// Dansk
|
|
471
539
|
da: {
|
|
472
540
|
title: "Scan for at logge ind",
|
|
541
|
+
titleIdentify: "Scan for at bekr\xE6fte din identitet",
|
|
542
|
+
titlePresence: "Scan for at bevise, at du er et rigtigt menneske",
|
|
473
543
|
titleApprove: "Godkend p\xE5 din telefon",
|
|
474
544
|
bodyScan: "Scan med telefonens kamera eller ZOREAL ID-appen.",
|
|
475
545
|
bodyApprove: "Godkend login i din ZOREAL ID-app.",
|
|
@@ -482,11 +552,14 @@ var TRANSLATIONS = {
|
|
|
482
552
|
noIdBody: "Scan den samme kode for at hente appen og oprette et gratis. Det tager kun et minut.",
|
|
483
553
|
cancel: "Annuller",
|
|
484
554
|
close: "Luk",
|
|
485
|
-
qrAlt: "QR-kode til at logge ind med ZOREAL"
|
|
555
|
+
qrAlt: "QR-kode til at logge ind med ZOREAL",
|
|
556
|
+
buttonContinue: "Forts\xE6t med ZOREAL"
|
|
486
557
|
},
|
|
487
558
|
// Ελληνικά
|
|
488
559
|
el: {
|
|
489
560
|
title: "\u03A3\u03AC\u03C1\u03C9\u03C3\u03B7 \u03B3\u03B9\u03B1 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7",
|
|
561
|
+
titleIdentify: "\u03A3\u03AC\u03C1\u03C9\u03C3\u03B7 \u03B3\u03B9\u03B1 \u03B5\u03C0\u03B1\u03BB\u03AE\u03B8\u03B5\u03C5\u03C3\u03B7 \u03C4\u03B1\u03C5\u03C4\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2",
|
|
562
|
+
titlePresence: "\u03A3\u03AC\u03C1\u03C9\u03C3\u03B7 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B1\u03C0\u03BF\u03B4\u03B5\u03AF\u03BE\u03B5\u03C4\u03B5 \u03CC\u03C4\u03B9 \u03B5\u03AF\u03C3\u03C4\u03B5 \u03C0\u03C1\u03B1\u03B3\u03BC\u03B1\u03C4\u03B9\u03BA\u03CC\u03C2 \u03AC\u03BD\u03B8\u03C1\u03C9\u03C0\u03BF\u03C2",
|
|
490
563
|
titleApprove: "\u0388\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7 \u03B1\u03C0\u03CC \u03C4\u03BF \u03BA\u03B9\u03BD\u03B7\u03C4\u03CC \u03C3\u03B1\u03C2",
|
|
491
564
|
bodyScan: "\u03A3\u03B1\u03C1\u03CE\u03C3\u03C4\u03B5 \u03BC\u03B5 \u03C4\u03B7\u03BD \u03BA\u03AC\u03BC\u03B5\u03C1\u03B1 \u03C4\u03BF\u03C5 \u03BA\u03B9\u03BD\u03B7\u03C4\u03BF\u03CD \u03C3\u03B1\u03C2 \u03AE \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE ZOREAL ID.",
|
|
492
565
|
bodyApprove: "\u0395\u03B3\u03BA\u03C1\u03AF\u03BD\u03B5\u03C4\u03B5 \u03C4\u03B7 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03C3\u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE ZOREAL ID.",
|
|
@@ -499,11 +572,14 @@ var TRANSLATIONS = {
|
|
|
499
572
|
noIdBody: "\u03A3\u03B1\u03C1\u03CE\u03C3\u03C4\u03B5 \u03C4\u03BF\u03BD \u03AF\u03B4\u03B9\u03BF \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03BA\u03B1\u03C4\u03B5\u03B2\u03AC\u03C3\u03B5\u03C4\u03B5 \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03BA\u03B1\u03B9 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03AD\u03BD\u03B1 \u03B4\u03C9\u03C1\u03B5\u03AC\u03BD. \u03A7\u03C1\u03B5\u03B9\u03AC\u03B6\u03B5\u03C4\u03B1\u03B9 \u03BC\u03CC\u03BD\u03BF \u03AD\u03BD\u03B1 \u03BB\u03B5\u03C0\u03C4\u03CC.",
|
|
500
573
|
cancel: "\u0386\u03BA\u03C5\u03C1\u03BF",
|
|
501
574
|
close: "\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF",
|
|
502
|
-
qrAlt: "\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 QR \u03B3\u03B9\u03B1 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03BC\u03B5 ZOREAL"
|
|
575
|
+
qrAlt: "\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 QR \u03B3\u03B9\u03B1 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03BC\u03B5 ZOREAL",
|
|
576
|
+
buttonContinue: "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1 \u03BC\u03B5 ZOREAL"
|
|
503
577
|
},
|
|
504
578
|
// Español (LA)
|
|
505
579
|
"es-419": {
|
|
506
580
|
title: "Escanea para iniciar sesi\xF3n",
|
|
581
|
+
titleIdentify: "Escanea para verificar tu identidad",
|
|
582
|
+
titlePresence: "Escanea para demostrar que eres una persona real",
|
|
507
583
|
titleApprove: "Aprueba desde tu celular",
|
|
508
584
|
bodyScan: "Escanea con la c\xE1mara de tu celular o con la app ZOREAL ID.",
|
|
509
585
|
bodyApprove: "Aprueba el inicio de sesi\xF3n en tu app ZOREAL ID.",
|
|
@@ -516,11 +592,14 @@ var TRANSLATIONS = {
|
|
|
516
592
|
noIdBody: "Escanea el mismo c\xF3digo para descargar la app y crear uno gratis. Solo toma un minuto.",
|
|
517
593
|
cancel: "Cancelar",
|
|
518
594
|
close: "Cerrar",
|
|
519
|
-
qrAlt: "C\xF3digo QR para iniciar sesi\xF3n con ZOREAL"
|
|
595
|
+
qrAlt: "C\xF3digo QR para iniciar sesi\xF3n con ZOREAL",
|
|
596
|
+
buttonContinue: "Continuar con ZOREAL"
|
|
520
597
|
},
|
|
521
598
|
// Suomi
|
|
522
599
|
fi: {
|
|
523
600
|
title: "Kirjaudu sis\xE4\xE4n skannaamalla",
|
|
601
|
+
titleIdentify: "Vahvista henkil\xF6llisyytesi skannaamalla",
|
|
602
|
+
titlePresence: "Todista skannaamalla, ett\xE4 olet oikea ihminen",
|
|
524
603
|
titleApprove: "Hyv\xE4ksy puhelimessasi",
|
|
525
604
|
bodyScan: "Skannaa puhelimesi kameralla tai ZOREAL ID -sovelluksella.",
|
|
526
605
|
bodyApprove: "Hyv\xE4ksy kirjautuminen ZOREAL ID -sovelluksessasi.",
|
|
@@ -533,11 +612,14 @@ var TRANSLATIONS = {
|
|
|
533
612
|
noIdBody: "Skannaa sama koodi ladataksesi sovelluksen ja luodaksesi tunnuksen ilmaiseksi. Se vie vain minuutin.",
|
|
534
613
|
cancel: "Peruuta",
|
|
535
614
|
close: "Sulje",
|
|
536
|
-
qrAlt: "QR-koodi ZOREAL-kirjautumista varten"
|
|
615
|
+
qrAlt: "QR-koodi ZOREAL-kirjautumista varten",
|
|
616
|
+
buttonContinue: "Jatka ZOREALilla"
|
|
537
617
|
},
|
|
538
618
|
// עברית
|
|
539
619
|
he: {
|
|
540
620
|
title: "\u05E1\u05E8\u05D5\u05E7 \u05DB\u05D3\u05D9 \u05DC\u05D4\u05EA\u05D7\u05D1\u05E8",
|
|
621
|
+
titleIdentify: "\u05E1\u05E8\u05D5\u05E7 \u05DB\u05D3\u05D9 \u05DC\u05D0\u05DE\u05EA \u05D0\u05EA \u05D6\u05D4\u05D5\u05EA\u05DA",
|
|
622
|
+
titlePresence: "\u05E1\u05E8\u05D5\u05E7 \u05DB\u05D3\u05D9 \u05DC\u05D4\u05D5\u05DB\u05D9\u05D7 \u05E9\u05D0\u05EA\u05D4 \u05D0\u05D3\u05DD \u05D0\u05DE\u05D9\u05EA\u05D9",
|
|
541
623
|
titleApprove: "\u05D0\u05E9\u05E8 \u05D1\u05D8\u05DC\u05E4\u05D5\u05DF \u05E9\u05DC\u05DA",
|
|
542
624
|
bodyScan: "\u05E1\u05E8\u05D5\u05E7 \u05D1\u05D0\u05DE\u05E6\u05E2\u05D5\u05EA \u05DE\u05E6\u05DC\u05DE\u05EA \u05D4\u05D8\u05DC\u05E4\u05D5\u05DF \u05E9\u05DC\u05DA \u05D0\u05D5 \u05D0\u05E4\u05DC\u05D9\u05E7\u05E6\u05D9\u05D9\u05EA ZOREAL ID.",
|
|
543
625
|
bodyApprove: "\u05D0\u05E9\u05E8 \u05D0\u05EA \u05D4\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA \u05D1\u05D0\u05E4\u05DC\u05D9\u05E7\u05E6\u05D9\u05D9\u05EA ZOREAL ID \u05E9\u05DC\u05DA.",
|
|
@@ -550,11 +632,14 @@ var TRANSLATIONS = {
|
|
|
550
632
|
noIdBody: "\u05E1\u05E8\u05D5\u05E7 \u05D0\u05EA \u05D0\u05D5\u05EA\u05D5 \u05D4\u05E7\u05D5\u05D3 \u05DB\u05D3\u05D9 \u05DC\u05D4\u05D5\u05E8\u05D9\u05D3 \u05D0\u05EA \u05D4\u05D0\u05E4\u05DC\u05D9\u05E7\u05E6\u05D9\u05D4 \u05D5\u05DC\u05D9\u05E6\u05D5\u05E8 \u05D0\u05D7\u05D3 \u05D1\u05D7\u05D9\u05E0\u05DD. \u05D6\u05D4 \u05DC\u05D5\u05E7\u05D7 \u05E8\u05E7 \u05D3\u05E7\u05D4.",
|
|
551
633
|
cancel: "\u05D1\u05D9\u05D8\u05D5\u05DC",
|
|
552
634
|
close: "\u05E1\u05D2\u05D5\u05E8",
|
|
553
|
-
qrAlt: "\u05E7\u05D5\u05D3 QR \u05DC\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA \u05E2\u05DD ZOREAL"
|
|
635
|
+
qrAlt: "\u05E7\u05D5\u05D3 QR \u05DC\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA \u05E2\u05DD ZOREAL",
|
|
636
|
+
buttonContinue: "\u05D4\u05DE\u05E9\u05DA \u05E2\u05DD ZOREAL"
|
|
554
637
|
},
|
|
555
638
|
// Hrvatski
|
|
556
639
|
hr: {
|
|
557
640
|
title: "Skenirajte za prijavu",
|
|
641
|
+
titleIdentify: "Skenirajte za potvrdu identiteta",
|
|
642
|
+
titlePresence: "Skenirajte kako biste dokazali da ste stvarna osoba",
|
|
558
643
|
titleApprove: "Odobrite na svom mobitelu",
|
|
559
644
|
bodyScan: "Skenirajte kamerom svog mobitela ili aplikacijom ZOREAL ID.",
|
|
560
645
|
bodyApprove: "Odobrite prijavu u aplikaciji ZOREAL ID.",
|
|
@@ -567,11 +652,14 @@ var TRANSLATIONS = {
|
|
|
567
652
|
noIdBody: "Skenirajte isti kod da preuzmete aplikaciju i besplatno ga izradite. Traje samo minutu.",
|
|
568
653
|
cancel: "Odustani",
|
|
569
654
|
close: "Zatvori",
|
|
570
|
-
qrAlt: "QR kod za prijavu putem ZOREAL-a"
|
|
655
|
+
qrAlt: "QR kod za prijavu putem ZOREAL-a",
|
|
656
|
+
buttonContinue: "Nastavi sa ZOREAL-om"
|
|
571
657
|
},
|
|
572
658
|
// Magyar
|
|
573
659
|
hu: {
|
|
574
660
|
title: "Bejelentkez\xE9s beolvas\xE1ssal",
|
|
661
|
+
titleIdentify: "Olvassa be a szem\xE9lyazonoss\xE1ga igazol\xE1s\xE1hoz",
|
|
662
|
+
titlePresence: "Olvassa be annak igazol\xE1s\xE1hoz, hogy val\xF3di ember",
|
|
575
663
|
titleApprove: "J\xF3v\xE1hagy\xE1s a telefonj\xE1n",
|
|
576
664
|
bodyScan: "Olvassa be a telefonja kamer\xE1j\xE1val, vagy a ZOREAL ID alkalmaz\xE1ssal.",
|
|
577
665
|
bodyApprove: "Hagyja j\xF3v\xE1 a bejelentkez\xE9st a ZOREAL ID alkalmaz\xE1sban.",
|
|
@@ -584,11 +672,14 @@ var TRANSLATIONS = {
|
|
|
584
672
|
noIdBody: "Olvassa be ugyanazt a k\xF3dot az alkalmaz\xE1s let\xF6lt\xE9s\xE9hez, \xE9s hozzon l\xE9tre egyet ingyenesen. Mind\xF6ssze egy percet vesz ig\xE9nybe.",
|
|
585
673
|
cancel: "M\xE9gse",
|
|
586
674
|
close: "Bez\xE1r\xE1s",
|
|
587
|
-
qrAlt: "QR-k\xF3d a ZOREAL-lal val\xF3 bejelentkez\xE9shez"
|
|
675
|
+
qrAlt: "QR-k\xF3d a ZOREAL-lal val\xF3 bejelentkez\xE9shez",
|
|
676
|
+
buttonContinue: "Folytat\xE1s a ZOREAL-lal"
|
|
588
677
|
},
|
|
589
678
|
// Bahasa Indonesia
|
|
590
679
|
id: {
|
|
591
680
|
title: "Pindai untuk masuk",
|
|
681
|
+
titleIdentify: "Pindai untuk memverifikasi identitas Anda",
|
|
682
|
+
titlePresence: "Pindai untuk membuktikan bahwa Anda manusia sungguhan",
|
|
592
683
|
titleApprove: "Setujui di ponsel Anda",
|
|
593
684
|
bodyScan: "Pindai dengan kamera ponsel atau aplikasi ZOREAL ID.",
|
|
594
685
|
bodyApprove: "Setujui proses masuk di aplikasi ZOREAL ID Anda.",
|
|
@@ -601,11 +692,14 @@ var TRANSLATIONS = {
|
|
|
601
692
|
noIdBody: "Pindai kode yang sama untuk mengunduh aplikasi dan membuat akun secara gratis. Hanya butuh waktu satu menit.",
|
|
602
693
|
cancel: "Batal",
|
|
603
694
|
close: "Tutup",
|
|
604
|
-
qrAlt: "Kode QR untuk masuk dengan ZOREAL"
|
|
695
|
+
qrAlt: "Kode QR untuk masuk dengan ZOREAL",
|
|
696
|
+
buttonContinue: "Lanjutkan dengan ZOREAL"
|
|
605
697
|
},
|
|
606
698
|
// Italiano
|
|
607
699
|
it: {
|
|
608
700
|
title: "Scansiona per accedere",
|
|
701
|
+
titleIdentify: "Scansiona per verificare la tua identit\xE0",
|
|
702
|
+
titlePresence: "Scansiona per dimostrare di essere una persona reale",
|
|
609
703
|
titleApprove: "Approva sul tuo telefono",
|
|
610
704
|
bodyScan: "Scansiona con la fotocamera del telefono o con l'app ZOREAL ID.",
|
|
611
705
|
bodyApprove: "Approva l'accesso nell'app ZOREAL ID.",
|
|
@@ -618,11 +712,14 @@ var TRANSLATIONS = {
|
|
|
618
712
|
noIdBody: "Scansiona lo stesso codice per scaricare l'app e crearne uno gratis. Basta un minuto.",
|
|
619
713
|
cancel: "Annulla",
|
|
620
714
|
close: "Chiudi",
|
|
621
|
-
qrAlt: "Codice QR per accedere con ZOREAL"
|
|
715
|
+
qrAlt: "Codice QR per accedere con ZOREAL",
|
|
716
|
+
buttonContinue: "Continua con ZOREAL"
|
|
622
717
|
},
|
|
623
718
|
// Bahasa Melayu
|
|
624
719
|
ms: {
|
|
625
720
|
title: "Imbas untuk log masuk",
|
|
721
|
+
titleIdentify: "Imbas untuk mengesahkan identiti anda",
|
|
722
|
+
titlePresence: "Imbas untuk membuktikan anda manusia sebenar",
|
|
626
723
|
titleApprove: "Luluskan di telefon anda",
|
|
627
724
|
bodyScan: "Imbas dengan kamera telefon atau aplikasi ZOREAL ID.",
|
|
628
725
|
bodyApprove: "Luluskan log masuk dalam aplikasi ZOREAL ID anda.",
|
|
@@ -635,11 +732,14 @@ var TRANSLATIONS = {
|
|
|
635
732
|
noIdBody: "Imbas kod yang sama untuk memuat turun aplikasi dan cipta satu secara percuma. Hanya mengambil masa seminit.",
|
|
636
733
|
cancel: "Batal",
|
|
637
734
|
close: "Tutup",
|
|
638
|
-
qrAlt: "Kod QR untuk log masuk dengan ZOREAL"
|
|
735
|
+
qrAlt: "Kod QR untuk log masuk dengan ZOREAL",
|
|
736
|
+
buttonContinue: "Teruskan dengan ZOREAL"
|
|
639
737
|
},
|
|
640
738
|
// Nederlands
|
|
641
739
|
nl: {
|
|
642
740
|
title: "Scan om in te loggen",
|
|
741
|
+
titleIdentify: "Scan om je identiteit te verifi\xEBren",
|
|
742
|
+
titlePresence: "Scan om te bewijzen dat je een echt mens bent",
|
|
643
743
|
titleApprove: "Keur goed op je telefoon",
|
|
644
744
|
bodyScan: "Scan met de camera van je telefoon of de ZOREAL ID-app.",
|
|
645
745
|
bodyApprove: "Keur de aanmelding goed in je ZOREAL ID-app.",
|
|
@@ -652,11 +752,14 @@ var TRANSLATIONS = {
|
|
|
652
752
|
noIdBody: "Scan dezelfde code om de app te downloaden en gratis een account aan te maken. Dit duurt maar een minuut.",
|
|
653
753
|
cancel: "Annuleren",
|
|
654
754
|
close: "Sluiten",
|
|
655
|
-
qrAlt: "QR-code om in te loggen met ZOREAL"
|
|
755
|
+
qrAlt: "QR-code om in te loggen met ZOREAL",
|
|
756
|
+
buttonContinue: "Doorgaan met ZOREAL"
|
|
656
757
|
},
|
|
657
758
|
// Norsk
|
|
658
759
|
no: {
|
|
659
760
|
title: "Skann for \xE5 logge inn",
|
|
761
|
+
titleIdentify: "Skann for \xE5 bekrefte identiteten din",
|
|
762
|
+
titlePresence: "Skann for \xE5 bevise at du er et ekte menneske",
|
|
660
763
|
titleApprove: "Godkjenn p\xE5 telefonen din",
|
|
661
764
|
bodyScan: "Skann med telefonens kamera eller ZOREAL ID-appen.",
|
|
662
765
|
bodyApprove: "Godkjenn innloggingen i ZOREAL ID-appen din.",
|
|
@@ -669,11 +772,14 @@ var TRANSLATIONS = {
|
|
|
669
772
|
noIdBody: "Skann den samme koden for \xE5 laste ned appen og opprette en gratis. Det tar bare et minutt.",
|
|
670
773
|
cancel: "Avbryt",
|
|
671
774
|
close: "Lukk",
|
|
672
|
-
qrAlt: "QR-kode for \xE5 logge inn med ZOREAL"
|
|
775
|
+
qrAlt: "QR-kode for \xE5 logge inn med ZOREAL",
|
|
776
|
+
buttonContinue: "Fortsett med ZOREAL"
|
|
673
777
|
},
|
|
674
778
|
// Polski
|
|
675
779
|
pl: {
|
|
676
780
|
title: "Zeskanuj, aby si\u0119 zalogowa\u0107",
|
|
781
|
+
titleIdentify: "Zeskanuj, aby zweryfikowa\u0107 swoj\u0105 to\u017Csamo\u015B\u0107",
|
|
782
|
+
titlePresence: "Zeskanuj, aby udowodni\u0107, \u017Ce jeste\u015B prawdziwym cz\u0142owiekiem",
|
|
677
783
|
titleApprove: "Zatwierd\u017A w telefonie",
|
|
678
784
|
bodyScan: "Zeskanuj aparatem telefonu lub aplikacj\u0105 ZOREAL ID.",
|
|
679
785
|
bodyApprove: "Zatwierd\u017A logowanie w aplikacji ZOREAL ID.",
|
|
@@ -686,11 +792,14 @@ var TRANSLATIONS = {
|
|
|
686
792
|
noIdBody: "Zeskanuj ten sam kod, aby pobra\u0107 aplikacj\u0119 i bezp\u0142atnie utworzy\u0107 ZOREAL ID. Zajmie to tylko minut\u0119.",
|
|
687
793
|
cancel: "Anuluj",
|
|
688
794
|
close: "Zamknij",
|
|
689
|
-
qrAlt: "Kod QR do logowania za pomoc\u0105 ZOREAL"
|
|
795
|
+
qrAlt: "Kod QR do logowania za pomoc\u0105 ZOREAL",
|
|
796
|
+
buttonContinue: "Kontynuuj z ZOREAL"
|
|
690
797
|
},
|
|
691
798
|
// Português (BR)
|
|
692
799
|
"pt-br": {
|
|
693
800
|
title: "Escaneie para entrar",
|
|
801
|
+
titleIdentify: "Escaneie para verificar sua identidade",
|
|
802
|
+
titlePresence: "Escaneie para provar que voc\xEA \xE9 uma pessoa real",
|
|
694
803
|
titleApprove: "Aprove no seu celular",
|
|
695
804
|
bodyScan: "Escaneie com a c\xE2mera do seu celular ou com o app ZOREAL ID.",
|
|
696
805
|
bodyApprove: "Aprove o login no app ZOREAL ID.",
|
|
@@ -703,11 +812,14 @@ var TRANSLATIONS = {
|
|
|
703
812
|
noIdBody: "Escaneie o mesmo c\xF3digo para baixar o app e criar um de gra\xE7a. Leva s\xF3 um minuto.",
|
|
704
813
|
cancel: "Cancelar",
|
|
705
814
|
close: "Fechar",
|
|
706
|
-
qrAlt: "C\xF3digo QR para entrar com ZOREAL"
|
|
815
|
+
qrAlt: "C\xF3digo QR para entrar com ZOREAL",
|
|
816
|
+
buttonContinue: "Continuar com ZOREAL"
|
|
707
817
|
},
|
|
708
818
|
// Română
|
|
709
819
|
ro: {
|
|
710
820
|
title: "Scana\u021Bi pentru conectare",
|
|
821
|
+
titleIdentify: "Scana\u021Bi pentru a v\u0103 verifica identitatea",
|
|
822
|
+
titlePresence: "Scana\u021Bi pentru a dovedi c\u0103 sunte\u021Bi o persoan\u0103 real\u0103",
|
|
711
823
|
titleApprove: "Aproba\u021Bi de pe telefon",
|
|
712
824
|
bodyScan: "Scana\u021Bi cu camera telefonului sau cu aplica\u021Bia ZOREAL ID.",
|
|
713
825
|
bodyApprove: "Aproba\u021Bi conectarea \xEEn aplica\u021Bia ZOREAL ID.",
|
|
@@ -720,11 +832,14 @@ var TRANSLATIONS = {
|
|
|
720
832
|
noIdBody: "Scana\u021Bi acela\u0219i cod pentru a desc\u0103rca aplica\u021Bia \u0219i a crea unul gratuit. Dureaz\u0103 doar un minut.",
|
|
721
833
|
cancel: "Anuleaz\u0103",
|
|
722
834
|
close: "\xCEnchide",
|
|
723
|
-
qrAlt: "Cod QR pentru conectare cu ZOREAL"
|
|
835
|
+
qrAlt: "Cod QR pentru conectare cu ZOREAL",
|
|
836
|
+
buttonContinue: "Continua\u021Bi cu ZOREAL"
|
|
724
837
|
},
|
|
725
838
|
// Српски
|
|
726
839
|
sr: {
|
|
727
840
|
title: "\u0421\u043A\u0435\u043D\u0438\u0440\u0430\u0458\u0442\u0435 \u0437\u0430 \u043F\u0440\u0438\u0458\u0430\u0432\u0443",
|
|
841
|
+
titleIdentify: "\u0421\u043A\u0435\u043D\u0438\u0440\u0430\u0458\u0442\u0435 \u0434\u0430 \u043F\u043E\u0442\u0432\u0440\u0434\u0438\u0442\u0435 \u0441\u0432\u043E\u0458 \u0438\u0434\u0435\u043D\u0442\u0438\u0442\u0435\u0442",
|
|
842
|
+
titlePresence: "\u0421\u043A\u0435\u043D\u0438\u0440\u0430\u0458\u0442\u0435 \u0434\u0430 \u0434\u043E\u043A\u0430\u0436\u0435\u0442\u0435 \u0434\u0430 \u0441\u0442\u0435 \u043F\u0440\u0430\u0432\u0430 \u043E\u0441\u043E\u0431\u0430",
|
|
728
843
|
titleApprove: "\u041E\u0434\u043E\u0431\u0440\u0438\u0442\u0435 \u043D\u0430 \u0441\u0432\u043E\u043C \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443",
|
|
729
844
|
bodyScan: "\u0421\u043A\u0435\u043D\u0438\u0440\u0430\u0458\u0442\u0435 \u043A\u0430\u043C\u0435\u0440\u043E\u043C \u0441\u0432\u043E\u0433 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438 \u0430\u043F\u043B\u0438\u043A\u0430\u0446\u0438\u0458\u043E\u043C ZOREAL ID.",
|
|
730
845
|
bodyApprove: "\u041E\u0434\u043E\u0431\u0440\u0438\u0442\u0435 \u043F\u0440\u0438\u0458\u0430\u0432\u0443 \u0443 \u0430\u043F\u043B\u0438\u043A\u0430\u0446\u0438\u0458\u0438 ZOREAL ID.",
|
|
@@ -737,11 +852,14 @@ var TRANSLATIONS = {
|
|
|
737
852
|
noIdBody: "\u0421\u043A\u0435\u043D\u0438\u0440\u0430\u0458\u0442\u0435 \u0438\u0441\u0442\u0438 \u043A\u043E\u0434 \u0434\u0430 \u043F\u0440\u0435\u0443\u0437\u043C\u0435\u0442\u0435 \u0430\u043F\u043B\u0438\u043A\u0430\u0446\u0438\u0458\u0443 \u0438 \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E \u0433\u0430 \u043D\u0430\u043F\u0440\u0430\u0432\u0438\u0442\u0435. \u0422\u0440\u0430\u0458\u0435 \u0441\u0430\u043C\u043E \u043C\u0438\u043D\u0443\u0442.",
|
|
738
853
|
cancel: "\u041E\u0442\u043A\u0430\u0436\u0438",
|
|
739
854
|
close: "\u0417\u0430\u0442\u0432\u043E\u0440\u0438",
|
|
740
|
-
qrAlt: "QR \u043A\u043E\u0434 \u0437\u0430 \u043F\u0440\u0438\u0458\u0430\u0432\u0443 \u043F\u0440\u0435\u043A\u043E ZOREAL-\u0430"
|
|
855
|
+
qrAlt: "QR \u043A\u043E\u0434 \u0437\u0430 \u043F\u0440\u0438\u0458\u0430\u0432\u0443 \u043F\u0440\u0435\u043A\u043E ZOREAL-\u0430",
|
|
856
|
+
buttonContinue: "\u041D\u0430\u0441\u0442\u0430\u0432\u0438 \u0441\u0430 ZOREAL-\u043E\u043C"
|
|
741
857
|
},
|
|
742
858
|
// ไทย
|
|
743
859
|
th: {
|
|
744
860
|
title: "\u0E2A\u0E41\u0E01\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A",
|
|
861
|
+
titleIdentify: "\u0E2A\u0E41\u0E01\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E15\u0E31\u0E27\u0E15\u0E19\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13",
|
|
862
|
+
titlePresence: "\u0E2A\u0E41\u0E01\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E1E\u0E34\u0E2A\u0E39\u0E08\u0E19\u0E4C\u0E27\u0E48\u0E32\u0E04\u0E38\u0E13\u0E40\u0E1B\u0E47\u0E19\u0E21\u0E19\u0E38\u0E29\u0E22\u0E4C\u0E08\u0E23\u0E34\u0E07",
|
|
745
863
|
titleApprove: "\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E1A\u0E19\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13",
|
|
746
864
|
bodyScan: "\u0E2A\u0E41\u0E01\u0E19\u0E14\u0E49\u0E27\u0E22\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E2B\u0E23\u0E37\u0E2D\u0E41\u0E2D\u0E1B ZOREAL ID",
|
|
747
865
|
bodyApprove: "\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A\u0E43\u0E19\u0E41\u0E2D\u0E1B ZOREAL ID \u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13",
|
|
@@ -754,11 +872,14 @@ var TRANSLATIONS = {
|
|
|
754
872
|
noIdBody: "\u0E2A\u0E41\u0E01\u0E19\u0E42\u0E04\u0E49\u0E14\u0E40\u0E14\u0E35\u0E22\u0E27\u0E01\u0E31\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E14\u0E32\u0E27\u0E19\u0E4C\u0E42\u0E2B\u0E25\u0E14\u0E41\u0E2D\u0E1B\u0E41\u0E25\u0E30\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E1F\u0E23\u0E35 \u0E43\u0E0A\u0E49\u0E40\u0E27\u0E25\u0E32\u0E40\u0E1E\u0E35\u0E22\u0E07\u0E19\u0E32\u0E17\u0E35\u0E40\u0E14\u0E35\u0E22\u0E27",
|
|
755
873
|
cancel: "\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01",
|
|
756
874
|
close: "\u0E1B\u0E34\u0E14",
|
|
757
|
-
qrAlt: "\u0E04\u0E34\u0E27\u0E2D\u0E32\u0E23\u0E4C\u0E42\u0E04\u0E49\u0E14\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A\u0E14\u0E49\u0E27\u0E22 ZOREAL"
|
|
875
|
+
qrAlt: "\u0E04\u0E34\u0E27\u0E2D\u0E32\u0E23\u0E4C\u0E42\u0E04\u0E49\u0E14\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A\u0E14\u0E49\u0E27\u0E22 ZOREAL",
|
|
876
|
+
buttonContinue: "\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23\u0E15\u0E48\u0E2D\u0E14\u0E49\u0E27\u0E22 ZOREAL"
|
|
758
877
|
},
|
|
759
878
|
// Tagalog
|
|
760
879
|
tl: {
|
|
761
880
|
title: "I-scan para mag-sign in",
|
|
881
|
+
titleIdentify: "I-scan para i-verify ang iyong pagkakakilanlan",
|
|
882
|
+
titlePresence: "I-scan para patunayang tunay kang tao",
|
|
762
883
|
titleApprove: "I-approve sa iyong telepono",
|
|
763
884
|
bodyScan: "I-scan gamit ang camera ng iyong telepono o ang ZOREAL ID app.",
|
|
764
885
|
bodyApprove: "I-approve ang login sa iyong ZOREAL ID app.",
|
|
@@ -771,11 +892,14 @@ var TRANSLATIONS = {
|
|
|
771
892
|
noIdBody: "I-scan ang parehong code para i-download ang app at gumawa ng iyong ZOREAL ID nang libre. Isang minuto lang ito.",
|
|
772
893
|
cancel: "Kanselahin",
|
|
773
894
|
close: "Isara",
|
|
774
|
-
qrAlt: "QR code para mag-sign in gamit ang ZOREAL"
|
|
895
|
+
qrAlt: "QR code para mag-sign in gamit ang ZOREAL",
|
|
896
|
+
buttonContinue: "Magpatuloy gamit ang ZOREAL"
|
|
775
897
|
},
|
|
776
898
|
// Türkçe
|
|
777
899
|
tr: {
|
|
778
900
|
title: "Giri\u015F i\xE7in taray\u0131n",
|
|
901
|
+
titleIdentify: "Kimli\u011Finizi do\u011Frulamak i\xE7in taray\u0131n",
|
|
902
|
+
titlePresence: "Ger\xE7ek bir insan oldu\u011Funuzu kan\u0131tlamak i\xE7in taray\u0131n",
|
|
779
903
|
titleApprove: "Telefonunuzdan onaylay\u0131n",
|
|
780
904
|
bodyScan: "Telefonunuzun kameras\u0131yla veya ZOREAL ID uygulamas\u0131yla taray\u0131n.",
|
|
781
905
|
bodyApprove: "Giri\u015Fi ZOREAL ID uygulaman\u0131zdan onaylay\u0131n.",
|
|
@@ -788,11 +912,14 @@ var TRANSLATIONS = {
|
|
|
788
912
|
noIdBody: "Uygulamay\u0131 indirmek ve \xFCcretsiz bir tane olu\u015Fturmak i\xE7in ayn\u0131 kodu taray\u0131n. Sadece bir dakikan\u0131z\u0131 al\u0131r.",
|
|
789
913
|
cancel: "\u0130ptal",
|
|
790
914
|
close: "Kapat",
|
|
791
|
-
qrAlt: "ZOREAL ile giri\u015F yapmak i\xE7in QR kodu"
|
|
915
|
+
qrAlt: "ZOREAL ile giri\u015F yapmak i\xE7in QR kodu",
|
|
916
|
+
buttonContinue: "ZOREAL ile devam et"
|
|
792
917
|
},
|
|
793
918
|
// Українська
|
|
794
919
|
uk: {
|
|
795
920
|
title: "\u0421\u043A\u0430\u043D\u0443\u0439\u0442\u0435 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0443",
|
|
921
|
+
titleIdentify: "\u0421\u043A\u0430\u043D\u0443\u0439\u0442\u0435, \u0449\u043E\u0431 \u043F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438 \u043E\u0441\u043E\u0431\u0443",
|
|
922
|
+
titlePresence: "\u0421\u043A\u0430\u043D\u0443\u0439\u0442\u0435, \u0449\u043E\u0431 \u0434\u043E\u0432\u0435\u0441\u0442\u0438, \u0449\u043E \u0432\u0438 \u0441\u043F\u0440\u0430\u0432\u0436\u043D\u044F \u043B\u044E\u0434\u0438\u043D\u0430",
|
|
796
923
|
titleApprove: "\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u044C\u0442\u0435 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0456",
|
|
797
924
|
bodyScan: "\u0421\u043A\u0430\u043D\u0443\u0439\u0442\u0435 \u043A\u0430\u043C\u0435\u0440\u043E\u044E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443 \u0430\u0431\u043E \u0434\u043E\u0434\u0430\u0442\u043A\u043E\u043C ZOREAL ID.",
|
|
798
925
|
bodyApprove: "\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u044C\u0442\u0435 \u0432\u0445\u0456\u0434 \u0443 \u0434\u043E\u0434\u0430\u0442\u043A\u0443 ZOREAL ID.",
|
|
@@ -805,11 +932,14 @@ var TRANSLATIONS = {
|
|
|
805
932
|
noIdBody: "\u0421\u043A\u0430\u043D\u0443\u0439\u0442\u0435 \u0442\u043E\u0439 \u0441\u0430\u043C\u0438\u0439 \u043A\u043E\u0434, \u0449\u043E\u0431 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0456 \u0431\u0435\u0437\u043A\u043E\u0448\u0442\u043E\u0432\u043D\u043E \u0441\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0439\u043E\u0433\u043E. \u0426\u0435 \u0437\u0430\u0439\u043C\u0435 \u043B\u0438\u0448\u0435 \u0445\u0432\u0438\u043B\u0438\u043D\u0443.",
|
|
806
933
|
cancel: "\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438",
|
|
807
934
|
close: "\u0417\u0430\u043A\u0440\u0438\u0442\u0438",
|
|
808
|
-
qrAlt: "QR-\u043A\u043E\u0434 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 ZOREAL"
|
|
935
|
+
qrAlt: "QR-\u043A\u043E\u0434 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 ZOREAL",
|
|
936
|
+
buttonContinue: "\u041F\u0440\u043E\u0434\u043E\u0432\u0436\u0438\u0442\u0438 \u0437 ZOREAL"
|
|
809
937
|
},
|
|
810
938
|
// اردو
|
|
811
939
|
ur: {
|
|
812
940
|
title: "\u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0631\u06CC\u06BA",
|
|
941
|
+
titleIdentify: "\u0627\u067E\u0646\u06CC \u0634\u0646\u0627\u062E\u062A \u06A9\u06CC \u062A\u0635\u062F\u06CC\u0642 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0631\u06CC\u06BA",
|
|
942
|
+
titlePresence: "\u06CC\u06C1 \u062B\u0627\u0628\u062A \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0631\u06CC\u06BA \u06A9\u06C1 \u0622\u067E \u0627\u06CC\u06A9 \u062D\u0642\u06CC\u0642\u06CC \u0627\u0646\u0633\u0627\u0646 \u06C1\u06CC\u06BA",
|
|
813
943
|
titleApprove: "\u0627\u067E\u0646\u06D2 \u0641\u0648\u0646 \u067E\u0631 \u0645\u0646\u0638\u0648\u0631\u06CC \u062F\u06CC\u06BA",
|
|
814
944
|
bodyScan: "\u0627\u067E\u0646\u06D2 \u0641\u0648\u0646 \u06A9\u06D2 \u06A9\u06CC\u0645\u0631\u06D2 \u06CC\u0627 ZOREAL ID \u0627\u06CC\u067E \u0633\u06D2 \u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0631\u06CC\u06BA\u06D4",
|
|
815
945
|
bodyApprove: "\u0627\u067E\u0646\u06CC ZOREAL ID \u0627\u06CC\u067E \u0645\u06CC\u06BA \u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u06CC \u0645\u0646\u0638\u0648\u0631\u06CC \u062F\u06CC\u06BA\u06D4",
|
|
@@ -822,11 +952,14 @@ var TRANSLATIONS = {
|
|
|
822
952
|
noIdBody: "\u0627\u06CC\u067E \u0688\u0627\u0624\u0646 \u0644\u0648\u0688 \u06A9\u0631\u0646\u06D2 \u0627\u0648\u0631 \u0645\u0641\u062A \u0645\u06CC\u06BA \u0627\u06CC\u06A9 \u0628\u0646\u0627\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0648\u06C1\u06CC \u06A9\u0648\u0688 \u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0631\u06CC\u06BA\u06D4 \u0627\u0633 \u0645\u06CC\u06BA \u0635\u0631\u0641 \u0627\u06CC\u06A9 \u0645\u0646\u0679 \u0644\u06AF\u062A\u0627 \u06C1\u06D2\u06D4",
|
|
823
953
|
cancel: "\u0645\u0646\u0633\u0648\u062E \u06A9\u0631\u06CC\u06BA",
|
|
824
954
|
close: "\u0628\u0646\u062F \u06A9\u0631\u06CC\u06BA",
|
|
825
|
-
qrAlt: "ZOREAL \u06A9\u06D2 \u0633\u0627\u062A\u06BE \u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 QR \u06A9\u0648\u0688"
|
|
955
|
+
qrAlt: "ZOREAL \u06A9\u06D2 \u0633\u0627\u062A\u06BE \u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 QR \u06A9\u0648\u0688",
|
|
956
|
+
buttonContinue: "ZOREAL \u06A9\u06D2 \u0633\u0627\u062A\u06BE \u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u06CC\u06BA"
|
|
826
957
|
},
|
|
827
958
|
// Tiếng Việt
|
|
828
959
|
vi: {
|
|
829
960
|
title: "Qu\xE9t \u0111\u1EC3 \u0111\u0103ng nh\u1EADp",
|
|
961
|
+
titleIdentify: "Qu\xE9t \u0111\u1EC3 x\xE1c minh danh t\xEDnh c\u1EE7a b\u1EA1n",
|
|
962
|
+
titlePresence: "Qu\xE9t \u0111\u1EC3 ch\u1EE9ng minh b\u1EA1n l\xE0 ng\u01B0\u1EDDi th\u1EADt",
|
|
830
963
|
titleApprove: "Ph\xEA duy\u1EC7t tr\xEAn \u0111i\u1EC7n tho\u1EA1i c\u1EE7a b\u1EA1n",
|
|
831
964
|
bodyScan: "Qu\xE9t b\u1EB1ng camera \u0111i\u1EC7n tho\u1EA1i ho\u1EB7c \u1EE9ng d\u1EE5ng ZOREAL ID.",
|
|
832
965
|
bodyApprove: "Ph\xEA duy\u1EC7t \u0111\u0103ng nh\u1EADp trong \u1EE9ng d\u1EE5ng ZOREAL ID c\u1EE7a b\u1EA1n.",
|
|
@@ -839,7 +972,8 @@ var TRANSLATIONS = {
|
|
|
839
972
|
noIdBody: "Qu\xE9t c\xF9ng m\xE3 n\xE0y \u0111\u1EC3 t\u1EA3i \u1EE9ng d\u1EE5ng v\xE0 t\u1EA1o t\xE0i kho\u1EA3n mi\u1EC5n ph\xED. Ch\u1EC9 m\u1EA5t m\u1ED9t ph\xFAt.",
|
|
840
973
|
cancel: "H\u1EE7y",
|
|
841
974
|
close: "\u0110\xF3ng",
|
|
842
|
-
qrAlt: "M\xE3 QR \u0111\u1EC3 \u0111\u0103ng nh\u1EADp b\u1EB1ng ZOREAL"
|
|
975
|
+
qrAlt: "M\xE3 QR \u0111\u1EC3 \u0111\u0103ng nh\u1EADp b\u1EB1ng ZOREAL",
|
|
976
|
+
buttonContinue: "Ti\u1EBFp t\u1EE5c v\u1EDBi ZOREAL"
|
|
843
977
|
}
|
|
844
978
|
};
|
|
845
979
|
var RTL = /* @__PURE__ */ new Set(["ar", "he", "iw", "ur"]);
|
|
@@ -931,8 +1065,20 @@ var LIGHT = `
|
|
|
931
1065
|
--zrl-accent-ink: #04698a;
|
|
932
1066
|
--zrl-urgent: #b4761a;
|
|
933
1067
|
--zrl-qr-bg: #ffffff;
|
|
1068
|
+
--zrl-qr-filter: none;
|
|
1069
|
+
--zrl-qr-spent-filter: blur(3px);
|
|
1070
|
+
--zrl-qr-blend: normal;
|
|
934
1071
|
--zrl-shadow: 0 1px 2px rgba(16, 18, 27, 0.06), 0 20px 50px -12px rgba(16, 18, 27, 0.3);
|
|
935
1072
|
--zrl-ring: rgba(16, 18, 27, 0.07);
|
|
1073
|
+
/* The light on the QR well's edge. Brand blue on both grounds, a lighter
|
|
1074
|
+
tint at the head; only its strength is themed, see the dark block. */
|
|
1075
|
+
--zrl-beam: #00b4d9;
|
|
1076
|
+
--zrl-beam-head: #7fe0f4;
|
|
1077
|
+
--zrl-beam-line: 2px;
|
|
1078
|
+
--zrl-glow-core: 4px;
|
|
1079
|
+
--zrl-glow-reach: 24px;
|
|
1080
|
+
--zrl-glow-blur: 8px;
|
|
1081
|
+
--zrl-glow-opacity: 0.6;
|
|
936
1082
|
`;
|
|
937
1083
|
var DARK = `
|
|
938
1084
|
--zrl-scrim: rgba(0, 0, 0, 0.62);
|
|
@@ -947,12 +1093,24 @@ var DARK = `
|
|
|
947
1093
|
--zrl-accent-soft: #0d3b47;
|
|
948
1094
|
--zrl-accent-ink: #7fdcf0;
|
|
949
1095
|
--zrl-urgent: #e0a952;
|
|
950
|
-
/* The
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
--zrl-qr-bg:
|
|
1096
|
+
/* The code is drawn light on the dark surface: the panel is transparent
|
|
1097
|
+
and the image is inverted and screened, so only the modules and the
|
|
1098
|
+
mark show. */
|
|
1099
|
+
--zrl-qr-bg: transparent;
|
|
1100
|
+
--zrl-qr-filter: invert(1);
|
|
1101
|
+
--zrl-qr-spent-filter: invert(1) blur(3px);
|
|
1102
|
+
--zrl-qr-blend: screen;
|
|
954
1103
|
--zrl-shadow: 0 1px 2px rgba(0, 0, 0, 0.4), 0 20px 50px -12px rgba(0, 0, 0, 0.65);
|
|
955
1104
|
--zrl-ring: rgba(255, 255, 255, 0.1);
|
|
1105
|
+
/* A glow that reads on a white card disappears on a dark one: the light
|
|
1106
|
+
here is brighter and wider, and its halo reaches further out. */
|
|
1107
|
+
--zrl-beam: #22c8ec;
|
|
1108
|
+
--zrl-beam-head: #c2f3fc;
|
|
1109
|
+
--zrl-beam-line: 3px;
|
|
1110
|
+
--zrl-glow-core: 6px;
|
|
1111
|
+
--zrl-glow-reach: 32px;
|
|
1112
|
+
--zrl-glow-blur: 10px;
|
|
1113
|
+
--zrl-glow-opacity: 0.85;
|
|
956
1114
|
`;
|
|
957
1115
|
var CSS = `
|
|
958
1116
|
.${PREFIX}-root { ${LIGHT} }
|
|
@@ -1024,16 +1182,10 @@ var CSS = `
|
|
|
1024
1182
|
border: 1px solid var(--zrl-line);
|
|
1025
1183
|
border-radius: var(--zrl-radius);
|
|
1026
1184
|
background: var(--zrl-qr-bg);
|
|
1027
|
-
/* The light on the edge takes its shape
|
|
1028
|
-
|
|
1029
|
-
it at the head, no other hue. */
|
|
1185
|
+
/* The light on the edge takes its shape from here and its colour and
|
|
1186
|
+
strength from the theme tokens above. One lap in 4s on every tier. */
|
|
1030
1187
|
--zrl-radius: 16px;
|
|
1031
|
-
--zrl-beam: #00b4d9;
|
|
1032
|
-
--zrl-beam-head: #7fe0f4;
|
|
1033
|
-
--zrl-beam-size: 100px;
|
|
1034
1188
|
--zrl-beam-time: 4s;
|
|
1035
|
-
--zrl-glow-reach: 20px;
|
|
1036
|
-
--zrl-glow-core: 3px;
|
|
1037
1189
|
}
|
|
1038
1190
|
|
|
1039
1191
|
/* The light on the well's edge: a short comet running along the border, with
|
|
@@ -1046,7 +1198,7 @@ var CSS = `
|
|
|
1046
1198
|
before 120 and Safari before 15.4; the unprefixed one, declared after it,
|
|
1047
1199
|
wins everywhere else.
|
|
1048
1200
|
|
|
1049
|
-
qr-beam keeps a
|
|
1201
|
+
qr-beam keeps a thin ring on the border line: the comet itself.
|
|
1050
1202
|
qr-beam-glow is the glow: a wide band outside the well that blurs whatever
|
|
1051
1203
|
is inside it, and inside it qr-beam-glow-band keeps a 3px ring with a
|
|
1052
1204
|
second copy of the comet. The blur has to sit on the parent because a
|
|
@@ -1061,9 +1213,9 @@ var CSS = `
|
|
|
1061
1213
|
.${PREFIX}-qr-beam-glow,
|
|
1062
1214
|
.${PREFIX}-qr-beam-glow-band {
|
|
1063
1215
|
position: absolute;
|
|
1064
|
-
inset: -
|
|
1065
|
-
border:
|
|
1066
|
-
border-radius: var(--zrl-radius);
|
|
1216
|
+
inset: calc(0px - var(--zrl-beam-line));
|
|
1217
|
+
border: var(--zrl-beam-line) solid transparent;
|
|
1218
|
+
border-radius: calc(var(--zrl-radius) - 1px + var(--zrl-beam-line));
|
|
1067
1219
|
pointer-events: none;
|
|
1068
1220
|
-webkit-mask: linear-gradient(transparent, transparent), linear-gradient(#fff, #fff);
|
|
1069
1221
|
-webkit-mask-clip: padding-box, border-box;
|
|
@@ -1076,8 +1228,9 @@ var CSS = `
|
|
|
1076
1228
|
inset: calc(0px - var(--zrl-glow-reach));
|
|
1077
1229
|
border-width: var(--zrl-glow-reach);
|
|
1078
1230
|
border-radius: calc(var(--zrl-radius) - 1px + var(--zrl-glow-reach));
|
|
1079
|
-
filter: blur(
|
|
1080
|
-
opacity:
|
|
1231
|
+
filter: blur(var(--zrl-glow-blur));
|
|
1232
|
+
opacity: var(--zrl-glow-opacity);
|
|
1233
|
+
will-change: filter;
|
|
1081
1234
|
}
|
|
1082
1235
|
.${PREFIX}-qr-beam-glow-band {
|
|
1083
1236
|
inset: calc(0px - var(--zrl-glow-core));
|
|
@@ -1100,20 +1253,24 @@ var CSS = `
|
|
|
1100
1253
|
transition: opacity 400ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
1101
1254
|
}
|
|
1102
1255
|
|
|
1103
|
-
/* The moving light
|
|
1104
|
-
|
|
1256
|
+
/* The moving light: an oversized square carrying a conic sweep, rotated
|
|
1257
|
+
whole. A transform animation runs on the compositor, so the light keeps
|
|
1258
|
+
moving while the page is busy; animating the gradient angle instead
|
|
1259
|
+
repaints every frame on the main thread and stutters. */
|
|
1105
1260
|
.${PREFIX}-qr-beam::after,
|
|
1106
1261
|
.${PREFIX}-qr-beam-glow-band::after {
|
|
1107
1262
|
content: '';
|
|
1108
1263
|
position: absolute;
|
|
1109
1264
|
inset: -50%;
|
|
1110
1265
|
background: conic-gradient(
|
|
1111
|
-
from
|
|
1112
|
-
transparent 0deg
|
|
1113
|
-
var(--zrl-beam)
|
|
1266
|
+
from 0deg,
|
|
1267
|
+
transparent 0deg 220deg,
|
|
1268
|
+
var(--zrl-beam) 330deg,
|
|
1269
|
+
var(--zrl-beam-head) 348deg,
|
|
1114
1270
|
transparent 356deg 360deg
|
|
1115
1271
|
);
|
|
1116
|
-
animation: ${PREFIX}-orbit
|
|
1272
|
+
animation: ${PREFIX}-orbit var(--zrl-beam-time) linear infinite;
|
|
1273
|
+
will-change: transform;
|
|
1117
1274
|
transition: opacity 400ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
1118
1275
|
}
|
|
1119
1276
|
|
|
@@ -1133,6 +1290,8 @@ var CSS = `
|
|
|
1133
1290
|
width: 100%;
|
|
1134
1291
|
height: 100%;
|
|
1135
1292
|
border-radius: 8px;
|
|
1293
|
+
filter: var(--zrl-qr-filter);
|
|
1294
|
+
mix-blend-mode: var(--zrl-qr-blend);
|
|
1136
1295
|
transition: filter 300ms cubic-bezier(0.23, 1, 0.32, 1),
|
|
1137
1296
|
opacity 300ms cubic-bezier(0.23, 1, 0.32, 1),
|
|
1138
1297
|
transform 300ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
@@ -1141,7 +1300,7 @@ var CSS = `
|
|
|
1141
1300
|
/* Once the code is claimed the QR is spent. Blurring it out rather than
|
|
1142
1301
|
swapping it keeps one object on screen through the state change, so the eye
|
|
1143
1302
|
reads a transformation instead of two things trading places. */
|
|
1144
|
-
.${PREFIX}-qr[data-spent="true"] { opacity: 0.2; filter:
|
|
1303
|
+
.${PREFIX}-qr[data-spent="true"] { opacity: 0.2; filter: var(--zrl-qr-spent-filter); transform: scale(0.96); }
|
|
1145
1304
|
|
|
1146
1305
|
.${PREFIX}-qr-overlay {
|
|
1147
1306
|
position: absolute;
|
|
@@ -1234,7 +1393,11 @@ var CSS = `
|
|
|
1234
1393
|
margin: 6px 0 0;
|
|
1235
1394
|
font-size: 12px;
|
|
1236
1395
|
color: var(--zrl-ink-mute);
|
|
1396
|
+
text-decoration: none;
|
|
1397
|
+
border-radius: 6px;
|
|
1398
|
+
transition: color 150ms ease-out;
|
|
1237
1399
|
}
|
|
1400
|
+
.${PREFIX}-secured:hover { color: var(--zrl-ink); }
|
|
1238
1401
|
|
|
1239
1402
|
.${PREFIX}-close {
|
|
1240
1403
|
position: absolute;
|
|
@@ -1270,53 +1433,7 @@ var CSS = `
|
|
|
1270
1433
|
70%, 100% { transform: scale(2.6); opacity: 0 }
|
|
1271
1434
|
}
|
|
1272
1435
|
|
|
1273
|
-
/* Three ways to move the light, one look at rest.
|
|
1274
|
-
Where offset-path takes a rect() (Chrome 116, Firefox 122, Safari 18) the
|
|
1275
|
-
comet rides the edge. Before that, a conic gradient turns inside the same
|
|
1276
|
-
masks instead: on a registered custom property where @property exists, and
|
|
1277
|
-
by rotating an oversized square where it does not, since an untyped custom
|
|
1278
|
-
property cannot interpolate and the light would snap once a cycle.
|
|
1279
|
-
There is no direct query for @property support. transition-behavior
|
|
1280
|
-
shipped after it in every engine (Chrome 117 vs 85, Firefox 129 vs 128,
|
|
1281
|
-
Safari 17.4 vs 16.4), so it stands in: a yes is never wrong, and a no only
|
|
1282
|
-
sends a capable browser down the transform tier, which looks the same.
|
|
1283
|
-
inherits: false so the angle stays on the element that animates it and
|
|
1284
|
-
never reaches the host page or the well. */
|
|
1285
|
-
@property --zrl-angle {
|
|
1286
|
-
syntax: '<angle>';
|
|
1287
|
-
inherits: false;
|
|
1288
|
-
initial-value: 0deg;
|
|
1289
|
-
}
|
|
1290
1436
|
@keyframes ${PREFIX}-orbit { to { transform: rotate(360deg) } }
|
|
1291
|
-
@keyframes ${PREFIX}-orbit-angle { to { --zrl-angle: 360deg } }
|
|
1292
|
-
@keyframes ${PREFIX}-beam { to { offset-distance: 100% } }
|
|
1293
|
-
@supports (transition-behavior: allow-discrete) {
|
|
1294
|
-
.${PREFIX}-qr-beam::after {
|
|
1295
|
-
inset: -1px;
|
|
1296
|
-
animation-name: ${PREFIX}-orbit-angle;
|
|
1297
|
-
}
|
|
1298
|
-
.${PREFIX}-qr-beam-glow-band::after {
|
|
1299
|
-
inset: calc(0px - var(--zrl-glow-core));
|
|
1300
|
-
animation-name: ${PREFIX}-orbit-angle;
|
|
1301
|
-
}
|
|
1302
|
-
}
|
|
1303
|
-
/* The comet: a square that rides the well's edge on a rounded-rect path, its
|
|
1304
|
-
anchor a little ahead of centre, turned to face the way it travels, and
|
|
1305
|
-
masked down to what its overlay allows. The gradient runs against the
|
|
1306
|
-
direction of travel: a light head, the blue body, nothing behind. One lap
|
|
1307
|
-
in 4s, linear: continuous motion has no ease. */
|
|
1308
|
-
@supports (offset-path: rect(0 auto auto 0)) {
|
|
1309
|
-
.${PREFIX}-qr-beam::after,
|
|
1310
|
-
.${PREFIX}-qr-beam-glow-band::after {
|
|
1311
|
-
inset: auto;
|
|
1312
|
-
width: var(--zrl-beam-size);
|
|
1313
|
-
height: var(--zrl-beam-size);
|
|
1314
|
-
background: linear-gradient(to left, var(--zrl-beam-head), var(--zrl-beam), transparent);
|
|
1315
|
-
offset-path: rect(0 auto auto 0 round calc(var(--zrl-radius) - 1px));
|
|
1316
|
-
offset-anchor: 60% 50%;
|
|
1317
|
-
animation: ${PREFIX}-beam var(--zrl-beam-time) linear infinite;
|
|
1318
|
-
}
|
|
1319
|
-
}
|
|
1320
1437
|
|
|
1321
1438
|
@media (prefers-reduced-motion: reduce) {
|
|
1322
1439
|
.${PREFIX}-scrim,
|
|
@@ -1465,7 +1582,10 @@ function mountPairingModal(state, options) {
|
|
|
1465
1582
|
const footer = el("div", cx("footer"));
|
|
1466
1583
|
const cancelBtn = el("button", cx("cancel"), t.cancel);
|
|
1467
1584
|
cancelBtn.type = "button";
|
|
1468
|
-
const secured = el("
|
|
1585
|
+
const secured = el("a", cx("secured"));
|
|
1586
|
+
secured.href = "https://zoreal.com";
|
|
1587
|
+
secured.target = "_blank";
|
|
1588
|
+
secured.rel = "noopener";
|
|
1469
1589
|
secured.append(strokeIcon(13, ["M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z", "m9 12 2 2 4-4"]), document.createTextNode(t.secured));
|
|
1470
1590
|
footer.append(cancelBtn, secured);
|
|
1471
1591
|
card.append(closeBtn, body, help, footer);
|
|
@@ -1497,7 +1617,7 @@ function mountPairingModal(state, options) {
|
|
|
1497
1617
|
};
|
|
1498
1618
|
const paint = (s) => {
|
|
1499
1619
|
const settled = s.status === "claimed" || s.status === "enrolling";
|
|
1500
|
-
title.textContent = settled ? t.titleApprove : t.
|
|
1620
|
+
title.textContent = settled ? t.titleApprove : titleFor(t, options.intent ?? "sign-in");
|
|
1501
1621
|
bodyText.textContent = s.status === "enrolling" ? t.bodyEnrolling : settled ? t.bodyApprove : t.bodyScan;
|
|
1502
1622
|
statusLabel.textContent = settled ? t.waitingApproval : t.waiting;
|
|
1503
1623
|
qr.dataset.spent = String(settled);
|
|
@@ -1571,6 +1691,7 @@ function startLogin(options) {
|
|
|
1571
1691
|
const issuer = options.issuer ?? DEFAULT_ISSUER;
|
|
1572
1692
|
const controller = new AbortController();
|
|
1573
1693
|
const useAppLink = options.display === "link" || options.display !== "qr" && isMobileUserAgent();
|
|
1694
|
+
const intent = resolveIntent(options.intent, options.scope, options.acr_values);
|
|
1574
1695
|
const surface = {};
|
|
1575
1696
|
const cancel = () => controller.abort();
|
|
1576
1697
|
let modal = null;
|
|
@@ -1625,6 +1746,7 @@ function startLogin(options) {
|
|
|
1625
1746
|
qrUrl: surface.qrUrl,
|
|
1626
1747
|
qrRefreshSeconds,
|
|
1627
1748
|
appLink: useAppLink,
|
|
1749
|
+
intent,
|
|
1628
1750
|
cancel
|
|
1629
1751
|
});
|
|
1630
1752
|
let lastPolled = { status: "pending", expiresIn: started.expires_in };
|
|
@@ -1633,6 +1755,7 @@ function startLogin(options) {
|
|
|
1633
1755
|
if ((options.pairingUI ?? "modal") === "modal" && !useAppLink) {
|
|
1634
1756
|
modal = mountPairingModal(initial, {
|
|
1635
1757
|
onCancel: cancel,
|
|
1758
|
+
intent,
|
|
1636
1759
|
locale: options.locale,
|
|
1637
1760
|
theme: options.theme,
|
|
1638
1761
|
timeoutMs: options.pairingTimeoutMs
|
|
@@ -1760,6 +1883,7 @@ function startLogin(options) {
|
|
|
1760
1883
|
isMobileUserAgent,
|
|
1761
1884
|
mountPairingModal,
|
|
1762
1885
|
pollUntilApproved,
|
|
1886
|
+
resolveIntent,
|
|
1763
1887
|
startLogin,
|
|
1764
1888
|
startPairing,
|
|
1765
1889
|
unsafeClaims
|