@oxy.so/core 4.5.0-oxy-one.0 → 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 (285) 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 +49 -12
  7. package/dist/cjs/api/auth.js +37 -11
  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 +49 -12
  83. package/dist/esm/api/auth.js +37 -11
  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/api/assets.d.ts +2 -0
  161. package/dist/types/api/auth.d.ts +8 -3
  162. package/dist/types/crypto/internal.d.ts +1 -1
  163. package/dist/types/index.d.ts +4 -4
  164. package/dist/types/server/index.d.ts +6 -6
  165. package/dist/types/server/requesterAssertion.d.ts +2 -2
  166. package/dist/types/server/workloadIdentity.client.d.ts +5 -1
  167. package/dist/types/server/workloadIdentity.d.ts +26 -0
  168. package/dist/types/session/accountDelegationAccess.d.ts +1 -1
  169. package/dist/types/session/index.d.ts +1 -1
  170. package/dist/types/utils/userIdentity.d.ts +1 -1
  171. package/dist/types/utils/validationUtils.d.ts +4 -5
  172. package/package.json +2 -3
  173. package/src/HttpService.ts +183 -53
  174. package/src/OxyServices.errors.ts +7 -3
  175. package/src/OxyServices.ts +6 -2
  176. package/src/api/accounts.ts +76 -26
  177. package/src/api/agency.ts +24 -9
  178. package/src/api/appData.ts +12 -2
  179. package/src/api/apps.ts +81 -31
  180. package/src/api/assets.ts +122 -40
  181. package/src/api/auth.ts +154 -79
  182. package/src/api/billing.ts +112 -65
  183. package/src/api/civic.ts +61 -19
  184. package/src/api/contacts.ts +4 -1
  185. package/src/api/devices.ts +54 -21
  186. package/src/api/follows.ts +88 -31
  187. package/src/api/identity.ts +101 -33
  188. package/src/api/linkedAccounts.ts +26 -8
  189. package/src/api/nodes.ts +18 -6
  190. package/src/api/notifications.ts +26 -6
  191. package/src/api/privacy.ts +42 -8
  192. package/src/api/reputation.ts +18 -7
  193. package/src/api/session.ts +23 -5
  194. package/src/api/store.ts +81 -31
  195. package/src/api/topics.ts +18 -6
  196. package/src/api/users.ts +98 -35
  197. package/src/boot/sessionColdBoot.ts +60 -19
  198. package/src/civic/payloads.ts +1 -4
  199. package/src/client/context.ts +6 -1
  200. package/src/constants/version.ts +7 -6
  201. package/src/crypto/aead.ts +1 -5
  202. package/src/crypto/ecdh.ts +1 -4
  203. package/src/crypto/identityDerivations.ts +5 -1
  204. package/src/crypto/identityMarker.ts +3 -1
  205. package/src/crypto/identityProof.ts +6 -1
  206. package/src/crypto/index.ts +11 -11
  207. package/src/crypto/internal.ts +6 -1
  208. package/src/crypto/keyManager.ts +348 -98
  209. package/src/crypto/recoveryPhrase.ts +14 -9
  210. package/src/crypto/registrationPow.ts +1 -1
  211. package/src/crypto/signatureService.ts +14 -6
  212. package/src/i18n/accountCategoryLabels.ts +1 -4
  213. package/src/i18n/accountRoleLabels.ts +1 -4
  214. package/src/i18n/index.ts +25 -7
  215. package/src/i18n/locales/ar-SA.ts +375 -366
  216. package/src/i18n/locales/ca-ES.ts +382 -366
  217. package/src/i18n/locales/de-DE.ts +387 -366
  218. package/src/i18n/locales/en-US.ts +2034 -1994
  219. package/src/i18n/locales/es-ES.ts +2043 -1994
  220. package/src/i18n/locales/fr-FR.ts +387 -366
  221. package/src/i18n/locales/it-IT.ts +380 -366
  222. package/src/i18n/locales/ja-JP.ts +380 -366
  223. package/src/i18n/locales/ko-KR.ts +377 -366
  224. package/src/i18n/locales/pt-PT.ts +383 -366
  225. package/src/i18n/locales/zh-CN.ts +373 -366
  226. package/src/i18n/trustTierLabels.ts +1 -4
  227. package/src/index.ts +371 -349
  228. package/src/inference/OxyInferenceClient.ts +784 -780
  229. package/src/models/interfaces.ts +30 -27
  230. package/src/server/OxyServer.ts +227 -68
  231. package/src/server/agentAccount.ts +8 -2
  232. package/src/server/aliaMachineCredential.ts +57 -16
  233. package/src/server/auth.ts +9 -5
  234. package/src/server/capabilityTicket.ts +30 -21
  235. package/src/server/index.ts +29 -6
  236. package/src/server/liveCapabilityTicket.ts +31 -9
  237. package/src/server/middleware.ts +212 -121
  238. package/src/server/namespaces.ts +247 -94
  239. package/src/server/rateLimit.ts +2 -4
  240. package/src/server/requesterAssertion.ts +93 -54
  241. package/src/server/serviceTokenLifetime.ts +9 -4
  242. package/src/server/traffic.ts +117 -23
  243. package/src/server/trafficNodeHttp.ts +61 -14
  244. package/src/server/userInvalidation.ts +1 -4
  245. package/src/server/workloadIdentity.client.ts +12 -1
  246. package/src/server/workloadIdentity.ts +52 -5
  247. package/src/session/SessionClient.ts +170 -49
  248. package/src/session/accountDelegationAccess.ts +24 -31
  249. package/src/session/accountDialogController.ts +59 -14
  250. package/src/session/accountSwitchTargets.ts +10 -15
  251. package/src/session/authStateStore.ts +121 -81
  252. package/src/session/deviceDirectory.ts +1 -3
  253. package/src/session/identityPin.ts +10 -11
  254. package/src/session/identitySession.ts +3 -1
  255. package/src/session/index.ts +87 -82
  256. package/src/session/refresh.ts +138 -44
  257. package/src/session/sessionClientHost.ts +1 -3
  258. package/src/session/sharedDeviceCredential.ts +35 -14
  259. package/src/session/socketLoader.ts +9 -2
  260. package/src/shared/utils/errorUtils.ts +5 -2
  261. package/src/shared/utils/networkUtils.ts +5 -8
  262. package/src/shared/utils/themeUtils.ts +2 -6
  263. package/src/types/buffer.d.ts +66 -21
  264. package/src/types/expo-secure-store.d.ts +5 -1
  265. package/src/utils/accountCacheSweep.ts +4 -5
  266. package/src/utils/accountUtils.ts +107 -108
  267. package/src/utils/apiUtils.ts +3 -3
  268. package/src/utils/asyncUtils.ts +2 -2
  269. package/src/utils/authHelpers.ts +10 -5
  270. package/src/utils/avatarUtils.ts +11 -6
  271. package/src/utils/cache.ts +9 -10
  272. package/src/utils/cacheKey.ts +5 -1
  273. package/src/utils/coldBoot.ts +1 -3
  274. package/src/utils/commonsDelivery.ts +1 -4
  275. package/src/utils/deviceManager.ts +15 -14
  276. package/src/utils/errorUtils.ts +68 -86
  277. package/src/utils/languageUtils.ts +407 -58
  278. package/src/utils/oauthPkce.ts +1 -4
  279. package/src/utils/platform.ts +0 -1
  280. package/src/utils/profileLinks.ts +2 -5
  281. package/src/utils/requestUtils.ts +18 -14
  282. package/src/utils/sessionUtils.ts +34 -33
  283. package/src/utils/userHandle.ts +3 -1
  284. package/src/utils/userIdentity.ts +1 -1
  285. package/src/utils/validationUtils.ts +11 -9
@@ -1,388 +1,388 @@
1
1
  const dict = {
2
- "signin": {
3
- "title": "Iniciar sessão",
4
- "subtitle": "Usa a tua conta Oxy",
5
- "addAccountTitle": "Adicionar outra conta",
6
- "addAccountSubtitle": "Iniciar sessão com outra conta",
7
- "actions": {
8
- "continue": "Continuar",
9
- "back": "Voltar"
10
- },
11
- "createAccountLink": "Novo no Oxy? Crie uma conta",
12
- "status": {
13
- "signingIn": "A iniciar sessão…"
14
- },
15
- "subtitleToApp": "para continuar para {{app}}",
16
- "orContinueWith": "ou continua com",
17
- "qr": {
18
- "caption": "Lê com o Commons para entrar",
19
- "renew": "Mostrar um código novo"
20
- },
21
- "errors": {
22
- "rateLimited": "Demasiadas tentativas. Tenta novamente dentro de {{seconds}} s.",
23
- "invalidCredentials": "O nome de utilizador, o email ou a palavra-passe não estão certos.",
24
- "codeInvalid": "Esse código não está certo ou expirou.",
25
- "requestExpired": "Este início de sessão expirou. Envia um novo email.",
26
- "secondFactorInvalid": "Esse código não está certo. Experimenta o atual.",
27
- "originNotAllowed": "Não é possível iniciar sessão aqui.",
28
- "generic": "Algo correu mal. Tenta novamente.",
29
- "notConfigured": "Não é possível iniciar sessão",
30
- "notConfiguredDescription": "{{app}} ainda não está configurada para iniciar sessão. Contacta quem desenvolve a app.",
31
- "failed": "Não foi possível iniciar sessão",
32
- "failedDescription": "Algo correu mal. Tenta novamente."
33
- },
34
- "chooser": {
35
- "subtitleToApp": "para continuar para {{app}}",
36
- "title": "Escolhe uma conta",
37
- "subtitle": "Continua com uma das tuas contas ou usa outra.",
38
- "useAnother": "Usar outra conta",
39
- "continueAs": "Continuar como {{name}}"
40
- },
41
- "terms": {
42
- "before": "Ao continuar, aceitas os nossos",
43
- "termsLink": "Termos de serviço",
44
- "and": "e a",
45
- "privacyLink": "Política de privacidade"
46
- },
47
- "noAccount": "Não tens conta?",
48
- "createAccount": "Criar conta",
49
- "identifier": {
50
- "label": "Email ou nome de utilizador",
51
- "placeholder": "tu@exemplo.pt",
52
- "required": "Escreve o teu email ou nome de utilizador."
53
- },
54
- "checkEmail": {
55
- "title": "Vê o teu email",
56
- "description": "Se houver uma conta com {{identifier}}, enviámos-lhe um código e uma ligação para iniciar sessão.",
57
- "codeLabel": "Código",
58
- "codeHint": "Escreve o código do email ou abre a ligação dele neste navegador.",
59
- "codeHasLetters": "O teu código tem letras?",
60
- "codeDigitsOnly": "O teu código só tem números?",
61
- "resend": "Enviar um novo email",
62
- "resendIn": "Enviar um novo email dentro de {{seconds}} s",
63
- "resent": "Enviámos um novo email.",
64
- "retryLater": "Já enviámos vários emails. Espera alguns minutos e tenta novamente.",
65
- "usePassword": "Usar antes a palavra-passe",
66
- "differentAccount": "Usar outra conta"
67
- },
68
- "password": {
69
- "title": "Escreve a tua palavra-passe",
70
- "label": "Palavra-passe",
71
- "required": "Escreve a tua palavra-passe.",
72
- "forgot": "Esqueceste-a? Recebe um código por email"
73
- },
74
- "secondFactor": {
75
- "title": "Verificação em dois passos",
76
- "description": "Escreve o código da tua app de autenticação.",
77
- "backupDescription": "Escreve um dos teus códigos de segurança. Cada um só funciona uma vez.",
78
- "label": "Código de autenticação",
79
- "backupLabel": "Código de segurança",
80
- "useBackup": "Usar um código de segurança",
81
- "useAuthenticator": "Usar a tua app de autenticação"
82
- },
83
- "link": {
84
- "approvedTitle": "Tens sessão iniciada",
85
- "approvedDescription": "Volta à app onde pediste para iniciar sessão: ela continua sozinha. Podes fechar este separador.",
86
- "otherDeviceTitle": "Abre a ligação no mesmo navegador",
87
- "otherDeviceDescription": "Esta ligação só funciona no navegador onde pediste para iniciar sessão. Abre-a lá ou escreve na app o código do email.",
88
- "invalidTitle": "Esta ligação não pode ser usada",
89
- "invalidDescription": "Expirou ou já foi usada. Pede um novo email na app ou escreve o código do mais recente."
90
- }
2
+ signin: {
3
+ title: 'Iniciar sessão',
4
+ subtitle: 'Usa a tua conta Oxy',
5
+ addAccountTitle: 'Adicionar outra conta',
6
+ addAccountSubtitle: 'Iniciar sessão com outra conta',
7
+ actions: {
8
+ continue: 'Continuar',
9
+ back: 'Voltar',
10
+ },
11
+ createAccountLink: 'Novo no Oxy? Crie uma conta',
12
+ status: {
13
+ signingIn: 'A iniciar sessão…',
14
+ },
15
+ subtitleToApp: 'para continuar para {{app}}',
16
+ orContinueWith: 'ou continua com',
17
+ qr: {
18
+ caption: 'Lê com o Commons para entrar',
19
+ renew: 'Mostrar um código novo',
20
+ },
21
+ errors: {
22
+ rateLimited: 'Demasiadas tentativas. Tenta novamente dentro de {{seconds}} s.',
23
+ invalidCredentials: 'O nome de utilizador, o email ou a palavra-passe não estão certos.',
24
+ codeInvalid: 'Esse código não está certo ou expirou.',
25
+ requestExpired: 'Este início de sessão expirou. Envia um novo email.',
26
+ secondFactorInvalid: 'Esse código não está certo. Experimenta o atual.',
27
+ originNotAllowed: 'Não é possível iniciar sessão aqui.',
28
+ generic: 'Algo correu mal. Tenta novamente.',
29
+ notConfigured: 'Não é possível iniciar sessão',
30
+ notConfiguredDescription: '{{app}} ainda não está configurada para iniciar sessão. Contacta quem desenvolve a app.',
31
+ failed: 'Não foi possível iniciar sessão',
32
+ failedDescription: 'Algo correu mal. Tenta novamente.',
33
+ },
34
+ chooser: {
35
+ subtitleToApp: 'para continuar para {{app}}',
36
+ title: 'Escolhe uma conta',
37
+ subtitle: 'Continua com uma das tuas contas ou usa outra.',
38
+ useAnother: 'Usar outra conta',
39
+ continueAs: 'Continuar como {{name}}',
40
+ },
41
+ terms: {
42
+ before: 'Ao continuar, aceitas os nossos',
43
+ termsLink: 'Termos de serviço',
44
+ and: 'e a',
45
+ privacyLink: 'Política de privacidade',
46
+ },
47
+ noAccount: 'Não tens conta?',
48
+ createAccount: 'Criar conta',
49
+ identifier: {
50
+ label: 'Email ou nome de utilizador',
51
+ placeholder: 'tu@exemplo.pt',
52
+ required: 'Escreve o teu email ou nome de utilizador.',
53
+ },
54
+ checkEmail: {
55
+ title: 'Vê o teu email',
56
+ description: 'Se houver uma conta com {{identifier}}, enviámos-lhe um código e uma ligação para iniciar sessão.',
57
+ codeLabel: 'Código',
58
+ codeHint: 'Escreve o código do email ou abre a ligação dele neste navegador.',
59
+ codeHasLetters: 'O teu código tem letras?',
60
+ codeDigitsOnly: 'O teu código só tem números?',
61
+ resend: 'Enviar um novo email',
62
+ resendIn: 'Enviar um novo email dentro de {{seconds}} s',
63
+ resent: 'Enviámos um novo email.',
64
+ retryLater: 'Já enviámos vários emails. Espera alguns minutos e tenta novamente.',
65
+ usePassword: 'Usar antes a palavra-passe',
66
+ differentAccount: 'Usar outra conta',
67
+ },
68
+ password: {
69
+ title: 'Escreve a tua palavra-passe',
70
+ label: 'Palavra-passe',
71
+ required: 'Escreve a tua palavra-passe.',
72
+ forgot: 'Esqueceste-a? Recebe um código por email',
73
+ },
74
+ secondFactor: {
75
+ title: 'Verificação em dois passos',
76
+ description: 'Escreve o código da tua app de autenticação.',
77
+ backupDescription: 'Escreve um dos teus códigos de segurança. Cada um só funciona uma vez.',
78
+ label: 'Código de autenticação',
79
+ backupLabel: 'Código de segurança',
80
+ useBackup: 'Usar um código de segurança',
81
+ useAuthenticator: 'Usar a tua app de autenticação',
82
+ },
83
+ link: {
84
+ approvedTitle: 'Tens sessão iniciada',
85
+ approvedDescription: 'Volta à app onde pediste para iniciar sessão: ela continua sozinha. Podes fechar este separador.',
86
+ otherDeviceTitle: 'Abre a ligação no mesmo navegador',
87
+ otherDeviceDescription: 'Esta ligação só funciona no navegador onde pediste para iniciar sessão. Abre-a lá ou escreve na app o código do email.',
88
+ invalidTitle: 'Esta ligação não pode ser usada',
89
+ invalidDescription: 'Expirou ou já foi usada. Pede um novo email na app ou escreve o código do mais recente.',
90
+ },
91
91
  },
92
- "signup": {
93
- "title": "Cria a tua conta",
94
- "subtitle": "Escolhe o teu nome de utilizador. Depois confirmamos o teu email.",
95
- "createInCommons": "Criá-la antes no Commons",
96
- "backToSignInLink": "Já tens conta? Inicia sessão",
97
- "username": {
98
- "label": "Nome de utilizador",
99
- "placeholder": "oteunome",
100
- "required": "Escolhe um nome de utilizador.",
101
- "taken": "Esse nome de utilizador já está em uso."
102
- },
103
- "email": {
104
- "title": "Qual é o teu email?",
105
- "subtitle": "É com ele que inicias sessão: enviamos-te um código de cada vez. Mais ninguém o vê.",
106
- "label": "Email",
107
- "placeholder": "tu@exemplo.pt",
108
- "invalid": "Escreve um email válido."
109
- },
110
- "commonsSubtitle": "Ou cria a tua identidade no Commons e guarda a tua própria chave.",
111
- "laterNote": "Mais tarde podes adicionar uma palavra-passe ou uma app de autenticação nas definições de segurança da tua conta."
92
+ signup: {
93
+ title: 'Cria a tua conta',
94
+ subtitle: 'Escolhe o teu nome de utilizador. Depois confirmamos o teu email.',
95
+ createInCommons: 'Criá-la antes no Commons',
96
+ backToSignInLink: 'Já tens conta? Inicia sessão',
97
+ username: {
98
+ label: 'Nome de utilizador',
99
+ placeholder: 'oteunome',
100
+ required: 'Escolhe um nome de utilizador.',
101
+ taken: 'Esse nome de utilizador já está em uso.',
102
+ },
103
+ email: {
104
+ title: 'Qual é o teu email?',
105
+ subtitle: 'É com ele que inicias sessão: enviamos-te um código de cada vez. Mais ninguém o vê.',
106
+ label: 'Email',
107
+ placeholder: 'tu@exemplo.pt',
108
+ invalid: 'Escreve um email válido.',
109
+ },
110
+ commonsSubtitle: 'Ou cria a tua identidade no Commons e guarda a tua própria chave.',
111
+ laterNote: 'Mais tarde podes adicionar uma palavra-passe ou uma app de autenticação nas definições de segurança da tua conta.',
112
112
  },
113
- "accountSwitcher": {
114
- "loading": "A carregar contas...",
115
- "qrHeadline": "Inicie sessão com a sua identidade Oxy",
116
- "signInWithOxy": "Iniciar sessão com Oxy",
117
- "signUpWithOxy": "Registar-se com Oxy",
118
- "getCommons": "Obter o Commons",
119
- "commonsNotInstalled": "Não tem o Commons? Obtenha a app para iniciar sessão com o seu Oxy ID.",
120
- "showQrAnyway": "Tenho o Commons noutro dispositivo",
121
- "switchWhileSignedInAs": "Mudar de conta, com sessão iniciada como {{name}}",
122
- "manageOnDevice": "Gerir contas neste dispositivo",
123
- "continueWithOxy": "Continuar com Oxy",
124
- "havingTrouble": "Algum problema?",
125
- "progress": {
126
- "preparing": "A preparar o pedido",
127
- "awaitingApproval": "A aguardar aprovação",
128
- "scanWithCommons": "Digitalize com o Commons no seu telemóvel",
129
- "continueInCommons": "Continue no Commons",
130
- "checkCommons": "Verifique o Commons no seu telemóvel",
131
- "openedInCommons": "Aberto no Commons",
132
- "confirming": "A confirmar a identidade",
133
- "confirmed": "Identidade confirmada"
134
- },
135
- "signInFailures": {
136
- "denied": "O início de sessão foi recusado no Commons.",
137
- "expired": "O pedido de início de sessão expirou. Tente novamente.",
138
- "network": "Não foi possível contactar a Oxy. Verifique a ligação e tente novamente.",
139
- "notConfigured": "Esta app ainda não está preparada para iniciar sessão.",
140
- "unsupportedFlow": "Este início de sessão não pode ser concluído aqui.",
141
- "claimFailed": "O início de sessão foi aprovado, mas não conseguimos concluí-lo. Tente novamente.",
142
- "generic": "Não foi possível iniciar sessão. Tente novamente."
143
- },
144
- "linkOpenFailed": "Não foi possível abrir a ligação. Tente novamente."
113
+ accountSwitcher: {
114
+ loading: 'A carregar contas...',
115
+ qrHeadline: 'Inicie sessão com a sua identidade Oxy',
116
+ signInWithOxy: 'Iniciar sessão com Oxy',
117
+ signUpWithOxy: 'Registar-se com Oxy',
118
+ getCommons: 'Obter o Commons',
119
+ commonsNotInstalled: 'Não tem o Commons? Obtenha a app para iniciar sessão com o seu Oxy ID.',
120
+ showQrAnyway: 'Tenho o Commons noutro dispositivo',
121
+ switchWhileSignedInAs: 'Mudar de conta, com sessão iniciada como {{name}}',
122
+ manageOnDevice: 'Gerir contas neste dispositivo',
123
+ continueWithOxy: 'Continuar com Oxy',
124
+ havingTrouble: 'Algum problema?',
125
+ progress: {
126
+ preparing: 'A preparar o pedido',
127
+ awaitingApproval: 'A aguardar aprovação',
128
+ scanWithCommons: 'Digitalize com o Commons no seu telemóvel',
129
+ continueInCommons: 'Continue no Commons',
130
+ checkCommons: 'Verifique o Commons no seu telemóvel',
131
+ openedInCommons: 'Aberto no Commons',
132
+ confirming: 'A confirmar a identidade',
133
+ confirmed: 'Identidade confirmada',
134
+ },
135
+ signInFailures: {
136
+ denied: 'O início de sessão foi recusado no Commons.',
137
+ expired: 'O pedido de início de sessão expirou. Tente novamente.',
138
+ network: 'Não foi possível contactar a Oxy. Verifique a ligação e tente novamente.',
139
+ notConfigured: 'Esta app ainda não está preparada para iniciar sessão.',
140
+ unsupportedFlow: 'Este início de sessão não pode ser concluído aqui.',
141
+ claimFailed: 'O início de sessão foi aprovado, mas não conseguimos concluí-lo. Tente novamente.',
142
+ generic: 'Não foi possível iniciar sessão. Tente novamente.',
143
+ },
144
+ linkOpenFailed: 'Não foi possível abrir a ligação. Tente novamente.',
145
145
  },
146
- "common": {
147
- "stepOf": "Passo {{step}} de {{total}}",
148
- "actions": {
149
- "back": "Voltar",
150
- "continue": "Continuar",
151
- "next": "Seguinte",
152
- "getStarted": "Começar",
153
- "createAccount": "Criar conta",
154
- "signIn": "Iniciar sessão",
155
- "verify": "Verificar",
156
- "resetPassword": "Repor palavra-passe",
157
- "signedOut": "Sessão terminada",
158
- "close": "Fechar",
159
- "tryAgain": "Tentar novamente"
160
- },
161
- "links": {
162
- "recoverAccount": "Recuperar a sua conta",
163
- "signUp": "Registar-se"
164
- },
165
- "labels": {
166
- "username": "Nome de utilizador",
167
- "email": "Email",
168
- "password": "Palavra-passe",
169
- "confirmPassword": "Confirmar palavra-passe"
170
- },
171
- "revoke": "Revoke",
172
- "errors": {
173
- "signOutAllFailed": "Ocorreu um problema ao terminar sessão em todas as contas. Tente novamente."
174
- }
146
+ common: {
147
+ stepOf: 'Passo {{step}} de {{total}}',
148
+ actions: {
149
+ back: 'Voltar',
150
+ continue: 'Continuar',
151
+ next: 'Seguinte',
152
+ getStarted: 'Começar',
153
+ createAccount: 'Criar conta',
154
+ signIn: 'Iniciar sessão',
155
+ verify: 'Verificar',
156
+ resetPassword: 'Repor palavra-passe',
157
+ signedOut: 'Sessão terminada',
158
+ close: 'Fechar',
159
+ tryAgain: 'Tentar novamente',
160
+ },
161
+ links: {
162
+ recoverAccount: 'Recuperar a sua conta',
163
+ signUp: 'Registar-se',
164
+ },
165
+ labels: {
166
+ username: 'Nome de utilizador',
167
+ email: 'Email',
168
+ password: 'Palavra-passe',
169
+ confirmPassword: 'Confirmar palavra-passe',
170
+ },
171
+ revoke: 'Revoke',
172
+ errors: {
173
+ signOutAllFailed: 'Ocorreu um problema ao terminar sessão em todas as contas. Tente novamente.',
174
+ },
175
175
  },
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"
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',
189
+ },
190
+ emailDigest: {
191
+ title: 'Email digest',
192
+ subtitle: 'Periodic summary of your account activity',
189
193
  },
190
- "emailDigest": {
191
- "title": "Email digest",
192
- "subtitle": "Periodic summary of your account activity"
194
+ securityAlerts: {
195
+ title: 'Security alerts',
196
+ subtitle: 'Sign-ins, recovery codes, and key changes',
193
197
  },
194
- "securityAlerts": {
195
- "title": "Security alerts",
196
- "subtitle": "Sign-ins, recovery codes, and key changes"
198
+ marketingEmails: {
199
+ title: 'Marketing emails',
200
+ subtitle: 'Product news and occasional offers',
197
201
  },
198
- "marketingEmails": {
199
- "title": "Marketing emails",
200
- "subtitle": "Product news and occasional offers"
201
- }
202
- }
202
+ },
203
203
  },
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"
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',
220
220
  },
221
- "reduceMotion": {
222
- "title": "Reduce motion",
223
- "subtitle": "Minimise animations across Oxy apps",
224
- "systemOn": "Following system: reduce motion is on"
221
+ reduceMotion: {
222
+ title: 'Reduce motion',
223
+ subtitle: 'Minimise animations across Oxy apps',
224
+ systemOn: 'Following system: reduce motion is on',
225
225
  },
226
- "language": {
227
- "title": "Language"
226
+ language: {
227
+ title: 'Language',
228
228
  },
229
- "timezone": {
230
- "title": "Timezone",
231
- "unknown": "Unable to detect timezone"
229
+ timezone: {
230
+ title: 'Timezone',
231
+ unknown: 'Unable to detect timezone',
232
232
  },
233
- "about": {
234
- "title": "About preferences",
235
- "subtitle": "Preferences sync across every Oxy app you sign into"
236
- }
237
- }
233
+ about: {
234
+ title: 'About preferences',
235
+ subtitle: 'Preferences sync across every Oxy app you sign into',
236
+ },
237
+ },
238
238
  },
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": "Concedido {{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
- }
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: 'Concedido {{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
+ },
258
258
  },
259
- "accountMenu": {
260
- "label": "Menu da conta",
261
- "manage": "Gerir a sua conta Oxy",
262
- "viewProfile": "Ver perfil",
263
- "addAnother": "Adicionar outra conta",
264
- "signOutAll": "Terminar sessão em todas as contas",
265
- "open": "Menu da conta",
266
- "openHint": "Abre o menu da conta",
267
- "openWithUser": "Menu da conta de {{name}}",
268
- "switching": "A mudar de conta…",
269
- "signOutAccount": "Terminar sessão de {{name}}",
270
- "greeting": "Olá, {{name}}!",
271
- "switchAccount": "Mudar de conta",
272
- "storage": {
273
- "title": "Armazenamento Oxy",
274
- "usage": "{{used}} de {{total}} em uso",
275
- "used": "Em uso",
276
- "free": "Livre",
277
- "unavailable": "Detalhes de utilização indisponíveis",
278
- "upgrade": "Atualizar plano",
279
- "manage": "Gerir armazenamento"
280
- },
281
- "data": "Os seus dados no Oxy",
282
- "settings": "Definições do Oxy",
283
- "help": "Ajuda e feedback",
284
- "signOut": "Terminar sessão",
285
- "privacy": "Política de privacidade",
286
- "terms": "Termos de serviço"
259
+ accountMenu: {
260
+ label: 'Menu da conta',
261
+ manage: 'Gerir a sua conta Oxy',
262
+ viewProfile: 'Ver perfil',
263
+ addAnother: 'Adicionar outra conta',
264
+ signOutAll: 'Terminar sessão em todas as contas',
265
+ open: 'Menu da conta',
266
+ openHint: 'Abre o menu da conta',
267
+ openWithUser: 'Menu da conta de {{name}}',
268
+ switching: 'A mudar de conta…',
269
+ signOutAccount: 'Terminar sessão de {{name}}',
270
+ greeting: 'Olá, {{name}}!',
271
+ switchAccount: 'Mudar de conta',
272
+ storage: {
273
+ title: 'Armazenamento Oxy',
274
+ usage: '{{used}} de {{total}} em uso',
275
+ used: 'Em uso',
276
+ free: 'Livre',
277
+ unavailable: 'Detalhes de utilização indisponíveis',
278
+ upgrade: 'Atualizar plano',
279
+ manage: 'Gerir armazenamento',
280
+ },
281
+ data: 'Os seus dados no Oxy',
282
+ settings: 'Definições do Oxy',
283
+ help: 'Ajuda e feedback',
284
+ signOut: 'Terminar sessão',
285
+ privacy: 'Política de privacidade',
286
+ terms: 'Termos de serviço',
287
287
  },
288
- "emailCode": {
289
- "title": "Vê o teu email",
290
- "sentTo": "Enviámos um código de 6 dígitos para {{email}}.",
291
- "label": "Código",
292
- "resend": "Enviar um novo código",
293
- "resent": "Enviámos um novo código.",
294
- "changeEmail": "Usar outro email",
295
- "errors": {
296
- "codeInvalid": "Esse código não está certo ou expirou.",
297
- "tooManyAttempts": "Demasiados códigos errados. Pede um novo.",
298
- "expired": "Passou demasiado tempo. Recomeça.",
299
- "unavailable": "O Oxy não consegue enviar emails agora. Tenta mais tarde.",
300
- "rateLimited": "Demasiados códigos. Tenta mais tarde."
301
- }
288
+ emailCode: {
289
+ title: 'Vê o teu email',
290
+ sentTo: 'Enviámos um código de 6 dígitos para {{email}}.',
291
+ label: 'Código',
292
+ resend: 'Enviar um novo código',
293
+ resent: 'Enviámos um novo código.',
294
+ changeEmail: 'Usar outro email',
295
+ errors: {
296
+ codeInvalid: 'Esse código não está certo ou expirou.',
297
+ tooManyAttempts: 'Demasiados códigos errados. Pede um novo.',
298
+ expired: 'Passou demasiado tempo. Recomeça.',
299
+ unavailable: 'O Oxy não consegue enviar emails agora. Tenta mais tarde.',
300
+ rateLimited: 'Demasiados códigos. Tenta mais tarde.',
301
+ },
302
302
  },
303
- "deleteAccount": {
304
- "keyless": {
305
- "subtitle": "@{{username}} e tudo o que contém são eliminados para sempre. Escreve o teu nome de utilizador e confirma com um código que te enviamos por email.",
306
- "action": "Eliminar conta",
307
- "done": "A tua conta foi eliminada.",
308
- "doneDescription": "Terminaste sessão.",
309
- "keyed": "Esta conta usa o Commons: elimina-a no Oxy Commons, Definições > Eliminar conta, com a sua chave."
310
- },
311
- "handoff": {
312
- "elsewhereMessage": "Eliminar a tua conta requer a tua chave de identidade, e ela não está neste dispositivo. Abre o Oxy Commons no dispositivo que a guarda e vai a Definições > Eliminar conta."
313
- }
303
+ deleteAccount: {
304
+ keyless: {
305
+ subtitle: '@{{username}} e tudo o que contém são eliminados para sempre. Escreve o teu nome de utilizador e confirma com um código que te enviamos por email.',
306
+ action: 'Eliminar conta',
307
+ done: 'A tua conta foi eliminada.',
308
+ doneDescription: 'Terminaste sessão.',
309
+ keyed: 'Esta conta usa o Commons: elimina-a no Oxy Commons, Definições > Eliminar conta, com a sua chave.',
310
+ },
311
+ handoff: {
312
+ elsewhereMessage: 'Eliminar a tua conta requer a tua chave de identidade, e ela não está neste dispositivo. Abre o Oxy Commons no dispositivo que a guarda e vai a Definições > Eliminar conta.',
313
+ },
314
314
  },
315
- "linkCommons": {
316
- "title": "Associar o Commons",
317
- "subtitle": "Guarda a tua própria chave: associa o Commons e esta conta passa a ser só tua. O email é eliminado e a tua frase de recuperação no Commons é como voltas a entrar.",
318
- "scan": "No telemóvel, abre o Commons, escolhe «Tenho uma conta Oxy na web» e digitaliza este código.",
319
- "waiting": "À espera do Commons…",
320
- "compareTitle": "Verifica o código",
321
- "compare": "O Commons mostra o mesmo código. Se não mostrar, cancela.",
322
- "confirm": "Sim, associar o Commons",
323
- "cancel": "Cancelar",
324
- "doneTitle": "O Commons está associado",
325
- "done": "Esta conta passou a ser de autocustódia. O email foi eliminado: a tua frase de recuperação no Commons é como voltas a entrar.",
326
- "already": "Esta conta já usa o Commons.",
327
- "expired": "Este código expirou.",
328
- "renew": "Mostrar um novo código",
329
- "failed": "Não foi possível associar o Commons. Tenta de novo.",
330
- "confirmTitle": "Confirma a associação",
331
- "confirmDescription": "Para terminar, confirma que és tu com um código que te enviamos por email.",
332
- "row": "Guarda a tua própria chave com o Commons"
315
+ linkCommons: {
316
+ title: 'Associar o Commons',
317
+ subtitle: 'Guarda a tua própria chave: associa o Commons e esta conta passa a ser só tua. O email é eliminado e a tua frase de recuperação no Commons é como voltas a entrar.',
318
+ scan: 'No telemóvel, abre o Commons, escolhe «Tenho uma conta Oxy na web» e digitaliza este código.',
319
+ waiting: 'À espera do Commons…',
320
+ compareTitle: 'Verifica o código',
321
+ compare: 'O Commons mostra o mesmo código. Se não mostrar, cancela.',
322
+ confirm: 'Sim, associar o Commons',
323
+ cancel: 'Cancelar',
324
+ doneTitle: 'O Commons está associado',
325
+ done: 'Esta conta passou a ser de autocustódia. O email foi eliminado: a tua frase de recuperação no Commons é como voltas a entrar.',
326
+ already: 'Esta conta já usa o Commons.',
327
+ expired: 'Este código expirou.',
328
+ renew: 'Mostrar um novo código',
329
+ failed: 'Não foi possível associar o Commons. Tenta de novo.',
330
+ confirmTitle: 'Confirma a associação',
331
+ confirmDescription: 'Para terminar, confirma que és tu com um código que te enviamos por email.',
332
+ row: 'Guarda a tua própria chave com o Commons',
333
333
  },
334
- "reauth": {
335
- "title": "Confirma que és tu",
336
- "emailDescription": "Vamos enviar um código para o teu email para confirmar esta alteração.",
337
- "sendCode": "Enviar código",
338
- "codeSent": "Enviámos um código de 6 dígitos para o teu email.",
339
- "codeLabel": "Código do email",
340
- "passwordLabel": "Palavra-passe atual",
341
- "usePassword": "Usar antes a palavra-passe",
342
- "useEmail": "Receber antes um código por email",
343
- "errors": {
344
- "invalid": "Não resultou. Verifica o que escreveste e tenta novamente.",
345
- "totpRequired": "Escreve também o código da tua app de autenticação."
346
- }
334
+ reauth: {
335
+ title: 'Confirma que és tu',
336
+ emailDescription: 'Vamos enviar um código para o teu email para confirmar esta alteração.',
337
+ sendCode: 'Enviar código',
338
+ codeSent: 'Enviámos um código de 6 dígitos para o teu email.',
339
+ codeLabel: 'Código do email',
340
+ passwordLabel: 'Palavra-passe atual',
341
+ usePassword: 'Usar antes a palavra-passe',
342
+ useEmail: 'Receber antes um código por email',
343
+ errors: {
344
+ invalid: 'Não resultou. Verifica o que escreveste e tenta novamente.',
345
+ totpRequired: 'Escreve também o código da tua app de autenticação.',
346
+ },
347
+ },
348
+ signInSecurity: {
349
+ password: {
350
+ title: 'Palavra-passe',
351
+ setTitle: 'Definir uma palavra-passe',
352
+ changeTitle: 'Alterar a palavra-passe',
353
+ description: 'Inicia sessão com a tua palavra-passe em vez de um código por email. Usa pelo menos {{min}} caracteres.',
354
+ newLabel: 'Nova palavra-passe',
355
+ repeatLabel: 'Repete a palavra-passe',
356
+ tooShort: 'Usa pelo menos {{min}} caracteres.',
357
+ mismatch: 'As palavras-passe não coincidem.',
358
+ signOutOthers: 'Terminar sessão em todos os outros sítios',
359
+ save: 'Guardar palavra-passe',
360
+ saved: 'A tua palavra-passe foi guardada.',
361
+ row: 'Opcional: iniciar sessão com palavra-passe',
362
+ },
363
+ totp: {
364
+ title: 'App de autenticação',
365
+ description: 'Depois do código por email ou da palavra-passe, o Oxy pede também um código de uma app como o Google Authenticator ou o 1Password.',
366
+ setUp: 'Configurar',
367
+ scan: 'Lê este código QR com a tua app de autenticação ou escreve a chave de configuração.',
368
+ secretLabel: 'Chave de configuração',
369
+ codeLabel: 'Código da app',
370
+ enable: 'Ativar',
371
+ enabled: 'A app de autenticação está ativada.',
372
+ disable: 'Desativar a app de autenticação',
373
+ disabled: 'A app de autenticação está desativada.',
374
+ on: 'Ativada',
375
+ off: 'Desativada',
376
+ backupTitle: 'Guarda os teus códigos de segurança',
377
+ backupDescription: 'Se perderes o telemóvel, cada código permite-te iniciar sessão uma vez. Guarda-os num local seguro: não voltam a ser mostrados.',
378
+ copy: 'Copiar códigos',
379
+ copied: 'Códigos de segurança copiados.',
380
+ savedThem: 'Já os guardei',
381
+ regenerate: 'Obter novos códigos de segurança',
382
+ regenerateDescription: 'Os teus códigos de segurança antigos deixam de funcionar.',
383
+ remaining: 'Restam {{count}} códigos de segurança',
384
+ row: 'Um segundo passo ao iniciar sessão',
385
+ },
347
386
  },
348
- "signInSecurity": {
349
- "password": {
350
- "title": "Palavra-passe",
351
- "setTitle": "Definir uma palavra-passe",
352
- "changeTitle": "Alterar a palavra-passe",
353
- "description": "Inicia sessão com a tua palavra-passe em vez de um código por email. Usa pelo menos {{min}} caracteres.",
354
- "newLabel": "Nova palavra-passe",
355
- "repeatLabel": "Repete a palavra-passe",
356
- "tooShort": "Usa pelo menos {{min}} caracteres.",
357
- "mismatch": "As palavras-passe não coincidem.",
358
- "signOutOthers": "Terminar sessão em todos os outros sítios",
359
- "save": "Guardar palavra-passe",
360
- "saved": "A tua palavra-passe foi guardada.",
361
- "row": "Opcional: iniciar sessão com palavra-passe"
362
- },
363
- "totp": {
364
- "title": "App de autenticação",
365
- "description": "Depois do código por email ou da palavra-passe, o Oxy pede também um código de uma app como o Google Authenticator ou o 1Password.",
366
- "setUp": "Configurar",
367
- "scan": "Lê este código QR com a tua app de autenticação ou escreve a chave de configuração.",
368
- "secretLabel": "Chave de configuração",
369
- "codeLabel": "Código da app",
370
- "enable": "Ativar",
371
- "enabled": "A app de autenticação está ativada.",
372
- "disable": "Desativar a app de autenticação",
373
- "disabled": "A app de autenticação está desativada.",
374
- "on": "Ativada",
375
- "off": "Desativada",
376
- "backupTitle": "Guarda os teus códigos de segurança",
377
- "backupDescription": "Se perderes o telemóvel, cada código permite-te iniciar sessão uma vez. Guarda-os num local seguro: não voltam a ser mostrados.",
378
- "copy": "Copiar códigos",
379
- "copied": "Códigos de segurança copiados.",
380
- "savedThem": "Já os guardei",
381
- "regenerate": "Obter novos códigos de segurança",
382
- "regenerateDescription": "Os teus códigos de segurança antigos deixam de funcionar.",
383
- "remaining": "Restam {{count}} códigos de segurança",
384
- "row": "Um segundo passo ao iniciar sessão"
385
- }
386
- }
387
387
  };
388
388
  export default dict;