@eifi1/ui-kit 0.28.1 → 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 +44 -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/accept-invitation.d.ts +90 -0
- package/dist/auth/accept-invitation.js +117 -0
- package/dist/auth/accept-invitation.js.map +1 -0
- package/dist/auth/auth-errors.d.ts +139 -0
- package/dist/auth/auth-errors.js +92 -0
- package/dist/auth/auth-errors.js.map +1 -0
- package/dist/auth/complete-name-dialog.d.ts +71 -0
- package/dist/auth/complete-name-dialog.js +168 -0
- package/dist/auth/complete-name-dialog.js.map +1 -0
- package/dist/auth/email-tag.d.ts +60 -0
- package/dist/auth/email-tag.js +23 -0
- package/dist/auth/email-tag.js.map +1 -0
- package/dist/auth/forgot-password-form.d.ts +86 -0
- package/dist/auth/forgot-password-form.js +123 -0
- package/dist/auth/forgot-password-form.js.map +1 -0
- package/dist/auth/form-rules.d.ts +27 -0
- package/dist/auth/form-rules.js +23 -0
- package/dist/auth/form-rules.js.map +1 -0
- package/dist/auth/new-password-fields.d.ts +38 -0
- package/dist/auth/new-password-fields.js +54 -0
- package/dist/auth/new-password-fields.js.map +1 -0
- package/dist/auth/not-found-page.d.ts +57 -0
- package/dist/auth/not-found-page.js +40 -0
- package/dist/auth/not-found-page.js.map +1 -0
- package/dist/auth/register-form.d.ts +91 -0
- package/dist/auth/register-form.js +270 -0
- package/dist/auth/register-form.js.map +1 -0
- package/dist/auth/reset-password-form.d.ts +131 -0
- package/dist/auth/reset-password-form.js +167 -0
- package/dist/auth/reset-password-form.js.map +1 -0
- package/dist/auth/sign-in-form.d.ts +295 -0
- package/dist/auth/sign-in-form.js +426 -0
- package/dist/auth/sign-in-form.js.map +1 -0
- package/dist/auth/status-parts.d.ts +78 -0
- package/dist/auth/status-parts.js +83 -0
- package/dist/auth/status-parts.js.map +1 -0
- package/dist/auth/verify-email.d.ts +126 -0
- package/dist/auth/verify-email.js +243 -0
- package/dist/auth/verify-email.js.map +1 -0
- package/dist/chart.d.ts +25 -5
- 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 +26 -5
- package/dist/components/button-group.d.ts +26 -5
- package/dist/components/calculator.d.ts +26 -5
- package/dist/components/confirm-dialog.d.ts +26 -5
- package/dist/components/copy-button.d.ts +23 -2
- package/dist/components/danger-confirm.d.ts +26 -5
- package/dist/components/facing-pair.d.ts +26 -5
- package/dist/components/file-button.d.ts +26 -5
- package/dist/components/file-dropzone.d.ts +26 -5
- package/dist/components/form-actions.d.ts +26 -5
- package/dist/components/iban-input.d.ts +26 -5
- package/dist/components/language-select.d.ts +26 -12
- package/dist/components/legal-page.d.ts +26 -5
- package/dist/components/legal.d.ts +26 -5
- package/dist/components/money-field.d.ts +26 -5
- package/dist/components/number-field.d.ts +26 -5
- package/dist/components/number-input.d.ts +26 -5
- package/dist/components/numpad-sheet.d.ts +26 -5
- package/dist/components/phone-input.d.ts +26 -5
- package/dist/components/series-chart.d.ts +26 -5
- package/dist/components/settings-fields.d.ts +25 -7
- package/dist/components/share-card.d.ts +25 -4
- package/dist/components/text-link.d.ts +26 -5
- package/dist/components/time-input.d.ts +26 -5
- package/dist/components/ui.d.ts +23 -2
- package/dist/components/user-avatar.d.ts +16 -2
- package/dist/components/user-avatar.js +7 -3
- package/dist/components/user-avatar.js.map +1 -1
- package/dist/{kit-labels-Du0uHBq4.d.ts → delete-account-setting-CGVMckMw.d.ts} +6654 -5302
- package/dist/feedback/feedback-attachment.d.ts +26 -5
- package/dist/feedback/feedback-context.d.ts +26 -5
- package/dist/feedback/feedback-crash.d.ts +26 -5
- package/dist/feedback/feedback-dialog.d.ts +26 -5
- package/dist/feedback/feedback-inbox.d.ts +26 -5
- package/dist/feedback/feedback-labels.d.ts +26 -5
- package/dist/feedback/feedback-menu.d.ts +26 -5
- package/dist/feedback/feedback-record.d.ts +26 -5
- package/dist/feedback/feedback-row-detail.d.ts +26 -5
- package/dist/feedback/feedback-status-undo.d.ts +26 -5
- package/dist/feedback/feedback-submit.d.ts +26 -5
- package/dist/feedback/feedback-swipe.d.ts +26 -5
- package/dist/feedback/feedback-table.d.ts +23 -2
- package/dist/feedback/feedback-thread.d.ts +26 -5
- package/dist/feedback.d.ts +26 -5
- 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 +26 -5
- package/dist/i18n/defaults.d.ts +26 -5
- package/dist/i18n/defaults.js +40 -0
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.d.ts +26 -5
- package/dist/i18n/german.js +343 -2
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +23 -2
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/languages.d.ts +21 -204
- package/dist/i18n/locales/de-CH.d.ts +26 -5
- package/dist/i18n/locales/en.d.ts +26 -5
- package/dist/i18n/locales/es.d.ts +26 -5
- package/dist/i18n/locales/es.js +337 -3
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +26 -5
- package/dist/i18n/locales/fr.js +344 -2
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.d.ts +26 -5
- package/dist/i18n/locales/hu.js +337 -3
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +26 -5
- package/dist/i18n/locales/it.js +342 -2
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +26 -5
- package/dist/i18n/locales/zh.js +333 -2
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.d.ts +26 -5
- package/dist/i18n/review.js +45 -1
- package/dist/i18n/review.js.map +1 -1
- package/dist/index.d.ts +19 -3
- package/dist/index.js +89 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/person-name.d.ts +69 -0
- package/dist/lib/person-name.js +65 -0
- package/dist/lib/person-name.js.map +1 -0
- package/dist/rhf/fields.d.ts +26 -5
- package/dist/rhf/form.d.ts +26 -5
- package/dist/rhf.d.ts +26 -5
- package/dist/shell/app-shell.d.ts +26 -5
- package/dist/shell/company-switcher.d.ts +59 -0
- package/dist/shell/company-switcher.js +85 -0
- package/dist/shell/company-switcher.js.map +1 -0
- package/dist/shell/top-bar-brand.d.ts +26 -5
- package/dist/shell/topbar-action-menu.d.ts +1 -0
- package/dist/shell.d.ts +20 -5
- package/dist/wizard/stepper-nav.d.ts +26 -5
- package/dist/wizard.d.ts +26 -5
- 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/accept-invitation.tsx +227 -0
- package/src/auth/auth-errors.ts +262 -0
- package/src/auth/complete-name-dialog.tsx +253 -0
- package/src/auth/email-tag.ts +75 -0
- package/src/auth/forgot-password-form.tsx +229 -0
- package/src/auth/form-rules.ts +40 -0
- package/src/auth/new-password-fields.tsx +85 -0
- package/src/auth/not-found-page.tsx +98 -0
- package/src/auth/register-form.tsx +477 -0
- package/src/auth/reset-password-form.tsx +351 -0
- package/src/auth/sign-in-form.tsx +859 -0
- package/src/auth/status-parts.tsx +138 -0
- package/src/auth/verify-email.tsx +409 -0
- 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/components/user-avatar.tsx +22 -4
- package/src/hooks/use-anchored-panel.ts +14 -3
- package/src/i18n/defaults.ts +40 -0
- package/src/i18n/german.ts +379 -0
- package/src/i18n/kit-labels.tsx +60 -0
- package/src/i18n/locales/es.ts +371 -1
- package/src/i18n/locales/fr.ts +379 -0
- package/src/i18n/locales/hu.ts +366 -1
- package/src/i18n/locales/it.ts +373 -0
- package/src/i18n/locales/zh.ts +343 -0
- package/src/i18n/review.ts +44 -0
- package/src/index.ts +146 -0
- package/src/lib/person-name.ts +157 -0
- package/src/shell/company-switcher.tsx +140 -0
package/src/i18n/locales/fr.ts
CHANGED
|
@@ -14,6 +14,15 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): 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 < 2 ? one : many);
|
|
17
|
+
// 0.30.0 — a throttled request (HTTP 429), as `englishRateLimited` in
|
|
18
|
+
// src/auth/auth-errors.ts: no wait → "un instant", 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))}\u00a0s` : `${n(Math.ceil(seconds / 60))}\u00a0min`;
|
|
22
|
+
const rateLimited = (seconds?: number) =>
|
|
23
|
+
!seconds || seconds <= 0
|
|
24
|
+
? "Trop de tentatives. Veuillez patienter un instant, puis réessayer."
|
|
25
|
+
: `Trop de tentatives. Réessayez dans ${wait(seconds)}.`;
|
|
17
26
|
|
|
18
27
|
return {
|
|
19
28
|
feedbackAttachment: {
|
|
@@ -152,6 +161,9 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
|
|
|
152
161
|
memberSince: "Membre depuis",
|
|
153
162
|
displayName: "Nom affiché",
|
|
154
163
|
save: "Enregistrer",
|
|
164
|
+
firstName: "Prénom",
|
|
165
|
+
lastName: "Nom",
|
|
166
|
+
nameRequired: "Saisissez un prénom et un nom.",
|
|
155
167
|
},
|
|
156
168
|
password: {
|
|
157
169
|
title: "Changer le mot de passe",
|
|
@@ -715,6 +727,8 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
|
|
|
715
727
|
registered: "Inscrit",
|
|
716
728
|
unverified: "Non vérifié",
|
|
717
729
|
passwordChange: "Doit changer de mot de passe",
|
|
730
|
+
deletion: "Suppression demandée",
|
|
731
|
+
deletionOn: (date) => `Suppression le ${date}`,
|
|
718
732
|
},
|
|
719
733
|
shareCard: {
|
|
720
734
|
dialogTitle: "Partager",
|
|
@@ -849,6 +863,371 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
|
|
|
849
863
|
},
|
|
850
864
|
},
|
|
851
865
|
},
|
|
866
|
+
// 0.29.0 — docs/auth-harmonization.md: keksdose's reviewed French (auth.*,
|
|
867
|
+
// verify_email, error.not_found_*, budget_share.join_*), kastlan's for the names and
|
|
868
|
+
// the 2FA prompt; written fresh where neither app had the sentence. Spaced as this
|
|
869
|
+
// catalogue writes it (\u00a0 before ":", \u202f before "?" and ";"), "l’application"
|
|
870
|
+
// where keksdose writes "l’app".
|
|
871
|
+
signIn: {
|
|
872
|
+
email: "E-mail",
|
|
873
|
+
password: "Mot de passe",
|
|
874
|
+
submit: "Se connecter",
|
|
875
|
+
passkey: "Se connecter avec une clé d’accès",
|
|
876
|
+
forgotPassword: "Mot de passe oublié\u202f?",
|
|
877
|
+
noAccount: "Pas encore de compte\u202f?",
|
|
878
|
+
register: "Créer un compte",
|
|
879
|
+
invalidCredentials: "L’adresse e-mail ou le mot de passe est incorrect.",
|
|
880
|
+
failed: "Échec de la connexion. Veuillez réessayer.",
|
|
881
|
+
passkeyFailed: "Échec de la connexion par clé d’accès.",
|
|
882
|
+
deactivatedHint: "Compte désactivé\u202f? Écrivez à {contact}.",
|
|
883
|
+
// "Compte créé avec…" rather than "Inscrit avec…", which would need a gender.
|
|
884
|
+
tagHint: (taggedAddress) =>
|
|
885
|
+
`Compte créé avec ${taggedAddress}\u202f? Utilisez cette adresse.`,
|
|
886
|
+
twoFactorTitle: "Authentification à deux facteurs",
|
|
887
|
+
twoFactorIntro: "Saisissez le code affiché par votre application d’authentification.",
|
|
888
|
+
code: "Code 2FA",
|
|
889
|
+
verify: "Vérifier",
|
|
890
|
+
codeInvalid: "Code 2FA invalide.",
|
|
891
|
+
setPasswordTitle: "Choisir un nouveau mot de passe",
|
|
892
|
+
setPasswordIntro:
|
|
893
|
+
"Un nouveau mot de passe a été demandé pour ce compte. Choisissez-en un et vous êtes aussitôt de retour.",
|
|
894
|
+
newPassword: "Nouveau mot de passe",
|
|
895
|
+
confirmPassword: "Répéter le nouveau mot de passe",
|
|
896
|
+
passwordMismatch: "Les mots de passe ne correspondent pas.",
|
|
897
|
+
setPasswordSubmit: "Définir le mot de passe et se connecter",
|
|
898
|
+
setPasswordFailed: "Le mot de passe n’a pas pu être défini.",
|
|
899
|
+
expired: "Cette connexion a expiré. Veuillez vous reconnecter.",
|
|
900
|
+
backToSignIn: "Retour à la connexion",
|
|
901
|
+
// kastlan's backup-code words ("code de secours" — not keksdose's "code de
|
|
902
|
+
// récupération", which is the key of its end-to-end encryption).
|
|
903
|
+
useRecoveryCode: "Utiliser un code de secours",
|
|
904
|
+
useAuthenticatorCode: "Utiliser votre application d’authentification",
|
|
905
|
+
recoveryCode: "Code de secours",
|
|
906
|
+
recoveryIntro:
|
|
907
|
+
"Saisissez l’un des codes de secours que vous avez enregistrés en activant l’authentification à deux facteurs.",
|
|
908
|
+
recoveryCodeHint: (length) =>
|
|
909
|
+
`${n(length)} lettres et chiffres. Les tirets et les espaces ne comptent pas.`,
|
|
910
|
+
recoveryCodeInvalid: "Ce code de secours n’est pas valable ou a déjà été utilisé.",
|
|
911
|
+
rateLimited,
|
|
912
|
+
},
|
|
913
|
+
register: {
|
|
914
|
+
firstName: "Prénom",
|
|
915
|
+
lastName: "Nom",
|
|
916
|
+
email: "E-mail",
|
|
917
|
+
emailTagUse: (address) => `Utiliser ${address}`,
|
|
918
|
+
emailTagHint:
|
|
919
|
+
"Beaucoup de fournisseurs livrent nom+tag@… dans la même boîte, ce qui rend le courrier de cette application filtrable et traçable. Vérifiez que le vôtre le fait avant de vous y fier\u00a0: vous vous connecteriez avec l’adresse marquée.",
|
|
920
|
+
invitedEmailHint: "L’adresse à laquelle votre invitation a été envoyée.",
|
|
921
|
+
invitedTagNote: "L’adresse marquée reçoit son propre e-mail de confirmation.",
|
|
922
|
+
password: "Mot de passe",
|
|
923
|
+
confirmPassword: "Répéter le mot de passe",
|
|
924
|
+
passwordMismatch: "Les mots de passe ne correspondent pas.",
|
|
925
|
+
language: "Langue",
|
|
926
|
+
submit: "Créer un compte",
|
|
927
|
+
haveAccount: "Déjà un compte\u202f?",
|
|
928
|
+
signIn: "Se connecter",
|
|
929
|
+
emailTaken: "Un compte existe déjà avec cette adresse e-mail.",
|
|
930
|
+
registrationClosed:
|
|
931
|
+
"Les nouveaux comptes ne sont créés que sur invitation. Demandez à l’exploitant d’inviter votre adresse e-mail.",
|
|
932
|
+
invitationInvalid: "Ce lien d’invitation n’est pas valide.",
|
|
933
|
+
invitationExpired: "Cette invitation a expiré. Demandez-en une nouvelle.",
|
|
934
|
+
failed: "Échec de l’inscription. Veuillez réessayer.",
|
|
935
|
+
rateLimited,
|
|
936
|
+
},
|
|
937
|
+
completeName: {
|
|
938
|
+
title: "Complétez votre nom",
|
|
939
|
+
description:
|
|
940
|
+
"Le prénom et le nom sont désormais demandés séparément. Vérifiez ce qui est déjà rempli et ajoutez ce qui manque.",
|
|
941
|
+
firstName: "Prénom",
|
|
942
|
+
lastName: "Nom",
|
|
943
|
+
save: "Enregistrer",
|
|
944
|
+
later: "Plus tard",
|
|
945
|
+
failed: "Votre nom n’a pas pu être enregistré. Veuillez réessayer.",
|
|
946
|
+
},
|
|
947
|
+
forgotPassword: {
|
|
948
|
+
title: "Mot de passe oublié",
|
|
949
|
+
intro:
|
|
950
|
+
"Saisissez l’adresse e-mail de votre compte. Nous vous enverrons un lien pour choisir un nouveau mot de passe.",
|
|
951
|
+
email: "E-mail",
|
|
952
|
+
submit: "Envoyer le lien",
|
|
953
|
+
sent: (email) => `S’il existe un compte pour ${email}, le lien est en route.`,
|
|
954
|
+
sentHint:
|
|
955
|
+
"Le lien est valable une heure et ne fonctionne qu’une seule fois. Vérifiez aussi votre dossier de courrier indésirable.",
|
|
956
|
+
backToSignIn: "Retour à la connexion",
|
|
957
|
+
error: "La demande a échoué. Veuillez réessayer plus tard.",
|
|
958
|
+
rateLimited,
|
|
959
|
+
},
|
|
960
|
+
resetPassword: {
|
|
961
|
+
title: "Choisir un nouveau mot de passe",
|
|
962
|
+
checking: "Vérification du lien…",
|
|
963
|
+
intro: (email) => `Vous définissez un nouveau mot de passe pour ${email}.`,
|
|
964
|
+
newPassword: "Nouveau mot de passe",
|
|
965
|
+
confirmPassword: "Répéter le nouveau mot de passe",
|
|
966
|
+
mismatch: "Les mots de passe ne correspondent pas.",
|
|
967
|
+
submit: "Enregistrer le mot de passe",
|
|
968
|
+
failed: "Le mot de passe n’a pas pu être changé.",
|
|
969
|
+
noToken: "Ce lien est incomplet.",
|
|
970
|
+
invalid: "Ce lien est invalide ou a expiré.",
|
|
971
|
+
invalidHint:
|
|
972
|
+
"Les liens sont valables une heure et ne fonctionnent qu’une fois. Demandez simplement un nouveau lien.",
|
|
973
|
+
requestNew: "Demander un nouveau lien",
|
|
974
|
+
success: "Votre mot de passe a été changé. Vous pouvez vous connecter avec dès maintenant.",
|
|
975
|
+
sessionsEnded: "Les appareils connectés ont été déconnectés — vous devrez vous y reconnecter.",
|
|
976
|
+
signIn: "Aller à la connexion",
|
|
977
|
+
rateLimited,
|
|
978
|
+
},
|
|
979
|
+
verifyEmail: {
|
|
980
|
+
title: "Confirmez votre adresse e-mail",
|
|
981
|
+
verifying: "Confirmation…",
|
|
982
|
+
verified: "Votre adresse e-mail est confirmée.",
|
|
983
|
+
continue: "Continuer",
|
|
984
|
+
invalid: "Ce lien de confirmation n’est pas valide",
|
|
985
|
+
expired: "Ce lien de confirmation a expiré",
|
|
986
|
+
noToken: "Ce lien n’a pas de jeton de confirmation.",
|
|
987
|
+
invalidHint: "Le lien a peut-être expiré ou déjà été utilisé.",
|
|
988
|
+
requestInApp: "Vous pouvez en demander un nouveau depuis l’application.",
|
|
989
|
+
requestHere: "Vous pouvez en demander un nouveau ici.",
|
|
990
|
+
resend: "Envoyer à nouveau",
|
|
991
|
+
resendIn: (seconds) => `Envoyer à nouveau dans ${n(seconds)}\u00a0s`,
|
|
992
|
+
resent: "E-mail de confirmation envoyé",
|
|
993
|
+
resendError: "Impossible d’envoyer l’e-mail de confirmation",
|
|
994
|
+
banner: "Veuillez confirmer votre adresse e-mail.",
|
|
995
|
+
dismiss: "Pas maintenant",
|
|
996
|
+
},
|
|
997
|
+
notFound: {
|
|
998
|
+
title: "Page introuvable",
|
|
999
|
+
body: "Cette adresse n’existe pas (ou plus). Peut-être une faute de frappe, ou la page a été déplacée.",
|
|
1000
|
+
home: "Aller à la page d’accueil",
|
|
1001
|
+
app: "Retour à l’application",
|
|
1002
|
+
},
|
|
1003
|
+
acceptInvitation: {
|
|
1004
|
+
title: "Accepter l’invitation",
|
|
1005
|
+
accepting: "Acceptation de l’invitation…",
|
|
1006
|
+
accepted: "Invitation acceptée.",
|
|
1007
|
+
joined: (name) => `Vous avez rejoint ${name}.`,
|
|
1008
|
+
continue: "Continuer",
|
|
1009
|
+
invalid: "Impossible de rejoindre avec ce lien",
|
|
1010
|
+
expired: "Cette invitation a expiré",
|
|
1011
|
+
noToken: "Ce lien n’a pas de jeton d’invitation.",
|
|
1012
|
+
// Without "qui vous a invité(e)", which would need a gender.
|
|
1013
|
+
askAgain: "Demandez une nouvelle invitation à la personne qui vous l’a envoyée.",
|
|
1014
|
+
signInFirst: "Connectez-vous pour accepter cette invitation",
|
|
1015
|
+
signInHint: "Utilisez le compte auquel l’invitation a été envoyée.",
|
|
1016
|
+
signIn: "Se connecter",
|
|
1017
|
+
register: "Créer un compte",
|
|
1018
|
+
},
|
|
1019
|
+
companySwitcher: {
|
|
1020
|
+
switchCompany: "Changer d’entreprise",
|
|
1021
|
+
heading: "Entreprises",
|
|
1022
|
+
current: (name) => `Entreprise\u00a0: ${name}`,
|
|
1023
|
+
// Agreeing with "entreprise" (feminine).
|
|
1024
|
+
currentMark: "(actuelle)",
|
|
1025
|
+
switching: "Changement d’entreprise…",
|
|
1026
|
+
},
|
|
1027
|
+
// 0.30.0 — docs/user-admin-harmonization.md: keksdose's reviewed French for the admin
|
|
1028
|
+
// words (admin.users.*), Kurvenschmiede's for transfer, invitations and sessions,
|
|
1029
|
+
// kastlan's for the company, the throttle and "Se déconnecter partout"; written fresh
|
|
1030
|
+
// where no app had the sentence. Phrased so that no sentence about the reader needs
|
|
1031
|
+
// a gender ("déconnecté·e").
|
|
1032
|
+
emailChange: {
|
|
1033
|
+
title: "Adresse e-mail",
|
|
1034
|
+
current: "Adresse actuelle",
|
|
1035
|
+
newEmail: "Nouvelle adresse e-mail",
|
|
1036
|
+
password: "Mot de passe actuel",
|
|
1037
|
+
passwordHint: "Votre adresse sert à vous connecter, c’est pourquoi la changer demande votre mot de passe.",
|
|
1038
|
+
emailTagUse: (address) => `Utiliser ${address}`,
|
|
1039
|
+
emailTagHint:
|
|
1040
|
+
"Beaucoup de fournisseurs livrent nom+tag@… dans la même boîte, ce qui rend le courrier de cette application filtrable et traçable. Vérifiez que le vôtre le fait avant de vous y fier\u00a0: vous vous connecteriez avec l’adresse marquée.",
|
|
1041
|
+
submit: "Changer d’adresse e-mail",
|
|
1042
|
+
sameAsCurrent: "C’est déjà votre adresse.",
|
|
1043
|
+
emailTaken: "Un compte existe déjà avec cette adresse e-mail.",
|
|
1044
|
+
wrongPassword: "Le mot de passe est incorrect.",
|
|
1045
|
+
pending: (newEmail) => `Confirmez le lien que nous avons envoyé à ${newEmail}.`,
|
|
1046
|
+
pendingHint: (currentEmail) =>
|
|
1047
|
+
`D’ici là, vous continuez à vous connecter avec ${currentEmail}. Vérifiez aussi votre dossier de courrier indésirable.`,
|
|
1048
|
+
resend: "Renvoyer le lien",
|
|
1049
|
+
resent: "Nous avons renvoyé le lien.",
|
|
1050
|
+
cancel: "Annuler le changement",
|
|
1051
|
+
confirmed: (email) => `Votre adresse e-mail est désormais ${email}.`,
|
|
1052
|
+
passkeyNote:
|
|
1053
|
+
"Vos clés d’accès continuent de fonctionner. Votre appareil peut encore les afficher sous votre ancienne adresse.",
|
|
1054
|
+
rateLimited,
|
|
1055
|
+
failed: "Cela n’a pas fonctionné. Veuillez réessayer.",
|
|
1056
|
+
},
|
|
1057
|
+
sessions: {
|
|
1058
|
+
title: "Sessions",
|
|
1059
|
+
description:
|
|
1060
|
+
"Une session ouverte sur un appareil que vous n’utilisez plus, ou auquel vous ne vous fiez pas\u202f? Déconnectez-vous partout.",
|
|
1061
|
+
signOutEverywhere: "Se déconnecter partout…",
|
|
1062
|
+
signOutEverywherePrompt:
|
|
1063
|
+
"Toutes les sessions prennent fin, y compris celle-ci\u00a0: cet appareil sera déconnecté lui aussi, et il faudra vous reconnecter ici.",
|
|
1064
|
+
confirmSignOutEverywhere: "Se déconnecter partout",
|
|
1065
|
+
list: "Vos sessions ouvertes",
|
|
1066
|
+
loading: "Chargement des sessions…",
|
|
1067
|
+
empty: "Aucune session à afficher.",
|
|
1068
|
+
current: "Cet appareil",
|
|
1069
|
+
unknownDevice: "Appareil inconnu",
|
|
1070
|
+
// A colon: `when` is either "il y a 3 heures" or a date.
|
|
1071
|
+
lastActive: (when) => `Dernière activité\u00a0: ${when}`,
|
|
1072
|
+
ip: (address) => `IP ${address}`,
|
|
1073
|
+
revoke: "Déconnecter",
|
|
1074
|
+
// Starts with `revoke`, the button's visible text, for voice control.
|
|
1075
|
+
revokeItem: (device) => `Déconnecter ${device}`,
|
|
1076
|
+
failed: "Cela n’a pas fonctionné. Veuillez réessayer.",
|
|
1077
|
+
},
|
|
1078
|
+
deleteAccount: {
|
|
1079
|
+
title: "Supprimer le compte",
|
|
1080
|
+
afterDays: (days) =>
|
|
1081
|
+
`Votre compte est désactivé immédiatement et effacé définitivement ${n(days)} ${plural(days, "jour", "jours")} plus tard.`,
|
|
1082
|
+
operator: "Votre compte est désactivé immédiatement, puis l’exploitant l’effacera définitivement.",
|
|
1083
|
+
arm: "Supprimer le compte…",
|
|
1084
|
+
prompt: "Toutes vos sessions prendront fin, sur tous les appareils, et votre compte ne pourra plus être utilisé.",
|
|
1085
|
+
handOver: (count) =>
|
|
1086
|
+
count < 2
|
|
1087
|
+
? `${n(count)} élément visible par d’autres passera à un administrateur.`
|
|
1088
|
+
: `${n(count)} éléments visibles par d’autres passeront à un administrateur.`,
|
|
1089
|
+
confirm: "Supprimer mon compte",
|
|
1090
|
+
done: "Votre compte est désactivé. Déconnexion en cours.",
|
|
1091
|
+
wrongPassword: "Le mot de passe est incorrect.",
|
|
1092
|
+
confirmationMismatch: "Ce n’est pas l’adresse de votre compte.",
|
|
1093
|
+
lastAdmin:
|
|
1094
|
+
"Votre compte est le dernier compte administrateur. Nommez d’abord quelqu’un d’autre administrateur.",
|
|
1095
|
+
lastAdminOf: (companies) =>
|
|
1096
|
+
`Votre compte est le dernier compte administrateur de ${companies}. Nommez-y d’abord quelqu’un d’autre administrateur.`,
|
|
1097
|
+
// keksdose's "ménage".
|
|
1098
|
+
householdHasMembers:
|
|
1099
|
+
"Votre ménage a d’autres membres, le compte ne peut donc pas être supprimé ici. Veuillez écrire à l’exploitant.",
|
|
1100
|
+
rateLimited,
|
|
1101
|
+
failed: "Votre compte n’a pas pu être supprimé. Veuillez réessayer.",
|
|
1102
|
+
},
|
|
1103
|
+
dataExport: {
|
|
1104
|
+
title: "Exporter vos données",
|
|
1105
|
+
description: "Téléchargez une copie des données de votre compte sous forme de fichier JSON.",
|
|
1106
|
+
download: "Télécharger mes données",
|
|
1107
|
+
started: "Votre téléchargement a commencé.",
|
|
1108
|
+
saveAgain: "Rien ne s’est passé\u202f? Enregistrer le fichier",
|
|
1109
|
+
rateLimited: (seconds) =>
|
|
1110
|
+
seconds && seconds > 0
|
|
1111
|
+
? `Vous venez d’exporter vos données. Réessayez dans ${wait(seconds)}.`
|
|
1112
|
+
: "Vous venez d’exporter vos données. Veuillez réessayer dans une minute.",
|
|
1113
|
+
failed: "L’export a échoué. Veuillez réessayer.",
|
|
1114
|
+
},
|
|
1115
|
+
userRoster: {
|
|
1116
|
+
name: "Nom",
|
|
1117
|
+
email: "E-mail",
|
|
1118
|
+
role: "Rôle",
|
|
1119
|
+
state: "État",
|
|
1120
|
+
created: "Créé le",
|
|
1121
|
+
lastLogin: "Dernière connexion",
|
|
1122
|
+
never: "Jamais",
|
|
1123
|
+
actions: "Actions",
|
|
1124
|
+
actionsFor: (name) => `Actions pour ${name}`,
|
|
1125
|
+
},
|
|
1126
|
+
roleSelect: {
|
|
1127
|
+
label: "Rôle",
|
|
1128
|
+
rolesLegend: "Rôles",
|
|
1129
|
+
roleOf: (name) => `Rôle de ${name}`,
|
|
1130
|
+
lockedLastAdmin: "Le dernier compte administrateur actif garde ce rôle.",
|
|
1131
|
+
lockedSelf: "Vous ne pouvez pas changer votre propre rôle.",
|
|
1132
|
+
notForLastAdmin: "pas pour le dernier administrateur",
|
|
1133
|
+
notForSelf: "pas pour votre propre compte",
|
|
1134
|
+
unavailable: (role, reason) => `${role} (${reason})`,
|
|
1135
|
+
},
|
|
1136
|
+
reviewerScope: {
|
|
1137
|
+
languages: "Langues",
|
|
1138
|
+
hint: "Cochez les langues que cette personne relit.",
|
|
1139
|
+
none: "Aucune langue\u00a0: enregistrer retire le rôle de relecteur.",
|
|
1140
|
+
areas: "Limiter à",
|
|
1141
|
+
legalOnly: "Uniquement les pages légales",
|
|
1142
|
+
legalOnlyHint:
|
|
1143
|
+
"Mentions légales, politique de confidentialité et conditions d’utilisation\u00a0: pour un juriste plutôt que pour un locuteur natif.",
|
|
1144
|
+
failed: "Le rôle de relecteur n’a pas pu être enregistré. Veuillez réessayer.",
|
|
1145
|
+
},
|
|
1146
|
+
adminAction: {
|
|
1147
|
+
confirm: "Confirmer",
|
|
1148
|
+
cancel: "Annuler",
|
|
1149
|
+
close: "Fermer",
|
|
1150
|
+
lastAdmin:
|
|
1151
|
+
"C’est le dernier compte administrateur actif. Nommez d’abord quelqu’un d’autre administrateur.",
|
|
1152
|
+
self: "Vous ne pouvez pas faire cela sur votre propre compte.",
|
|
1153
|
+
confirmationMismatch:
|
|
1154
|
+
"L’adresse ne correspond pas à ce compte. Vérifiez sur quel compte vous êtes.",
|
|
1155
|
+
otherCompanies:
|
|
1156
|
+
"Ce compte appartient aussi à d’autres entreprises, seul l’exploitant de la plateforme peut donc faire cela. Vous pouvez plutôt le retirer de cette entreprise.",
|
|
1157
|
+
removeFromCompany: "Retirer de l’entreprise",
|
|
1158
|
+
failed: "Cela n’a pas fonctionné. Veuillez réessayer.",
|
|
1159
|
+
},
|
|
1160
|
+
adminActionLog: {
|
|
1161
|
+
title: "Actions d’administration",
|
|
1162
|
+
empty: "Aucune action d’administration pour l’instant.",
|
|
1163
|
+
loading: "Chargement…",
|
|
1164
|
+
by: (actor) => `par ${actor}`,
|
|
1165
|
+
bySelf: "par la personne elle-même",
|
|
1166
|
+
automatic: "automatiquement",
|
|
1167
|
+
erased: "un compte effacé",
|
|
1168
|
+
filteredTo: (target) => `Uniquement ${target}`,
|
|
1169
|
+
showAll: "Afficher toutes les actions",
|
|
1170
|
+
filterBy: (target) => `Afficher uniquement les actions concernant ${target}`,
|
|
1171
|
+
// Agreeing with "compte" (masculine), like `accountState`.
|
|
1172
|
+
actions: {
|
|
1173
|
+
deactivate: "Désactivé",
|
|
1174
|
+
reactivate: "Réactivé",
|
|
1175
|
+
role: "Rôle modifié",
|
|
1176
|
+
membership_remove: "Retiré de l’entreprise",
|
|
1177
|
+
password_change_require: "Nouveau mot de passe exigé",
|
|
1178
|
+
password_change_withdraw: "Exigence de mot de passe retirée",
|
|
1179
|
+
mail_verification: "E-mail de confirmation envoyé",
|
|
1180
|
+
mail_reset: "E-mail de réinitialisation du mot de passe envoyé",
|
|
1181
|
+
reviewer: "Périmètre de relecture modifié",
|
|
1182
|
+
invite: "Invité",
|
|
1183
|
+
invite_resend: "Invitation renvoyée",
|
|
1184
|
+
invite_revoke: "Invitation révoquée",
|
|
1185
|
+
transfer: "Travail transmis",
|
|
1186
|
+
deletion_request: "Suppression demandée",
|
|
1187
|
+
deletion_cancel: "Suppression annulée",
|
|
1188
|
+
erase: "Compte effacé",
|
|
1189
|
+
},
|
|
1190
|
+
},
|
|
1191
|
+
transferOwnership: {
|
|
1192
|
+
title: (name) => `Transmettre le travail de ${name}`,
|
|
1193
|
+
body: "Tout ce que possède ce compte passe au compte choisi, en une seule étape.",
|
|
1194
|
+
recipient: "Le transmettre à",
|
|
1195
|
+
choose: "Choisissez un compte…",
|
|
1196
|
+
chooseFirst: "Choisissez qui reçoit le travail",
|
|
1197
|
+
confirm: "Transmettre",
|
|
1198
|
+
customer: "client",
|
|
1199
|
+
deactivated: "désactivé",
|
|
1200
|
+
self: "le même compte",
|
|
1201
|
+
unavailable: (account, reason) => `${account} (${reason})`,
|
|
1202
|
+
noCandidates: "Aucun autre compte ne peut le recevoir.",
|
|
1203
|
+
},
|
|
1204
|
+
invitations: {
|
|
1205
|
+
email: "Adresse e-mail",
|
|
1206
|
+
invalidEmail: "Saisissez une adresse e-mail complète.",
|
|
1207
|
+
role: "Rôle",
|
|
1208
|
+
scope: "Portée",
|
|
1209
|
+
scopeNone: "Aucune",
|
|
1210
|
+
language: "Langue de l’invitation",
|
|
1211
|
+
note: "Note",
|
|
1212
|
+
invite: "Inviter",
|
|
1213
|
+
listTitle: "Invitations",
|
|
1214
|
+
empty: "Personne n’a encore été invité.",
|
|
1215
|
+
loading: "Chargement…",
|
|
1216
|
+
// Agreeing with "invitation" (feminine).
|
|
1217
|
+
status: { open: "Ouverte", accepted: "Acceptée", expired: "Expirée", revoked: "Révoquée" },
|
|
1218
|
+
sent: (date) => `Envoyée le ${date}`,
|
|
1219
|
+
// kastlan's "Valable jusqu’au".
|
|
1220
|
+
expires: (date) => `Valable jusqu’au ${date}`,
|
|
1221
|
+
invitedBy: (name) => `par ${name}`,
|
|
1222
|
+
resend: (email) => `Envoyer un nouveau lien à ${email}`,
|
|
1223
|
+
copyLink: "Copier le lien d’invitation",
|
|
1224
|
+
revoke: (email) => `Révoquer l’invitation de ${email}`,
|
|
1225
|
+
consoleHint:
|
|
1226
|
+
"Ce serveur n’envoie pas d’e-mails — ils sont écrits dans le journal du serveur. Copiez ici chaque lien d’invitation et transmettez-le vous-même\u00a0: il n’est affiché qu’une seule fois.",
|
|
1227
|
+
linkReady: (email) => `Le lien d’invitation pour ${email}, affiché cette seule fois\u00a0:`,
|
|
1228
|
+
notSent: (email) => `${email} est invité, mais l’e-mail n’a pas pu être envoyé. Renvoyez-le.`,
|
|
1229
|
+
failed: "Cela n’a pas fonctionné. Veuillez réessayer.",
|
|
1230
|
+
},
|
|
852
1231
|
characterCount: {
|
|
853
1232
|
count: (used, max) => `${n(used)} sur ${n(max)} ${plural(max, "caractère", "caractères")}`,
|
|
854
1233
|
remaining: (left) => `${n(left)} ${plural(left, "caractère restant", "caractères restants")}`,
|