@oxyhq/core 12.5.0 → 12.5.2
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/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/crypto/polyfill.js +85 -17
- package/dist/cjs/i18n/locales/ar-SA.json +3 -1
- package/dist/cjs/i18n/locales/ca-ES.json +3 -1
- package/dist/cjs/i18n/locales/de-DE.json +3 -1
- package/dist/cjs/i18n/locales/en-US.json +14 -1
- package/dist/cjs/i18n/locales/es-ES.json +14 -1
- package/dist/cjs/i18n/locales/fr-FR.json +3 -1
- package/dist/cjs/i18n/locales/it-IT.json +3 -1
- package/dist/cjs/i18n/locales/ja-JP.json +3 -1
- package/dist/cjs/i18n/locales/ko-KR.json +3 -1
- package/dist/cjs/i18n/locales/locales/ar-SA.json +3 -1
- package/dist/cjs/i18n/locales/locales/ca-ES.json +3 -1
- package/dist/cjs/i18n/locales/locales/de-DE.json +3 -1
- package/dist/cjs/i18n/locales/locales/en-US.json +14 -1
- package/dist/cjs/i18n/locales/locales/es-ES.json +14 -1
- package/dist/cjs/i18n/locales/locales/fr-FR.json +3 -1
- package/dist/cjs/i18n/locales/locales/it-IT.json +3 -1
- package/dist/cjs/i18n/locales/locales/ja-JP.json +3 -1
- package/dist/cjs/i18n/locales/locales/ko-KR.json +3 -1
- package/dist/cjs/i18n/locales/locales/pt-PT.json +3 -1
- package/dist/cjs/i18n/locales/locales/zh-CN.json +3 -1
- package/dist/cjs/i18n/locales/pt-PT.json +3 -1
- package/dist/cjs/i18n/locales/zh-CN.json +3 -1
- package/dist/cjs/mixins/OxyServices.user.js +9 -1
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/crypto/polyfill.js +86 -18
- package/dist/esm/i18n/locales/ar-SA.json +3 -1
- package/dist/esm/i18n/locales/ca-ES.json +3 -1
- package/dist/esm/i18n/locales/de-DE.json +3 -1
- package/dist/esm/i18n/locales/en-US.json +14 -1
- package/dist/esm/i18n/locales/es-ES.json +14 -1
- package/dist/esm/i18n/locales/fr-FR.json +3 -1
- package/dist/esm/i18n/locales/it-IT.json +3 -1
- package/dist/esm/i18n/locales/ja-JP.json +3 -1
- package/dist/esm/i18n/locales/ko-KR.json +3 -1
- package/dist/esm/i18n/locales/locales/ar-SA.json +3 -1
- package/dist/esm/i18n/locales/locales/ca-ES.json +3 -1
- package/dist/esm/i18n/locales/locales/de-DE.json +3 -1
- package/dist/esm/i18n/locales/locales/en-US.json +14 -1
- package/dist/esm/i18n/locales/locales/es-ES.json +14 -1
- package/dist/esm/i18n/locales/locales/fr-FR.json +3 -1
- package/dist/esm/i18n/locales/locales/it-IT.json +3 -1
- package/dist/esm/i18n/locales/locales/ja-JP.json +3 -1
- package/dist/esm/i18n/locales/locales/ko-KR.json +3 -1
- package/dist/esm/i18n/locales/locales/pt-PT.json +3 -1
- package/dist/esm/i18n/locales/locales/zh-CN.json +3 -1
- package/dist/esm/i18n/locales/pt-PT.json +3 -1
- package/dist/esm/i18n/locales/zh-CN.json +3 -1
- package/dist/esm/mixins/OxyServices.user.js +9 -1
- package/dist/types/.tsbuildinfo +1 -1
- package/dist/types/crypto/polyfill.d.ts +16 -4
- package/package.json +5 -2
- package/src/crypto/__tests__/polyfill.test.ts +109 -0
- package/src/crypto/polyfill.ts +94 -18
- package/src/i18n/locales/ar-SA.json +3 -1
- package/src/i18n/locales/ca-ES.json +3 -1
- package/src/i18n/locales/de-DE.json +3 -1
- package/src/i18n/locales/en-US.json +14 -1
- package/src/i18n/locales/es-ES.json +14 -1
- package/src/i18n/locales/fr-FR.json +3 -1
- package/src/i18n/locales/it-IT.json +3 -1
- package/src/i18n/locales/ja-JP.json +3 -1
- package/src/i18n/locales/ko-KR.json +3 -1
- package/src/i18n/locales/pt-PT.json +3 -1
- package/src/i18n/locales/zh-CN.json +3 -1
- package/src/mixins/OxyServices.user.ts +9 -1
|
@@ -5,10 +5,22 @@
|
|
|
5
5
|
* Ensures Buffer and crypto.getRandomValues are available
|
|
6
6
|
* across all platforms (Node.js, Browser, React Native).
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* Guard order when installing a `getRandomValues` shim (see bottom of file and
|
|
9
|
+
* {@link cryptoPolyfill}):
|
|
10
|
+
*
|
|
11
|
+
* 1. A REAL `globalThis.crypto.getRandomValues` — used as-is (browser, Node
|
|
12
|
+
* >= 20, modern Hermes). The shim below is only installed when the host is
|
|
13
|
+
* missing it, so this branch is the install-time gate.
|
|
14
|
+
* 2. Node — backed by the built-in `node:crypto` module (`webcrypto`, else
|
|
15
|
+
* `randomFillSync`). This is what a Node runtime WITHOUT a global WebCrypto
|
|
16
|
+
* (Node 18 script entrypoints, some embedded hosts) falls back to.
|
|
17
|
+
* 3. React Native — `expo-crypto.getRandomBytes` (statically imported via the
|
|
18
|
+
* per-platform `platform/crypto` module in `@oxyhq/protocol`).
|
|
19
|
+
*
|
|
20
|
+
* Historically step (2) delegated to `@oxyhq/protocol`'s RN-only
|
|
21
|
+
* `getRandomBytesRN`, which THROWS on Node — so any Node host lacking a global
|
|
22
|
+
* WebCrypto crashed here instead of getting randomness. It is now a proper
|
|
23
|
+
* Node-backed implementation.
|
|
12
24
|
*/
|
|
13
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
26
|
exports.Buffer = void 0;
|
|
@@ -32,23 +44,79 @@ if (!globalObject.Buffer) {
|
|
|
32
44
|
globalObject.Buffer = buffer_1.Buffer;
|
|
33
45
|
}
|
|
34
46
|
/**
|
|
35
|
-
*
|
|
36
|
-
* `
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
*
|
|
47
|
+
* Lazily-resolved `node:crypto` module, cached after the first attempt.
|
|
48
|
+
* `undefined` = not tried yet; `null` = tried and unavailable (non-Node host).
|
|
49
|
+
*/
|
|
50
|
+
let cachedNodeCrypto;
|
|
51
|
+
/**
|
|
52
|
+
* Synchronously load `node:crypto` on a Node runtime, or `null` elsewhere.
|
|
53
|
+
*
|
|
54
|
+
* Uses a guarded, Node-only `require`. Every runtime that actually reaches this
|
|
55
|
+
* branch has a working CommonJS `require`: `@oxyhq/core` publishes no
|
|
56
|
+
* `"type": "module"`, so Node loads it as CommonJS and the `require` free
|
|
57
|
+
* variable is present. Browsers never reach here (they own `globalThis.crypto`,
|
|
58
|
+
* so this polyfill is never installed) and React Native takes the
|
|
59
|
+
* `getRandomBytesRN` branch — so the `node:crypto` reference is dead code in
|
|
60
|
+
* those bundles, and Expo's Metro resolver shims `node:*` builtins, keeping
|
|
61
|
+
* web/native bundles green.
|
|
62
|
+
*/
|
|
63
|
+
function loadNodeCryptoSync() {
|
|
64
|
+
if (cachedNodeCrypto !== undefined) {
|
|
65
|
+
return cachedNodeCrypto;
|
|
66
|
+
}
|
|
67
|
+
if (typeof require !== 'function') {
|
|
68
|
+
cachedNodeCrypto = null;
|
|
69
|
+
return cachedNodeCrypto;
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
cachedNodeCrypto = require('node:crypto');
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// No Node crypto (unexpected on a real Node host) — degrade to the next
|
|
76
|
+
// mechanism rather than crash.
|
|
77
|
+
cachedNodeCrypto = null;
|
|
78
|
+
}
|
|
79
|
+
return cachedNodeCrypto;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Fill `array` with cryptographically-secure random bytes from `node:crypto`.
|
|
83
|
+
* Prefers `webcrypto.getRandomValues`; falls back to `randomFillSync`. Returns
|
|
84
|
+
* `false` when Node crypto is unavailable so the caller can try the next
|
|
85
|
+
* mechanism.
|
|
41
86
|
*/
|
|
42
|
-
function
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
87
|
+
function fillFromNodeCrypto(array) {
|
|
88
|
+
const nodeCrypto = loadNodeCryptoSync();
|
|
89
|
+
if (!nodeCrypto) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
const webcrypto = nodeCrypto.webcrypto;
|
|
93
|
+
if (webcrypto && typeof webcrypto.getRandomValues === 'function') {
|
|
94
|
+
try {
|
|
95
|
+
webcrypto.getRandomValues(array);
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// `webcrypto.getRandomValues` rejects non-integer views (Float*Array,
|
|
100
|
+
// DataView); fall through to `randomFillSync`, which accepts any view.
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (typeof nodeCrypto.randomFillSync === 'function') {
|
|
104
|
+
nodeCrypto.randomFillSync(array);
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
return false;
|
|
48
108
|
}
|
|
49
109
|
const cryptoPolyfill = {
|
|
50
110
|
getRandomValues(array) {
|
|
51
|
-
|
|
111
|
+
// Node: back the CSPRNG with `node:crypto`. This is the path that matters on
|
|
112
|
+
// Node runtimes shipping WITHOUT a global WebCrypto — where delegating to
|
|
113
|
+
// the RN-only expo-crypto stub would throw.
|
|
114
|
+
if ((0, protocol_1.isNodeJS)() && fillFromNodeCrypto(array)) {
|
|
115
|
+
return array;
|
|
116
|
+
}
|
|
117
|
+
// React Native (and any non-Node host without WebCrypto): synchronous
|
|
118
|
+
// expo-crypto via @oxyhq/protocol's RN `platform/crypto` variant.
|
|
119
|
+
const bytes = (0, protocol_1.getRandomBytesRN)(array.byteLength);
|
|
52
120
|
const uint8View = new Uint8Array(array.buffer, array.byteOffset, array.byteLength);
|
|
53
121
|
uint8View.set(bytes);
|
|
54
122
|
return array;
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "جارٍ تسجيل الدخول…",
|
|
119
119
|
"getCommons": "احصل على Commons",
|
|
120
120
|
"commonsNotInstalled": "لا تملك Commons؟ احصل على التطبيق لتسجيل الدخول بمعرّف Oxy الخاص بك.",
|
|
121
|
-
"showQrAnyway": "لدي Commons على جهاز آخر"
|
|
121
|
+
"showQrAnyway": "لدي Commons على جهاز آخر",
|
|
122
|
+
"switchWhileSignedInAs": "تبديل الحساب، مسجّل الدخول باسم {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "ممنوح {{relative}}",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "Iniciant sessió…",
|
|
119
119
|
"getCommons": "Descarrega Commons",
|
|
120
120
|
"commonsNotInstalled": "No tens Commons? Descarrega l'app per iniciar sessió amb el teu Oxy ID.",
|
|
121
|
-
"showQrAnyway": "Tinc Commons en un altre dispositiu"
|
|
121
|
+
"showQrAnyway": "Tinc Commons en un altre dispositiu",
|
|
122
|
+
"switchWhileSignedInAs": "Canvia de compte, amb la sessió iniciada com a {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "Concedit {{relative}}",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "Anmeldung läuft…",
|
|
119
119
|
"getCommons": "Commons herunterladen",
|
|
120
120
|
"commonsNotInstalled": "Kein Commons? Holen Sie sich die App, um sich mit Ihrer Oxy-ID anzumelden.",
|
|
121
|
-
"showQrAnyway": "Ich habe Commons auf einem anderen Gerät"
|
|
121
|
+
"showQrAnyway": "Ich habe Commons auf einem anderen Gerät",
|
|
122
|
+
"switchWhileSignedInAs": "Konto wechseln, angemeldet als {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "Gewährt {{relative}}",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -420,7 +420,8 @@
|
|
|
420
420
|
"passkeySigningIn": "Signing in…",
|
|
421
421
|
"getCommons": "Get Commons",
|
|
422
422
|
"commonsNotInstalled": "Don't have Commons? Get the app to sign in with your Oxy ID.",
|
|
423
|
-
"showQrAnyway": "I have Commons on another device"
|
|
423
|
+
"showQrAnyway": "I have Commons on another device",
|
|
424
|
+
"switchWhileSignedInAs": "Switch account, signed in as {{name}}"
|
|
424
425
|
},
|
|
425
426
|
"reputation": {
|
|
426
427
|
"faq": {
|
|
@@ -1338,6 +1339,8 @@
|
|
|
1338
1339
|
"creditCard": "Credit Card",
|
|
1339
1340
|
"enterCardSecurely": "Enter your card details securely",
|
|
1340
1341
|
"acceptedCards": "We accept Visa, Mastercard, and more",
|
|
1342
|
+
"cardNumber": "Card number",
|
|
1343
|
+
"expiry": "Expiry",
|
|
1341
1344
|
"readyToProcess": "Ready to process payment...",
|
|
1342
1345
|
"payWithWallet": "Pay with your in-app wallet",
|
|
1343
1346
|
"balance": "Balance: {{balance}}",
|
|
@@ -1590,6 +1593,7 @@
|
|
|
1590
1593
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
1591
1594
|
},
|
|
1592
1595
|
"item": {
|
|
1596
|
+
"granted": "Granted {{relative}}",
|
|
1593
1597
|
"lastUsed": "Last used {{relative}}"
|
|
1594
1598
|
},
|
|
1595
1599
|
"confirm": {
|
|
@@ -1652,6 +1656,12 @@
|
|
|
1652
1656
|
"description": "A programmatic account with service credentials"
|
|
1653
1657
|
}
|
|
1654
1658
|
},
|
|
1659
|
+
"organizationCategory": {
|
|
1660
|
+
"agency": "Real estate agency",
|
|
1661
|
+
"cooperative": "Housing cooperative",
|
|
1662
|
+
"landlord": "Landlord / property manager",
|
|
1663
|
+
"other": "Other organization"
|
|
1664
|
+
},
|
|
1655
1665
|
"create": {
|
|
1656
1666
|
"title": "Create account",
|
|
1657
1667
|
"subtitle": "Create an account you control. It will have its own profile, members, and apps.",
|
|
@@ -1669,6 +1679,9 @@
|
|
|
1669
1679
|
"invalidChars": "Only letters, numbers, hyphens, and underscores",
|
|
1670
1680
|
"checkFailed": "Could not check availability"
|
|
1671
1681
|
},
|
|
1682
|
+
"organizationCategory": {
|
|
1683
|
+
"label": "Organization type"
|
|
1684
|
+
},
|
|
1672
1685
|
"toasts": {
|
|
1673
1686
|
"success": "Account created",
|
|
1674
1687
|
"failed": "Failed to create account"
|
|
@@ -618,7 +618,8 @@
|
|
|
618
618
|
"passkeySigningIn": "Iniciando sesión…",
|
|
619
619
|
"getCommons": "Descargar Commons",
|
|
620
620
|
"commonsNotInstalled": "¿No tienes Commons? Descarga la app para iniciar sesión con tu Oxy ID.",
|
|
621
|
-
"showQrAnyway": "Tengo Commons en otro dispositivo"
|
|
621
|
+
"showQrAnyway": "Tengo Commons en otro dispositivo",
|
|
622
|
+
"switchWhileSignedInAs": "Cambiar de cuenta, con la sesión iniciada como {{name}}"
|
|
622
623
|
},
|
|
623
624
|
"feedback": {
|
|
624
625
|
"type": {
|
|
@@ -1338,6 +1339,8 @@
|
|
|
1338
1339
|
"creditCard": "Tarjeta de crédito",
|
|
1339
1340
|
"enterCardSecurely": "Introduce los datos de tu tarjeta de forma segura",
|
|
1340
1341
|
"acceptedCards": "Aceptamos Visa, Mastercard y más",
|
|
1342
|
+
"cardNumber": "Número de tarjeta",
|
|
1343
|
+
"expiry": "Caducidad",
|
|
1341
1344
|
"readyToProcess": "Listo para procesar el pago...",
|
|
1342
1345
|
"payWithWallet": "Paga con tu billetera de la app",
|
|
1343
1346
|
"balance": "Saldo: {{balance}}",
|
|
@@ -1590,6 +1593,7 @@
|
|
|
1590
1593
|
"subtitle": "Las apps que autorices a iniciar sesión con tu cuenta Oxy aparecerán aquí"
|
|
1591
1594
|
},
|
|
1592
1595
|
"item": {
|
|
1596
|
+
"granted": "Concedido {{relative}}",
|
|
1593
1597
|
"lastUsed": "Último uso: {{relative}}"
|
|
1594
1598
|
},
|
|
1595
1599
|
"confirm": {
|
|
@@ -1652,6 +1656,12 @@
|
|
|
1652
1656
|
"description": "Una cuenta programática con credenciales de servicio"
|
|
1653
1657
|
}
|
|
1654
1658
|
},
|
|
1659
|
+
"organizationCategory": {
|
|
1660
|
+
"agency": "Agencia inmobiliaria",
|
|
1661
|
+
"cooperative": "Cooperativa de vivienda",
|
|
1662
|
+
"landlord": "Propietario / administrador de fincas",
|
|
1663
|
+
"other": "Otra organización"
|
|
1664
|
+
},
|
|
1655
1665
|
"create": {
|
|
1656
1666
|
"title": "Crear cuenta",
|
|
1657
1667
|
"subtitle": "Crea una cuenta que tú controlas. Tendrá su propio perfil, miembros y aplicaciones.",
|
|
@@ -1669,6 +1679,9 @@
|
|
|
1669
1679
|
"invalidChars": "Solo letras, números, guiones y guiones bajos",
|
|
1670
1680
|
"checkFailed": "No se pudo comprobar la disponibilidad"
|
|
1671
1681
|
},
|
|
1682
|
+
"organizationCategory": {
|
|
1683
|
+
"label": "Tipo de organización"
|
|
1684
|
+
},
|
|
1672
1685
|
"toasts": {
|
|
1673
1686
|
"success": "Cuenta creada",
|
|
1674
1687
|
"failed": "No se pudo crear la cuenta"
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "Connexion…",
|
|
119
119
|
"getCommons": "Obtenir Commons",
|
|
120
120
|
"commonsNotInstalled": "Pas de Commons ? Téléchargez l'app pour vous connecter avec votre Oxy ID.",
|
|
121
|
-
"showQrAnyway": "J'ai Commons sur un autre appareil"
|
|
121
|
+
"showQrAnyway": "J'ai Commons sur un autre appareil",
|
|
122
|
+
"switchWhileSignedInAs": "Changer de compte, connecté en tant que {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "Accordé {{relative}}",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "Accesso in corso…",
|
|
119
119
|
"getCommons": "Ottieni Commons",
|
|
120
120
|
"commonsNotInstalled": "Non hai Commons? Scarica l'app per accedere con il tuo Oxy ID.",
|
|
121
|
-
"showQrAnyway": "Ho Commons su un altro dispositivo"
|
|
121
|
+
"showQrAnyway": "Ho Commons su un altro dispositivo",
|
|
122
|
+
"switchWhileSignedInAs": "Cambia account, connesso come {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "Concesso {{relative}}",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "サインインしています…",
|
|
119
119
|
"getCommons": "Commonsを入手",
|
|
120
120
|
"commonsNotInstalled": "Commonsがありませんか?アプリを入手してOxy IDでサインインしましょう。",
|
|
121
|
-
"showQrAnyway": "別のデバイスにCommonsがあります"
|
|
121
|
+
"showQrAnyway": "別のデバイスにCommonsがあります",
|
|
122
|
+
"switchWhileSignedInAs": "アカウントを切り替え({{name}} としてログイン中)"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "{{relative}} に付与",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "로그인 중…",
|
|
119
119
|
"getCommons": "Commons 다운로드",
|
|
120
120
|
"commonsNotInstalled": "Commons가 없으신가요? 앱을 다운로드하여 Oxy ID로 로그인하세요.",
|
|
121
|
-
"showQrAnyway": "다른 기기에 Commons가 있습니다"
|
|
121
|
+
"showQrAnyway": "다른 기기에 Commons가 있습니다",
|
|
122
|
+
"switchWhileSignedInAs": "계정 전환, {{name}}(으)로 로그인됨"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "{{relative}}에 부여됨",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "جارٍ تسجيل الدخول…",
|
|
119
119
|
"getCommons": "احصل على Commons",
|
|
120
120
|
"commonsNotInstalled": "لا تملك Commons؟ احصل على التطبيق لتسجيل الدخول بمعرّف Oxy الخاص بك.",
|
|
121
|
-
"showQrAnyway": "لدي Commons على جهاز آخر"
|
|
121
|
+
"showQrAnyway": "لدي Commons على جهاز آخر",
|
|
122
|
+
"switchWhileSignedInAs": "تبديل الحساب، مسجّل الدخول باسم {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "ممنوح {{relative}}",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "Iniciant sessió…",
|
|
119
119
|
"getCommons": "Descarrega Commons",
|
|
120
120
|
"commonsNotInstalled": "No tens Commons? Descarrega l'app per iniciar sessió amb el teu Oxy ID.",
|
|
121
|
-
"showQrAnyway": "Tinc Commons en un altre dispositiu"
|
|
121
|
+
"showQrAnyway": "Tinc Commons en un altre dispositiu",
|
|
122
|
+
"switchWhileSignedInAs": "Canvia de compte, amb la sessió iniciada com a {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "Concedit {{relative}}",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "Anmeldung läuft…",
|
|
119
119
|
"getCommons": "Commons herunterladen",
|
|
120
120
|
"commonsNotInstalled": "Kein Commons? Holen Sie sich die App, um sich mit Ihrer Oxy-ID anzumelden.",
|
|
121
|
-
"showQrAnyway": "Ich habe Commons auf einem anderen Gerät"
|
|
121
|
+
"showQrAnyway": "Ich habe Commons auf einem anderen Gerät",
|
|
122
|
+
"switchWhileSignedInAs": "Konto wechseln, angemeldet als {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "Gewährt {{relative}}",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -420,7 +420,8 @@
|
|
|
420
420
|
"passkeySigningIn": "Signing in…",
|
|
421
421
|
"getCommons": "Get Commons",
|
|
422
422
|
"commonsNotInstalled": "Don't have Commons? Get the app to sign in with your Oxy ID.",
|
|
423
|
-
"showQrAnyway": "I have Commons on another device"
|
|
423
|
+
"showQrAnyway": "I have Commons on another device",
|
|
424
|
+
"switchWhileSignedInAs": "Switch account, signed in as {{name}}"
|
|
424
425
|
},
|
|
425
426
|
"reputation": {
|
|
426
427
|
"faq": {
|
|
@@ -1338,6 +1339,8 @@
|
|
|
1338
1339
|
"creditCard": "Credit Card",
|
|
1339
1340
|
"enterCardSecurely": "Enter your card details securely",
|
|
1340
1341
|
"acceptedCards": "We accept Visa, Mastercard, and more",
|
|
1342
|
+
"cardNumber": "Card number",
|
|
1343
|
+
"expiry": "Expiry",
|
|
1341
1344
|
"readyToProcess": "Ready to process payment...",
|
|
1342
1345
|
"payWithWallet": "Pay with your in-app wallet",
|
|
1343
1346
|
"balance": "Balance: {{balance}}",
|
|
@@ -1590,6 +1593,7 @@
|
|
|
1590
1593
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
1591
1594
|
},
|
|
1592
1595
|
"item": {
|
|
1596
|
+
"granted": "Granted {{relative}}",
|
|
1593
1597
|
"lastUsed": "Last used {{relative}}"
|
|
1594
1598
|
},
|
|
1595
1599
|
"confirm": {
|
|
@@ -1652,6 +1656,12 @@
|
|
|
1652
1656
|
"description": "A programmatic account with service credentials"
|
|
1653
1657
|
}
|
|
1654
1658
|
},
|
|
1659
|
+
"organizationCategory": {
|
|
1660
|
+
"agency": "Real estate agency",
|
|
1661
|
+
"cooperative": "Housing cooperative",
|
|
1662
|
+
"landlord": "Landlord / property manager",
|
|
1663
|
+
"other": "Other organization"
|
|
1664
|
+
},
|
|
1655
1665
|
"create": {
|
|
1656
1666
|
"title": "Create account",
|
|
1657
1667
|
"subtitle": "Create an account you control. It will have its own profile, members, and apps.",
|
|
@@ -1669,6 +1679,9 @@
|
|
|
1669
1679
|
"invalidChars": "Only letters, numbers, hyphens, and underscores",
|
|
1670
1680
|
"checkFailed": "Could not check availability"
|
|
1671
1681
|
},
|
|
1682
|
+
"organizationCategory": {
|
|
1683
|
+
"label": "Organization type"
|
|
1684
|
+
},
|
|
1672
1685
|
"toasts": {
|
|
1673
1686
|
"success": "Account created",
|
|
1674
1687
|
"failed": "Failed to create account"
|
|
@@ -618,7 +618,8 @@
|
|
|
618
618
|
"passkeySigningIn": "Iniciando sesión…",
|
|
619
619
|
"getCommons": "Descargar Commons",
|
|
620
620
|
"commonsNotInstalled": "¿No tienes Commons? Descarga la app para iniciar sesión con tu Oxy ID.",
|
|
621
|
-
"showQrAnyway": "Tengo Commons en otro dispositivo"
|
|
621
|
+
"showQrAnyway": "Tengo Commons en otro dispositivo",
|
|
622
|
+
"switchWhileSignedInAs": "Cambiar de cuenta, con la sesión iniciada como {{name}}"
|
|
622
623
|
},
|
|
623
624
|
"feedback": {
|
|
624
625
|
"type": {
|
|
@@ -1338,6 +1339,8 @@
|
|
|
1338
1339
|
"creditCard": "Tarjeta de crédito",
|
|
1339
1340
|
"enterCardSecurely": "Introduce los datos de tu tarjeta de forma segura",
|
|
1340
1341
|
"acceptedCards": "Aceptamos Visa, Mastercard y más",
|
|
1342
|
+
"cardNumber": "Número de tarjeta",
|
|
1343
|
+
"expiry": "Caducidad",
|
|
1341
1344
|
"readyToProcess": "Listo para procesar el pago...",
|
|
1342
1345
|
"payWithWallet": "Paga con tu billetera de la app",
|
|
1343
1346
|
"balance": "Saldo: {{balance}}",
|
|
@@ -1590,6 +1593,7 @@
|
|
|
1590
1593
|
"subtitle": "Las apps que autorices a iniciar sesión con tu cuenta Oxy aparecerán aquí"
|
|
1591
1594
|
},
|
|
1592
1595
|
"item": {
|
|
1596
|
+
"granted": "Concedido {{relative}}",
|
|
1593
1597
|
"lastUsed": "Último uso: {{relative}}"
|
|
1594
1598
|
},
|
|
1595
1599
|
"confirm": {
|
|
@@ -1652,6 +1656,12 @@
|
|
|
1652
1656
|
"description": "Una cuenta programática con credenciales de servicio"
|
|
1653
1657
|
}
|
|
1654
1658
|
},
|
|
1659
|
+
"organizationCategory": {
|
|
1660
|
+
"agency": "Agencia inmobiliaria",
|
|
1661
|
+
"cooperative": "Cooperativa de vivienda",
|
|
1662
|
+
"landlord": "Propietario / administrador de fincas",
|
|
1663
|
+
"other": "Otra organización"
|
|
1664
|
+
},
|
|
1655
1665
|
"create": {
|
|
1656
1666
|
"title": "Crear cuenta",
|
|
1657
1667
|
"subtitle": "Crea una cuenta que tú controlas. Tendrá su propio perfil, miembros y aplicaciones.",
|
|
@@ -1669,6 +1679,9 @@
|
|
|
1669
1679
|
"invalidChars": "Solo letras, números, guiones y guiones bajos",
|
|
1670
1680
|
"checkFailed": "No se pudo comprobar la disponibilidad"
|
|
1671
1681
|
},
|
|
1682
|
+
"organizationCategory": {
|
|
1683
|
+
"label": "Tipo de organización"
|
|
1684
|
+
},
|
|
1672
1685
|
"toasts": {
|
|
1673
1686
|
"success": "Cuenta creada",
|
|
1674
1687
|
"failed": "No se pudo crear la cuenta"
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "Connexion…",
|
|
119
119
|
"getCommons": "Obtenir Commons",
|
|
120
120
|
"commonsNotInstalled": "Pas de Commons ? Téléchargez l'app pour vous connecter avec votre Oxy ID.",
|
|
121
|
-
"showQrAnyway": "J'ai Commons sur un autre appareil"
|
|
121
|
+
"showQrAnyway": "J'ai Commons sur un autre appareil",
|
|
122
|
+
"switchWhileSignedInAs": "Changer de compte, connecté en tant que {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "Accordé {{relative}}",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "Accesso in corso…",
|
|
119
119
|
"getCommons": "Ottieni Commons",
|
|
120
120
|
"commonsNotInstalled": "Non hai Commons? Scarica l'app per accedere con il tuo Oxy ID.",
|
|
121
|
-
"showQrAnyway": "Ho Commons su un altro dispositivo"
|
|
121
|
+
"showQrAnyway": "Ho Commons su un altro dispositivo",
|
|
122
|
+
"switchWhileSignedInAs": "Cambia account, connesso come {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "Concesso {{relative}}",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "サインインしています…",
|
|
119
119
|
"getCommons": "Commonsを入手",
|
|
120
120
|
"commonsNotInstalled": "Commonsがありませんか?アプリを入手してOxy IDでサインインしましょう。",
|
|
121
|
-
"showQrAnyway": "別のデバイスにCommonsがあります"
|
|
121
|
+
"showQrAnyway": "別のデバイスにCommonsがあります",
|
|
122
|
+
"switchWhileSignedInAs": "アカウントを切り替え({{name}} としてログイン中)"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "{{relative}} に付与",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "로그인 중…",
|
|
119
119
|
"getCommons": "Commons 다운로드",
|
|
120
120
|
"commonsNotInstalled": "Commons가 없으신가요? 앱을 다운로드하여 Oxy ID로 로그인하세요.",
|
|
121
|
-
"showQrAnyway": "다른 기기에 Commons가 있습니다"
|
|
121
|
+
"showQrAnyway": "다른 기기에 Commons가 있습니다",
|
|
122
|
+
"switchWhileSignedInAs": "계정 전환, {{name}}(으)로 로그인됨"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "{{relative}}에 부여됨",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "A iniciar sessão…",
|
|
119
119
|
"getCommons": "Obter o Commons",
|
|
120
120
|
"commonsNotInstalled": "Não tem o Commons? Obtenha a app para iniciar sessão com o seu Oxy ID.",
|
|
121
|
-
"showQrAnyway": "Tenho o Commons noutro dispositivo"
|
|
121
|
+
"showQrAnyway": "Tenho o Commons noutro dispositivo",
|
|
122
|
+
"switchWhileSignedInAs": "Mudar de conta, com sessão iniciada como {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "Concedido {{relative}}",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "正在登录…",
|
|
119
119
|
"getCommons": "获取 Commons",
|
|
120
120
|
"commonsNotInstalled": "没有 Commons?获取应用以使用您的 Oxy ID 登录。",
|
|
121
|
-
"showQrAnyway": "我在另一台设备上有 Commons"
|
|
121
|
+
"showQrAnyway": "我在另一台设备上有 Commons",
|
|
122
|
+
"switchWhileSignedInAs": "切换账号,当前登录为 {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "已于 {{relative}} 授权",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|
|
@@ -118,7 +118,8 @@
|
|
|
118
118
|
"passkeySigningIn": "A iniciar sessão…",
|
|
119
119
|
"getCommons": "Obter o Commons",
|
|
120
120
|
"commonsNotInstalled": "Não tem o Commons? Obtenha a app para iniciar sessão com o seu Oxy ID.",
|
|
121
|
-
"showQrAnyway": "Tenho o Commons noutro dispositivo"
|
|
121
|
+
"showQrAnyway": "Tenho o Commons noutro dispositivo",
|
|
122
|
+
"switchWhileSignedInAs": "Mudar de conta, com sessão iniciada como {{name}}"
|
|
122
123
|
},
|
|
123
124
|
"common": {
|
|
124
125
|
"actions": {
|
|
@@ -220,6 +221,7 @@
|
|
|
220
221
|
"subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
|
|
221
222
|
},
|
|
222
223
|
"item": {
|
|
224
|
+
"granted": "Concedido {{relative}}",
|
|
223
225
|
"lastUsed": "Last used {{relative}}"
|
|
224
226
|
},
|
|
225
227
|
"confirm": {
|