@oxy.so/core 4.5.0-oxy-one.1 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/HttpService.js +63 -19
  3. package/dist/cjs/api/accounts.js +10 -3
  4. package/dist/cjs/api/agency.js +3 -1
  5. package/dist/cjs/api/apps.js +15 -4
  6. package/dist/cjs/api/assets.js +39 -11
  7. package/dist/cjs/api/auth.js +28 -8
  8. package/dist/cjs/api/billing.js +24 -7
  9. package/dist/cjs/api/civic.js +14 -4
  10. package/dist/cjs/api/follows.js +9 -2
  11. package/dist/cjs/api/identity.js +31 -9
  12. package/dist/cjs/api/nodes.js +3 -1
  13. package/dist/cjs/api/privacy.js +8 -2
  14. package/dist/cjs/api/session.js +15 -4
  15. package/dist/cjs/api/store.js +15 -5
  16. package/dist/cjs/api/topics.js +10 -3
  17. package/dist/cjs/api/users.js +16 -4
  18. package/dist/cjs/boot/sessionColdBoot.js +40 -13
  19. package/dist/cjs/constants/version.js +6 -6
  20. package/dist/cjs/crypto/identityMarker.js +3 -1
  21. package/dist/cjs/crypto/identityProof.js +6 -1
  22. package/dist/cjs/crypto/keyManager.js +87 -32
  23. package/dist/cjs/crypto/recoveryPhrase.js +2 -2
  24. package/dist/cjs/crypto/signatureService.js +3 -4
  25. package/dist/cjs/i18n/index.js +16 -3
  26. package/dist/cjs/i18n/locales/ar-SA.js +366 -366
  27. package/dist/cjs/i18n/locales/ca-ES.js +366 -366
  28. package/dist/cjs/i18n/locales/de-DE.js +366 -366
  29. package/dist/cjs/i18n/locales/en-US.js +1994 -1994
  30. package/dist/cjs/i18n/locales/es-ES.js +1994 -1994
  31. package/dist/cjs/i18n/locales/fr-FR.js +366 -366
  32. package/dist/cjs/i18n/locales/it-IT.js +366 -366
  33. package/dist/cjs/i18n/locales/ja-JP.js +366 -366
  34. package/dist/cjs/i18n/locales/ko-KR.js +366 -366
  35. package/dist/cjs/i18n/locales/pt-PT.js +366 -366
  36. package/dist/cjs/i18n/locales/zh-CN.js +366 -366
  37. package/dist/cjs/inference/OxyInferenceClient.js +12 -18
  38. package/dist/cjs/models/interfaces.js +11 -11
  39. package/dist/cjs/server/OxyServer.js +86 -28
  40. package/dist/cjs/server/agentAccount.js +6 -2
  41. package/dist/cjs/server/aliaMachineCredential.js +39 -14
  42. package/dist/cjs/server/auth.js +5 -4
  43. package/dist/cjs/server/capabilityTicket.js +5 -5
  44. package/dist/cjs/server/index.js +2 -1
  45. package/dist/cjs/server/liveCapabilityTicket.js +4 -1
  46. package/dist/cjs/server/middleware.js +61 -42
  47. package/dist/cjs/server/namespaces.js +28 -7
  48. package/dist/cjs/server/requesterAssertion.js +36 -30
  49. package/dist/cjs/server/serviceTokenLifetime.js +7 -4
  50. package/dist/cjs/server/traffic.js +53 -14
  51. package/dist/cjs/server/trafficNodeHttp.js +33 -8
  52. package/dist/cjs/server/workloadIdentity.client.js +4 -0
  53. package/dist/cjs/server/workloadIdentity.js +28 -1
  54. package/dist/cjs/session/SessionClient.js +54 -17
  55. package/dist/cjs/session/accountDelegationAccess.js +4 -6
  56. package/dist/cjs/session/accountDialogController.js +1 -1
  57. package/dist/cjs/session/authStateStore.js +18 -9
  58. package/dist/cjs/session/identityPin.js +6 -2
  59. package/dist/cjs/session/refresh.js +81 -23
  60. package/dist/cjs/session/sharedDeviceCredential.js +28 -15
  61. package/dist/cjs/shared/utils/errorUtils.js +1 -1
  62. package/dist/cjs/shared/utils/networkUtils.js +1 -1
  63. package/dist/cjs/shared/utils/themeUtils.js +1 -1
  64. package/dist/cjs/utils/accountCacheSweep.js +3 -1
  65. package/dist/cjs/utils/accountUtils.js +1 -3
  66. package/dist/cjs/utils/asyncUtils.js +1 -1
  67. package/dist/cjs/utils/authHelpers.js +2 -1
  68. package/dist/cjs/utils/avatarUtils.js +4 -2
  69. package/dist/cjs/utils/cache.js +1 -1
  70. package/dist/cjs/utils/cacheKey.js +3 -1
  71. package/dist/cjs/utils/deviceManager.js +4 -4
  72. package/dist/cjs/utils/errorUtils.js +6 -4
  73. package/dist/cjs/utils/languageUtils.js +404 -57
  74. package/dist/cjs/utils/profileLinks.js +1 -3
  75. package/dist/cjs/utils/requestUtils.js +7 -1
  76. package/dist/cjs/utils/userIdentity.js +1 -1
  77. package/dist/cjs/utils/validationUtils.js +5 -6
  78. package/dist/esm/HttpService.js +64 -20
  79. package/dist/esm/api/accounts.js +11 -4
  80. package/dist/esm/api/agency.js +3 -1
  81. package/dist/esm/api/apps.js +15 -4
  82. package/dist/esm/api/assets.js +39 -11
  83. package/dist/esm/api/auth.js +28 -8
  84. package/dist/esm/api/billing.js +25 -8
  85. package/dist/esm/api/civic.js +14 -4
  86. package/dist/esm/api/follows.js +9 -2
  87. package/dist/esm/api/identity.js +31 -9
  88. package/dist/esm/api/nodes.js +3 -1
  89. package/dist/esm/api/privacy.js +8 -2
  90. package/dist/esm/api/session.js +15 -4
  91. package/dist/esm/api/store.js +15 -5
  92. package/dist/esm/api/topics.js +10 -3
  93. package/dist/esm/api/users.js +16 -4
  94. package/dist/esm/boot/sessionColdBoot.js +41 -14
  95. package/dist/esm/constants/version.js +6 -6
  96. package/dist/esm/crypto/identityMarker.js +3 -1
  97. package/dist/esm/crypto/identityProof.js +6 -1
  98. package/dist/esm/crypto/internal.js +1 -1
  99. package/dist/esm/crypto/keyManager.js +87 -32
  100. package/dist/esm/crypto/recoveryPhrase.js +2 -2
  101. package/dist/esm/crypto/signatureService.js +3 -4
  102. package/dist/esm/i18n/index.js +16 -3
  103. package/dist/esm/i18n/locales/ar-SA.js +366 -366
  104. package/dist/esm/i18n/locales/ca-ES.js +366 -366
  105. package/dist/esm/i18n/locales/de-DE.js +366 -366
  106. package/dist/esm/i18n/locales/en-US.js +1994 -1994
  107. package/dist/esm/i18n/locales/es-ES.js +1994 -1994
  108. package/dist/esm/i18n/locales/fr-FR.js +366 -366
  109. package/dist/esm/i18n/locales/it-IT.js +366 -366
  110. package/dist/esm/i18n/locales/ja-JP.js +366 -366
  111. package/dist/esm/i18n/locales/ko-KR.js +366 -366
  112. package/dist/esm/i18n/locales/pt-PT.js +366 -366
  113. package/dist/esm/i18n/locales/zh-CN.js +366 -366
  114. package/dist/esm/index.js +1 -1
  115. package/dist/esm/inference/OxyInferenceClient.js +13 -19
  116. package/dist/esm/models/interfaces.js +11 -11
  117. package/dist/esm/server/OxyServer.js +87 -29
  118. package/dist/esm/server/agentAccount.js +6 -2
  119. package/dist/esm/server/aliaMachineCredential.js +39 -14
  120. package/dist/esm/server/auth.js +6 -5
  121. package/dist/esm/server/capabilityTicket.js +6 -6
  122. package/dist/esm/server/index.js +5 -5
  123. package/dist/esm/server/liveCapabilityTicket.js +6 -3
  124. package/dist/esm/server/middleware.js +62 -43
  125. package/dist/esm/server/namespaces.js +31 -10
  126. package/dist/esm/server/requesterAssertion.js +36 -30
  127. package/dist/esm/server/serviceTokenLifetime.js +7 -4
  128. package/dist/esm/server/traffic.js +55 -16
  129. package/dist/esm/server/trafficNodeHttp.js +34 -9
  130. package/dist/esm/server/userInvalidation.js +1 -1
  131. package/dist/esm/server/workloadIdentity.client.js +3 -0
  132. package/dist/esm/server/workloadIdentity.js +27 -1
  133. package/dist/esm/session/SessionClient.js +54 -17
  134. package/dist/esm/session/accountDelegationAccess.js +5 -7
  135. package/dist/esm/session/accountDialogController.js +1 -1
  136. package/dist/esm/session/authStateStore.js +18 -9
  137. package/dist/esm/session/identityPin.js +6 -2
  138. package/dist/esm/session/refresh.js +82 -24
  139. package/dist/esm/session/sharedDeviceCredential.js +28 -15
  140. package/dist/esm/shared/utils/errorUtils.js +1 -1
  141. package/dist/esm/shared/utils/networkUtils.js +1 -1
  142. package/dist/esm/shared/utils/themeUtils.js +1 -1
  143. package/dist/esm/utils/accountCacheSweep.js +3 -1
  144. package/dist/esm/utils/accountUtils.js +1 -3
  145. package/dist/esm/utils/asyncUtils.js +1 -1
  146. package/dist/esm/utils/authHelpers.js +2 -1
  147. package/dist/esm/utils/avatarUtils.js +4 -2
  148. package/dist/esm/utils/cache.js +1 -1
  149. package/dist/esm/utils/cacheKey.js +3 -1
  150. package/dist/esm/utils/deviceManager.js +4 -4
  151. package/dist/esm/utils/errorUtils.js +6 -4
  152. package/dist/esm/utils/languageUtils.js +404 -57
  153. package/dist/esm/utils/profileLinks.js +1 -3
  154. package/dist/esm/utils/requestUtils.js +7 -1
  155. package/dist/esm/utils/userIdentity.js +1 -1
  156. package/dist/esm/utils/validationUtils.js +5 -6
  157. package/dist/types/HttpService.d.ts +1 -1
  158. package/dist/types/api/accounts.d.ts +1 -1
  159. package/dist/types/api/apps.d.ts +4 -4
  160. package/dist/types/crypto/internal.d.ts +1 -1
  161. package/dist/types/index.d.ts +4 -4
  162. package/dist/types/server/index.d.ts +6 -6
  163. package/dist/types/server/workloadIdentity.client.d.ts +5 -1
  164. package/dist/types/server/workloadIdentity.d.ts +26 -0
  165. package/dist/types/session/accountDelegationAccess.d.ts +1 -1
  166. package/dist/types/session/index.d.ts +1 -1
  167. package/dist/types/utils/userIdentity.d.ts +1 -1
  168. package/dist/types/utils/validationUtils.d.ts +4 -5
  169. package/package.json +2 -3
  170. package/src/HttpService.ts +183 -53
  171. package/src/OxyServices.errors.ts +7 -3
  172. package/src/OxyServices.ts +6 -2
  173. package/src/api/accounts.ts +76 -26
  174. package/src/api/agency.ts +24 -9
  175. package/src/api/appData.ts +12 -2
  176. package/src/api/apps.ts +81 -31
  177. package/src/api/assets.ts +113 -43
  178. package/src/api/auth.ts +145 -77
  179. package/src/api/billing.ts +112 -65
  180. package/src/api/civic.ts +61 -19
  181. package/src/api/contacts.ts +4 -1
  182. package/src/api/devices.ts +54 -21
  183. package/src/api/follows.ts +88 -31
  184. package/src/api/identity.ts +101 -33
  185. package/src/api/linkedAccounts.ts +26 -8
  186. package/src/api/nodes.ts +18 -6
  187. package/src/api/notifications.ts +26 -6
  188. package/src/api/privacy.ts +42 -8
  189. package/src/api/reputation.ts +18 -7
  190. package/src/api/session.ts +23 -5
  191. package/src/api/store.ts +81 -31
  192. package/src/api/topics.ts +18 -6
  193. package/src/api/users.ts +98 -35
  194. package/src/boot/sessionColdBoot.ts +60 -19
  195. package/src/civic/payloads.ts +1 -4
  196. package/src/client/context.ts +6 -1
  197. package/src/constants/version.ts +7 -6
  198. package/src/crypto/aead.ts +1 -5
  199. package/src/crypto/ecdh.ts +1 -4
  200. package/src/crypto/identityDerivations.ts +5 -1
  201. package/src/crypto/identityMarker.ts +3 -1
  202. package/src/crypto/identityProof.ts +6 -1
  203. package/src/crypto/index.ts +11 -11
  204. package/src/crypto/internal.ts +6 -1
  205. package/src/crypto/keyManager.ts +348 -98
  206. package/src/crypto/recoveryPhrase.ts +14 -9
  207. package/src/crypto/registrationPow.ts +1 -1
  208. package/src/crypto/signatureService.ts +14 -6
  209. package/src/i18n/accountCategoryLabels.ts +1 -4
  210. package/src/i18n/accountRoleLabels.ts +1 -4
  211. package/src/i18n/index.ts +25 -7
  212. package/src/i18n/locales/ar-SA.ts +375 -366
  213. package/src/i18n/locales/ca-ES.ts +382 -366
  214. package/src/i18n/locales/de-DE.ts +387 -366
  215. package/src/i18n/locales/en-US.ts +2034 -1994
  216. package/src/i18n/locales/es-ES.ts +2043 -1994
  217. package/src/i18n/locales/fr-FR.ts +387 -366
  218. package/src/i18n/locales/it-IT.ts +380 -366
  219. package/src/i18n/locales/ja-JP.ts +380 -366
  220. package/src/i18n/locales/ko-KR.ts +377 -366
  221. package/src/i18n/locales/pt-PT.ts +383 -366
  222. package/src/i18n/locales/zh-CN.ts +373 -366
  223. package/src/i18n/trustTierLabels.ts +1 -4
  224. package/src/index.ts +371 -349
  225. package/src/inference/OxyInferenceClient.ts +784 -780
  226. package/src/models/interfaces.ts +30 -27
  227. package/src/server/OxyServer.ts +227 -68
  228. package/src/server/agentAccount.ts +8 -2
  229. package/src/server/aliaMachineCredential.ts +57 -16
  230. package/src/server/auth.ts +9 -5
  231. package/src/server/capabilityTicket.ts +30 -21
  232. package/src/server/index.ts +29 -6
  233. package/src/server/liveCapabilityTicket.ts +31 -9
  234. package/src/server/middleware.ts +212 -121
  235. package/src/server/namespaces.ts +247 -94
  236. package/src/server/rateLimit.ts +2 -4
  237. package/src/server/requesterAssertion.ts +93 -54
  238. package/src/server/serviceTokenLifetime.ts +9 -4
  239. package/src/server/traffic.ts +117 -23
  240. package/src/server/trafficNodeHttp.ts +61 -14
  241. package/src/server/userInvalidation.ts +1 -4
  242. package/src/server/workloadIdentity.client.ts +12 -1
  243. package/src/server/workloadIdentity.ts +52 -5
  244. package/src/session/SessionClient.ts +170 -49
  245. package/src/session/accountDelegationAccess.ts +24 -31
  246. package/src/session/accountDialogController.ts +59 -14
  247. package/src/session/accountSwitchTargets.ts +10 -15
  248. package/src/session/authStateStore.ts +121 -81
  249. package/src/session/deviceDirectory.ts +1 -3
  250. package/src/session/identityPin.ts +10 -11
  251. package/src/session/identitySession.ts +3 -1
  252. package/src/session/index.ts +87 -82
  253. package/src/session/refresh.ts +138 -44
  254. package/src/session/sessionClientHost.ts +1 -3
  255. package/src/session/sharedDeviceCredential.ts +35 -14
  256. package/src/session/socketLoader.ts +9 -2
  257. package/src/shared/utils/errorUtils.ts +5 -2
  258. package/src/shared/utils/networkUtils.ts +5 -8
  259. package/src/shared/utils/themeUtils.ts +2 -6
  260. package/src/types/buffer.d.ts +66 -21
  261. package/src/types/expo-secure-store.d.ts +5 -1
  262. package/src/utils/accountCacheSweep.ts +4 -5
  263. package/src/utils/accountUtils.ts +107 -108
  264. package/src/utils/apiUtils.ts +3 -3
  265. package/src/utils/asyncUtils.ts +2 -2
  266. package/src/utils/authHelpers.ts +10 -5
  267. package/src/utils/avatarUtils.ts +11 -6
  268. package/src/utils/cache.ts +9 -10
  269. package/src/utils/cacheKey.ts +5 -1
  270. package/src/utils/coldBoot.ts +1 -3
  271. package/src/utils/commonsDelivery.ts +1 -4
  272. package/src/utils/deviceManager.ts +15 -14
  273. package/src/utils/errorUtils.ts +68 -86
  274. package/src/utils/languageUtils.ts +407 -58
  275. package/src/utils/oauthPkce.ts +1 -4
  276. package/src/utils/platform.ts +0 -1
  277. package/src/utils/profileLinks.ts +2 -5
  278. package/src/utils/requestUtils.ts +18 -14
  279. package/src/utils/sessionUtils.ts +34 -33
  280. package/src/utils/userHandle.ts +3 -1
  281. package/src/utils/userIdentity.ts +1 -1
  282. package/src/utils/validationUtils.ts +11 -9
@@ -1,388 +1,397 @@
1
1
  const dict = {
2
- "signin": {
3
- "title": "تسجيل الدخول",
4
- "subtitle": "استخدم حسابك في Oxy",
5
- "addAccountTitle": "إضافة حساب آخر",
6
- "addAccountSubtitle": "تسجيل الدخول بحساب آخر",
7
- "actions": {
8
- "continue": "متابعة",
9
- "back": "رجوع"
10
- },
11
- "createAccountLink": "جديد على Oxy؟ أنشئ حسابًا",
12
- "status": {
13
- "signingIn": "جارٍ تسجيل الدخول…"
14
- },
15
- "subtitleToApp": "للمتابعة إلى {{app}}",
16
- "orContinueWith": "أو تابع باستخدام",
17
- "qr": {
18
- "caption": "امسح باستخدام Commons لتسجيل الدخول",
19
- "renew": "عرض رمز جديد"
20
- },
21
- "errors": {
22
- "rateLimited": "محاولات كثيرة جدًا. حاول مرة أخرى بعد {{seconds}} ث.",
23
- "invalidCredentials": "اسم المستخدم أو البريد الإلكتروني أو كلمة المرور غير صحيح.",
24
- "codeInvalid": "الرمز غير صحيح أو انتهت صلاحيته.",
25
- "requestExpired": "انتهت صلاحية تسجيل الدخول هذا. أرسل رسالة جديدة.",
26
- "secondFactorInvalid": "الرمز غير صحيح. جرّب الرمز الحالي.",
27
- "originNotAllowed": "تسجيل الدخول غير متاح هنا.",
28
- "generic": "حدث خطأ ما. يُرجى المحاولة مرة أخرى.",
29
- "notConfigured": "تسجيل الدخول غير متاح",
30
- "notConfiguredDescription": "لم يُعدّ {{app}} لتسجيل الدخول بعد. تواصل مع مطوّر التطبيق.",
31
- "failed": "تعذّر بدء تسجيل الدخول",
32
- "failedDescription": "حدث خطأ ما. يُرجى المحاولة مرة أخرى."
33
- },
34
- "chooser": {
35
- "subtitleToApp": "للمتابعة إلى {{app}}",
36
- "title": "اختر حسابًا",
37
- "subtitle": "تابع بأحد الحسابات أدناه، أو استخدم حسابًا آخر.",
38
- "useAnother": "استخدم حسابًا آخر",
39
- "continueAs": "المتابعة باسم {{name}}"
40
- },
41
- "terms": {
42
- "before": "بالمتابعة، أنت توافق على",
43
- "termsLink": "شروط الخدمة",
44
- "and": "و",
45
- "privacyLink": "سياسة الخصوصية"
46
- },
47
- "noAccount": "ليس لديك حساب؟",
48
- "createAccount": "إنشاء حساب",
49
- "identifier": {
50
- "label": "البريد الإلكتروني أو اسم المستخدم",
51
- "placeholder": "you@example.com",
52
- "required": "أدخل بريدك الإلكتروني أو اسم المستخدم."
53
- },
54
- "checkEmail": {
55
- "title": "تحقق من بريدك",
56
- "description": "إذا كان هناك حساب يطابق {{identifier}}، فقد أرسلنا إليه رمزًا ورابطًا لتسجيل الدخول.",
57
- "codeLabel": "الرمز",
58
- "codeHint": "اكتب الرمز الوارد في الرسالة، أو افتح رابطها في هذا المتصفح.",
59
- "codeHasLetters": "هل يحتوي رمزك على أحرف؟",
60
- "codeDigitsOnly": "هل يتكون رمزك من أرقام فقط؟",
61
- "resend": "أرسل رسالة جديدة",
62
- "resendIn": "أرسل رسالة جديدة بعد {{seconds}} ث",
63
- "resent": "أرسلنا رسالة جديدة.",
64
- "retryLater": "أرسلنا عدة رسائل بالفعل. انتظر بضع دقائق ثم حاول مرة أخرى.",
65
- "usePassword": "استخدم كلمة المرور بدلًا من ذلك",
66
- "differentAccount": "استخدم حسابًا آخر"
67
- },
68
- "password": {
69
- "title": "أدخل كلمة المرور",
70
- "label": "كلمة المرور",
71
- "required": "أدخل كلمة المرور.",
72
- "forgot": "نسيتها؟ احصل على رمز عبر البريد"
73
- },
74
- "secondFactor": {
75
- "title": "التحقق بخطوتين",
76
- "description": "أدخل الرمز من تطبيق المصادقة.",
77
- "backupDescription": "أدخل أحد رموزك الاحتياطية. يعمل كل رمز مرة واحدة فقط.",
78
- "label": "رمز المصادقة",
79
- "backupLabel": "رمز احتياطي",
80
- "useBackup": "استخدم رمزًا احتياطيًا",
81
- "useAuthenticator": "استخدم تطبيق المصادقة"
82
- },
83
- "link": {
84
- "approvedTitle": "سجّلت الدخول",
85
- "approvedDescription": "ارجع إلى التطبيق الذي طلبت منه تسجيل الدخول: سيتابع تلقائيًا. يمكنك إغلاق علامة التبويب هذه.",
86
- "otherDeviceTitle": "افتح الرابط في المتصفح نفسه",
87
- "otherDeviceDescription": "يعمل هذا الرابط فقط في المتصفح الذي طلبت منه تسجيل الدخول. افتحه هناك، أو اكتب الرمز الوارد في الرسالة داخل التطبيق.",
88
- "invalidTitle": "لا يمكن استخدام هذا الرابط",
89
- "invalidDescription": "انتهت صلاحيته أو استُخدم من قبل. اطلب رسالة جديدة من التطبيق، أو اكتب الرمز الوارد في أحدث رسالة."
90
- }
2
+ signin: {
3
+ title: 'تسجيل الدخول',
4
+ subtitle: 'استخدم حسابك في Oxy',
5
+ addAccountTitle: 'إضافة حساب آخر',
6
+ addAccountSubtitle: 'تسجيل الدخول بحساب آخر',
7
+ actions: {
8
+ continue: 'متابعة',
9
+ back: 'رجوع',
10
+ },
11
+ createAccountLink: 'جديد على Oxy؟ أنشئ حسابًا',
12
+ status: {
13
+ signingIn: 'جارٍ تسجيل الدخول…',
14
+ },
15
+ subtitleToApp: 'للمتابعة إلى {{app}}',
16
+ orContinueWith: 'أو تابع باستخدام',
17
+ qr: {
18
+ caption: 'امسح باستخدام Commons لتسجيل الدخول',
19
+ renew: 'عرض رمز جديد',
20
+ },
21
+ errors: {
22
+ rateLimited: 'محاولات كثيرة جدًا. حاول مرة أخرى بعد {{seconds}} ث.',
23
+ invalidCredentials: 'اسم المستخدم أو البريد الإلكتروني أو كلمة المرور غير صحيح.',
24
+ codeInvalid: 'الرمز غير صحيح أو انتهت صلاحيته.',
25
+ requestExpired: 'انتهت صلاحية تسجيل الدخول هذا. أرسل رسالة جديدة.',
26
+ secondFactorInvalid: 'الرمز غير صحيح. جرّب الرمز الحالي.',
27
+ originNotAllowed: 'تسجيل الدخول غير متاح هنا.',
28
+ generic: 'حدث خطأ ما. يُرجى المحاولة مرة أخرى.',
29
+ notConfigured: 'تسجيل الدخول غير متاح',
30
+ notConfiguredDescription: 'لم يُعدّ {{app}} لتسجيل الدخول بعد. تواصل مع مطوّر التطبيق.',
31
+ failed: 'تعذّر بدء تسجيل الدخول',
32
+ failedDescription: 'حدث خطأ ما. يُرجى المحاولة مرة أخرى.',
33
+ },
34
+ chooser: {
35
+ subtitleToApp: 'للمتابعة إلى {{app}}',
36
+ title: 'اختر حسابًا',
37
+ subtitle: 'تابع بأحد الحسابات أدناه، أو استخدم حسابًا آخر.',
38
+ useAnother: 'استخدم حسابًا آخر',
39
+ continueAs: 'المتابعة باسم {{name}}',
40
+ },
41
+ terms: {
42
+ before: 'بالمتابعة، أنت توافق على',
43
+ termsLink: 'شروط الخدمة',
44
+ and: 'و',
45
+ privacyLink: 'سياسة الخصوصية',
46
+ },
47
+ noAccount: 'ليس لديك حساب؟',
48
+ createAccount: 'إنشاء حساب',
49
+ identifier: {
50
+ label: 'البريد الإلكتروني أو اسم المستخدم',
51
+ placeholder: 'you@example.com',
52
+ required: 'أدخل بريدك الإلكتروني أو اسم المستخدم.',
53
+ },
54
+ checkEmail: {
55
+ title: 'تحقق من بريدك',
56
+ description:
57
+ 'إذا كان هناك حساب يطابق {{identifier}}، فقد أرسلنا إليه رمزًا ورابطًا لتسجيل الدخول.',
58
+ codeLabel: 'الرمز',
59
+ codeHint: 'اكتب الرمز الوارد في الرسالة، أو افتح رابطها في هذا المتصفح.',
60
+ codeHasLetters: 'هل يحتوي رمزك على أحرف؟',
61
+ codeDigitsOnly: 'هل يتكون رمزك من أرقام فقط؟',
62
+ resend: 'أرسل رسالة جديدة',
63
+ resendIn: 'أرسل رسالة جديدة بعد {{seconds}} ث',
64
+ resent: 'أرسلنا رسالة جديدة.',
65
+ retryLater: 'أرسلنا عدة رسائل بالفعل. انتظر بضع دقائق ثم حاول مرة أخرى.',
66
+ usePassword: 'استخدم كلمة المرور بدلًا من ذلك',
67
+ differentAccount: 'استخدم حسابًا آخر',
68
+ },
69
+ password: {
70
+ title: 'أدخل كلمة المرور',
71
+ label: 'كلمة المرور',
72
+ required: 'أدخل كلمة المرور.',
73
+ forgot: 'نسيتها؟ احصل على رمز عبر البريد',
74
+ },
75
+ secondFactor: {
76
+ title: 'التحقق بخطوتين',
77
+ description: 'أدخل الرمز من تطبيق المصادقة.',
78
+ backupDescription: 'أدخل أحد رموزك الاحتياطية. يعمل كل رمز مرة واحدة فقط.',
79
+ label: 'رمز المصادقة',
80
+ backupLabel: 'رمز احتياطي',
81
+ useBackup: 'استخدم رمزًا احتياطيًا',
82
+ useAuthenticator: 'استخدم تطبيق المصادقة',
83
+ },
84
+ link: {
85
+ approvedTitle: 'سجّلت الدخول',
86
+ approvedDescription:
87
+ 'ارجع إلى التطبيق الذي طلبت منه تسجيل الدخول: سيتابع تلقائيًا. يمكنك إغلاق علامة التبويب هذه.',
88
+ otherDeviceTitle: 'افتح الرابط في المتصفح نفسه',
89
+ otherDeviceDescription:
90
+ 'يعمل هذا الرابط فقط في المتصفح الذي طلبت منه تسجيل الدخول. افتحه هناك، أو اكتب الرمز الوارد في الرسالة داخل التطبيق.',
91
+ invalidTitle: 'لا يمكن استخدام هذا الرابط',
92
+ invalidDescription:
93
+ 'انتهت صلاحيته أو استُخدم من قبل. اطلب رسالة جديدة من التطبيق، أو اكتب الرمز الوارد في أحدث رسالة.',
94
+ },
91
95
  },
92
- "signup": {
93
- "title": "أنشئ حسابك",
94
- "subtitle": "اختر اسم المستخدم. ثم نؤكد بريدك الإلكتروني.",
95
- "createInCommons": "أنشئها في Commons بدلًا من ذلك",
96
- "backToSignInLink": "لديك حساب بالفعل؟ سجّل الدخول",
97
- "username": {
98
- "label": "اسم المستخدم",
99
- "placeholder": "yourname",
100
- "required": "اختر اسم مستخدم.",
101
- "taken": "اسم المستخدم هذا مستخدم بالفعل."
102
- },
103
- "email": {
104
- "title": "ما بريدك الإلكتروني؟",
105
- "subtitle": "تسجّل الدخول به: نرسل إليك رمزًا في كل مرة. لا يراه أحد غيرك.",
106
- "label": "البريد الإلكتروني",
107
- "placeholder": "you@example.com",
108
- "invalid": "أدخل بريدًا إلكترونيًا صالحًا."
109
- },
110
- "commonsSubtitle": "أو أنشئ هويتك في Commons واحتفظ بمفتاحك بنفسك.",
111
- "laterNote": "يمكنك لاحقًا إضافة كلمة مرور أو تطبيق مصادقة من إعدادات الأمان في حسابك."
96
+ signup: {
97
+ title: 'أنشئ حسابك',
98
+ subtitle: 'اختر اسم المستخدم. ثم نؤكد بريدك الإلكتروني.',
99
+ createInCommons: 'أنشئها في Commons بدلًا من ذلك',
100
+ backToSignInLink: 'لديك حساب بالفعل؟ سجّل الدخول',
101
+ username: {
102
+ label: 'اسم المستخدم',
103
+ placeholder: 'yourname',
104
+ required: 'اختر اسم مستخدم.',
105
+ taken: 'اسم المستخدم هذا مستخدم بالفعل.',
106
+ },
107
+ email: {
108
+ title: 'ما بريدك الإلكتروني؟',
109
+ subtitle: 'تسجّل الدخول به: نرسل إليك رمزًا في كل مرة. لا يراه أحد غيرك.',
110
+ label: 'البريد الإلكتروني',
111
+ placeholder: 'you@example.com',
112
+ invalid: 'أدخل بريدًا إلكترونيًا صالحًا.',
113
+ },
114
+ commonsSubtitle: 'أو أنشئ هويتك في Commons واحتفظ بمفتاحك بنفسك.',
115
+ laterNote: 'يمكنك لاحقًا إضافة كلمة مرور أو تطبيق مصادقة من إعدادات الأمان في حسابك.',
112
116
  },
113
- "accountSwitcher": {
114
- "loading": "جارٍ تحميل الحسابات...",
115
- "qrHeadline": "سجّل الدخول بهوية Oxy الخاصة بك",
116
- "signInWithOxy": "تسجيل الدخول باستخدام Oxy",
117
- "signUpWithOxy": "التسجيل باستخدام Oxy",
118
- "getCommons": "احصل على Commons",
119
- "commonsNotInstalled": "لا تملك Commons؟ احصل على التطبيق لتسجيل الدخول بمعرّف Oxy الخاص بك.",
120
- "showQrAnyway": "لدي Commons على جهاز آخر",
121
- "switchWhileSignedInAs": "تبديل الحساب، مسجّل الدخول باسم {{name}}",
122
- "manageOnDevice": "إدارة الحسابات على هذا الجهاز",
123
- "continueWithOxy": "المتابعة باستخدام Oxy",
124
- "havingTrouble": "هل تواجه مشكلة؟",
125
- "progress": {
126
- "preparing": "جارٍ تحضير الطلب",
127
- "awaitingApproval": "في انتظار الموافقة",
128
- "scanWithCommons": "امسح الرمز باستخدام Commons على هاتفك",
129
- "continueInCommons": "تابع في Commons",
130
- "checkCommons": "تحقّق من Commons على هاتفك",
131
- "openedInCommons": "تم الفتح في Commons",
132
- "confirming": "جارٍ تأكيد الهوية",
133
- "confirmed": "تم تأكيد الهوية"
134
- },
135
- "signInFailures": {
136
- "denied": "تم رفض تسجيل الدخول في Commons.",
137
- "expired": "انتهت صلاحية طلب تسجيل الدخول. يُرجى المحاولة مرة أخرى.",
138
- "network": "تعذّر الاتصال بـ Oxy. تحقّق من اتصالك وحاول مرة أخرى.",
139
- "notConfigured": "هذا التطبيق غير مُعدّ لتسجيل الدخول بعد.",
140
- "unsupportedFlow": "لا يمكن إكمال تسجيل الدخول هنا.",
141
- "claimFailed": "تمت الموافقة على تسجيل الدخول، لكن تعذّر إكماله. يُرجى المحاولة مرة أخرى.",
142
- "generic": "تعذّر تسجيل الدخول. يُرجى المحاولة مرة أخرى."
143
- },
144
- "linkOpenFailed": "تعذّر فتح الرابط. يُرجى المحاولة مرة أخرى."
117
+ accountSwitcher: {
118
+ loading: 'جارٍ تحميل الحسابات...',
119
+ qrHeadline: 'سجّل الدخول بهوية Oxy الخاصة بك',
120
+ signInWithOxy: 'تسجيل الدخول باستخدام Oxy',
121
+ signUpWithOxy: 'التسجيل باستخدام Oxy',
122
+ getCommons: 'احصل على Commons',
123
+ commonsNotInstalled: 'لا تملك Commons؟ احصل على التطبيق لتسجيل الدخول بمعرّف Oxy الخاص بك.',
124
+ showQrAnyway: 'لدي Commons على جهاز آخر',
125
+ switchWhileSignedInAs: 'تبديل الحساب، مسجّل الدخول باسم {{name}}',
126
+ manageOnDevice: 'إدارة الحسابات على هذا الجهاز',
127
+ continueWithOxy: 'المتابعة باستخدام Oxy',
128
+ havingTrouble: 'هل تواجه مشكلة؟',
129
+ progress: {
130
+ preparing: 'جارٍ تحضير الطلب',
131
+ awaitingApproval: 'في انتظار الموافقة',
132
+ scanWithCommons: 'امسح الرمز باستخدام Commons على هاتفك',
133
+ continueInCommons: 'تابع في Commons',
134
+ checkCommons: 'تحقّق من Commons على هاتفك',
135
+ openedInCommons: 'تم الفتح في Commons',
136
+ confirming: 'جارٍ تأكيد الهوية',
137
+ confirmed: 'تم تأكيد الهوية',
138
+ },
139
+ signInFailures: {
140
+ denied: 'تم رفض تسجيل الدخول في Commons.',
141
+ expired: 'انتهت صلاحية طلب تسجيل الدخول. يُرجى المحاولة مرة أخرى.',
142
+ network: 'تعذّر الاتصال بـ Oxy. تحقّق من اتصالك وحاول مرة أخرى.',
143
+ notConfigured: 'هذا التطبيق غير مُعدّ لتسجيل الدخول بعد.',
144
+ unsupportedFlow: 'لا يمكن إكمال تسجيل الدخول هنا.',
145
+ claimFailed: 'تمت الموافقة على تسجيل الدخول، لكن تعذّر إكماله. يُرجى المحاولة مرة أخرى.',
146
+ generic: 'تعذّر تسجيل الدخول. يُرجى المحاولة مرة أخرى.',
147
+ },
148
+ linkOpenFailed: 'تعذّر فتح الرابط. يُرجى المحاولة مرة أخرى.',
145
149
  },
146
- "common": {
147
- "stepOf": "الخطوة {{step}} من {{total}}",
148
- "actions": {
149
- "back": "رجوع",
150
- "continue": "متابعة",
151
- "next": "التالي",
152
- "getStarted": "ابدأ",
153
- "createAccount": "إنشاء حساب",
154
- "signIn": "تسجيل الدخول",
155
- "verify": "التحقق",
156
- "resetPassword": "إعادة تعيين كلمة المرور",
157
- "signedOut": "تم تسجيل الخروج",
158
- "close": "إغلاق",
159
- "tryAgain": "حاول مرة أخرى"
160
- },
161
- "links": {
162
- "recoverAccount": "استعادة حسابك",
163
- "signUp": "التسجيل"
164
- },
165
- "labels": {
166
- "username": "اسم المستخدم",
167
- "email": "البريد الإلكتروني",
168
- "password": "كلمة المرور",
169
- "confirmPassword": "تأكيد كلمة المرور"
170
- },
171
- "revoke": "Revoke",
172
- "errors": {
173
- "signOutAllFailed": "حدثت مشكلة أثناء تسجيل الخروج من جميع الحسابات. يرجى المحاولة مرة أخرى."
174
- }
150
+ common: {
151
+ stepOf: 'الخطوة {{step}} من {{total}}',
152
+ actions: {
153
+ back: 'رجوع',
154
+ continue: 'متابعة',
155
+ next: 'التالي',
156
+ getStarted: 'ابدأ',
157
+ createAccount: 'إنشاء حساب',
158
+ signIn: 'تسجيل الدخول',
159
+ verify: 'التحقق',
160
+ resetPassword: 'إعادة تعيين كلمة المرور',
161
+ signedOut: 'تم تسجيل الخروج',
162
+ close: 'إغلاق',
163
+ tryAgain: 'حاول مرة أخرى',
164
+ },
165
+ links: {
166
+ recoverAccount: 'استعادة حسابك',
167
+ signUp: 'التسجيل',
168
+ },
169
+ labels: {
170
+ username: 'اسم المستخدم',
171
+ email: 'البريد الإلكتروني',
172
+ password: 'كلمة المرور',
173
+ confirmPassword: 'تأكيد كلمة المرور',
174
+ },
175
+ revoke: 'Revoke',
176
+ errors: {
177
+ signOutAllFailed: 'حدثت مشكلة أثناء تسجيل الخروج من جميع الحسابات. يرجى المحاولة مرة أخرى.',
178
+ },
175
179
  },
176
- "notifications": {
177
- "title": "Notifications",
178
- "subtitle": "Manage push, email, and security alerts",
179
- "updateError": "Failed to update notification preferences",
180
- "sections": {
181
- "channels": "Channels",
182
- "alerts": "Alerts",
183
- "marketing": "Marketing"
184
- },
185
- "items": {
186
- "push": {
187
- "title": "Push notifications",
188
- "subtitle": "Real-time alerts on your devices"
180
+ notifications: {
181
+ title: 'Notifications',
182
+ subtitle: 'Manage push, email, and security alerts',
183
+ updateError: 'Failed to update notification preferences',
184
+ sections: {
185
+ channels: 'Channels',
186
+ alerts: 'Alerts',
187
+ marketing: 'Marketing',
188
+ },
189
+ items: {
190
+ push: {
191
+ title: 'Push notifications',
192
+ subtitle: 'Real-time alerts on your devices',
193
+ },
194
+ emailDigest: {
195
+ title: 'Email digest',
196
+ subtitle: 'Periodic summary of your account activity',
189
197
  },
190
- "emailDigest": {
191
- "title": "Email digest",
192
- "subtitle": "Periodic summary of your account activity"
198
+ securityAlerts: {
199
+ title: 'Security alerts',
200
+ subtitle: 'Sign-ins, recovery codes, and key changes',
193
201
  },
194
- "securityAlerts": {
195
- "title": "Security alerts",
196
- "subtitle": "Sign-ins, recovery codes, and key changes"
202
+ marketingEmails: {
203
+ title: 'Marketing emails',
204
+ subtitle: 'Product news and occasional offers',
197
205
  },
198
- "marketingEmails": {
199
- "title": "Marketing emails",
200
- "subtitle": "Product news and occasional offers"
201
- }
202
- }
206
+ },
203
207
  },
204
- "preferences": {
205
- "title": "Preferences",
206
- "subtitle": "Theme, motion, and regional settings",
207
- "sections": {
208
- "appearance": "Appearance",
209
- "language": "Language",
210
- "region": "Region"
211
- },
212
- "theme": {
213
- "light": "Light",
214
- "dark": "Dark",
215
- "system": "System default"
216
- },
217
- "items": {
218
- "theme": {
219
- "title": "Theme"
208
+ preferences: {
209
+ title: 'Preferences',
210
+ subtitle: 'Theme, motion, and regional settings',
211
+ sections: {
212
+ appearance: 'Appearance',
213
+ language: 'Language',
214
+ region: 'Region',
215
+ },
216
+ theme: {
217
+ light: 'Light',
218
+ dark: 'Dark',
219
+ system: 'System default',
220
+ },
221
+ items: {
222
+ theme: {
223
+ title: 'Theme',
220
224
  },
221
- "reduceMotion": {
222
- "title": "Reduce motion",
223
- "subtitle": "Minimise animations across Oxy apps",
224
- "systemOn": "Following system: reduce motion is on"
225
+ reduceMotion: {
226
+ title: 'Reduce motion',
227
+ subtitle: 'Minimise animations across Oxy apps',
228
+ systemOn: 'Following system: reduce motion is on',
225
229
  },
226
- "language": {
227
- "title": "Language"
230
+ language: {
231
+ title: 'Language',
228
232
  },
229
- "timezone": {
230
- "title": "Timezone",
231
- "unknown": "Unable to detect timezone"
233
+ timezone: {
234
+ title: 'Timezone',
235
+ unknown: 'Unable to detect timezone',
232
236
  },
233
- "about": {
234
- "title": "About preferences",
235
- "subtitle": "Preferences sync across every Oxy app you sign into"
236
- }
237
- }
237
+ about: {
238
+ title: 'About preferences',
239
+ subtitle: 'Preferences sync across every Oxy app you sign into',
240
+ },
241
+ },
238
242
  },
239
- "connectedApps": {
240
- "title": "Connected apps",
241
- "subtitle": "Manage third-party app access",
242
- "empty": {
243
- "title": "No connected apps",
244
- "subtitle": "Apps you authorize to sign in with your Oxy account will appear here"
245
- },
246
- "item": {
247
- "granted": "ممنوح {{relative}}",
248
- "lastUsed": "Last used {{relative}}"
249
- },
250
- "confirm": {
251
- "title": "Revoke access",
252
- "message": "Revoke {{name}}'s access to your Oxy account?"
253
- },
254
- "toasts": {
255
- "revoked": "Revoked access for {{name}}",
256
- "revokeFailed": "Failed to revoke access"
257
- }
243
+ connectedApps: {
244
+ title: 'Connected apps',
245
+ subtitle: 'Manage third-party app access',
246
+ empty: {
247
+ title: 'No connected apps',
248
+ subtitle: 'Apps you authorize to sign in with your Oxy account will appear here',
249
+ },
250
+ item: {
251
+ granted: 'ممنوح {{relative}}',
252
+ lastUsed: 'Last used {{relative}}',
253
+ },
254
+ confirm: {
255
+ title: 'Revoke access',
256
+ message: "Revoke {{name}}'s access to your Oxy account?",
257
+ },
258
+ toasts: {
259
+ revoked: 'Revoked access for {{name}}',
260
+ revokeFailed: 'Failed to revoke access',
261
+ },
258
262
  },
259
- "accountMenu": {
260
- "label": "قائمة الحساب",
261
- "manage": "إدارة حساب Oxy الخاص بك",
262
- "viewProfile": "عرض الملف الشخصي",
263
- "addAnother": "إضافة حساب آخر",
264
- "signOutAll": "تسجيل الخروج من جميع الحسابات",
265
- "open": "قائمة الحساب",
266
- "openHint": "يفتح قائمة الحساب",
267
- "openWithUser": "قائمة حساب {{name}}",
268
- "switching": "جارٍ تبديل الحساب…",
269
- "signOutAccount": "تسجيل خروج {{name}}",
270
- "greeting": "مرحبًا، {{name}}!",
271
- "switchAccount": "تبديل الحساب",
272
- "storage": {
273
- "title": "تخزين Oxy",
274
- "usage": "{{used}} من {{total}} مستخدم",
275
- "used": "مستخدم",
276
- "free": "متاح",
277
- "unavailable": "تفاصيل الاستخدام غير متاحة",
278
- "upgrade": "ترقية الخطة",
279
- "manage": "إدارة التخزين"
280
- },
281
- "data": "بياناتك في Oxy",
282
- "settings": "إعدادات Oxy",
283
- "help": "المساعدة والملاحظات",
284
- "signOut": "تسجيل الخروج",
285
- "privacy": "سياسة الخصوصية",
286
- "terms": "شروط الخدمة"
263
+ accountMenu: {
264
+ label: 'قائمة الحساب',
265
+ manage: 'إدارة حساب Oxy الخاص بك',
266
+ viewProfile: 'عرض الملف الشخصي',
267
+ addAnother: 'إضافة حساب آخر',
268
+ signOutAll: 'تسجيل الخروج من جميع الحسابات',
269
+ open: 'قائمة الحساب',
270
+ openHint: 'يفتح قائمة الحساب',
271
+ openWithUser: 'قائمة حساب {{name}}',
272
+ switching: 'جارٍ تبديل الحساب…',
273
+ signOutAccount: 'تسجيل خروج {{name}}',
274
+ greeting: 'مرحبًا، {{name}}!',
275
+ switchAccount: 'تبديل الحساب',
276
+ storage: {
277
+ title: 'تخزين Oxy',
278
+ usage: '{{used}} من {{total}} مستخدم',
279
+ used: 'مستخدم',
280
+ free: 'متاح',
281
+ unavailable: 'تفاصيل الاستخدام غير متاحة',
282
+ upgrade: 'ترقية الخطة',
283
+ manage: 'إدارة التخزين',
284
+ },
285
+ data: 'بياناتك في Oxy',
286
+ settings: 'إعدادات Oxy',
287
+ help: 'المساعدة والملاحظات',
288
+ signOut: 'تسجيل الخروج',
289
+ privacy: 'سياسة الخصوصية',
290
+ terms: 'شروط الخدمة',
287
291
  },
288
- "emailCode": {
289
- "title": "تحقق من بريدك",
290
- "sentTo": "أرسلنا رمزًا من 6 أرقام إلى {{email}}.",
291
- "label": "الرمز",
292
- "resend": "أرسل رمزًا جديدًا",
293
- "resent": "أرسلنا رمزًا جديدًا.",
294
- "changeEmail": "استخدم بريدًا آخر",
295
- "errors": {
296
- "codeInvalid": "الرمز غير صحيح أو انتهت صلاحيته.",
297
- "tooManyAttempts": "رموز خاطئة كثيرة. اطلب رمزًا جديدًا.",
298
- "expired": "استغرق الأمر وقتًا طويلًا. ابدأ من جديد.",
299
- "unavailable": "لا يستطيع Oxy إرسال البريد الآن. حاول لاحقًا.",
300
- "rateLimited": "رموز كثيرة. حاول لاحقًا."
301
- }
292
+ emailCode: {
293
+ title: 'تحقق من بريدك',
294
+ sentTo: 'أرسلنا رمزًا من 6 أرقام إلى {{email}}.',
295
+ label: 'الرمز',
296
+ resend: 'أرسل رمزًا جديدًا',
297
+ resent: 'أرسلنا رمزًا جديدًا.',
298
+ changeEmail: 'استخدم بريدًا آخر',
299
+ errors: {
300
+ codeInvalid: 'الرمز غير صحيح أو انتهت صلاحيته.',
301
+ tooManyAttempts: 'رموز خاطئة كثيرة. اطلب رمزًا جديدًا.',
302
+ expired: 'استغرق الأمر وقتًا طويلًا. ابدأ من جديد.',
303
+ unavailable: 'لا يستطيع Oxy إرسال البريد الآن. حاول لاحقًا.',
304
+ rateLimited: 'رموز كثيرة. حاول لاحقًا.',
305
+ },
302
306
  },
303
- "deleteAccount": {
304
- "keyless": {
305
- "subtitle": "سيُحذف @{{username}} وكل ما فيه نهائيًا. اكتب اسم المستخدم، ثم أكّد برمز نرسله إلى بريدك.",
306
- "action": "حذف الحساب",
307
- "done": "حُذف حسابك.",
308
- "doneDescription": "سُجّل خروجك.",
309
- "keyed": "يستخدم هذا الحساب Commons: احذفه في Oxy Commons من الإعدادات > حذف الحساب، بمفتاحه."
310
- },
311
- "handoff": {
312
- "elsewhereMessage": "حذف حسابك يتطلب مفتاح هويتك، وهو غير موجود على هذا الجهاز. افتح Oxy Commons على الجهاز الذي يحتفظ به وانتقل إلى الإعدادات > حذف الحساب."
313
- }
307
+ deleteAccount: {
308
+ keyless: {
309
+ subtitle:
310
+ 'سيُحذف @{{username}} وكل ما فيه نهائيًا. اكتب اسم المستخدم، ثم أكّد برمز نرسله إلى بريدك.',
311
+ action: 'حذف الحساب',
312
+ done: 'حُذف حسابك.',
313
+ doneDescription: 'سُجّل خروجك.',
314
+ keyed: 'يستخدم هذا الحساب Commons: احذفه في Oxy Commons من الإعدادات > حذف الحساب، بمفتاحه.',
315
+ },
316
+ handoff: {
317
+ elsewhereMessage:
318
+ 'حذف حسابك يتطلب مفتاح هويتك، وهو غير موجود على هذا الجهاز. افتح Oxy Commons على الجهاز الذي يحتفظ به وانتقل إلى الإعدادات > حذف الحساب.',
319
+ },
314
320
  },
315
- "linkCommons": {
316
- "title": "اربط Commons",
317
- "subtitle": "احتفظ بمفتاحك: اربط Commons ليصبح هذا الحساب لك وحدك. يُحذف بريده الإلكتروني، وتصبح عبارة الاسترداد في Commons طريقك للعودة.",
318
- "scan": "على هاتفك، افتح Commons واختر «لدي حساب Oxy على الويب» ثم امسح هذا الرمز.",
319
- "waiting": "بانتظار Commons…",
320
- "compareTitle": "تحقق من الرمز",
321
- "compare": "يعرض Commons الرمز نفسه. إن لم يكن كذلك، ألغِ العملية.",
322
- "confirm": "نعم، اربط Commons",
323
- "cancel": "إلغاء",
324
- "doneTitle": "تم ربط Commons",
325
- "done": "أصبح هذا الحساب ذاتي الحفظ. حُذف بريده الإلكتروني: عبارة الاسترداد في Commons هي طريقك للعودة.",
326
- "already": "يستخدم هذا الحساب Commons بالفعل.",
327
- "expired": "انتهت صلاحية هذا الرمز.",
328
- "renew": "اعرض رمزًا جديدًا",
329
- "failed": "تعذّر ربط Commons. حاول مجددًا.",
330
- "confirmTitle": "أكّد الربط",
331
- "confirmDescription": "للإنهاء، أكّد أنك أنت برمز نرسله إلى بريدك.",
332
- "row": "احتفظ بمفتاحك بنفسك مع Commons"
321
+ linkCommons: {
322
+ title: 'اربط Commons',
323
+ subtitle:
324
+ 'احتفظ بمفتاحك: اربط Commons ليصبح هذا الحساب لك وحدك. يُحذف بريده الإلكتروني، وتصبح عبارة الاسترداد في Commons طريقك للعودة.',
325
+ scan: 'على هاتفك، افتح Commons واختر «لدي حساب Oxy على الويب» ثم امسح هذا الرمز.',
326
+ waiting: 'بانتظار Commons…',
327
+ compareTitle: 'تحقق من الرمز',
328
+ compare: 'يعرض Commons الرمز نفسه. إن لم يكن كذلك، ألغِ العملية.',
329
+ confirm: 'نعم، اربط Commons',
330
+ cancel: 'إلغاء',
331
+ doneTitle: 'تم ربط Commons',
332
+ done: 'أصبح هذا الحساب ذاتي الحفظ. حُذف بريده الإلكتروني: عبارة الاسترداد في Commons هي طريقك للعودة.',
333
+ already: 'يستخدم هذا الحساب Commons بالفعل.',
334
+ expired: 'انتهت صلاحية هذا الرمز.',
335
+ renew: 'اعرض رمزًا جديدًا',
336
+ failed: 'تعذّر ربط Commons. حاول مجددًا.',
337
+ confirmTitle: 'أكّد الربط',
338
+ confirmDescription: 'للإنهاء، أكّد أنك أنت برمز نرسله إلى بريدك.',
339
+ row: 'احتفظ بمفتاحك بنفسك مع Commons',
333
340
  },
334
- "reauth": {
335
- "title": "أكّد أنك أنت",
336
- "emailDescription": "سنرسل رمزًا إلى بريدك لتأكيد هذا التغيير.",
337
- "sendCode": "أرسل الرمز",
338
- "codeSent": "أرسلنا رمزًا من 6 أرقام إلى بريدك.",
339
- "codeLabel": "الرمز من الرسالة",
340
- "passwordLabel": "كلمة المرور الحالية",
341
- "usePassword": "استخدم كلمة المرور بدلًا من ذلك",
342
- "useEmail": "احصل على رمز عبر البريد بدلًا من ذلك",
343
- "errors": {
344
- "invalid": "لم ينجح ذلك. تحقق مما كتبته وحاول مرة أخرى.",
345
- "totpRequired": "أدخل أيضًا الرمز من تطبيق المصادقة."
346
- }
341
+ reauth: {
342
+ title: 'أكّد أنك أنت',
343
+ emailDescription: 'سنرسل رمزًا إلى بريدك لتأكيد هذا التغيير.',
344
+ sendCode: 'أرسل الرمز',
345
+ codeSent: 'أرسلنا رمزًا من 6 أرقام إلى بريدك.',
346
+ codeLabel: 'الرمز من الرسالة',
347
+ passwordLabel: 'كلمة المرور الحالية',
348
+ usePassword: 'استخدم كلمة المرور بدلًا من ذلك',
349
+ useEmail: 'احصل على رمز عبر البريد بدلًا من ذلك',
350
+ errors: {
351
+ invalid: 'لم ينجح ذلك. تحقق مما كتبته وحاول مرة أخرى.',
352
+ totpRequired: 'أدخل أيضًا الرمز من تطبيق المصادقة.',
353
+ },
354
+ },
355
+ signInSecurity: {
356
+ password: {
357
+ title: 'كلمة المرور',
358
+ setTitle: 'عيّن كلمة مرور',
359
+ changeTitle: 'غيّر كلمة المرور',
360
+ description: 'سجّل الدخول بكلمة المرور بدلًا من رمز عبر البريد. استخدم {{min}} أحرف على الأقل.',
361
+ newLabel: 'كلمة المرور الجديدة',
362
+ repeatLabel: 'كرّر كلمة المرور',
363
+ tooShort: 'استخدم {{min}} أحرف على الأقل.',
364
+ mismatch: 'كلمتا المرور غير متطابقتين.',
365
+ signOutOthers: 'سجّل الخروج من كل مكان آخر',
366
+ save: 'احفظ كلمة المرور',
367
+ saved: 'حُفظت كلمة المرور.',
368
+ row: 'اختياري: سجّل الدخول بكلمة مرور',
369
+ },
370
+ totp: {
371
+ title: 'تطبيق المصادقة',
372
+ description:
373
+ 'بعد رمز البريد أو كلمة المرور، يطلب Oxy أيضًا رمزًا من تطبيق مثل Google Authenticator أو 1Password.',
374
+ setUp: 'إعداد',
375
+ scan: 'امسح رمز QR هذا بتطبيق المصادقة، أو أدخل مفتاح الإعداد.',
376
+ secretLabel: 'مفتاح الإعداد',
377
+ codeLabel: 'الرمز من التطبيق',
378
+ enable: 'تشغيل',
379
+ enabled: 'تطبيق المصادقة مفعّل.',
380
+ disable: 'أوقف تطبيق المصادقة',
381
+ disabled: 'تطبيق المصادقة متوقف.',
382
+ on: 'مفعّل',
383
+ off: 'متوقف',
384
+ backupTitle: 'احفظ رموزك الاحتياطية',
385
+ backupDescription:
386
+ 'إذا فقدت هاتفك، فكل رمز يتيح لك تسجيل الدخول مرة واحدة. احفظها في مكان آمن: لن تُعرض مرة أخرى.',
387
+ copy: 'انسخ الرموز',
388
+ copied: 'نُسخت الرموز الاحتياطية.',
389
+ savedThem: 'حفظتها',
390
+ regenerate: 'احصل على رموز احتياطية جديدة',
391
+ regenerateDescription: 'ستتوقف رموزك الاحتياطية القديمة عن العمل.',
392
+ remaining: 'تبقّى {{count}} من الرموز الاحتياطية',
393
+ row: 'خطوة ثانية عند تسجيل الدخول',
394
+ },
347
395
  },
348
- "signInSecurity": {
349
- "password": {
350
- "title": "كلمة المرور",
351
- "setTitle": "عيّن كلمة مرور",
352
- "changeTitle": "غيّر كلمة المرور",
353
- "description": "سجّل الدخول بكلمة المرور بدلًا من رمز عبر البريد. استخدم {{min}} أحرف على الأقل.",
354
- "newLabel": "كلمة المرور الجديدة",
355
- "repeatLabel": "كرّر كلمة المرور",
356
- "tooShort": "استخدم {{min}} أحرف على الأقل.",
357
- "mismatch": "كلمتا المرور غير متطابقتين.",
358
- "signOutOthers": "سجّل الخروج من كل مكان آخر",
359
- "save": "احفظ كلمة المرور",
360
- "saved": "حُفظت كلمة المرور.",
361
- "row": "اختياري: سجّل الدخول بكلمة مرور"
362
- },
363
- "totp": {
364
- "title": "تطبيق المصادقة",
365
- "description": "بعد رمز البريد أو كلمة المرور، يطلب Oxy أيضًا رمزًا من تطبيق مثل Google Authenticator أو 1Password.",
366
- "setUp": "إعداد",
367
- "scan": "امسح رمز QR هذا بتطبيق المصادقة، أو أدخل مفتاح الإعداد.",
368
- "secretLabel": "مفتاح الإعداد",
369
- "codeLabel": "الرمز من التطبيق",
370
- "enable": "تشغيل",
371
- "enabled": "تطبيق المصادقة مفعّل.",
372
- "disable": "أوقف تطبيق المصادقة",
373
- "disabled": "تطبيق المصادقة متوقف.",
374
- "on": "مفعّل",
375
- "off": "متوقف",
376
- "backupTitle": "احفظ رموزك الاحتياطية",
377
- "backupDescription": "إذا فقدت هاتفك، فكل رمز يتيح لك تسجيل الدخول مرة واحدة. احفظها في مكان آمن: لن تُعرض مرة أخرى.",
378
- "copy": "انسخ الرموز",
379
- "copied": "نُسخت الرموز الاحتياطية.",
380
- "savedThem": "حفظتها",
381
- "regenerate": "احصل على رموز احتياطية جديدة",
382
- "regenerateDescription": "ستتوقف رموزك الاحتياطية القديمة عن العمل.",
383
- "remaining": "تبقّى {{count}} من الرموز الاحتياطية",
384
- "row": "خطوة ثانية عند تسجيل الدخول"
385
- }
386
- }
387
396
  };
388
397
  export default dict;