@eifi1/ui-kit 0.29.0 → 0.30.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.
- package/README.md +26 -4
- package/dist/account/account-parts.d.ts +21 -0
- package/dist/account/account-parts.js +40 -0
- package/dist/account/account-parts.js.map +1 -0
- package/dist/account/data-export-setting.d.ts +73 -0
- package/dist/account/data-export-setting.js +113 -0
- package/dist/account/data-export-setting.js.map +1 -0
- package/dist/account/delete-account-setting.d.ts +91 -0
- package/dist/account/delete-account-setting.js +199 -0
- package/dist/account/delete-account-setting.js.map +1 -0
- package/dist/account/email-change-setting.d.ts +136 -0
- package/dist/account/email-change-setting.js +277 -0
- package/dist/account/email-change-setting.js.map +1 -0
- package/dist/account/sessions-setting.d.ts +110 -0
- package/dist/account/sessions-setting.js +146 -0
- package/dist/account/sessions-setting.js.map +1 -0
- package/dist/admin/admin-action-confirm.d.ts +91 -0
- package/dist/admin/admin-action-confirm.js +276 -0
- package/dist/admin/admin-action-confirm.js.map +1 -0
- package/dist/admin/admin-action-log.d.ts +105 -0
- package/dist/admin/admin-action-log.js +153 -0
- package/dist/admin/admin-action-log.js.map +1 -0
- package/dist/admin/admin-parts.d.ts +40 -0
- package/dist/admin/admin-parts.js +45 -0
- package/dist/admin/admin-parts.js.map +1 -0
- package/dist/admin/invitations-panel.d.ts +91 -0
- package/dist/admin/invitations-panel.js +289 -0
- package/dist/admin/invitations-panel.js.map +1 -0
- package/dist/admin/reviewer-scope-editor.d.ts +91 -0
- package/dist/admin/reviewer-scope-editor.js +134 -0
- package/dist/admin/reviewer-scope-editor.js.map +1 -0
- package/dist/admin/role-select.d.ts +91 -0
- package/dist/admin/role-select.js +128 -0
- package/dist/admin/role-select.js.map +1 -0
- package/dist/admin/transfer-ownership-dialog.d.ts +91 -0
- package/dist/admin/transfer-ownership-dialog.js +83 -0
- package/dist/admin/transfer-ownership-dialog.js.map +1 -0
- package/dist/admin/user-roster.d.ts +91 -0
- package/dist/admin/user-roster.js +285 -0
- package/dist/admin/user-roster.js.map +1 -0
- package/dist/auth/auth-errors.d.ts +85 -6
- package/dist/auth/auth-errors.js +62 -2
- package/dist/auth/auth-errors.js.map +1 -1
- package/dist/auth/forgot-password-form.d.ts +10 -3
- package/dist/auth/forgot-password-form.js +6 -3
- package/dist/auth/forgot-password-form.js.map +1 -1
- package/dist/auth/register-form.d.ts +17 -12
- package/dist/auth/register-form.js +6 -4
- package/dist/auth/register-form.js.map +1 -1
- package/dist/auth/reset-password-form.d.ts +10 -3
- package/dist/auth/reset-password-form.js +6 -3
- package/dist/auth/reset-password-form.js.map +1 -1
- package/dist/auth/sign-in-form.d.ts +61 -9
- package/dist/auth/sign-in-form.js +94 -13
- package/dist/auth/sign-in-form.js.map +1 -1
- package/dist/auth/verify-email.d.ts +7 -2
- package/dist/auth/verify-email.js +44 -8
- package/dist/auth/verify-email.js.map +1 -1
- package/dist/chart.d.ts +16 -11
- package/dist/components/account-chips.d.ts +47 -7
- package/dist/components/account-chips.js +19 -3
- package/dist/components/account-chips.js.map +1 -1
- package/dist/components/account-settings-labels.d.ts +12 -1
- package/dist/components/account-settings-labels.js +4 -1
- package/dist/components/account-settings-labels.js.map +1 -1
- package/dist/components/account-settings.d.ts +61 -6
- package/dist/components/account-settings.js +115 -15
- package/dist/components/account-settings.js.map +1 -1
- package/dist/components/amount-input.d.ts +17 -12
- package/dist/components/button-group.d.ts +17 -12
- package/dist/components/calculator.d.ts +17 -12
- package/dist/components/confirm-dialog.d.ts +17 -12
- package/dist/components/copy-button.d.ts +14 -9
- package/dist/components/danger-confirm.d.ts +17 -12
- package/dist/components/facing-pair.d.ts +17 -12
- package/dist/components/file-button.d.ts +17 -12
- package/dist/components/file-dropzone.d.ts +17 -12
- package/dist/components/form-actions.d.ts +17 -12
- package/dist/components/iban-input.d.ts +17 -12
- package/dist/components/language-select.d.ts +17 -12
- package/dist/components/legal-page.d.ts +17 -12
- package/dist/components/legal.d.ts +17 -12
- package/dist/components/money-field.d.ts +17 -12
- package/dist/components/number-field.d.ts +17 -12
- package/dist/components/number-input.d.ts +17 -12
- package/dist/components/numpad-sheet.d.ts +17 -12
- package/dist/components/phone-input.d.ts +17 -12
- package/dist/components/series-chart.d.ts +17 -12
- package/dist/components/settings-fields.d.ts +16 -11
- package/dist/components/share-card.d.ts +16 -11
- package/dist/components/text-link.d.ts +17 -12
- package/dist/components/time-input.d.ts +17 -12
- package/dist/components/ui.d.ts +13 -8
- package/dist/{register-form-V1OeNlMr.d.ts → delete-account-setting-CGVMckMw.d.ts} +6616 -5645
- package/dist/feedback/feedback-attachment.d.ts +17 -12
- package/dist/feedback/feedback-context.d.ts +17 -12
- package/dist/feedback/feedback-crash.d.ts +17 -12
- package/dist/feedback/feedback-dialog.d.ts +17 -12
- package/dist/feedback/feedback-inbox.d.ts +17 -12
- package/dist/feedback/feedback-labels.d.ts +17 -12
- package/dist/feedback/feedback-menu.d.ts +17 -12
- package/dist/feedback/feedback-record.d.ts +17 -12
- package/dist/feedback/feedback-row-detail.d.ts +17 -12
- package/dist/feedback/feedback-status-undo.d.ts +17 -12
- package/dist/feedback/feedback-submit.d.ts +17 -12
- package/dist/feedback/feedback-swipe.d.ts +17 -12
- package/dist/feedback/feedback-table.d.ts +14 -9
- package/dist/feedback/feedback-thread.d.ts +17 -12
- package/dist/feedback.d.ts +17 -12
- package/dist/hooks/use-anchored-panel.d.ts +6 -2
- package/dist/hooks/use-anchored-panel.js +2 -1
- package/dist/hooks/use-anchored-panel.js.map +1 -1
- package/dist/hooks/use-file-drop.d.ts +17 -12
- package/dist/i18n/defaults.d.ts +17 -12
- package/dist/i18n/defaults.js +22 -0
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.d.ts +17 -12
- package/dist/i18n/german.js +215 -11
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +10 -5
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/languages.d.ts +11 -6
- package/dist/i18n/locales/de-CH.d.ts +17 -12
- package/dist/i18n/locales/en.d.ts +17 -12
- package/dist/i18n/locales/es.d.ts +17 -12
- package/dist/i18n/locales/es.js +207 -9
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +17 -12
- package/dist/i18n/locales/fr.js +209 -6
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.d.ts +17 -12
- package/dist/i18n/locales/hu.js +207 -11
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +17 -12
- package/dist/i18n/locales/it.js +209 -6
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +17 -12
- package/dist/i18n/locales/zh.js +200 -6
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.d.ts +17 -12
- package/dist/i18n/review.js +37 -1
- package/dist/i18n/review.js.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -1
- package/dist/rhf/fields.d.ts +17 -12
- package/dist/rhf/form.d.ts +17 -12
- package/dist/rhf.d.ts +17 -12
- package/dist/shell/app-shell.d.ts +17 -12
- package/dist/shell/top-bar-brand.d.ts +17 -12
- package/dist/shell.d.ts +11 -6
- package/dist/wizard/stepper-nav.d.ts +17 -12
- package/dist/wizard.d.ts +17 -12
- package/package.json +1 -1
- package/src/account/account-parts.ts +67 -0
- package/src/account/data-export-setting.tsx +218 -0
- package/src/account/delete-account-setting.tsx +362 -0
- package/src/account/email-change-setting.tsx +457 -0
- package/src/account/sessions-setting.tsx +283 -0
- package/src/admin/admin-action-confirm.tsx +495 -0
- package/src/admin/admin-action-log.tsx +297 -0
- package/src/admin/admin-parts.ts +82 -0
- package/src/admin/invitations-panel.tsx +516 -0
- package/src/admin/reviewer-scope-editor.tsx +234 -0
- package/src/admin/role-select.tsx +286 -0
- package/src/admin/transfer-ownership-dialog.tsx +172 -0
- package/src/admin/user-roster.tsx +573 -0
- package/src/auth/auth-errors.ts +165 -8
- package/src/auth/forgot-password-form.tsx +21 -5
- package/src/auth/register-form.tsx +24 -6
- package/src/auth/reset-password-form.tsx +19 -5
- package/src/auth/sign-in-form.tsx +207 -35
- package/src/auth/verify-email.tsx +59 -8
- package/src/components/account-chips.tsx +64 -7
- package/src/components/account-settings-labels.ts +15 -1
- package/src/components/account-settings.tsx +199 -23
- package/src/hooks/use-anchored-panel.ts +14 -3
- package/src/i18n/defaults.ts +22 -0
- package/src/i18n/german.ts +241 -5
- package/src/i18n/kit-labels.tsx +33 -0
- package/src/i18n/locales/es.ts +230 -3
- package/src/i18n/locales/fr.ts +232 -0
- package/src/i18n/locales/hu.ts +224 -5
- package/src/i18n/locales/it.ts +230 -0
- package/src/i18n/locales/zh.ts +205 -0
- package/src/i18n/review.ts +36 -0
- package/src/index.ts +93 -0
package/src/i18n/german.ts
CHANGED
|
@@ -17,6 +17,15 @@ import type { UiKitLabels } from "./kit-labels";
|
|
|
17
17
|
export function germanLabels(numberLocale: string): UiKitLabels {
|
|
18
18
|
const num = new Intl.NumberFormat(numberLocale);
|
|
19
19
|
const n = (value: number) => num.format(value);
|
|
20
|
+
// 0.30.0 — a throttled request (HTTP 429), as `englishRateLimited` in
|
|
21
|
+
// src/auth/auth-errors.ts: no wait → "einen Moment", under a minute → seconds, else
|
|
22
|
+
// minutes rounded up. kastlan's reviewed "auth.throttled" is the sentence without one.
|
|
23
|
+
const wait = (seconds: number) =>
|
|
24
|
+
seconds < 60 ? `${n(Math.ceil(seconds))} s` : `${n(Math.ceil(seconds / 60))} min`;
|
|
25
|
+
const rateLimited = (seconds?: number) =>
|
|
26
|
+
!seconds || seconds <= 0
|
|
27
|
+
? "Zu viele Versuche. Bitte warten Sie einen Moment und versuchen Sie es dann noch einmal."
|
|
28
|
+
: `Zu viele Versuche. Versuchen Sie es in ${wait(seconds)} erneut.`;
|
|
20
29
|
|
|
21
30
|
return {
|
|
22
31
|
feedbackAttachment: {
|
|
@@ -162,6 +171,9 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
162
171
|
memberSince: "Mitglied seit",
|
|
163
172
|
displayName: "Anzeigename",
|
|
164
173
|
save: "Speichern",
|
|
174
|
+
firstName: "Vorname",
|
|
175
|
+
lastName: "Nachname",
|
|
176
|
+
nameRequired: "Geben Sie Vor- und Nachnamen ein.",
|
|
165
177
|
},
|
|
166
178
|
password: {
|
|
167
179
|
title: "Passwort ändern",
|
|
@@ -718,6 +730,8 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
718
730
|
registered: "Registriert",
|
|
719
731
|
unverified: "Nicht bestätigt",
|
|
720
732
|
passwordChange: "Passwortänderung erforderlich",
|
|
733
|
+
deletion: "Löschung beantragt",
|
|
734
|
+
deletionOn: (date) => `Löschung am ${date}`,
|
|
721
735
|
},
|
|
722
736
|
shareCard: {
|
|
723
737
|
dialogTitle: "Teilen",
|
|
@@ -883,6 +897,17 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
883
897
|
setPasswordFailed: "Das Passwort konnte nicht vergeben werden.",
|
|
884
898
|
expired: "Diese Anmeldung ist abgelaufen. Bitte melden Sie sich erneut an.",
|
|
885
899
|
backToSignIn: "Zurück zur Anmeldung",
|
|
900
|
+
// kastlan's backup-code words ("Backup-Code" — not keksdose's
|
|
901
|
+
// "Wiederherstellungscode", which is the key of its end-to-end encryption).
|
|
902
|
+
useRecoveryCode: "Backup-Code verwenden",
|
|
903
|
+
useAuthenticatorCode: "Authenticator-App verwenden",
|
|
904
|
+
recoveryCode: "Backup-Code",
|
|
905
|
+
recoveryIntro:
|
|
906
|
+
"Geben Sie einen der Backup-Codes ein, die Sie beim Einrichten der Zwei-Faktor-Authentifizierung gespeichert haben.",
|
|
907
|
+
recoveryCodeHint: (length) =>
|
|
908
|
+
`${n(length)} Buchstaben und Ziffern. Bindestriche und Leerzeichen spielen keine Rolle.`,
|
|
909
|
+
recoveryCodeInvalid: "Dieser Backup-Code ist ungültig oder wurde schon verwendet.",
|
|
910
|
+
rateLimited,
|
|
886
911
|
},
|
|
887
912
|
register: {
|
|
888
913
|
firstName: "Vorname",
|
|
@@ -906,6 +931,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
906
931
|
invitationInvalid: "Dieser Einladungslink ist ungültig.",
|
|
907
932
|
invitationExpired: "Diese Einladung ist abgelaufen. Bitten Sie um eine neue.",
|
|
908
933
|
failed: "Registrierung fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
|
934
|
+
rateLimited,
|
|
909
935
|
},
|
|
910
936
|
completeName: {
|
|
911
937
|
title: "Namen vervollständigen",
|
|
@@ -927,6 +953,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
927
953
|
sentHint: "Der Link gilt eine Stunde und funktioniert genau einmal. Sehen Sie auch im Spam-Ordner nach.",
|
|
928
954
|
backToSignIn: "Zurück zur Anmeldung",
|
|
929
955
|
error: "Anfrage fehlgeschlagen. Bitte versuchen Sie es später noch einmal.",
|
|
956
|
+
rateLimited,
|
|
930
957
|
},
|
|
931
958
|
resetPassword: {
|
|
932
959
|
title: "Neues Passwort vergeben",
|
|
@@ -944,6 +971,7 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
944
971
|
success: "Ihr Passwort ist geändert. Sie können sich jetzt damit anmelden.",
|
|
945
972
|
sessionsEnded: "Angemeldete Geräte wurden abgemeldet – dort müssen Sie sich neu anmelden.",
|
|
946
973
|
signIn: "Zur Anmeldung",
|
|
974
|
+
rateLimited,
|
|
947
975
|
},
|
|
948
976
|
verifyEmail: {
|
|
949
977
|
title: "E-Mail-Adresse bestätigen",
|
|
@@ -987,12 +1015,220 @@ export function germanLabels(numberLocale: string): UiKitLabels {
|
|
|
987
1015
|
register: "Registrieren",
|
|
988
1016
|
},
|
|
989
1017
|
companySwitcher: {
|
|
990
|
-
// "
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
1018
|
+
// "Unternehmen" (0.30), the word kastlan's admin strings use ("Aus dem Unternehmen
|
|
1019
|
+
// entfernen"), so one German word names a company across the kit.
|
|
1020
|
+
switchCompany: "Unternehmen wechseln",
|
|
1021
|
+
heading: "Unternehmen",
|
|
1022
|
+
current: (name) => `Unternehmen: ${name}`,
|
|
994
1023
|
currentMark: "(aktuell)",
|
|
995
|
-
switching: "
|
|
1024
|
+
switching: "Unternehmen wird gewechselt…",
|
|
1025
|
+
},
|
|
1026
|
+
// 0.30.0 — docs/user-admin-harmonization.md: keksdose's reviewed de-CH for the admin
|
|
1027
|
+
// words (admin.users.*), Kurvenschmiede's for transfer, invitations and sessions,
|
|
1028
|
+
// kastlan's for "Unternehmen", the throttle and "Überall abmelden"; written fresh where
|
|
1029
|
+
// no app had the sentence. Formal "Sie". "Administratorrechte" rather than "der letzte
|
|
1030
|
+
// Administrator", which would give the reader a gender.
|
|
1031
|
+
emailChange: {
|
|
1032
|
+
title: "E-Mail-Adresse",
|
|
1033
|
+
current: "Aktuelle Adresse",
|
|
1034
|
+
newEmail: "Neue E-Mail-Adresse",
|
|
1035
|
+
password: "Aktuelles Passwort",
|
|
1036
|
+
passwordHint: "Mit Ihrer Adresse melden Sie sich an – deshalb braucht eine Änderung Ihr Passwort.",
|
|
1037
|
+
emailTagUse: (address) => `${address} verwenden`,
|
|
1038
|
+
emailTagHint:
|
|
1039
|
+
"Viele Anbieter stellen name+kennung@… an dasselbe Postfach zu, damit Post von dieser App filter- und zuordenbar wird. Prüfen Sie vorher, ob Ihrer das tut: Angemeldet wird dann mit der markierten Adresse.",
|
|
1040
|
+
submit: "E-Mail-Adresse ändern",
|
|
1041
|
+
sameAsCurrent: "Das ist bereits Ihre Adresse.",
|
|
1042
|
+
emailTaken: "Ein Konto mit dieser E-Mail-Adresse existiert bereits.",
|
|
1043
|
+
wrongPassword: "Das Passwort ist falsch.",
|
|
1044
|
+
pending: (newEmail) => `Bestätigen Sie den Link, den wir an ${newEmail} geschickt haben.`,
|
|
1045
|
+
pendingHint: (currentEmail) =>
|
|
1046
|
+
`Bis dahin melden Sie sich weiterhin mit ${currentEmail} an. Sehen Sie auch im Spam-Ordner nach.`,
|
|
1047
|
+
resend: "Link erneut senden",
|
|
1048
|
+
resent: "Wir haben den Link erneut gesendet.",
|
|
1049
|
+
cancel: "Änderung abbrechen",
|
|
1050
|
+
confirmed: (email) => `Ihre E-Mail-Adresse ist jetzt ${email}.`,
|
|
1051
|
+
passkeyNote:
|
|
1052
|
+
"Ihre Passkeys funktionieren weiterhin. Ihr Gerät zeigt sie eventuell noch unter der alten Adresse an.",
|
|
1053
|
+
rateLimited,
|
|
1054
|
+
failed: "Das hat nicht geklappt. Bitte erneut versuchen.",
|
|
1055
|
+
},
|
|
1056
|
+
sessions: {
|
|
1057
|
+
title: "Sitzungen",
|
|
1058
|
+
description:
|
|
1059
|
+
"Auf einem Gerät angemeldet, das Sie nicht mehr nutzen oder dem Sie nicht trauen? Melden Sie sich überall ab.",
|
|
1060
|
+
signOutEverywhere: "Überall abmelden…",
|
|
1061
|
+
signOutEverywherePrompt:
|
|
1062
|
+
"Damit enden alle Sitzungen, auch diese: Sie werden auch auf diesem Gerät abgemeldet und melden sich hier neu an.",
|
|
1063
|
+
confirmSignOutEverywhere: "Überall abmelden",
|
|
1064
|
+
list: "Wo Sie angemeldet sind",
|
|
1065
|
+
loading: "Sitzungen werden geladen…",
|
|
1066
|
+
empty: "Keine Sitzungen vorhanden.",
|
|
1067
|
+
current: "Dieses Gerät",
|
|
1068
|
+
unknownDevice: "Unbekanntes Gerät",
|
|
1069
|
+
// A colon: `when` is either "vor 3 Stunden" or a date.
|
|
1070
|
+
lastActive: (when) => `Zuletzt aktiv: ${when}`,
|
|
1071
|
+
ip: (address) => `IP ${address}`,
|
|
1072
|
+
revoke: "Abmelden",
|
|
1073
|
+
// Starts with `revoke`, the button's visible text, for voice control.
|
|
1074
|
+
revokeItem: (device) => `Abmelden: ${device}`,
|
|
1075
|
+
failed: "Das hat nicht geklappt. Bitte erneut versuchen.",
|
|
1076
|
+
},
|
|
1077
|
+
deleteAccount: {
|
|
1078
|
+
title: "Konto löschen",
|
|
1079
|
+
afterDays: (days) =>
|
|
1080
|
+
days === 1
|
|
1081
|
+
? "Ihr Konto wird sofort deaktiviert und 1 Tag später endgültig gelöscht."
|
|
1082
|
+
: `Ihr Konto wird sofort deaktiviert und ${n(days)} Tage später endgültig gelöscht.`,
|
|
1083
|
+
operator: "Ihr Konto wird sofort deaktiviert und anschließend vom Betreiber endgültig gelöscht.",
|
|
1084
|
+
arm: "Konto löschen…",
|
|
1085
|
+
prompt: "Sie werden auf allen Geräten abgemeldet, und Ihr Konto kann nicht mehr verwendet werden.",
|
|
1086
|
+
handOver: (count) =>
|
|
1087
|
+
count === 1
|
|
1088
|
+
? "1 Element, das andere sehen können, geht an einen Administrator über."
|
|
1089
|
+
: `${n(count)} Elemente, die andere sehen können, gehen an einen Administrator über.`,
|
|
1090
|
+
confirm: "Mein Konto löschen",
|
|
1091
|
+
done: "Ihr Konto ist deaktiviert. Sie werden abgemeldet.",
|
|
1092
|
+
wrongPassword: "Das Passwort ist falsch.",
|
|
1093
|
+
confirmationMismatch: "Das ist nicht die Adresse Ihres Kontos.",
|
|
1094
|
+
lastAdmin:
|
|
1095
|
+
"Ihr Konto ist das letzte mit Administratorrechten. Geben Sie zuerst einem anderen Konto Administratorrechte.",
|
|
1096
|
+
lastAdminOf: (companies) =>
|
|
1097
|
+
`Ihr Konto ist das letzte mit Administratorrechten bei ${companies}. Geben Sie dort zuerst einem anderen Konto Administratorrechte.`,
|
|
1098
|
+
// keksdose's "Haushalt".
|
|
1099
|
+
householdHasMembers:
|
|
1100
|
+
"Ihr Haushalt hat weitere Mitglieder, deshalb kann das Konto hier nicht gelöscht werden. Bitte schreiben Sie dem Betreiber.",
|
|
1101
|
+
rateLimited,
|
|
1102
|
+
failed: "Ihr Konto konnte nicht gelöscht werden. Bitte versuchen Sie es erneut.",
|
|
1103
|
+
},
|
|
1104
|
+
dataExport: {
|
|
1105
|
+
title: "Ihre Daten exportieren",
|
|
1106
|
+
description: "Laden Sie eine Kopie der Daten Ihres Kontos als JSON-Datei herunter.",
|
|
1107
|
+
download: "Meine Daten herunterladen",
|
|
1108
|
+
started: "Ihr Download hat begonnen.",
|
|
1109
|
+
saveAgain: "Nicht gestartet? Datei speichern",
|
|
1110
|
+
rateLimited: (seconds) =>
|
|
1111
|
+
seconds && seconds > 0
|
|
1112
|
+
? `Sie haben Ihre Daten gerade erst exportiert. Versuchen Sie es in ${wait(seconds)} erneut.`
|
|
1113
|
+
: "Sie haben Ihre Daten gerade erst exportiert. Bitte versuchen Sie es in einer Minute erneut.",
|
|
1114
|
+
failed: "Der Export ist fehlgeschlagen. Bitte versuchen Sie es erneut.",
|
|
1115
|
+
},
|
|
1116
|
+
userRoster: {
|
|
1117
|
+
name: "Name",
|
|
1118
|
+
email: "E-Mail",
|
|
1119
|
+
role: "Rolle",
|
|
1120
|
+
state: "Status",
|
|
1121
|
+
created: "Erstellt",
|
|
1122
|
+
lastLogin: "Letzte Anmeldung",
|
|
1123
|
+
never: "Nie",
|
|
1124
|
+
actions: "Aktionen",
|
|
1125
|
+
actionsFor: (name) => `Aktionen für ${name}`,
|
|
1126
|
+
},
|
|
1127
|
+
roleSelect: {
|
|
1128
|
+
label: "Rolle",
|
|
1129
|
+
rolesLegend: "Rollen",
|
|
1130
|
+
roleOf: (name) => `Rolle von ${name}`,
|
|
1131
|
+
lockedLastAdmin: "Das letzte aktive Konto mit Administratorrechten behält diese Rolle.",
|
|
1132
|
+
lockedSelf: "Ihre eigene Rolle können Sie nicht ändern.",
|
|
1133
|
+
notForLastAdmin: "nicht für das letzte Administratorkonto",
|
|
1134
|
+
notForSelf: "nicht für Ihr eigenes Konto",
|
|
1135
|
+
unavailable: (role, reason) => `${role} (${reason})`,
|
|
1136
|
+
},
|
|
1137
|
+
reviewerScope: {
|
|
1138
|
+
languages: "Sprachen",
|
|
1139
|
+
hint: "Kreuzen Sie die Sprachen an, die diese Person prüft.",
|
|
1140
|
+
none: "Keine Sprache: Beim Speichern wird die Prüfrolle entzogen.",
|
|
1141
|
+
areas: "Beschränken auf",
|
|
1142
|
+
legalOnly: "Nur die rechtlichen Seiten",
|
|
1143
|
+
legalOnlyHint:
|
|
1144
|
+
"Impressum, Datenschutzerklärung und Nutzungsbedingungen – für eine Juristin oder einen Juristen statt für Muttersprachler.",
|
|
1145
|
+
failed: "Die Prüfrolle konnte nicht gespeichert werden. Bitte versuchen Sie es erneut.",
|
|
1146
|
+
},
|
|
1147
|
+
adminAction: {
|
|
1148
|
+
confirm: "Bestätigen",
|
|
1149
|
+
cancel: "Abbrechen",
|
|
1150
|
+
close: "Schließen",
|
|
1151
|
+
lastAdmin:
|
|
1152
|
+
"Dies ist das letzte aktive Konto mit Administratorrechten. Geben Sie zuerst einem anderen Konto Administratorrechte.",
|
|
1153
|
+
self: "Mit Ihrem eigenen Konto ist das nicht möglich.",
|
|
1154
|
+
confirmationMismatch:
|
|
1155
|
+
"Die Adresse passt nicht zu diesem Konto. Prüfen Sie, bei welchem Konto Sie sind.",
|
|
1156
|
+
otherCompanies:
|
|
1157
|
+
"Dieses Konto gehört auch zu anderen Unternehmen, deshalb kann nur der Plattformbetreiber das tun. Sie können es stattdessen aus diesem Unternehmen entfernen.",
|
|
1158
|
+
removeFromCompany: "Aus dem Unternehmen entfernen",
|
|
1159
|
+
failed: "Das hat nicht geklappt. Bitte erneut versuchen.",
|
|
1160
|
+
},
|
|
1161
|
+
adminActionLog: {
|
|
1162
|
+
title: "Admin-Aktionen",
|
|
1163
|
+
empty: "Noch keine Admin-Aktionen.",
|
|
1164
|
+
loading: "Wird geladen…",
|
|
1165
|
+
// "durch", not "von": it takes the accusative, so `erased` ("ein gelöschtes Konto")
|
|
1166
|
+
// reads right both on its own and after it.
|
|
1167
|
+
by: (actor) => `durch ${actor}`,
|
|
1168
|
+
bySelf: "durch die Person selbst",
|
|
1169
|
+
automatic: "automatisch",
|
|
1170
|
+
erased: "ein gelöschtes Konto",
|
|
1171
|
+
filteredTo: (target) => `Nur ${target}`,
|
|
1172
|
+
showAll: "Alle Aktionen zeigen",
|
|
1173
|
+
filterBy: (target) => `Nur Aktionen zu ${target} zeigen`,
|
|
1174
|
+
actions: {
|
|
1175
|
+
deactivate: "Deaktiviert",
|
|
1176
|
+
reactivate: "Reaktiviert",
|
|
1177
|
+
role: "Rolle geändert",
|
|
1178
|
+
membership_remove: "Aus dem Unternehmen entfernt",
|
|
1179
|
+
password_change_require: "Neues Passwort verlangt",
|
|
1180
|
+
password_change_withdraw: "Passwortforderung zurückgenommen",
|
|
1181
|
+
mail_verification: "Bestätigungsmail gesendet",
|
|
1182
|
+
mail_reset: "Mail zum Zurücksetzen des Passworts gesendet",
|
|
1183
|
+
reviewer: "Prüfrolle geändert",
|
|
1184
|
+
invite: "Eingeladen",
|
|
1185
|
+
invite_resend: "Einladung erneut gesendet",
|
|
1186
|
+
invite_revoke: "Einladung zurückgezogen",
|
|
1187
|
+
transfer: "Arbeit übergeben",
|
|
1188
|
+
deletion_request: "Löschung beantragt",
|
|
1189
|
+
deletion_cancel: "Löschung aufgehoben",
|
|
1190
|
+
erase: "Konto endgültig gelöscht",
|
|
1191
|
+
},
|
|
1192
|
+
},
|
|
1193
|
+
transferOwnership: {
|
|
1194
|
+
title: (name) => `Arbeit von ${name} übergeben`,
|
|
1195
|
+
body: "Alles, was diesem Konto gehört, geht in einem Schritt an das gewählte Konto.",
|
|
1196
|
+
recipient: "Übergeben an",
|
|
1197
|
+
choose: "Konto wählen…",
|
|
1198
|
+
chooseFirst: "Wählen Sie, wer die Arbeit erhält",
|
|
1199
|
+
confirm: "Übergeben",
|
|
1200
|
+
customer: "Kundenkonto",
|
|
1201
|
+
deactivated: "deaktiviert",
|
|
1202
|
+
self: "dasselbe Konto",
|
|
1203
|
+
unavailable: (account, reason) => `${account} (${reason})`,
|
|
1204
|
+
noCandidates: "Kein anderes Konto kann sie erhalten.",
|
|
1205
|
+
},
|
|
1206
|
+
invitations: {
|
|
1207
|
+
email: "E-Mail-Adresse",
|
|
1208
|
+
invalidEmail: "Bitte eine vollständige E-Mail-Adresse eingeben.",
|
|
1209
|
+
role: "Rolle",
|
|
1210
|
+
scope: "Bereich",
|
|
1211
|
+
scopeNone: "Keiner",
|
|
1212
|
+
language: "Sprache der Einladung",
|
|
1213
|
+
note: "Notiz",
|
|
1214
|
+
invite: "Einladen",
|
|
1215
|
+
listTitle: "Einladungen",
|
|
1216
|
+
empty: "Noch niemand ist eingeladen.",
|
|
1217
|
+
loading: "Wird geladen…",
|
|
1218
|
+
status: { open: "Offen", accepted: "Angenommen", expired: "Abgelaufen", revoked: "Zurückgezogen" },
|
|
1219
|
+
sent: (date) => `Gesendet am ${date}`,
|
|
1220
|
+
// kastlan's "Gültig bis".
|
|
1221
|
+
expires: (date) => `Gültig bis ${date}`,
|
|
1222
|
+
invitedBy: (name) => `von ${name}`,
|
|
1223
|
+
resend: (email) => `${email} einen neuen Link senden`,
|
|
1224
|
+
copyLink: "Einladungslink kopieren",
|
|
1225
|
+
revoke: (email) => `Einladung an ${email} zurückziehen`,
|
|
1226
|
+
consoleHint:
|
|
1227
|
+
"Dieser Server verschickt keine Mails – sie werden ins Server-Log geschrieben. Kopieren Sie jeden Einladungslink hier und geben Sie ihn selbst weiter: Er wird nur einmal angezeigt.",
|
|
1228
|
+
linkReady: (email) => `Der Einladungslink für ${email}, nur dieses eine Mal angezeigt:`,
|
|
1229
|
+
notSent: (email) =>
|
|
1230
|
+
`${email} ist eingeladen, aber die Mail konnte nicht gesendet werden. Senden Sie sie erneut.`,
|
|
1231
|
+
failed: "Das hat nicht geklappt. Bitte erneut versuchen.",
|
|
996
1232
|
},
|
|
997
1233
|
characterCount: {
|
|
998
1234
|
// "Zeichen" is the same in singular and plural.
|
package/src/i18n/kit-labels.tsx
CHANGED
|
@@ -66,6 +66,17 @@ import type { VerifyEmailLabels } from "../auth/verify-email";
|
|
|
66
66
|
import type { NotFoundLabels } from "../auth/not-found-page";
|
|
67
67
|
import type { AcceptInvitationLabels } from "../auth/accept-invitation";
|
|
68
68
|
import type { CompanySwitcherLabels } from "../shell/company-switcher";
|
|
69
|
+
import type { EmailChangeLabels } from "../account/email-change-setting";
|
|
70
|
+
import type { SessionsLabels } from "../account/sessions-setting";
|
|
71
|
+
import type { DeleteAccountLabels } from "../account/delete-account-setting";
|
|
72
|
+
import type { DataExportLabels } from "../account/data-export-setting";
|
|
73
|
+
import type { UserRosterLabels } from "../admin/user-roster";
|
|
74
|
+
import type { RoleSelectLabels } from "../admin/role-select";
|
|
75
|
+
import type { ReviewerScopeLabels } from "../admin/reviewer-scope-editor";
|
|
76
|
+
import type { AdminActionLabels } from "../admin/admin-action-confirm";
|
|
77
|
+
import type { AdminActionLogLabels } from "../admin/admin-action-log";
|
|
78
|
+
import type { TransferOwnershipLabels } from "../admin/transfer-ownership-dialog";
|
|
79
|
+
import type { InvitationsLabels } from "../admin/invitations-panel";
|
|
69
80
|
import type { AccountStateLabels } from "../components/account-chips";
|
|
70
81
|
import type { ShareCardLabels } from "../components/share-card";
|
|
71
82
|
import type { ReauthDialogLabels } from "../components/reauth-dialog";
|
|
@@ -350,6 +361,28 @@ export interface UiKitLabels {
|
|
|
350
361
|
acceptInvitation: AcceptInvitationLabels;
|
|
351
362
|
/** 0.29.0: kastlan's switcher between a user's companies (§5.3). */
|
|
352
363
|
companySwitcher: CompanySwitcherLabels;
|
|
364
|
+
/** 0.30.0: changing the account's address with re-verification (docs/user-admin-harmonization.md §6.2). */
|
|
365
|
+
emailChange: EmailChangeLabels;
|
|
366
|
+
/** 0.30.0: sign out everywhere, and kastlan's device list (§6.3). */
|
|
367
|
+
sessions: SessionsLabels;
|
|
368
|
+
/** 0.30.0: deletion in two stages (§6.4). */
|
|
369
|
+
deleteAccount: DeleteAccountLabels;
|
|
370
|
+
/** 0.30.0: the self-service JSON export (§6.5). */
|
|
371
|
+
dataExport: DataExportLabels;
|
|
372
|
+
/** 0.30.0: the admin user list's columns (§3). */
|
|
373
|
+
userRoster: UserRosterLabels;
|
|
374
|
+
/** 0.30.0: picking one or several roles, with the reasons a choice is locked (§4.1). */
|
|
375
|
+
roleSelect: RoleSelectLabels;
|
|
376
|
+
/** 0.30.0: a translation reviewer's languages and areas. */
|
|
377
|
+
reviewerScope: ReviewerScopeLabels;
|
|
378
|
+
/** 0.30.0: an admin action's confirmation and refusals (§4.2). */
|
|
379
|
+
adminAction: AdminActionLabels;
|
|
380
|
+
/** 0.30.0: the admin_actions list (§4.3). */
|
|
381
|
+
adminActionLog: AdminActionLogLabels;
|
|
382
|
+
/** 0.30.0: handing an account's work to another (Kurvenschmiede). */
|
|
383
|
+
transferOwnership: TransferOwnershipLabels;
|
|
384
|
+
/** 0.30.0: the invitations panel (§5). */
|
|
385
|
+
invitations: InvitationsLabels;
|
|
353
386
|
/** 0.22.0: the screen-reader words of `Input` / `Textarea`'s `showCount` counter. */
|
|
354
387
|
characterCount: CharacterCountLabels;
|
|
355
388
|
/** 0.22.0: `CountrySelect`. Its list's "no results" and counts are `combobox`'s. */
|
package/src/i18n/locales/es.ts
CHANGED
|
@@ -14,6 +14,15 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
|
|
|
14
14
|
const num = new Intl.NumberFormat(numberLocale);
|
|
15
15
|
const n = (value: number) => num.format(value);
|
|
16
16
|
const plural = (count: number, one: string, many: string) => (count === 1 ? one : many);
|
|
17
|
+
// 0.30.0 — a throttled request (HTTP 429), as `englishRateLimited` in
|
|
18
|
+
// src/auth/auth-errors.ts: no wait → "un momento", under a minute → seconds, else
|
|
19
|
+
// minutes rounded up.
|
|
20
|
+
const wait = (seconds: number) =>
|
|
21
|
+
seconds < 60 ? `${n(Math.ceil(seconds))} s` : `${n(Math.ceil(seconds / 60))} min`;
|
|
22
|
+
const rateLimited = (seconds?: number) =>
|
|
23
|
+
!seconds || seconds <= 0
|
|
24
|
+
? "Demasiados intentos. Espere un momento e inténtelo de nuevo."
|
|
25
|
+
: `Demasiados intentos. Inténtelo de nuevo en ${wait(seconds)}.`;
|
|
17
26
|
|
|
18
27
|
return {
|
|
19
28
|
feedbackAttachment: {
|
|
@@ -153,6 +162,9 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
|
|
|
153
162
|
memberSince: "Miembro desde",
|
|
154
163
|
displayName: "Nombre visible",
|
|
155
164
|
save: "Guardar",
|
|
165
|
+
firstName: "Nombre",
|
|
166
|
+
lastName: "Apellidos",
|
|
167
|
+
nameRequired: "Introduzca el nombre y los apellidos.",
|
|
156
168
|
},
|
|
157
169
|
password: {
|
|
158
170
|
title: "Cambiar contraseña",
|
|
@@ -699,6 +711,8 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
|
|
|
699
711
|
registered: "Registrada",
|
|
700
712
|
unverified: "Sin verificar",
|
|
701
713
|
passwordChange: "Debe cambiar la contraseña",
|
|
714
|
+
deletion: "Eliminación solicitada",
|
|
715
|
+
deletionOn: (date) => `Eliminación el ${date}`,
|
|
702
716
|
},
|
|
703
717
|
shareCard: {
|
|
704
718
|
dialogTitle: "Compartir",
|
|
@@ -864,6 +878,15 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
|
|
|
864
878
|
setPasswordFailed: "No se pudo establecer la contraseña.",
|
|
865
879
|
expired: "Este inicio de sesión ha caducado. Inicie sesión de nuevo.",
|
|
866
880
|
backToSignIn: "Volver a iniciar sesión",
|
|
881
|
+
useRecoveryCode: "Usar un código de respaldo",
|
|
882
|
+
useAuthenticatorCode: "Usar su app de autenticación",
|
|
883
|
+
recoveryCode: "Código de respaldo",
|
|
884
|
+
recoveryIntro:
|
|
885
|
+
"Introduzca uno de los códigos de respaldo que guardó al activar la verificación en dos pasos.",
|
|
886
|
+
recoveryCodeHint: (length) =>
|
|
887
|
+
`${n(length)} letras y dígitos. Los guiones y los espacios no importan.`,
|
|
888
|
+
recoveryCodeInvalid: "Este código de respaldo no es válido o ya se ha usado.",
|
|
889
|
+
rateLimited,
|
|
867
890
|
},
|
|
868
891
|
register: {
|
|
869
892
|
firstName: "Nombre",
|
|
@@ -871,7 +894,7 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
|
|
|
871
894
|
email: "Correo electrónico",
|
|
872
895
|
emailTagUse: (address) => `Usar ${address}`,
|
|
873
896
|
emailTagHint:
|
|
874
|
-
"Muchos proveedores entregan nombre+etiqueta@… en el mismo buzón, así que el correo de esta aplicación es fácil de filtrar y rastrear. Compruebe que el suyo lo hace antes de confiar en ello:
|
|
897
|
+
"Muchos proveedores entregan nombre+etiqueta@… en el mismo buzón, así que el correo de esta aplicación es fácil de filtrar y rastrear. Compruebe que el suyo lo hace antes de confiar en ello: tendría que iniciar sesión con la dirección etiquetada.",
|
|
875
898
|
invitedEmailHint: "La dirección a la que se envió su invitación.",
|
|
876
899
|
invitedTagNote: "La dirección etiquetada recibe su propio correo de confirmación.",
|
|
877
900
|
password: "Contraseña",
|
|
@@ -887,6 +910,7 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
|
|
|
887
910
|
invitationInvalid: "Este enlace de invitación no es válido.",
|
|
888
911
|
invitationExpired: "Esta invitación ha caducado. Pida una nueva.",
|
|
889
912
|
failed: "No se pudo completar el registro. Inténtelo de nuevo.",
|
|
913
|
+
rateLimited,
|
|
890
914
|
},
|
|
891
915
|
completeName: {
|
|
892
916
|
title: "Complete su nombre",
|
|
@@ -906,9 +930,10 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
|
|
|
906
930
|
submit: "Enviar el enlace",
|
|
907
931
|
sent: (email) => `Si existe una cuenta para ${email}, el enlace está en camino.`,
|
|
908
932
|
sentHint:
|
|
909
|
-
"El enlace es válido durante una hora y funciona una sola vez.
|
|
933
|
+
"El enlace es válido durante una hora y funciona una sola vez. Revise también la carpeta de correo no deseado.",
|
|
910
934
|
backToSignIn: "Volver a iniciar sesión",
|
|
911
935
|
error: "La solicitud ha fallado. Inténtelo de nuevo más tarde.",
|
|
936
|
+
rateLimited,
|
|
912
937
|
},
|
|
913
938
|
resetPassword: {
|
|
914
939
|
title: "Elija una nueva contraseña",
|
|
@@ -927,6 +952,7 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
|
|
|
927
952
|
sessionsEnded:
|
|
928
953
|
"Se ha cerrado la sesión en los dispositivos conectados; tendrá que volver a iniciarla en ellos.",
|
|
929
954
|
signIn: "Ir a iniciar sesión",
|
|
955
|
+
rateLimited,
|
|
930
956
|
},
|
|
931
957
|
verifyEmail: {
|
|
932
958
|
title: "Confirme su dirección de correo electrónico",
|
|
@@ -948,7 +974,7 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
|
|
|
948
974
|
},
|
|
949
975
|
notFound: {
|
|
950
976
|
title: "Página no encontrada",
|
|
951
|
-
body: "Esta dirección no existe (o ya no existe). Quizá sea una errata
|
|
977
|
+
body: "Esta dirección no existe (o ya no existe). Quizá sea una errata o la página se haya movido.",
|
|
952
978
|
home: "Ir a la página de inicio",
|
|
953
979
|
app: "Volver a la aplicación",
|
|
954
980
|
},
|
|
@@ -974,6 +1000,207 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
|
|
|
974
1000
|
currentMark: "(actual)",
|
|
975
1001
|
switching: "Cambiando de empresa…",
|
|
976
1002
|
},
|
|
1003
|
+
// 0.30.0 — docs/user-admin-harmonization.md: Kurvenschmiede's reviewed Spanish for the
|
|
1004
|
+
// admin words, transfer, invitations and sessions; written fresh where it had no
|
|
1005
|
+
// sentence. "Usted", as the rest of this catalogue.
|
|
1006
|
+
emailChange: {
|
|
1007
|
+
title: "Dirección de correo electrónico",
|
|
1008
|
+
current: "Dirección actual",
|
|
1009
|
+
newEmail: "Nueva dirección de correo electrónico",
|
|
1010
|
+
password: "Contraseña actual",
|
|
1011
|
+
passwordHint: "Inicia sesión con su dirección, así que cambiarla requiere su contraseña.",
|
|
1012
|
+
emailTagUse: (address) => `Usar ${address}`,
|
|
1013
|
+
emailTagHint:
|
|
1014
|
+
"Muchos proveedores entregan nombre+etiqueta@… en el mismo buzón, así que el correo de esta aplicación es fácil de filtrar y rastrear. Compruebe que el suyo lo hace antes de confiar en ello: tendría que iniciar sesión con la dirección etiquetada.",
|
|
1015
|
+
submit: "Cambiar la dirección de correo electrónico",
|
|
1016
|
+
sameAsCurrent: "Esta ya es su dirección.",
|
|
1017
|
+
emailTaken: "Ya existe una cuenta con esta dirección de correo electrónico.",
|
|
1018
|
+
wrongPassword: "La contraseña no es correcta.",
|
|
1019
|
+
pending: (newEmail) => `Confirme el enlace que hemos enviado a ${newEmail}.`,
|
|
1020
|
+
pendingHint: (currentEmail) =>
|
|
1021
|
+
`Hasta entonces, seguirá iniciando sesión con ${currentEmail}. Revise también la carpeta de correo no deseado.`,
|
|
1022
|
+
resend: "Enviar el enlace de nuevo",
|
|
1023
|
+
resent: "Hemos vuelto a enviar el enlace.",
|
|
1024
|
+
cancel: "Cancelar el cambio",
|
|
1025
|
+
confirmed: (email) => `Su dirección de correo electrónico es ahora ${email}.`,
|
|
1026
|
+
passkeyNote:
|
|
1027
|
+
"Sus llaves de acceso siguen funcionando. Puede que su dispositivo aún las muestre con su dirección anterior.",
|
|
1028
|
+
rateLimited,
|
|
1029
|
+
failed: "No ha funcionado. Inténtelo de nuevo.",
|
|
1030
|
+
},
|
|
1031
|
+
sessions: {
|
|
1032
|
+
title: "Sesiones",
|
|
1033
|
+
description:
|
|
1034
|
+
"¿Ha iniciado sesión en un dispositivo que ya no usa o en el que no confía? Cierre sesión en todas partes.",
|
|
1035
|
+
signOutEverywhere: "Cerrar sesión en todas partes…",
|
|
1036
|
+
signOutEverywherePrompt:
|
|
1037
|
+
"Esto termina todas las sesiones, también esta: se cerrará la sesión en este dispositivo y tendrá que volver a iniciarla aquí.",
|
|
1038
|
+
confirmSignOutEverywhere: "Cerrar sesión en todas partes",
|
|
1039
|
+
list: "Dónde ha iniciado sesión",
|
|
1040
|
+
loading: "Cargando sesiones…",
|
|
1041
|
+
empty: "No hay sesiones que mostrar.",
|
|
1042
|
+
current: "Este dispositivo",
|
|
1043
|
+
unknownDevice: "Dispositivo desconocido",
|
|
1044
|
+
// A colon: `when` is either "hace 3 horas" or a date.
|
|
1045
|
+
lastActive: (when) => `Última actividad: ${when}`,
|
|
1046
|
+
ip: (address) => `IP ${address}`,
|
|
1047
|
+
revoke: "Cerrar sesión",
|
|
1048
|
+
// Starts with `revoke`, the button's visible text, for voice control.
|
|
1049
|
+
revokeItem: (device) => `Cerrar sesión en ${device}`,
|
|
1050
|
+
failed: "No ha funcionado. Inténtelo de nuevo.",
|
|
1051
|
+
},
|
|
1052
|
+
deleteAccount: {
|
|
1053
|
+
title: "Eliminar la cuenta",
|
|
1054
|
+
afterDays: (days) =>
|
|
1055
|
+
`Su cuenta se desactiva de inmediato y se borra definitivamente ${n(days)} ${plural(days, "día", "días")} después.`,
|
|
1056
|
+
operator: "Su cuenta se desactiva de inmediato, y el operador la borrará definitivamente.",
|
|
1057
|
+
arm: "Eliminar la cuenta…",
|
|
1058
|
+
prompt: "Se cerrará su sesión en todos los dispositivos y ya no podrá usar su cuenta.",
|
|
1059
|
+
handOver: (count) =>
|
|
1060
|
+
count === 1
|
|
1061
|
+
? "1 elemento que otros pueden ver pasará a un administrador."
|
|
1062
|
+
: `${n(count)} elementos que otros pueden ver pasarán a un administrador.`,
|
|
1063
|
+
confirm: "Eliminar mi cuenta",
|
|
1064
|
+
done: "Su cuenta está desactivada. Se está cerrando su sesión.",
|
|
1065
|
+
wrongPassword: "La contraseña no es correcta.",
|
|
1066
|
+
confirmationMismatch: "Esta no es la dirección de su cuenta.",
|
|
1067
|
+
lastAdmin:
|
|
1068
|
+
"Su cuenta es la última con rol de administrador. Primero haga administrador a otra persona.",
|
|
1069
|
+
lastAdminOf: (companies) =>
|
|
1070
|
+
`Su cuenta es la última con rol de administrador en ${companies}. Primero haga administrador allí a otra persona.`,
|
|
1071
|
+
householdHasMembers:
|
|
1072
|
+
"Su hogar tiene otros miembros, así que la cuenta no se puede eliminar aquí. Escriba al operador.",
|
|
1073
|
+
rateLimited,
|
|
1074
|
+
failed: "No se pudo eliminar su cuenta. Inténtelo de nuevo.",
|
|
1075
|
+
},
|
|
1076
|
+
dataExport: {
|
|
1077
|
+
title: "Exportar sus datos",
|
|
1078
|
+
description: "Descargue una copia de los datos de su cuenta como archivo JSON.",
|
|
1079
|
+
download: "Descargar mis datos",
|
|
1080
|
+
started: "La descarga ha comenzado.",
|
|
1081
|
+
saveAgain: "¿No ha empezado? Guardar el archivo",
|
|
1082
|
+
rateLimited: (seconds) =>
|
|
1083
|
+
seconds && seconds > 0
|
|
1084
|
+
? `Acaba de exportar sus datos. Inténtelo de nuevo en ${wait(seconds)}.`
|
|
1085
|
+
: "Acaba de exportar sus datos. Inténtelo de nuevo dentro de un minuto.",
|
|
1086
|
+
failed: "La exportación ha fallado. Inténtelo de nuevo.",
|
|
1087
|
+
},
|
|
1088
|
+
userRoster: {
|
|
1089
|
+
name: "Nombre",
|
|
1090
|
+
email: "Correo electrónico",
|
|
1091
|
+
role: "Rol",
|
|
1092
|
+
state: "Estado",
|
|
1093
|
+
// Agreeing with "cuenta" (feminine), like `accountState`.
|
|
1094
|
+
created: "Creada",
|
|
1095
|
+
lastLogin: "Último inicio de sesión",
|
|
1096
|
+
never: "Nunca",
|
|
1097
|
+
actions: "Acciones",
|
|
1098
|
+
actionsFor: (name) => `Acciones para ${name}`,
|
|
1099
|
+
},
|
|
1100
|
+
roleSelect: {
|
|
1101
|
+
label: "Rol",
|
|
1102
|
+
rolesLegend: "Roles",
|
|
1103
|
+
roleOf: (name) => `Rol de ${name}`,
|
|
1104
|
+
lockedLastAdmin: "La última cuenta de administrador activa conserva este rol.",
|
|
1105
|
+
lockedSelf: "No puede cambiar su propio rol.",
|
|
1106
|
+
notForLastAdmin: "no para el último administrador",
|
|
1107
|
+
notForSelf: "no para su propia cuenta",
|
|
1108
|
+
unavailable: (role, reason) => `${role} (${reason})`,
|
|
1109
|
+
},
|
|
1110
|
+
reviewerScope: {
|
|
1111
|
+
languages: "Idiomas",
|
|
1112
|
+
hint: "Marque los idiomas que revisa esta persona.",
|
|
1113
|
+
none: "Ningún idioma: al guardar se retira el rol de revisor.",
|
|
1114
|
+
areas: "Limitar a",
|
|
1115
|
+
legalOnly: "Solo las páginas legales",
|
|
1116
|
+
legalOnlyHint:
|
|
1117
|
+
"Aviso legal, política de privacidad y condiciones de uso: para un abogado más que para un hablante nativo.",
|
|
1118
|
+
failed: "No se pudo guardar el ámbito de revisión. Inténtelo de nuevo.",
|
|
1119
|
+
},
|
|
1120
|
+
adminAction: {
|
|
1121
|
+
confirm: "Confirmar",
|
|
1122
|
+
cancel: "Cancelar",
|
|
1123
|
+
close: "Cerrar",
|
|
1124
|
+
lastAdmin:
|
|
1125
|
+
"Esta es la última cuenta de administrador activa. Primero haga administrador a otra persona.",
|
|
1126
|
+
self: "No puede hacer esto con su propia cuenta.",
|
|
1127
|
+
confirmationMismatch:
|
|
1128
|
+
"La dirección no coincide con esta cuenta. Compruebe en qué cuenta está.",
|
|
1129
|
+
otherCompanies:
|
|
1130
|
+
"Esta cuenta también pertenece a otras empresas, así que solo el operador de la plataforma puede hacer esto. En su lugar, puede quitarla de esta empresa.",
|
|
1131
|
+
removeFromCompany: "Quitar de la empresa",
|
|
1132
|
+
failed: "No ha funcionado. Inténtelo de nuevo.",
|
|
1133
|
+
},
|
|
1134
|
+
adminActionLog: {
|
|
1135
|
+
title: "Acciones de administración",
|
|
1136
|
+
empty: "Aún no hay acciones de administración.",
|
|
1137
|
+
loading: "Cargando…",
|
|
1138
|
+
by: (actor) => `por ${actor}`,
|
|
1139
|
+
bySelf: "por la propia persona",
|
|
1140
|
+
automatic: "automáticamente",
|
|
1141
|
+
erased: "una cuenta borrada",
|
|
1142
|
+
filteredTo: (target) => `Solo ${target}`,
|
|
1143
|
+
showAll: "Mostrar todas las acciones",
|
|
1144
|
+
filterBy: (target) => `Mostrar solo las acciones sobre ${target}`,
|
|
1145
|
+
// Agreeing with "cuenta" (feminine), like `accountState`.
|
|
1146
|
+
actions: {
|
|
1147
|
+
deactivate: "Desactivada",
|
|
1148
|
+
reactivate: "Reactivada",
|
|
1149
|
+
role: "Rol cambiado",
|
|
1150
|
+
membership_remove: "Quitada de la empresa",
|
|
1151
|
+
password_change_require: "Nueva contraseña exigida",
|
|
1152
|
+
password_change_withdraw: "Exigencia de contraseña retirada",
|
|
1153
|
+
mail_verification: "Correo de confirmación enviado",
|
|
1154
|
+
mail_reset: "Correo de restablecimiento de contraseña enviado",
|
|
1155
|
+
reviewer: "Ámbito de revisión cambiado",
|
|
1156
|
+
invite: "Invitación enviada",
|
|
1157
|
+
invite_resend: "Invitación reenviada",
|
|
1158
|
+
invite_revoke: "Invitación retirada",
|
|
1159
|
+
transfer: "Trabajo traspasado",
|
|
1160
|
+
deletion_request: "Eliminación solicitada",
|
|
1161
|
+
deletion_cancel: "Eliminación cancelada",
|
|
1162
|
+
erase: "Cuenta borrada",
|
|
1163
|
+
},
|
|
1164
|
+
},
|
|
1165
|
+
transferOwnership: {
|
|
1166
|
+
title: (name) => `Traspasar el trabajo de ${name}`,
|
|
1167
|
+
body: "Todo lo que posee esta cuenta pasa a la cuenta elegida, en un solo paso.",
|
|
1168
|
+
recipient: "Traspasar a",
|
|
1169
|
+
choose: "Elija una cuenta…",
|
|
1170
|
+
chooseFirst: "Elija quién recibe el trabajo",
|
|
1171
|
+
confirm: "Traspasar",
|
|
1172
|
+
customer: "cliente",
|
|
1173
|
+
deactivated: "desactivada",
|
|
1174
|
+
self: "la misma cuenta",
|
|
1175
|
+
unavailable: (account, reason) => `${account} (${reason})`,
|
|
1176
|
+
noCandidates: "Ninguna otra cuenta puede recibirlo.",
|
|
1177
|
+
},
|
|
1178
|
+
invitations: {
|
|
1179
|
+
email: "Dirección de correo electrónico",
|
|
1180
|
+
invalidEmail: "Introduzca una dirección de correo completa.",
|
|
1181
|
+
role: "Rol",
|
|
1182
|
+
scope: "Ámbito",
|
|
1183
|
+
scopeNone: "Ninguno",
|
|
1184
|
+
language: "Idioma de la invitación",
|
|
1185
|
+
note: "Nota",
|
|
1186
|
+
invite: "Invitar",
|
|
1187
|
+
listTitle: "Invitaciones",
|
|
1188
|
+
empty: "Todavía no se ha invitado a nadie.",
|
|
1189
|
+
loading: "Cargando…",
|
|
1190
|
+
// Agreeing with "invitación" (feminine).
|
|
1191
|
+
status: { open: "Pendiente", accepted: "Aceptada", expired: "Caducada", revoked: "Retirada" },
|
|
1192
|
+
sent: (date) => `Enviada el ${date}`,
|
|
1193
|
+
expires: (date) => `Válida hasta el ${date}`,
|
|
1194
|
+
invitedBy: (name) => `por ${name}`,
|
|
1195
|
+
resend: (email) => `Enviar a ${email} un enlace nuevo`,
|
|
1196
|
+
copyLink: "Copiar enlace de invitación",
|
|
1197
|
+
revoke: (email) => `Retirar la invitación de ${email}`,
|
|
1198
|
+
consoleHint:
|
|
1199
|
+
"Este servidor no envía correos: se escriben en el registro del servidor. Copie aquí cada enlace de invitación y transmítalo usted mismo: solo se muestra una vez.",
|
|
1200
|
+
linkReady: (email) => `El enlace de invitación para ${email}, que solo se muestra esta vez:`,
|
|
1201
|
+
notSent: (email) => `${email} está invitado, pero no se pudo enviar el correo. Reenvíelo.`,
|
|
1202
|
+
failed: "No ha funcionado. Inténtelo de nuevo.",
|
|
1203
|
+
},
|
|
977
1204
|
characterCount: {
|
|
978
1205
|
count: (used, max) => `${n(used)} de ${n(max)} ${plural(max, "carácter", "caracteres")}`,
|
|
979
1206
|
remaining: (left) =>
|