@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/locales/it.ts
CHANGED
|
@@ -14,6 +14,15 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): 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. kastlan's reviewed "auth.throttled" is the sentence without one.
|
|
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
|
+
? "Troppi tentativi. Attenda un momento e riprovi."
|
|
25
|
+
: `Troppi tentativi. Riprovi tra ${wait(seconds)}.`;
|
|
17
26
|
|
|
18
27
|
return {
|
|
19
28
|
feedbackAttachment: {
|
|
@@ -154,6 +163,9 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
154
163
|
memberSince: "Membro dal",
|
|
155
164
|
displayName: "Nome visualizzato",
|
|
156
165
|
save: "Salva",
|
|
166
|
+
firstName: "Nome",
|
|
167
|
+
lastName: "Cognome",
|
|
168
|
+
nameRequired: "Inserisca sia il nome sia il cognome.",
|
|
157
169
|
},
|
|
158
170
|
password: {
|
|
159
171
|
title: "Cambia password",
|
|
@@ -703,6 +715,8 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
703
715
|
registered: "Registrato",
|
|
704
716
|
unverified: "Non verificato",
|
|
705
717
|
passwordChange: "Deve cambiare la password",
|
|
718
|
+
deletion: "Eliminazione richiesta",
|
|
719
|
+
deletionOn: (date) => `Eliminazione il ${date}`,
|
|
706
720
|
},
|
|
707
721
|
shareCard: {
|
|
708
722
|
dialogTitle: "Condividi",
|
|
@@ -871,6 +885,16 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
871
885
|
setPasswordFailed: "Impossibile impostare la password.",
|
|
872
886
|
expired: "Questo accesso è scaduto. Acceda di nuovo.",
|
|
873
887
|
backToSignIn: "Torna all’accesso",
|
|
888
|
+
// kastlan's backup-code words ("codice di riserva" — not keksdose's "codice di
|
|
889
|
+
// recupero", which is the key of its end-to-end encryption).
|
|
890
|
+
useRecoveryCode: "Usa un codice di riserva",
|
|
891
|
+
useAuthenticatorCode: "Usa la Sua app di autenticazione",
|
|
892
|
+
recoveryCode: "Codice di riserva",
|
|
893
|
+
recoveryIntro:
|
|
894
|
+
"Inserisca uno dei codici di riserva che ha salvato quando ha attivato l’autenticazione a due fattori.",
|
|
895
|
+
recoveryCodeHint: (length) => `${n(length)} lettere e cifre. Trattini e spazi non contano.`,
|
|
896
|
+
recoveryCodeInvalid: "Questo codice di riserva non è valido o è già stato usato.",
|
|
897
|
+
rateLimited,
|
|
874
898
|
},
|
|
875
899
|
register: {
|
|
876
900
|
firstName: "Nome",
|
|
@@ -894,6 +918,7 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
894
918
|
invitationInvalid: "Questo link di invito non è valido.",
|
|
895
919
|
invitationExpired: "Questo invito è scaduto. Ne chieda uno nuovo.",
|
|
896
920
|
failed: "Registrazione non riuscita. Riprovi.",
|
|
921
|
+
rateLimited,
|
|
897
922
|
},
|
|
898
923
|
completeName: {
|
|
899
924
|
title: "Completi il Suo nome",
|
|
@@ -915,6 +940,7 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
915
940
|
sentHint: "Il link è valido per un’ora e funziona una sola volta. Controlli anche la cartella spam.",
|
|
916
941
|
backToSignIn: "Torna all’accesso",
|
|
917
942
|
error: "Richiesta non riuscita. Riprovi più tardi.",
|
|
943
|
+
rateLimited,
|
|
918
944
|
},
|
|
919
945
|
resetPassword: {
|
|
920
946
|
title: "Scelga una nuova password",
|
|
@@ -933,6 +959,7 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
933
959
|
success: "La Sua password è stata cambiata. Ora può accedere con quella.",
|
|
934
960
|
sessionsEnded: "I dispositivi connessi sono stati disconnessi: lì dovrà accedere di nuovo.",
|
|
935
961
|
signIn: "Vai all’accesso",
|
|
962
|
+
rateLimited,
|
|
936
963
|
},
|
|
937
964
|
verifyEmail: {
|
|
938
965
|
title: "Confermi il Suo indirizzo email",
|
|
@@ -981,6 +1008,209 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
981
1008
|
currentMark: "(attuale)",
|
|
982
1009
|
switching: "Cambio azienda in corso…",
|
|
983
1010
|
},
|
|
1011
|
+
// 0.30.0 — docs/user-admin-harmonization.md: keksdose's reviewed Italian for the admin
|
|
1012
|
+
// words (admin.users.*), Kurvenschmiede's for transfer, invitations and sessions,
|
|
1013
|
+
// kastlan's for the company, the throttle and "Esci ovunque"; written fresh where no
|
|
1014
|
+
// app had the sentence. "Lei", and phrased so that no sentence about the reader needs
|
|
1015
|
+
// a gender ("disconnesso/a").
|
|
1016
|
+
emailChange: {
|
|
1017
|
+
title: "Indirizzo email",
|
|
1018
|
+
current: "Indirizzo attuale",
|
|
1019
|
+
newEmail: "Nuovo indirizzo email",
|
|
1020
|
+
password: "Password attuale",
|
|
1021
|
+
passwordHint: "Accede con il Suo indirizzo, quindi per cambiarlo serve la password.",
|
|
1022
|
+
emailTagUse: (address) => `Usa ${address}`,
|
|
1023
|
+
emailTagHint:
|
|
1024
|
+
"Molti provider recapitano nome+tag@… nella stessa casella, così la posta di questa app è filtrabile e riconoscibile. Verifichi che il Suo lo faccia prima di farci affidamento: accederebbe con l’indirizzo con il tag.",
|
|
1025
|
+
submit: "Cambia indirizzo email",
|
|
1026
|
+
sameAsCurrent: "Questo è già il Suo indirizzo.",
|
|
1027
|
+
emailTaken: "Esiste già un account con questo indirizzo email.",
|
|
1028
|
+
wrongPassword: "La password non è corretta.",
|
|
1029
|
+
pending: (newEmail) => `Confermi il link che abbiamo inviato a ${newEmail}.`,
|
|
1030
|
+
pendingHint: (currentEmail) =>
|
|
1031
|
+
`Fino ad allora continua ad accedere con ${currentEmail}. Controlli anche la cartella spam.`,
|
|
1032
|
+
resend: "Invia di nuovo il link",
|
|
1033
|
+
resent: "Abbiamo inviato di nuovo il link.",
|
|
1034
|
+
cancel: "Annulla la modifica",
|
|
1035
|
+
confirmed: (email) => `Il Suo indirizzo email ora è ${email}.`,
|
|
1036
|
+
passkeyNote:
|
|
1037
|
+
"Le Sue passkey continuano a funzionare. Il Suo dispositivo potrebbe ancora mostrarle con il vecchio indirizzo.",
|
|
1038
|
+
rateLimited,
|
|
1039
|
+
failed: "Non ha funzionato. Riprovi.",
|
|
1040
|
+
},
|
|
1041
|
+
sessions: {
|
|
1042
|
+
title: "Sessioni",
|
|
1043
|
+
description:
|
|
1044
|
+
"Ha effettuato l’accesso su un dispositivo che non usa più o di cui non si fida? Esca ovunque.",
|
|
1045
|
+
signOutEverywhere: "Esci ovunque…",
|
|
1046
|
+
signOutEverywherePrompt:
|
|
1047
|
+
"Tutte le sessioni terminano, compresa questa: anche questo dispositivo verrà disconnesso e dovrà accedere di nuovo da qui.",
|
|
1048
|
+
confirmSignOutEverywhere: "Esci ovunque",
|
|
1049
|
+
list: "Dove ha effettuato l’accesso",
|
|
1050
|
+
loading: "Caricamento delle sessioni…",
|
|
1051
|
+
empty: "Nessuna sessione da mostrare.",
|
|
1052
|
+
current: "Questo dispositivo",
|
|
1053
|
+
unknownDevice: "Dispositivo sconosciuto",
|
|
1054
|
+
// A colon: `when` is either "3 ore fa" or a date.
|
|
1055
|
+
lastActive: (when) => `Ultima attività: ${when}`,
|
|
1056
|
+
ip: (address) => `IP ${address}`,
|
|
1057
|
+
revoke: "Disconnetti",
|
|
1058
|
+
// Starts with `revoke`, the button's visible text, for voice control.
|
|
1059
|
+
revokeItem: (device) => `Disconnetti ${device}`,
|
|
1060
|
+
failed: "Non ha funzionato. Riprovi.",
|
|
1061
|
+
},
|
|
1062
|
+
deleteAccount: {
|
|
1063
|
+
title: "Elimina account",
|
|
1064
|
+
afterDays: (days) =>
|
|
1065
|
+
`Il Suo account viene disattivato subito ed eliminato definitivamente ${n(days)} ${plural(days, "giorno", "giorni")} dopo.`,
|
|
1066
|
+
operator: "Il Suo account viene disattivato subito, poi il gestore lo eliminerà definitivamente.",
|
|
1067
|
+
arm: "Elimina account…",
|
|
1068
|
+
prompt: "Tutte le Sue sessioni terminano, su ogni dispositivo, e il Suo account non potrà più essere usato.",
|
|
1069
|
+
handOver: (count) =>
|
|
1070
|
+
count === 1
|
|
1071
|
+
? "1 elemento visibile ad altri passerà a un amministratore."
|
|
1072
|
+
: `${n(count)} elementi visibili ad altri passeranno a un amministratore.`,
|
|
1073
|
+
confirm: "Elimina il mio account",
|
|
1074
|
+
done: "Il Suo account è disattivato. Disconnessione in corso.",
|
|
1075
|
+
wrongPassword: "La password non è corretta.",
|
|
1076
|
+
confirmationMismatch: "Questo non è l’indirizzo del Suo account.",
|
|
1077
|
+
lastAdmin: "Il Suo è l’ultimo account amministratore. Renda prima amministratore qualcun altro.",
|
|
1078
|
+
lastAdminOf: (companies) =>
|
|
1079
|
+
`Il Suo è l’ultimo account amministratore di ${companies}. Lì renda prima amministratore qualcun altro.`,
|
|
1080
|
+
// keksdose's "famiglia".
|
|
1081
|
+
householdHasMembers:
|
|
1082
|
+
"La Sua famiglia ha altri membri, quindi l’account non può essere eliminato qui. Scriva al gestore.",
|
|
1083
|
+
rateLimited,
|
|
1084
|
+
failed: "Impossibile eliminare il Suo account. Riprovi.",
|
|
1085
|
+
},
|
|
1086
|
+
dataExport: {
|
|
1087
|
+
title: "Esporta i Suoi dati",
|
|
1088
|
+
description: "Scarichi una copia dei dati del Suo account come file JSON.",
|
|
1089
|
+
download: "Scarica i miei dati",
|
|
1090
|
+
started: "Il download è iniziato.",
|
|
1091
|
+
saveAgain: "Non è partito? Salva il file",
|
|
1092
|
+
rateLimited: (seconds) =>
|
|
1093
|
+
seconds && seconds > 0
|
|
1094
|
+
? `Ha appena esportato i Suoi dati. Riprovi tra ${wait(seconds)}.`
|
|
1095
|
+
: "Ha appena esportato i Suoi dati. Riprovi tra un minuto.",
|
|
1096
|
+
failed: "Esportazione non riuscita. Riprovi.",
|
|
1097
|
+
},
|
|
1098
|
+
userRoster: {
|
|
1099
|
+
name: "Nome",
|
|
1100
|
+
email: "Email",
|
|
1101
|
+
role: "Ruolo",
|
|
1102
|
+
state: "Stato",
|
|
1103
|
+
created: "Creato il",
|
|
1104
|
+
lastLogin: "Ultimo accesso",
|
|
1105
|
+
never: "Mai",
|
|
1106
|
+
actions: "Azioni",
|
|
1107
|
+
actionsFor: (name) => `Azioni per ${name}`,
|
|
1108
|
+
},
|
|
1109
|
+
roleSelect: {
|
|
1110
|
+
label: "Ruolo",
|
|
1111
|
+
rolesLegend: "Ruoli",
|
|
1112
|
+
roleOf: (name) => `Ruolo di ${name}`,
|
|
1113
|
+
lockedLastAdmin: "L’ultimo account amministratore attivo mantiene questo ruolo.",
|
|
1114
|
+
lockedSelf: "Non può cambiare il Suo ruolo.",
|
|
1115
|
+
notForLastAdmin: "non per l’ultimo amministratore",
|
|
1116
|
+
notForSelf: "non per il Suo account",
|
|
1117
|
+
unavailable: (role, reason) => `${role} (${reason})`,
|
|
1118
|
+
},
|
|
1119
|
+
reviewerScope: {
|
|
1120
|
+
languages: "Lingue",
|
|
1121
|
+
hint: "Spunti le lingue che questa persona rivede.",
|
|
1122
|
+
none: "Nessuna lingua: salvando si toglie il ruolo di revisore.",
|
|
1123
|
+
areas: "Limita a",
|
|
1124
|
+
legalOnly: "Solo le pagine legali",
|
|
1125
|
+
legalOnlyHint:
|
|
1126
|
+
"Impressum, informativa sulla privacy e condizioni d’uso: per un giurista più che per un madrelingua.",
|
|
1127
|
+
failed: "Impossibile salvare il ruolo di revisore. Riprovi.",
|
|
1128
|
+
},
|
|
1129
|
+
adminAction: {
|
|
1130
|
+
confirm: "Conferma",
|
|
1131
|
+
cancel: "Annulla",
|
|
1132
|
+
close: "Chiudi",
|
|
1133
|
+
lastAdmin:
|
|
1134
|
+
"Questo è l’ultimo account amministratore attivo. Renda prima amministratore qualcun altro.",
|
|
1135
|
+
self: "Non può farlo sul Suo account.",
|
|
1136
|
+
confirmationMismatch:
|
|
1137
|
+
"L’indirizzo non corrisponde a questo account. Controlli su quale account si trova.",
|
|
1138
|
+
otherCompanies:
|
|
1139
|
+
"Questo account appartiene anche ad altre aziende, quindi solo il gestore della piattaforma può farlo. Può invece rimuoverlo da questa azienda.",
|
|
1140
|
+
removeFromCompany: "Rimuovi dall’azienda",
|
|
1141
|
+
failed: "Non ha funzionato. Riprovi.",
|
|
1142
|
+
},
|
|
1143
|
+
adminActionLog: {
|
|
1144
|
+
title: "Azioni di amministrazione",
|
|
1145
|
+
empty: "Ancora nessuna azione di amministrazione.",
|
|
1146
|
+
loading: "Caricamento…",
|
|
1147
|
+
by: (actor) => `da ${actor}`,
|
|
1148
|
+
bySelf: "dall’utente stesso",
|
|
1149
|
+
automatic: "automaticamente",
|
|
1150
|
+
erased: "un account cancellato",
|
|
1151
|
+
filteredTo: (target) => `Solo ${target}`,
|
|
1152
|
+
showAll: "Mostra tutte le azioni",
|
|
1153
|
+
filterBy: (target) => `Mostra solo le azioni su ${target}`,
|
|
1154
|
+
// Agreeing with "account" (masculine), like `accountState`.
|
|
1155
|
+
actions: {
|
|
1156
|
+
deactivate: "Disattivato",
|
|
1157
|
+
reactivate: "Riattivato",
|
|
1158
|
+
role: "Ruolo cambiato",
|
|
1159
|
+
membership_remove: "Rimosso dall’azienda",
|
|
1160
|
+
password_change_require: "Nuova password richiesta",
|
|
1161
|
+
password_change_withdraw: "Richiesta di nuova password ritirata",
|
|
1162
|
+
mail_verification: "Email di conferma inviata",
|
|
1163
|
+
mail_reset: "Email di reimpostazione password inviata",
|
|
1164
|
+
reviewer: "Ambito di revisione cambiato",
|
|
1165
|
+
invite: "Invitato",
|
|
1166
|
+
invite_resend: "Invito inviato di nuovo",
|
|
1167
|
+
invite_revoke: "Invito ritirato",
|
|
1168
|
+
transfer: "Lavoro passato ad altri",
|
|
1169
|
+
deletion_request: "Eliminazione richiesta",
|
|
1170
|
+
deletion_cancel: "Eliminazione annullata",
|
|
1171
|
+
erase: "Account cancellato",
|
|
1172
|
+
},
|
|
1173
|
+
},
|
|
1174
|
+
transferOwnership: {
|
|
1175
|
+
title: (name) => `Passa il lavoro di ${name}`,
|
|
1176
|
+
body: "Tutto ciò che possiede questo account passa all’account scelto, in un solo passo.",
|
|
1177
|
+
recipient: "Passalo a",
|
|
1178
|
+
choose: "Scelga un account…",
|
|
1179
|
+
chooseFirst: "Scelga chi riceve il lavoro",
|
|
1180
|
+
confirm: "Passa il lavoro",
|
|
1181
|
+
customer: "cliente",
|
|
1182
|
+
deactivated: "disattivato",
|
|
1183
|
+
self: "lo stesso account",
|
|
1184
|
+
unavailable: (account, reason) => `${account} (${reason})`,
|
|
1185
|
+
noCandidates: "Nessun altro account può riceverlo.",
|
|
1186
|
+
},
|
|
1187
|
+
invitations: {
|
|
1188
|
+
email: "Indirizzo email",
|
|
1189
|
+
invalidEmail: "Inserisca un indirizzo email completo.",
|
|
1190
|
+
role: "Ruolo",
|
|
1191
|
+
scope: "Ambito",
|
|
1192
|
+
scopeNone: "Nessuno",
|
|
1193
|
+
language: "Lingua dell’invito",
|
|
1194
|
+
note: "Nota",
|
|
1195
|
+
invite: "Invita",
|
|
1196
|
+
listTitle: "Inviti",
|
|
1197
|
+
empty: "Non è ancora stato invitato nessuno.",
|
|
1198
|
+
loading: "Caricamento…",
|
|
1199
|
+
// Agreeing with "invito" (masculine).
|
|
1200
|
+
status: { open: "Aperto", accepted: "Accettato", expired: "Scaduto", revoked: "Ritirato" },
|
|
1201
|
+
sent: (date) => `Inviato il ${date}`,
|
|
1202
|
+
// kastlan's "Valido fino al".
|
|
1203
|
+
expires: (date) => `Valido fino al ${date}`,
|
|
1204
|
+
invitedBy: (name) => `da ${name}`,
|
|
1205
|
+
resend: (email) => `Invia a ${email} un nuovo link`,
|
|
1206
|
+
copyLink: "Copia link di invito",
|
|
1207
|
+
revoke: (email) => `Ritira l’invito per ${email}`,
|
|
1208
|
+
consoleHint:
|
|
1209
|
+
"Questo server non invia email: vengono scritte nel log del server. Copi qui ogni link di invito e lo inoltri Lei stesso: viene mostrato una sola volta.",
|
|
1210
|
+
linkReady: (email) => `Il link di invito per ${email}, mostrato solo questa volta:`,
|
|
1211
|
+
notSent: (email) => `${email} è invitato, ma non è stato possibile inviare l’email. La reinvii.`,
|
|
1212
|
+
failed: "Non ha funzionato. Riprovi.",
|
|
1213
|
+
},
|
|
984
1214
|
characterCount: {
|
|
985
1215
|
count: (used, max) => `${n(used)} di ${n(max)} ${plural(max, "carattere", "caratteri")}`,
|
|
986
1216
|
remaining: (left) =>
|
package/src/i18n/locales/zh.ts
CHANGED
|
@@ -13,6 +13,13 @@ import type { UiKitLabels } from "../kit-labels";
|
|
|
13
13
|
export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
14
14
|
const num = new Intl.NumberFormat(numberLocale);
|
|
15
15
|
const n = (value: number) => num.format(value);
|
|
16
|
+
// 0.30.0 — a throttled request (HTTP 429), as `englishRateLimited` in
|
|
17
|
+
// src/auth/auth-errors.ts: no wait → "稍候", under a minute → seconds, else minutes
|
|
18
|
+
// rounded up. The numeral has a space either side, as everywhere in this catalogue.
|
|
19
|
+
const wait = (seconds: number) =>
|
|
20
|
+
seconds < 60 ? `${n(Math.ceil(seconds))} 秒` : `${n(Math.ceil(seconds / 60))} 分钟`;
|
|
21
|
+
const rateLimited = (seconds?: number) =>
|
|
22
|
+
!seconds || seconds <= 0 ? "尝试次数过多,请稍候再试。" : `尝试次数过多,请 ${wait(seconds)}后重试。`;
|
|
16
23
|
|
|
17
24
|
return {
|
|
18
25
|
feedbackAttachment: {
|
|
@@ -146,6 +153,9 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
146
153
|
memberSince: "注册时间",
|
|
147
154
|
displayName: "显示名称",
|
|
148
155
|
save: "保存",
|
|
156
|
+
firstName: "名字",
|
|
157
|
+
lastName: "姓氏",
|
|
158
|
+
nameRequired: "请同时填写名字和姓氏。",
|
|
149
159
|
},
|
|
150
160
|
password: {
|
|
151
161
|
title: "修改密码",
|
|
@@ -682,6 +692,8 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
682
692
|
registered: "已注册",
|
|
683
693
|
unverified: "未验证",
|
|
684
694
|
passwordChange: "需修改密码",
|
|
695
|
+
deletion: "已申请删除",
|
|
696
|
+
deletionOn: (date) => `将于 ${date} 删除`,
|
|
685
697
|
},
|
|
686
698
|
shareCard: {
|
|
687
699
|
dialogTitle: "共享",
|
|
@@ -847,6 +859,13 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
847
859
|
setPasswordFailed: "无法设置密码。",
|
|
848
860
|
expired: "本次登录已过期,请重新登录。",
|
|
849
861
|
backToSignIn: "返回登录",
|
|
862
|
+
useRecoveryCode: "使用备用码",
|
|
863
|
+
useAuthenticatorCode: "使用身份验证器应用",
|
|
864
|
+
recoveryCode: "备用码",
|
|
865
|
+
recoveryIntro: "请输入您在开启双重验证时保存的备用码之一。",
|
|
866
|
+
recoveryCodeHint: (length) => `共 ${n(length)} 位字母和数字,连字符和空格不影响。`,
|
|
867
|
+
recoveryCodeInvalid: "此备用码无效或已被使用。",
|
|
868
|
+
rateLimited,
|
|
850
869
|
},
|
|
851
870
|
register: {
|
|
852
871
|
firstName: "名字",
|
|
@@ -869,6 +888,7 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
869
888
|
invitationInvalid: "此邀请链接无效。",
|
|
870
889
|
invitationExpired: "此邀请已过期,请索取新的邀请。",
|
|
871
890
|
failed: "注册失败,请重试。",
|
|
891
|
+
rateLimited,
|
|
872
892
|
},
|
|
873
893
|
completeName: {
|
|
874
894
|
title: "完善您的姓名",
|
|
@@ -888,6 +908,7 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
888
908
|
sentHint: "该链接有效期一小时,且仅可使用一次。也请查看垃圾邮件文件夹。",
|
|
889
909
|
backToSignIn: "返回登录",
|
|
890
910
|
error: "请求失败,请稍后重试。",
|
|
911
|
+
rateLimited,
|
|
891
912
|
},
|
|
892
913
|
resetPassword: {
|
|
893
914
|
title: "设置新密码",
|
|
@@ -905,6 +926,7 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
905
926
|
success: "您的密码已修改,现在可以用它登录了。",
|
|
906
927
|
sessionsEnded: "已登录的设备均已退出登录——您需要在这些设备上重新登录。",
|
|
907
928
|
signIn: "前往登录",
|
|
929
|
+
rateLimited,
|
|
908
930
|
},
|
|
909
931
|
verifyEmail: {
|
|
910
932
|
title: "确认您的电子邮箱地址",
|
|
@@ -952,6 +974,189 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
952
974
|
currentMark: "(当前)",
|
|
953
975
|
switching: "正在切换公司…",
|
|
954
976
|
},
|
|
977
|
+
// 0.30.0 — docs/user-admin-harmonization.md: Kurvenschmiede's reviewed Chinese for the
|
|
978
|
+
// admin words (停用、角色、审校者), transfer (移交), invitations and sessions;
|
|
979
|
+
// written fresh where it had no sentence.
|
|
980
|
+
emailChange: {
|
|
981
|
+
title: "电子邮箱地址",
|
|
982
|
+
current: "当前地址",
|
|
983
|
+
newEmail: "新电子邮箱地址",
|
|
984
|
+
password: "当前密码",
|
|
985
|
+
passwordHint: "您使用此地址登录,因此更改它需要输入密码。",
|
|
986
|
+
emailTagUse: (address) => `使用 ${address}`,
|
|
987
|
+
emailTagHint:
|
|
988
|
+
"许多邮件服务商会把发往 name+tag@… 的邮件投递到同一个收件箱,这样本应用发来的邮件便于筛选和追溯。请先确认您的服务商支持这一点再使用:之后您需要用带标签的地址登录。",
|
|
989
|
+
submit: "更改电子邮箱地址",
|
|
990
|
+
sameAsCurrent: "这已经是您的地址。",
|
|
991
|
+
emailTaken: "该电子邮箱地址已有账户。",
|
|
992
|
+
wrongPassword: "密码不正确。",
|
|
993
|
+
pending: (newEmail) => `请点击我们发送到 ${newEmail} 的链接进行确认。`,
|
|
994
|
+
pendingHint: (currentEmail) => `在此之前,您仍使用 ${currentEmail} 登录。也请查看垃圾邮件文件夹。`,
|
|
995
|
+
resend: "重新发送链接",
|
|
996
|
+
resent: "链接已重新发送。",
|
|
997
|
+
cancel: "取消更改",
|
|
998
|
+
confirmed: (email) => `您的电子邮箱地址现在是 ${email}。`,
|
|
999
|
+
passkeyNote: "您的通行密钥仍可正常使用。您的设备可能仍以旧地址列出它们。",
|
|
1000
|
+
rateLimited,
|
|
1001
|
+
failed: "操作未成功,请重试。",
|
|
1002
|
+
},
|
|
1003
|
+
sessions: {
|
|
1004
|
+
title: "会话",
|
|
1005
|
+
description: "在不再使用或不信任的设备上登录过?请在所有设备上退出登录。",
|
|
1006
|
+
signOutEverywhere: "在所有设备上退出登录…",
|
|
1007
|
+
signOutEverywherePrompt: "这将结束所有会话,包括当前会话:此设备也会退出登录,您需要在这里重新登录。",
|
|
1008
|
+
confirmSignOutEverywhere: "在所有设备上退出登录",
|
|
1009
|
+
list: "您已登录的设备",
|
|
1010
|
+
loading: "正在加载会话…",
|
|
1011
|
+
empty: "没有可显示的会话。",
|
|
1012
|
+
current: "此设备",
|
|
1013
|
+
unknownDevice: "未知设备",
|
|
1014
|
+
lastActive: (when) => `上次活动:${when}`,
|
|
1015
|
+
ip: (address) => `IP:${address}`,
|
|
1016
|
+
revoke: "退出登录",
|
|
1017
|
+
// Starts with `revoke`, the button's visible text, for voice control.
|
|
1018
|
+
revokeItem: (device) => `退出登录:${device}`,
|
|
1019
|
+
failed: "操作未成功,请重试。",
|
|
1020
|
+
},
|
|
1021
|
+
deleteAccount: {
|
|
1022
|
+
title: "删除账户",
|
|
1023
|
+
afterDays: (days) => `您的账户将立即停用,并在 ${n(days)} 天后被永久删除。`,
|
|
1024
|
+
operator: "您的账户将立即停用,之后由运营者将其永久删除。",
|
|
1025
|
+
arm: "删除账户…",
|
|
1026
|
+
prompt: "您将在所有设备上退出登录,且无法再使用此账户。",
|
|
1027
|
+
handOver: (count) => `${n(count)} 项他人可见的内容将移交给一位管理员。`,
|
|
1028
|
+
confirm: "删除我的账户",
|
|
1029
|
+
done: "您的账户已停用,正在退出登录。",
|
|
1030
|
+
wrongPassword: "密码不正确。",
|
|
1031
|
+
confirmationMismatch: "这不是您账户的地址。",
|
|
1032
|
+
lastAdmin: "您是最后一位管理员。请先将其他人设为管理员。",
|
|
1033
|
+
lastAdminOf: (companies) => `您是 ${companies} 的最后一位管理员。请先在那里将其他人设为管理员。`,
|
|
1034
|
+
householdHasMembers: "您的家庭还有其他成员,因此无法在此删除账户。请联系运营者。",
|
|
1035
|
+
rateLimited,
|
|
1036
|
+
failed: "无法删除您的账户,请重试。",
|
|
1037
|
+
},
|
|
1038
|
+
dataExport: {
|
|
1039
|
+
title: "导出您的数据",
|
|
1040
|
+
description: "下载您账户数据的副本(JSON 文件)。",
|
|
1041
|
+
download: "下载我的数据",
|
|
1042
|
+
started: "下载已开始。",
|
|
1043
|
+
saveAgain: "没有开始?保存文件",
|
|
1044
|
+
rateLimited: (seconds) =>
|
|
1045
|
+
seconds && seconds > 0
|
|
1046
|
+
? `您刚刚导出过数据,请 ${wait(seconds)}后重试。`
|
|
1047
|
+
: "您刚刚导出过数据,请一分钟后重试。",
|
|
1048
|
+
failed: "导出失败,请重试。",
|
|
1049
|
+
},
|
|
1050
|
+
userRoster: {
|
|
1051
|
+
name: "姓名",
|
|
1052
|
+
email: "电子邮箱",
|
|
1053
|
+
role: "角色",
|
|
1054
|
+
state: "状态",
|
|
1055
|
+
created: "创建时间",
|
|
1056
|
+
lastLogin: "最后登录",
|
|
1057
|
+
never: "从未",
|
|
1058
|
+
actions: "操作",
|
|
1059
|
+
actionsFor: (name) => `${name} 的操作`,
|
|
1060
|
+
},
|
|
1061
|
+
roleSelect: {
|
|
1062
|
+
label: "角色",
|
|
1063
|
+
rolesLegend: "角色",
|
|
1064
|
+
roleOf: (name) => `${name} 的角色`,
|
|
1065
|
+
lockedLastAdmin: "最后一位活跃管理员必须保留此角色。",
|
|
1066
|
+
lockedSelf: "您不能更改自己的角色。",
|
|
1067
|
+
notForLastAdmin: "不适用于最后一位管理员",
|
|
1068
|
+
notForSelf: "不适用于您自己的账户",
|
|
1069
|
+
unavailable: (role, reason) => `${role}(${reason})`,
|
|
1070
|
+
},
|
|
1071
|
+
reviewerScope: {
|
|
1072
|
+
languages: "语言",
|
|
1073
|
+
hint: "勾选此人负责审校的语言。",
|
|
1074
|
+
none: "未选择语言:保存后将取消审校者角色。",
|
|
1075
|
+
areas: "仅限",
|
|
1076
|
+
legalOnly: "仅法律页面",
|
|
1077
|
+
legalOnlyHint: "运营者信息、隐私政策和使用条款——适合律师而非母语审校者。",
|
|
1078
|
+
failed: "无法保存审校范围,请重试。",
|
|
1079
|
+
},
|
|
1080
|
+
adminAction: {
|
|
1081
|
+
confirm: "确认",
|
|
1082
|
+
cancel: "取消",
|
|
1083
|
+
close: "关闭",
|
|
1084
|
+
lastAdmin: "这是最后一位活跃管理员。请先将其他人设为管理员。",
|
|
1085
|
+
self: "不能对您自己的账户执行此操作。",
|
|
1086
|
+
confirmationMismatch: "该地址与此账户不符。请检查您当前所在的账户。",
|
|
1087
|
+
otherCompanies:
|
|
1088
|
+
"此账户也属于其他公司,因此只有平台运营者才能执行此操作。您可以改为将其从本公司移除。",
|
|
1089
|
+
removeFromCompany: "从公司移除",
|
|
1090
|
+
failed: "操作未成功,请重试。",
|
|
1091
|
+
},
|
|
1092
|
+
adminActionLog: {
|
|
1093
|
+
title: "管理操作",
|
|
1094
|
+
empty: "暂无管理操作。",
|
|
1095
|
+
loading: "加载中…",
|
|
1096
|
+
by: (actor) => `操作者:${actor}`,
|
|
1097
|
+
bySelf: "用户本人",
|
|
1098
|
+
automatic: "自动执行",
|
|
1099
|
+
erased: "已删除的账户",
|
|
1100
|
+
filteredTo: (target) => `仅 ${target}`,
|
|
1101
|
+
showAll: "显示全部操作",
|
|
1102
|
+
filterBy: (target) => `仅显示针对 ${target} 的操作`,
|
|
1103
|
+
actions: {
|
|
1104
|
+
deactivate: "已停用",
|
|
1105
|
+
reactivate: "已重新激活",
|
|
1106
|
+
role: "角色已更改",
|
|
1107
|
+
membership_remove: "已从公司移除",
|
|
1108
|
+
password_change_require: "已要求设置新密码",
|
|
1109
|
+
password_change_withdraw: "已撤回新密码要求",
|
|
1110
|
+
mail_verification: "已发送确认邮件",
|
|
1111
|
+
mail_reset: "已发送密码重置邮件",
|
|
1112
|
+
reviewer: "审校范围已更改",
|
|
1113
|
+
invite: "已邀请",
|
|
1114
|
+
invite_resend: "已重新发送邀请",
|
|
1115
|
+
invite_revoke: "已撤回邀请",
|
|
1116
|
+
transfer: "工作已移交",
|
|
1117
|
+
deletion_request: "已申请删除",
|
|
1118
|
+
deletion_cancel: "已取消删除",
|
|
1119
|
+
erase: "账户已永久删除",
|
|
1120
|
+
},
|
|
1121
|
+
},
|
|
1122
|
+
transferOwnership: {
|
|
1123
|
+
title: (name) => `移交 ${name} 的工作`,
|
|
1124
|
+
body: "此账户拥有的全部内容将一次性转移到您选择的账户。",
|
|
1125
|
+
recipient: "移交给",
|
|
1126
|
+
choose: "选择账户…",
|
|
1127
|
+
chooseFirst: "请选择接收工作的人",
|
|
1128
|
+
confirm: "移交",
|
|
1129
|
+
customer: "客户",
|
|
1130
|
+
deactivated: "已停用",
|
|
1131
|
+
self: "同一账户",
|
|
1132
|
+
unavailable: (account, reason) => `${account}(${reason})`,
|
|
1133
|
+
noCandidates: "没有其他账户可以接收。",
|
|
1134
|
+
},
|
|
1135
|
+
invitations: {
|
|
1136
|
+
email: "电子邮箱地址",
|
|
1137
|
+
invalidEmail: "请输入完整的电子邮箱地址。",
|
|
1138
|
+
role: "角色",
|
|
1139
|
+
scope: "范围",
|
|
1140
|
+
scopeNone: "无",
|
|
1141
|
+
language: "邀请邮件语言",
|
|
1142
|
+
note: "备注",
|
|
1143
|
+
invite: "邀请",
|
|
1144
|
+
listTitle: "邀请",
|
|
1145
|
+
empty: "尚未邀请任何人。",
|
|
1146
|
+
loading: "加载中…",
|
|
1147
|
+
status: { open: "等待中", accepted: "已接受", expired: "已过期", revoked: "已撤回" },
|
|
1148
|
+
sent: (date) => `发送于 ${date}`,
|
|
1149
|
+
expires: (date) => `${date} 到期`,
|
|
1150
|
+
invitedBy: (name) => `邀请人:${name}`,
|
|
1151
|
+
resend: (email) => `向 ${email} 发送新链接`,
|
|
1152
|
+
copyLink: "复制邀请链接",
|
|
1153
|
+
revoke: (email) => `撤回对 ${email} 的邀请`,
|
|
1154
|
+
consoleHint:
|
|
1155
|
+
"此服务器不发送邮件——邮件会写入服务器日志。请在这里复制每个邀请链接并自行转交:链接只显示一次。",
|
|
1156
|
+
linkReady: (email) => `${email} 的邀请链接,仅显示这一次:`,
|
|
1157
|
+
notSent: (email) => `已邀请 ${email},但邮件未能发送。请重新发送。`,
|
|
1158
|
+
failed: "操作未成功,请重试。",
|
|
1159
|
+
},
|
|
955
1160
|
characterCount: {
|
|
956
1161
|
count: (used, max) => `已输入 ${n(used)}/${n(max)} 个字符`,
|
|
957
1162
|
remaining: (left) => `还可输入 ${n(left)} 个字符`,
|
package/src/i18n/review.ts
CHANGED
|
@@ -302,4 +302,40 @@ export const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unkno
|
|
|
302
302
|
"verifyEmail.resendIn": [[30]],
|
|
303
303
|
"acceptInvitation.joined": [["{{name}}"]],
|
|
304
304
|
"companySwitcher.current": [["{{name}}"]],
|
|
305
|
+
// 0.30.0: the user administration and the account's own settings
|
|
306
|
+
// (docs/user-admin-harmonization.md). `rateLimited` with and without a wait.
|
|
307
|
+
"signIn.recoveryCodeHint": [[16]],
|
|
308
|
+
"signIn.rateLimited": [[], [30], [300]],
|
|
309
|
+
"register.rateLimited": [[], [30], [300]],
|
|
310
|
+
"forgotPassword.rateLimited": [[], [30], [300]],
|
|
311
|
+
"resetPassword.rateLimited": [[], [30], [300]],
|
|
312
|
+
"emailChange.emailTagUse": [["{{address}}"]],
|
|
313
|
+
"emailChange.pending": [["{{newEmail}}"]],
|
|
314
|
+
"emailChange.pendingHint": [["{{currentEmail}}"]],
|
|
315
|
+
"emailChange.confirmed": [["{{email}}"]],
|
|
316
|
+
"emailChange.rateLimited": [[], [30], [300]],
|
|
317
|
+
"sessions.lastActive": [["{{when}}"]],
|
|
318
|
+
"sessions.ip": [["{{address}}"]],
|
|
319
|
+
"sessions.revokeItem": [["{{device}}"]],
|
|
320
|
+
"deleteAccount.afterDays": [[1], [30]],
|
|
321
|
+
"deleteAccount.handOver": [[1], [3]],
|
|
322
|
+
"deleteAccount.lastAdminOf": [["{{companies}}"]],
|
|
323
|
+
"deleteAccount.rateLimited": [[], [30], [300]],
|
|
324
|
+
"dataExport.rateLimited": [[], [30], [300]],
|
|
325
|
+
"userRoster.actionsFor": [["{{name}}"]],
|
|
326
|
+
"roleSelect.roleOf": [["{{name}}"]],
|
|
327
|
+
"roleSelect.unavailable": [["{{role}}", "{{reason}}"]],
|
|
328
|
+
"adminActionLog.by": [["{{actor}}"]],
|
|
329
|
+
"adminActionLog.filteredTo": [["{{target}}"]],
|
|
330
|
+
"adminActionLog.filterBy": [["{{target}}"]],
|
|
331
|
+
"transferOwnership.title": [["{{name}}"]],
|
|
332
|
+
"transferOwnership.unavailable": [["{{account}}", "{{reason}}"]],
|
|
333
|
+
"invitations.sent": [["{{date}}"]],
|
|
334
|
+
"invitations.expires": [["{{date}}"]],
|
|
335
|
+
"invitations.invitedBy": [["{{name}}"]],
|
|
336
|
+
"invitations.resend": [["{{email}}"]],
|
|
337
|
+
"invitations.revoke": [["{{email}}"]],
|
|
338
|
+
"invitations.linkReady": [["{{email}}"]],
|
|
339
|
+
"invitations.notSent": [["{{email}}"]],
|
|
340
|
+
"accountState.deletionOn": [["{{date}}"]],
|
|
305
341
|
};
|