@cosmicdrift/kumiko-bundled-features 0.206.0 → 0.207.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 (38) hide show
  1. package/package.json +7 -7
  2. package/src/admin-shell/i18n.ts +36 -17
  3. package/src/admin-shell/web/i18n.ts +1 -1
  4. package/src/audit/i18n.ts +41 -25
  5. package/src/audit/web/i18n.ts +1 -1
  6. package/src/auth-email-password/i18n.ts +129 -0
  7. package/src/auth-mfa/i18n.ts +2 -1
  8. package/src/auth-mfa/web/i18n.ts +63 -0
  9. package/src/cap-counter/i18n.ts +10 -5
  10. package/src/compliance-profiles/i18n.ts +11 -3
  11. package/src/compliance-profiles/web/i18n.ts +10 -0
  12. package/src/config/i18n.ts +5 -5
  13. package/src/config/web/i18n.ts +9 -0
  14. package/src/custom-fields/web/i18n.ts +9 -0
  15. package/src/delivery/i18n.ts +7 -3
  16. package/src/delivery/web/i18n.ts +10 -0
  17. package/src/feature-toggles/i18n.ts +11 -3
  18. package/src/feature-toggles/web/i18n.ts +12 -0
  19. package/src/folders/web/i18n.ts +25 -0
  20. package/src/jobs/i18n.ts +62 -40
  21. package/src/jobs/web/i18n.ts +1 -1
  22. package/src/managed-pages/i18n.ts +63 -23
  23. package/src/managed-pages/web/i18n.ts +1 -1
  24. package/src/notes-history/i18n.ts +1 -1
  25. package/src/notes-history/web/i18n.ts +8 -0
  26. package/src/personal-access-tokens/i18n.ts +6 -2
  27. package/src/personal-access-tokens/web/i18n.ts +35 -0
  28. package/src/sessions/i18n.ts +21 -17
  29. package/src/tags/i18n.ts +2 -2
  30. package/src/tags/web/i18n.ts +25 -0
  31. package/src/template-resolver/web/i18n.ts +14 -0
  32. package/src/tenant/i18n.ts +24 -13
  33. package/src/tenant/web/i18n.ts +19 -0
  34. package/src/tier-engine/i18n.ts +22 -2
  35. package/src/user/i18n.ts +31 -14
  36. package/src/user-data-rights/i18n.ts +66 -18
  37. package/src/user-data-rights/web/i18n.ts +70 -1
  38. package/src/user-profile/i18n.ts +35 -0
package/src/user/i18n.ts CHANGED
@@ -1,21 +1,38 @@
1
- type LocalizedString = { readonly de: string; readonly en: string };
1
+ type LocalizedString = { readonly de: string; readonly en: string; readonly es: string };
2
2
 
3
3
  export const USER_I18N: Readonly<Record<string, LocalizedString>> = {
4
- "screen:user-list.title": { de: "Benutzer", en: "Users" },
5
- "screen:user-edit.title": { de: "Benutzer bearbeiten", en: "Edit user" },
6
- "user:entity:user:field:email": { de: "E-Mail", en: "Email" },
7
- "user:entity:user:field:displayName": { de: "Anzeigename", en: "Display name" },
8
- "user:entity:user:field:status": { de: "Status", en: "Status" },
9
- "user:entity:user:field:emailVerified": { de: "E-Mail bestätigt", en: "Email verified" },
10
- "user:entity:user:field:locale": { de: "Sprache", en: "Locale" },
11
- "user:entity:user:field:timezone": { de: "Zeitzone", en: "Timezone" },
12
- "user:entity:user:field:status:option:active": { de: "Aktiv", en: "Active" },
13
- "user:entity:user:field:status:option:restricted": { de: "Eingeschränkt", en: "Restricted" },
4
+ "screen:user-list.title": { de: "Benutzer", en: "Users", es: "Usuarios" },
5
+ "screen:user-edit.title": { de: "Benutzer bearbeiten", en: "Edit user", es: "Editar usuario" },
6
+ "user:entity:user:field:email": { de: "E-Mail", en: "Email", es: "Correo electrónico" },
7
+ "user:entity:user:field:displayName": {
8
+ de: "Anzeigename",
9
+ en: "Display name",
10
+ es: "Nombre para mostrar",
11
+ },
12
+ "user:entity:user:field:status": { de: "Status", en: "Status", es: "Estado" },
13
+ "user:entity:user:field:emailVerified": {
14
+ de: "E-Mail bestätigt",
15
+ en: "Email verified",
16
+ es: "Correo verificado",
17
+ },
18
+ "user:entity:user:field:locale": { de: "Sprache", en: "Locale", es: "Idioma" },
19
+ "user:entity:user:field:timezone": { de: "Zeitzone", en: "Timezone", es: "Zona horaria" },
20
+ "user:entity:user:field:status:option:active": { de: "Aktiv", en: "Active", es: "Activo" },
21
+ "user:entity:user:field:status:option:restricted": {
22
+ de: "Eingeschränkt",
23
+ en: "Restricted",
24
+ es: "Restringido",
25
+ },
14
26
  "user:entity:user:field:status:option:deletionRequested": {
15
27
  de: "Löschung angefordert",
16
28
  en: "Deletion requested",
29
+ es: "Eliminación solicitada",
30
+ },
31
+ "user:entity:user:field:status:option:deleted": {
32
+ de: "Gelöscht",
33
+ en: "Deleted",
34
+ es: "Eliminado",
17
35
  },
18
- "user:entity:user:field:status:option:deleted": { de: "Gelöscht", en: "Deleted" },
19
- "user:entity:user:field:emailVerified:option:true": { de: "Ja", en: "Yes" },
20
- "user:entity:user:field:emailVerified:option:false": { de: "Nein", en: "No" },
36
+ "user:entity:user:field:emailVerified:option:true": { de: "Ja", en: "Yes", es: "Sí" },
37
+ "user:entity:user:field:emailVerified:option:false": { de: "Nein", en: "No", es: "No" },
21
38
  };
@@ -1,40 +1,88 @@
1
1
  // @runtime client
2
2
  // Server + client i18n for user-data-rights (operator screens + nav). Pure
3
3
  // data, importable from the web bundle (web/i18n.ts derives the client keys).
4
- type LocalizedString = { readonly de: string; readonly en: string };
4
+ type LocalizedString = { readonly de: string; readonly en: string; readonly es: string };
5
5
 
6
6
  export const USER_DATA_RIGHTS_I18N: Readonly<Record<string, LocalizedString>> = {
7
- "user-data-rights:nav.exportJobs": { de: "DSGVO-Exporte", en: "GDPR exports" },
8
- "screen:export-job-list.title": { de: "DSGVO-Exporte", en: "GDPR exports" },
9
- "screen:export-job-detail.title": { de: "Export-Job", en: "Export job" },
10
- "screen:download-attempt-list.title": { de: "Download-Versuche", en: "Download attempts" },
11
- "screen:privacy-center.title": { de: "Datenschutz", en: "Privacy" },
12
- "user-data-rights:entity:export-job:field:userId": { de: "Benutzer", en: "User" },
13
- "user-data-rights:entity:export-job:field:status": { de: "Status", en: "Status" },
14
- "user-data-rights:entity:export-job:field:requestedAt": { de: "Angefordert", en: "Requested" },
15
- "user-data-rights:entity:export-job:field:completedAt": { de: "Abgeschlossen", en: "Completed" },
16
- "user-data-rights:entity:export-job:field:expiresAt": { de: "Läuft ab", en: "Expires" },
7
+ "user-data-rights:nav.exportJobs": {
8
+ de: "DSGVO-Exporte",
9
+ en: "GDPR exports",
10
+ es: "Exportaciones RGPD",
11
+ },
12
+ "screen:export-job-list.title": {
13
+ de: "DSGVO-Exporte",
14
+ en: "GDPR exports",
15
+ es: "Exportaciones RGPD",
16
+ },
17
+ "screen:export-job-detail.title": {
18
+ de: "Export-Job",
19
+ en: "Export job",
20
+ es: "Trabajo de exportación",
21
+ },
22
+ "screen:download-attempt-list.title": {
23
+ de: "Download-Versuche",
24
+ en: "Download attempts",
25
+ es: "Intentos de descarga",
26
+ },
27
+ "screen:privacy-center.title": { de: "Datenschutz", en: "Privacy", es: "Privacidad" },
28
+ "user-data-rights:entity:export-job:field:userId": { de: "Benutzer", en: "User", es: "Usuario" },
29
+ "user-data-rights:entity:export-job:field:status": { de: "Status", en: "Status", es: "Estado" },
30
+ "user-data-rights:entity:export-job:field:requestedAt": {
31
+ de: "Angefordert",
32
+ en: "Requested",
33
+ es: "Solicitado",
34
+ },
35
+ "user-data-rights:entity:export-job:field:completedAt": {
36
+ de: "Abgeschlossen",
37
+ en: "Completed",
38
+ es: "Completado",
39
+ },
40
+ "user-data-rights:entity:export-job:field:expiresAt": {
41
+ de: "Läuft ab",
42
+ en: "Expires",
43
+ es: "Caduca",
44
+ },
17
45
  "user-data-rights:entity:export-job:field:requestedFromTenantId": {
18
46
  de: "Mandant",
19
47
  en: "Tenant",
48
+ es: "Organización",
49
+ },
50
+ "user-data-rights:entity:export-job:field:startedAt": {
51
+ de: "Gestartet",
52
+ en: "Started",
53
+ es: "Iniciado",
20
54
  },
21
- "user-data-rights:entity:export-job:field:startedAt": { de: "Gestartet", en: "Started" },
22
55
  "user-data-rights:entity:export-job:field:downloadStorageKey": {
23
56
  de: "Speicher-Schlüssel",
24
57
  en: "Storage key",
58
+ es: "Clave de almacenamiento",
59
+ },
60
+ "user-data-rights:entity:export-job:field:bytesWritten": {
61
+ de: "Bytes",
62
+ en: "Bytes",
63
+ es: "Bytes",
64
+ },
65
+ "user-data-rights:entity:export-job:field:errorMessage": {
66
+ de: "Fehler",
67
+ en: "Error",
68
+ es: "Error",
25
69
  },
26
- "user-data-rights:entity:export-job:field:bytesWritten": { de: "Bytes", en: "Bytes" },
27
- "user-data-rights:entity:export-job:field:errorMessage": { de: "Fehler", en: "Error" },
28
70
  "user-data-rights:entity:download-attempt:field:attemptedAt": {
29
71
  de: "Zeitpunkt",
30
72
  en: "Attempted at",
73
+ es: "Fecha y hora",
74
+ },
75
+ "user-data-rights:entity:download-attempt:field:result": {
76
+ de: "Ergebnis",
77
+ en: "Result",
78
+ es: "Resultado",
31
79
  },
32
- "user-data-rights:entity:download-attempt:field:result": { de: "Ergebnis", en: "Result" },
33
- "user-data-rights:entity:download-attempt:field:via": { de: "Via", en: "Via" },
34
- "user-data-rights:entity:download-attempt:field:ip": { de: "IP", en: "IP" },
80
+ "user-data-rights:entity:download-attempt:field:via": { de: "Via", en: "Via", es: "Vía" },
81
+ "user-data-rights:entity:download-attempt:field:ip": { de: "IP", en: "IP", es: "IP" },
35
82
  "user-data-rights:entity:download-attempt:field:attemptedByUserId": {
36
83
  de: "Benutzer",
37
84
  en: "User",
85
+ es: "Usuario",
38
86
  },
39
- "user-data-rights:entity:download-attempt:field:jobId": { de: "Job", en: "Job" },
87
+ "user-data-rights:entity:download-attempt:field:jobId": { de: "Job", en: "Job", es: "Trabajo" },
40
88
  };
@@ -7,7 +7,7 @@
7
7
  import type { TranslationsByLocale } from "@cosmicdrift/kumiko-renderer";
8
8
  import { USER_DATA_RIGHTS_I18N } from "../i18n";
9
9
 
10
- const LOCALES = ["de", "en"] as const;
10
+ const LOCALES = ["de", "en", "es"] as const;
11
11
 
12
12
  // Operator keys (export-job list/detail titles + entity field labels + nav)
13
13
  // live in the server i18n; the SystemAdmin entityList screens render them
@@ -167,9 +167,78 @@ const apexTranslations: TranslationsByLocale = {
167
167
  "userDataRights.errors.download.signedUrlNotSupported":
168
168
  "The download is currently unavailable due to a server configuration issue. The operator has been notified.",
169
169
  },
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
+ },
170
238
  };
171
239
 
172
240
  export const defaultTranslations: TranslationsByLocale = {
173
241
  de: { ...apexTranslations["de"], ...operatorTranslations["de"] },
174
242
  en: { ...apexTranslations["en"], ...operatorTranslations["en"] },
243
+ es: { ...apexTranslations["es"], ...operatorTranslations["es"] },
175
244
  };
@@ -79,4 +79,39 @@ export const defaultTranslations: TranslationsByLocale = {
79
79
  "user.errors.emailAlreadyExists": "This email address is already in use.",
80
80
  "auth.errors.invalidCredentials": "Email or password incorrect.",
81
81
  },
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
+ },
82
117
  };