@cosmicdrift/kumiko-bundled-features 0.207.0 → 0.208.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 (68) hide show
  1. package/package.json +9 -8
  2. package/src/admin-shell/__tests__/admin-shell.boot.test.ts +1 -1
  3. package/src/admin-shell/i18n.ts +17 -39
  4. package/src/admin-shell/web/i18n.ts +6 -11
  5. package/src/audit/i18n.ts +25 -41
  6. package/src/audit/web/i18n.ts +5 -9
  7. package/src/auth-email-password/__tests__/email-templates.test.ts +4 -0
  8. package/src/auth-email-password/email-templates.ts +97 -149
  9. package/src/auth-email-password/i18n.ts +6 -265
  10. package/src/auth-email-password/web/__tests__/confirm-account-unlock-screen.test.tsx +7 -7
  11. package/src/auth-email-password/web/__tests__/forgot-password-screen.test.tsx +14 -14
  12. package/src/auth-email-password/web/__tests__/invite-accept-screen.test.tsx +23 -25
  13. package/src/auth-email-password/web/__tests__/login-screen.test.tsx +60 -68
  14. package/src/auth-email-password/web/__tests__/request-account-unlock-screen.test.tsx +24 -24
  15. package/src/auth-email-password/web/__tests__/reset-password-screen.test.tsx +20 -20
  16. package/src/auth-email-password/web/__tests__/signup-complete-screen.test.tsx +9 -9
  17. package/src/auth-email-password/web/__tests__/signup-screen.test.tsx +11 -11
  18. package/src/auth-email-password/web/__tests__/test-utils.tsx +2 -2
  19. package/src/auth-email-password/web/__tests__/user-menu.test.tsx +3 -3
  20. package/src/auth-email-password/web/__tests__/verify-email-screen.test.tsx +3 -3
  21. package/src/auth-email-password/web/invite-accept-screen.tsx +3 -1
  22. package/src/auth-mfa/__tests__/errors-i18n-parity.test.ts +2 -4
  23. package/src/auth-mfa/i18n.ts +1 -3
  24. package/src/auth-mfa/web/__tests__/mfa-enable-screen.test.tsx +15 -15
  25. package/src/auth-mfa/web/__tests__/mfa-setup-preauth-screen.test.tsx +45 -49
  26. package/src/auth-mfa/web/__tests__/mfa-verify-screen.test.tsx +10 -10
  27. package/src/auth-mfa/web/i18n.ts +0 -126
  28. package/src/cap-counter/i18n.ts +5 -11
  29. package/src/compliance-profiles/i18n.ts +3 -11
  30. package/src/compliance-profiles/web/i18n.ts +0 -20
  31. package/src/config/i18n.ts +5 -5
  32. package/src/config/web/i18n.ts +1 -19
  33. package/src/custom-fields/web/i18n.ts +1 -18
  34. package/src/delivery/i18n.ts +3 -7
  35. package/src/delivery/web/i18n.ts +0 -20
  36. package/src/feature-toggles/i18n.ts +3 -11
  37. package/src/feature-toggles/web/i18n.ts +0 -24
  38. package/src/folders/web/i18n.ts +1 -51
  39. package/src/jobs/i18n.ts +40 -68
  40. package/src/jobs/web/i18n.ts +5 -9
  41. package/src/managed-pages/i18n.ts +23 -67
  42. package/src/managed-pages/web/i18n.ts +6 -11
  43. package/src/notes-history/i18n.ts +1 -1
  44. package/src/notes-history/web/i18n.ts +1 -17
  45. package/src/personal-access-tokens/i18n.ts +2 -6
  46. package/src/personal-access-tokens/web/i18n.ts +0 -72
  47. package/src/sessions/i18n.ts +17 -21
  48. package/src/tags/i18n.ts +2 -2
  49. package/src/tags/web/i18n.ts +1 -52
  50. package/src/template-resolver/web/__tests__/client-plugin.test.tsx +2 -2
  51. package/src/template-resolver/web/__tests__/editor-read-only.test.tsx +5 -5
  52. package/src/template-resolver/web/i18n.ts +0 -28
  53. package/src/tenant/__tests__/members-screens.boot.test.ts +0 -2
  54. package/src/tenant/i18n.ts +13 -27
  55. package/src/tenant/web/i18n.ts +0 -38
  56. package/src/tier-engine/i18n.ts +3 -39
  57. package/src/user/i18n.ts +14 -32
  58. package/src/user-data-rights/__tests__/default-mailers.test.ts +4 -0
  59. package/src/user-data-rights/__tests__/email-templates.test.ts +4 -0
  60. package/src/user-data-rights/__tests__/mail-default-bridge.integration.test.ts +2 -0
  61. package/src/user-data-rights/__tests__/run-export-jobs-cron-context.integration.test.ts +4 -0
  62. package/src/user-data-rights/email-templates.ts +55 -91
  63. package/src/user-data-rights/i18n.ts +18 -70
  64. package/src/user-data-rights/lib/default-mailers.ts +4 -1
  65. package/src/user-data-rights/web/__tests__/deletion-screens.test.tsx +11 -11
  66. package/src/user-data-rights/web/__tests__/public-deletion-gate.test.tsx +5 -5
  67. package/src/user-data-rights/web/i18n.ts +9 -157
  68. package/src/user-profile/i18n.ts +1 -71
@@ -20,7 +20,7 @@ import type { ReactNode } from "react";
20
20
  import { defaultTranslations } from "../i18n";
21
21
  import { makePublicDeletionGate } from "../public-deletion-gate";
22
22
 
23
- const resolver = createStaticLocaleResolver({ locale: "de" });
23
+ const resolver = createStaticLocaleResolver({ locale: "en" });
24
24
  const stubDispatcher = {
25
25
  write: async () => ({ isSuccess: true, data: {} }),
26
26
  } as unknown as Dispatcher;
@@ -57,7 +57,7 @@ describe("makePublicDeletionGate", () => {
57
57
  <div data-testid="app">APP</div>
58
58
  </Gate>,
59
59
  );
60
- expect(ui.getByText(/beantragen/)).toBeTruthy();
60
+ expect(ui.getByText(/Request account deletion/)).toBeTruthy();
61
61
  expect(ui.queryByTestId("app")).toBeNull();
62
62
  });
63
63
 
@@ -69,7 +69,7 @@ describe("makePublicDeletionGate", () => {
69
69
  <div data-testid="app">APP</div>
70
70
  </Gate>,
71
71
  );
72
- expect(ui.getByText(/bestätigen/)).toBeTruthy();
72
+ expect(ui.getByText(/Confirm account deletion/)).toBeTruthy();
73
73
  expect(ui.queryByTestId("app")).toBeNull();
74
74
  });
75
75
 
@@ -82,7 +82,7 @@ describe("makePublicDeletionGate", () => {
82
82
  </Gate>,
83
83
  );
84
84
  expect(ui.getByTestId("app")).toBeTruthy();
85
- expect(ui.queryByText(/beantragen/)).toBeNull();
85
+ expect(ui.queryByText(/Request account deletion/)).toBeNull();
86
86
  });
87
87
 
88
88
  test("custom shell wraps the matched screen", () => {
@@ -97,6 +97,6 @@ describe("makePublicDeletionGate", () => {
97
97
  </Gate>,
98
98
  );
99
99
  const shell = ui.getByTestId("shell");
100
- expect(within(shell).getByText(/beantragen/)).toBeTruthy();
100
+ expect(within(shell).getByText(/Request account deletion/)).toBeTruthy();
101
101
  });
102
102
  });
@@ -4,93 +4,14 @@
4
4
  // oder direkt) und können einzelne Keys überschreiben. Keys: `userDataRights.
5
5
  // deletion.<step>.<slug>`.
6
6
 
7
- import type { TranslationsByLocale } from "@cosmicdrift/kumiko-renderer";
7
+ import {
8
+ mergeTranslations,
9
+ type TranslationsByLocale,
10
+ translationsByLocaleFromKeys,
11
+ } from "@cosmicdrift/kumiko-renderer";
8
12
  import { USER_DATA_RIGHTS_I18N } from "../i18n";
9
13
 
10
- const LOCALES = ["de", "en", "es"] as const;
11
-
12
- // Operator keys (export-job list/detail titles + entity field labels + nav)
13
- // live in the server i18n; the SystemAdmin entityList screens render them
14
- // client-side, so the web bundle must carry them too — otherwise raw keys
15
- // show. Derive from the single server source instead of duplicating.
16
- const operatorTranslations: TranslationsByLocale = Object.fromEntries(
17
- LOCALES.map((locale) => [
18
- locale,
19
- Object.fromEntries(
20
- Object.entries(USER_DATA_RIGHTS_I18N).map(([key, value]) => [key, value[locale]]),
21
- ),
22
- ]),
23
- );
24
-
25
14
  const apexTranslations: TranslationsByLocale = {
26
- de: {
27
- "userDataRights.deletion.request.title": "Account-Löschung beantragen",
28
- "userDataRights.deletion.request.intro":
29
- "Gib die E-Mail-Adresse deines Kontos ein. Falls ein Konto existiert, schicken wir dir einen Bestätigungs-Link zum Löschen.",
30
- "userDataRights.deletion.request.email": "E-Mail",
31
- "userDataRights.deletion.request.submit": "Bestätigungs-Link anfordern",
32
- "userDataRights.deletion.request.submitting": "…",
33
- "userDataRights.deletion.request.successTitle": "Mail gesendet",
34
- "userDataRights.deletion.request.successBody":
35
- "Falls die E-Mail in unserem System existiert, ist eine Nachricht mit einem Bestätigungs-Link unterwegs. Bitte schau in deinen Posteingang.",
36
- "userDataRights.deletion.request.error": "Etwas ist schief gegangen. Bitte erneut versuchen.",
37
- "userDataRights.deletion.confirm.title": "Account-Löschung bestätigen",
38
- "userDataRights.deletion.confirm.intro":
39
- "Mit dem Bestätigen startet die Lösch-Frist. Bis sie abläuft kannst du die Löschung im eingeloggten Account wieder abbrechen.",
40
- "userDataRights.deletion.confirm.submit": "Löschung bestätigen",
41
- "userDataRights.deletion.confirm.submitting": "…",
42
- "userDataRights.deletion.confirm.successTitle": "Löschung vorgemerkt",
43
- "userDataRights.deletion.confirm.successBody":
44
- "Dein Account wird nach Ablauf der Frist gelöscht. Du kannst die Löschung bis dahin im eingeloggten Account abbrechen.",
45
- "userDataRights.deletion.confirm.invalidToken":
46
- "Der Link ist ungültig oder abgelaufen. Bitte fordere einen neuen an.",
47
- "userDataRights.deletion.confirm.missingToken":
48
- "Kein Token im Link gefunden. Bitte öffne den Link aus der E-Mail erneut.",
49
- "userDataRights.deletion.confirm.error": "Etwas ist schief gegangen. Bitte erneut versuchen.",
50
-
51
- "userDataRights.privacyCenter.title": "Datenschutz",
52
- "userDataRights.privacyCenter.intro":
53
- "Verwalte deine Rechte nach DSGVO: Datenauskunft, Export, Einschränkung und Löschung deines Kontos.",
54
- "userDataRights.privacyCenter.loading": "Lädt …",
55
- "userDataRights.privacyCenter.loadError": "Deine Daten konnten nicht geladen werden.",
56
- "userDataRights.privacyCenter.errors.generic":
57
- "Etwas ist schief gegangen. Bitte erneut versuchen.",
58
-
59
- "userDataRights.privacyCenter.export.title": "Daten exportieren (Art. 20)",
60
- "userDataRights.privacyCenter.export.intro":
61
- "Fordere eine Kopie deiner Daten an. Die Erstellung läuft im Hintergrund; sobald sie fertig ist, kannst du sie hier herunterladen.",
62
- "userDataRights.privacyCenter.export.request": "Daten-Export anfordern",
63
- "userDataRights.privacyCenter.export.requesting": "Wird angefordert …",
64
- "userDataRights.privacyCenter.export.pending":
65
- "Dein Export wird erstellt. Bitte später erneut schauen.",
66
- "userDataRights.privacyCenter.export.failed":
67
- "Die letzte Export-Erstellung ist fehlgeschlagen. Du kannst es erneut versuchen.",
68
- "userDataRights.privacyCenter.export.ready": "Dein Export ist fertig.",
69
- "userDataRights.privacyCenter.export.download": "Export herunterladen",
70
- "userDataRights.privacyCenter.export.availableUntil": "Verfügbar bis {date}",
71
- "userDataRights.privacyCenter.export.requestNew": "Neuen Export anfordern",
72
-
73
- "userDataRights.privacyCenter.restriction.title": "Verarbeitung einschränken (Art. 18)",
74
- "userDataRights.privacyCenter.restriction.explainer":
75
- "Friere dein Konto ein: Die Verarbeitung deiner Daten wird pausiert und du wirst abgemeldet. Das Aufheben der Einschränkung ist danach nur über den Support möglich.",
76
- "userDataRights.privacyCenter.restriction.restrict": "Konto einschränken",
77
- "userDataRights.privacyCenter.restriction.dialogTitle": "Konto wirklich einschränken?",
78
- "userDataRights.privacyCenter.restriction.dialogDescription":
79
- "Du wirst sofort abgemeldet und kannst dich nicht mehr anmelden, bis der Support die Einschränkung aufhebt.",
80
- "userDataRights.privacyCenter.restriction.restricted":
81
- "Dein Konto ist eingeschränkt. Wende dich an den Support, um die Einschränkung aufzuheben.",
82
-
83
- "userDataRights.privacyCenter.deletion.title": "Konto löschen (Art. 17)",
84
- "userDataRights.privacyCenter.deletion.explainer":
85
- "Beantrage die Löschung deines Kontos. Bis zum Ablauf der Frist kannst du die Löschung wieder abbrechen.",
86
- "userDataRights.privacyCenter.deletion.delete": "Konto löschen",
87
- "userDataRights.privacyCenter.deletion.requested": "Dein Konto wird am {date} gelöscht.",
88
- "userDataRights.privacyCenter.deletion.cancel": "Löschung abbrechen",
89
- "userDataRights.privacyCenter.deletion.cancelSuccess": "Die Löschung wurde abgebrochen.",
90
- "userDataRights.privacyCenter.deletion.dialogTitle": "Konto wirklich löschen?",
91
- "userDataRights.privacyCenter.deletion.dialogDescription":
92
- "Mit dem Bestätigen startet die Lösch-Frist. Du kannst die Löschung bis zu ihrem Ablauf wieder abbrechen.",
93
- },
94
15
  en: {
95
16
  "userDataRights.deletion.request.title": "Request account deletion",
96
17
  "userDataRights.deletion.request.intro":
@@ -167,78 +88,9 @@ const apexTranslations: TranslationsByLocale = {
167
88
  "userDataRights.errors.download.signedUrlNotSupported":
168
89
  "The download is currently unavailable due to a server configuration issue. The operator has been notified.",
169
90
  },
170
- es: {
171
- "userDataRights.deletion.request.title": "Solicitar la eliminación de la cuenta",
172
- "userDataRights.deletion.request.intro":
173
- "Introduce la dirección de correo de tu cuenta. Si existe una cuenta, te enviaremos un enlace de confirmación para eliminarla.",
174
- "userDataRights.deletion.request.email": "Correo electrónico",
175
- "userDataRights.deletion.request.submit": "Solicitar enlace de confirmación",
176
- "userDataRights.deletion.request.submitting": "…",
177
- "userDataRights.deletion.request.successTitle": "Correo enviado",
178
- "userDataRights.deletion.request.successBody":
179
- "Si el correo existe en nuestro sistema, te hemos enviado un mensaje con un enlace de confirmación. Revisa tu bandeja de entrada.",
180
- "userDataRights.deletion.request.error": "Algo salió mal. Inténtalo de nuevo.",
181
- "userDataRights.deletion.confirm.title": "Confirmar la eliminación de la cuenta",
182
- "userDataRights.deletion.confirm.intro":
183
- "Al confirmar se inicia el plazo de eliminación. Hasta que termine, puedes cancelarla iniciando sesión en tu cuenta.",
184
- "userDataRights.deletion.confirm.submit": "Confirmar eliminación",
185
- "userDataRights.deletion.confirm.submitting": "…",
186
- "userDataRights.deletion.confirm.successTitle": "Eliminación programada",
187
- "userDataRights.deletion.confirm.successBody":
188
- "Tu cuenta se eliminará cuando finalice el plazo. Hasta entonces, puedes cancelar la eliminación iniciando sesión en tu cuenta.",
189
- "userDataRights.deletion.confirm.invalidToken":
190
- "El enlace no es válido o ha caducado. Solicita uno nuevo.",
191
- "userDataRights.deletion.confirm.missingToken":
192
- "No se encontró ningún token en el enlace. Abre de nuevo el enlace del correo.",
193
- "userDataRights.deletion.confirm.error": "Algo salió mal. Inténtalo de nuevo.",
194
-
195
- "userDataRights.privacyCenter.title": "Privacidad",
196
- "userDataRights.privacyCenter.intro":
197
- "Gestiona tus derechos según el RGPD: acceso a tus datos, exportación, limitación y eliminación de tu cuenta.",
198
- "userDataRights.privacyCenter.loading": "Cargando…",
199
- "userDataRights.privacyCenter.loadError": "No se pudieron cargar tus datos.",
200
- "userDataRights.privacyCenter.errors.generic": "Algo salió mal. Inténtalo de nuevo.",
201
-
202
- "userDataRights.privacyCenter.export.title": "Exportar datos (art. 20)",
203
- "userDataRights.privacyCenter.export.intro":
204
- "Solicita una copia de tus datos. Se genera en segundo plano; en cuanto esté lista, podrás descargarla aquí.",
205
- "userDataRights.privacyCenter.export.request": "Solicitar exportación de datos",
206
- "userDataRights.privacyCenter.export.requesting": "Solicitando…",
207
- "userDataRights.privacyCenter.export.pending":
208
- "Tu exportación se está generando. Vuelve a comprobarlo más tarde.",
209
- "userDataRights.privacyCenter.export.failed":
210
- "La última exportación falló. Puedes intentarlo de nuevo.",
211
- "userDataRights.privacyCenter.export.ready": "Tu exportación está lista.",
212
- "userDataRights.privacyCenter.export.download": "Descargar exportación",
213
- "userDataRights.privacyCenter.export.availableUntil": "Disponible hasta {date}",
214
- "userDataRights.privacyCenter.export.requestNew": "Solicitar una nueva exportación",
215
-
216
- "userDataRights.privacyCenter.restriction.title": "Limitar el tratamiento (art. 18)",
217
- "userDataRights.privacyCenter.restriction.explainer":
218
- "Congela tu cuenta: el tratamiento de tus datos se pausa y se cierra tu sesión. Después, solo el soporte puede levantar la limitación.",
219
- "userDataRights.privacyCenter.restriction.restrict": "Limitar cuenta",
220
- "userDataRights.privacyCenter.restriction.dialogTitle":
221
- "¿Seguro que quieres limitar tu cuenta?",
222
- "userDataRights.privacyCenter.restriction.dialogDescription":
223
- "Se cerrará tu sesión de inmediato y no podrás volver a iniciarla hasta que el soporte levante la limitación.",
224
- "userDataRights.privacyCenter.restriction.restricted":
225
- "Tu cuenta está limitada. Ponte en contacto con el soporte para levantar la limitación.",
226
-
227
- "userDataRights.privacyCenter.deletion.title": "Eliminar cuenta (art. 17)",
228
- "userDataRights.privacyCenter.deletion.explainer":
229
- "Solicita la eliminación de tu cuenta. Hasta que finalice el plazo, puedes cancelar la eliminación.",
230
- "userDataRights.privacyCenter.deletion.delete": "Eliminar cuenta",
231
- "userDataRights.privacyCenter.deletion.requested": "Tu cuenta se eliminará el {date}.",
232
- "userDataRights.privacyCenter.deletion.cancel": "Cancelar eliminación",
233
- "userDataRights.privacyCenter.deletion.cancelSuccess": "Se ha cancelado la eliminación.",
234
- "userDataRights.privacyCenter.deletion.dialogTitle": "¿Seguro que quieres eliminar tu cuenta?",
235
- "userDataRights.privacyCenter.deletion.dialogDescription":
236
- "Al confirmar se inicia el plazo de eliminación. Puedes cancelarla hasta que finalice.",
237
- },
238
91
  };
239
92
 
240
- export const defaultTranslations: TranslationsByLocale = {
241
- de: { ...apexTranslations["de"], ...operatorTranslations["de"] },
242
- en: { ...apexTranslations["en"], ...operatorTranslations["en"] },
243
- es: { ...apexTranslations["es"], ...operatorTranslations["es"] },
244
- };
93
+ export const defaultTranslations: TranslationsByLocale = mergeTranslations(
94
+ translationsByLocaleFromKeys(USER_DATA_RIGHTS_I18N),
95
+ apexTranslations,
96
+ );
@@ -1,7 +1,7 @@
1
1
  // @runtime client
2
2
  // Default-Bundles für den ProfileScreen. Werden vom userProfileClient()
3
3
  // als Fallback-Bundle in den LocaleProvider gehängt — Apps überschreiben
4
- // einzelne Keys via `userProfileClient({ translations: { de: { … } } })`.
4
+ // einzelne Keys via `userProfileClient({ translations })`.
5
5
  // `auth.errors.invalidCredentials` + `user.errors.emailAlreadyExists`
6
6
  // sind hier gedoppelt, damit der Screen auch ohne die jeweiligen
7
7
  // Feature-Bundles vollständig übersetzt.
@@ -9,41 +9,6 @@
9
9
  import type { TranslationsByLocale } from "@cosmicdrift/kumiko-renderer";
10
10
 
11
11
  export const defaultTranslations: TranslationsByLocale = {
12
- de: {
13
- "profile.title": "Profil",
14
-
15
- "profile.email.title": "E-Mail-Adresse",
16
- "profile.email.current": "Aktuelle E-Mail",
17
- "profile.email.new": "Neue E-Mail",
18
- "profile.email.currentPassword": "Aktuelles Passwort",
19
- "profile.email.submit": "E-Mail ändern",
20
- "profile.email.success": "E-Mail geändert. Bitte bestätige deine neue Adresse.",
21
-
22
- "profile.password.title": "Passwort",
23
- "profile.password.old": "Aktuelles Passwort",
24
- "profile.password.new": "Neues Passwort",
25
- "profile.password.confirm": "Neues Passwort bestätigen",
26
- "profile.password.submit": "Passwort ändern",
27
- "profile.password.success": "Passwort geändert.",
28
- "profile.password.mismatch": "Die Passwörter stimmen nicht überein.",
29
-
30
- "profile.danger.title": "Konto löschen",
31
- "profile.danger.explainer":
32
- "Dein Konto wird nach einer Frist endgültig gelöscht. Bis dahin kannst du die Löschung jederzeit abbrechen.",
33
- "profile.danger.delete": "Konto löschen",
34
- "profile.danger.dialogTitle": "Konto wirklich löschen?",
35
- "profile.danger.dialogDescription":
36
- "Nach Ablauf der Frist werden deine Daten endgültig gelöscht. Bis dahin kannst du die Löschung abbrechen.",
37
- "profile.danger.requested":
38
- "Löschung beantragt — dein Konto wird am {date} endgültig gelöscht.",
39
- "profile.danger.cancelDeletion": "Löschung abbrechen",
40
- "profile.danger.cancelSuccess": "Löschung abgebrochen. Dein Konto bleibt bestehen.",
41
-
42
- "profile.errors.generic": "Etwas ist schiefgegangen.",
43
- "profile.errors.emailUnchanged": "Das ist bereits deine E-Mail-Adresse.",
44
- "user.errors.emailAlreadyExists": "Diese E-Mail-Adresse wird bereits verwendet.",
45
- "auth.errors.invalidCredentials": "E-Mail oder Passwort falsch.",
46
- },
47
12
  en: {
48
13
  "profile.title": "Profile",
49
14
 
@@ -79,39 +44,4 @@ export const defaultTranslations: TranslationsByLocale = {
79
44
  "user.errors.emailAlreadyExists": "This email address is already in use.",
80
45
  "auth.errors.invalidCredentials": "Email or password incorrect.",
81
46
  },
82
- es: {
83
- "profile.title": "Perfil",
84
-
85
- "profile.email.title": "Dirección de correo",
86
- "profile.email.current": "Correo actual",
87
- "profile.email.new": "Correo nuevo",
88
- "profile.email.currentPassword": "Contraseña actual",
89
- "profile.email.submit": "Cambiar correo",
90
- "profile.email.success": "Correo cambiado. Confirma tu nueva dirección.",
91
-
92
- "profile.password.title": "Contraseña",
93
- "profile.password.old": "Contraseña actual",
94
- "profile.password.new": "Contraseña nueva",
95
- "profile.password.confirm": "Confirmar contraseña nueva",
96
- "profile.password.submit": "Cambiar contraseña",
97
- "profile.password.success": "Contraseña cambiada.",
98
- "profile.password.mismatch": "Las contraseñas no coinciden.",
99
-
100
- "profile.danger.title": "Eliminar cuenta",
101
- "profile.danger.explainer":
102
- "Tu cuenta se eliminará definitivamente tras un plazo de gracia. Hasta entonces puedes cancelar la eliminación en cualquier momento.",
103
- "profile.danger.delete": "Eliminar cuenta",
104
- "profile.danger.dialogTitle": "¿Eliminar tu cuenta de verdad?",
105
- "profile.danger.dialogDescription":
106
- "Cuando termine el plazo, tus datos se eliminarán definitivamente. Hasta entonces puedes cancelarlo.",
107
- "profile.danger.requested":
108
- "Eliminación solicitada — tu cuenta se eliminará definitivamente el {date}.",
109
- "profile.danger.cancelDeletion": "Cancelar eliminación",
110
- "profile.danger.cancelSuccess": "Eliminación cancelada. Tu cuenta se mantiene.",
111
-
112
- "profile.errors.generic": "Algo ha salido mal.",
113
- "profile.errors.emailUnchanged": "Ese ya es tu correo actual.",
114
- "user.errors.emailAlreadyExists": "Esta dirección de correo ya está en uso.",
115
- "auth.errors.invalidCredentials": "Correo o contraseña incorrectos.",
116
- },
117
47
  };