diff --git a/src/authentic2/locale/fr/LC_MESSAGES/django.po b/src/authentic2/locale/fr/LC_MESSAGES/django.po index 215c9e0f5..b2b7add1a 100644 --- a/src/authentic2/locale/fr/LC_MESSAGES/django.po +++ b/src/authentic2/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Authentic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 17:02+0200\n" +"POT-Creation-Date: 2021-04-28 12:01+0200\n" "PO-Revision-Date: 2021-04-02 17:02+0200\n" "Last-Translator: Mikaël Ates \n" "Language-Team: None\n" @@ -17,6 +17,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n>1;\n" +#: debian/multitenant/debian_config.py:43 src/authentic2/forms/passwords.py:38 +#: src/authentic2/forms/registration.py:41 src/authentic2/manager/forms.py:638 +#: src/authentic2/manager/templates/authentic2/manager/user_create_registration_email_body.txt:4 +#: src/authentic2/saml/models.py:145 +#: src/authentic2/templates/authentic2/api_user_create_registration_email_body.txt:4 +msgid "Email" +msgstr "Courriel" + #: src/authentic2/a2_rbac/admin.py:94 src/authentic2/a2_rbac/models.py:405 #: src/authentic2/apps/journal/models.py:175 #: src/authentic2/manager/tables.py:224 src/authentic2/models.py:142 @@ -335,7 +343,7 @@ msgid "Personal info" msgstr "Informations personnelles" #: src/authentic2/admin.py:290 src/authentic2/manager/role_views.py:301 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:35 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:41 #: src/authentic2/manager/templates/authentic2/manager/role_permissions.html:7 msgid "Permissions" msgstr "Permissions" @@ -367,6 +375,7 @@ msgid "Email is required" msgstr "Le courriel est obligatoire" #: src/authentic2/api_views.py:163 src/authentic2/api_views.py:175 +#: tests/test_all.py:523 tests/test_all.py:633 msgid "Account already exists" msgstr "Le compte existe déjà" @@ -375,10 +384,11 @@ msgid "Email is required in this ou" msgstr "Le courriel est obligatoire dans cette collectivité." #: src/authentic2/api_views.py:169 src/authentic2/api_views.py:181 +#: tests/test_all.py:500 tests/test_all.py:610 msgid "Account already exists in this ou" msgstr "Le compte existe déjà dans cette collectivité" -#: src/authentic2/api_views.py:173 +#: src/authentic2/api_views.py:173 tests/test_all.py:511 tests/test_all.py:621 msgid "Username is required" msgstr "L’identifiant est obligatoire" @@ -501,13 +511,13 @@ msgstr "Identifiant" #: src/authentic2/manager/journal_views.py:121 #: src/authentic2/manager/role_views.py:737 #: src/authentic2/manager/role_views.py:755 -#: src/authentic2/manager/templates/authentic2/manager/homepage.html:15 +#: src/authentic2/manager/templates/authentic2/manager/homepage.html:18 #: src/authentic2/manager/templates/authentic2/manager/journal.html:4 #: src/authentic2/manager/templates/authentic2/manager/journal.html:10 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:38 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:44 #: src/authentic2/manager/templates/authentic2/manager/roles.html:18 #: src/authentic2/manager/templates/authentic2/manager/user_detail.html:25 -#: src/authentic2/manager/user_views.py:1012 +#: src/authentic2/manager/user_views.py:1016 msgid "Journal" msgstr "Journal des évènements" @@ -937,53 +947,61 @@ msgstr "mise à jour" msgid "create" msgstr "création" -#: src/authentic2/csv_import.py:411 +#: src/authentic2/csv_import.py:385 +msgid "importing" +msgstr "import" + +#: src/authentic2/csv_import.py:417 msgid "Missing header row" msgstr "Ligne d’entête manquante" -#: src/authentic2/csv_import.py:418 +#: src/authentic2/csv_import.py:424 msgid "Empty header row" msgstr "Ligne d’entête vide" -#: src/authentic2/csv_import.py:429 +#: src/authentic2/csv_import.py:435 msgid "Missing key column" msgstr "Colonne clé manquante" -#: src/authentic2/csv_import.py:431 +#: src/authentic2/csv_import.py:437 msgid "Too many key columns" msgstr "Trop de colonnes clés" -#: src/authentic2/csv_import.py:436 +#: src/authentic2/csv_import.py:442 msgid "You must have a _source_name and a _source_id column" msgstr "Vous devez avoir une colonne _source_name and une colonne _source_id" -#: src/authentic2/csv_import.py:440 +#: src/authentic2/csv_import.py:446 msgid "Either specify role names or role slugs, not both" msgstr "" "Les colonnes noms de rôle et slugs de rôles ne peuvent pas être présentes en " "même temps." -#: src/authentic2/csv_import.py:448 +#: src/authentic2/csv_import.py:454 #, python-format msgid "Header \"%s\" is duplicated" msgstr "L’entête « %s » existe deux fois" -#: src/authentic2/csv_import.py:488 +#: src/authentic2/csv_import.py:494 #, python-format msgid "unknown or missing attribute \"%s\"" msgstr "attribut inconnu ou manquant « %s »" -#: src/authentic2/csv_import.py:500 +#: src/authentic2/csv_import.py:506 msgid "You cannot set flags on _source_name and _source_id columns" msgstr "" "Vous ne pouvez pas utiliser de modificateurs sur les colonnes _source_name" -#: src/authentic2/csv_import.py:515 +#: src/authentic2/csv_import.py:521 #, python-format msgid "unknown flag \"%s\"" msgstr "modificateur inconnu « %s »" -#: src/authentic2/csv_import.py:600 +#: src/authentic2/csv_import.py:531 +msgid "parsing" +msgstr "analyse" + +#: src/authentic2/csv_import.py:608 #, python-format msgid "" "Unique constraint on column \"%(column)s\" failed: value already appear on " @@ -992,22 +1010,22 @@ msgstr "" "La contrainte d’unicité sur la colonne « %(column)s » est rompue : la valeur " "apparaît déjà ligne %(line)d" -#: src/authentic2/csv_import.py:631 +#: src/authentic2/csv_import.py:639 #, python-format msgid "Unique constraint on column \"%s\" failed" msgstr "La contrainte d’unicité sur la colonne « %s » est rompue" -#: src/authentic2/csv_import.py:675 +#: src/authentic2/csv_import.py:683 #, python-format msgid "Key value \"%s\" matches too many users" msgstr "La valeur de la clé « %s » correspond à trop d’utilisateurs" -#: src/authentic2/csv_import.py:716 +#: src/authentic2/csv_import.py:724 #, python-format msgid "External id \"%s\" already exists" msgstr "La clé externe « %s » existe déjà" -#: src/authentic2/csv_import.py:759 +#: src/authentic2/csv_import.py:767 #, python-format msgid "Role \"%s\" does not exist" msgstr "Le rôle « %s » n’existe pas" @@ -1099,7 +1117,7 @@ msgstr "" "adresse de courriel ou nom complet – prénom et nom." #: src/authentic2/custom_user/models.py:277 -#: src/authentic2/forms/registration.py:104 +#: src/authentic2/forms/registration.py:104 tests/test_all.py:709 msgid "This username is already in use. Please supply a different username." msgstr "" "Cet identifiant est déjà utilisé. Utilisez s’il vous plaît un autre " @@ -1286,31 +1304,23 @@ msgstr "Les mots de passe ne sont pas identiques." msgid "The image is not valid" msgstr "L’image n’est pas valide" -#: src/authentic2/forms/passwords.py:37 src/authentic2/forms/registration.py:41 -#: src/authentic2/manager/forms.py:638 -#: src/authentic2/manager/templates/authentic2/manager/user_create_registration_email_body.txt:4 -#: src/authentic2/saml/models.py:145 -#: src/authentic2/templates/authentic2/api_user_create_registration_email_body.txt:4 -msgid "Email" -msgstr "Courriel" - -#: src/authentic2/forms/passwords.py:43 +#: src/authentic2/forms/passwords.py:44 msgid "Email or username" msgstr "Courriel ou identifiant" -#: src/authentic2/forms/passwords.py:124 src/authentic2/forms/passwords.py:138 +#: src/authentic2/forms/passwords.py:125 src/authentic2/forms/passwords.py:139 msgid "New password" msgstr "Nouveau mot de passe" -#: src/authentic2/forms/passwords.py:125 src/authentic2/forms/passwords.py:139 +#: src/authentic2/forms/passwords.py:126 src/authentic2/forms/passwords.py:140 msgid "New password confirmation" msgstr "Confirmation du nouveau mot de passe" -#: src/authentic2/forms/passwords.py:130 src/authentic2/forms/passwords.py:145 +#: src/authentic2/forms/passwords.py:131 src/authentic2/forms/passwords.py:146 msgid "New password must differ from old password" msgstr "Le nouveau mot de passe doit être différent de l’ancien." -#: src/authentic2/forms/passwords.py:137 +#: src/authentic2/forms/passwords.py:138 msgid "Old password" msgstr "Ancien mot de passe" @@ -1385,12 +1395,12 @@ msgstr "Déconnexion" #: src/authentic2/manager/templates/authentic2/manager/delete.html:15 #: src/authentic2/manager/templates/authentic2/manager/ou_detail.html:21 #: src/authentic2/manager/templates/authentic2/manager/ou_detail.html:23 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:21 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:23 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:27 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:29 #: src/authentic2/manager/templates/authentic2/manager/role_permissions.html:14 #: src/authentic2/manager/templates/authentic2/manager/user_detail.html:10 #: src/authentic2/manager/templates/authentic2/manager/user_detail.html:12 -#: src/authentic2/manager/templates/authentic2/manager/user_import.html:69 +#: src/authentic2/manager/templates/authentic2/manager/user_import_report_row.html:12 #: src/authentic2/manager/templates/authentic2/manager/user_imports.html:46 msgid "Delete" msgstr "Supprimer" @@ -1785,8 +1795,8 @@ msgstr "La collectivité %s n’existe pas." #: src/authentic2/manager/forms.py:858 #, python-format -msgid "%s (line %d)" -msgstr "%s (ligne %d)" +msgid "%(error)s (line %(number)d)" +msgstr "%(error)s (ligne %(number)d)" #: src/authentic2/manager/journal_event_types.py:31 msgid "user creation" @@ -2389,7 +2399,7 @@ msgid "You are not authorized to manage this role" msgstr "Vous n’êtes pas autorisé à gérer ce rôle." #: src/authentic2/manager/tables.py:163 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:52 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:58 #: src/authentic2/manager/templates/authentic2/manager/user_roles_table.html:11 msgid "This role is synchronised from LDAP, changing members is not allowed." msgstr "" @@ -2474,6 +2484,7 @@ msgstr "" #: src/authentic2/templates/authentic2/login_password_form.html:13 #: src/authentic2/templates/authentic2/logout_confirm.html:20 #: src/authentic2/templates/registration/password_change_form.html:26 +#: tests/test_idp_saml2.py:342 msgid "Cancel" msgstr "Annuler" @@ -2510,11 +2521,11 @@ msgid "" "and applications." msgstr "Gérer les collectivités, les utilisateurs, les rôles et les services" -#: src/authentic2/manager/templates/authentic2/manager/homepage.html:13 +#: src/authentic2/manager/templates/authentic2/manager/homepage.html:14 msgid "Export Site" msgstr "Exporter le site" -#: src/authentic2/manager/templates/authentic2/manager/homepage.html:14 +#: src/authentic2/manager/templates/authentic2/manager/homepage.html:15 msgid "Import Site" msgstr "Importer un site" @@ -2611,9 +2622,9 @@ msgstr "Vous n’êtes pas autorisé à supprimer cette collectivité." #: src/authentic2/manager/templates/authentic2/manager/ou_detail.html:27 #: src/authentic2/manager/templates/authentic2/manager/ou_detail.html:29 #: src/authentic2/manager/templates/authentic2/manager/ou_edit.html:8 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:26 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:29 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:31 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:32 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:35 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:37 #: src/authentic2/manager/templates/authentic2/manager/role_permissions.html:17 #: src/authentic2/manager/templates/authentic2/manager/service.html:12 #: src/authentic2/manager/templates/authentic2/manager/user_detail.html:16 @@ -2645,63 +2656,68 @@ msgstr "Éditer le rôle" msgid "Modify" msgstr "Modifier" -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:23 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:15 +#: src/authentic2/saml/models.py:159 +msgid "UUID" +msgstr "UUID" + +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:29 msgid "This role is technical, you cannot delete it." msgstr "Ce rôle est interne, vous ne pouvez pas le supprimer." -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:29 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:83 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:99 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:115 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:35 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:89 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:105 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:121 msgid "Permission denied" msgstr "Vous n’êtes pas autorisé." -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:31 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:37 msgid "This role is technical, you cannot edit it." msgstr "Ce rôle est interne, vous ne pouvez pas l’éditer." -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:65 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:71 #: src/authentic2/manager/templates/authentic2/manager/role_permissions.html:31 #: src/authentic2/manager/templates/authentic2/manager/service.html:42 #: src/authentic2/manager/templates/authentic2/manager/user_roles.html:24 msgid "Add" msgstr "Ajouter" -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:69 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:75 msgid "Advanced parameters" msgstr "Paramètres avancés" -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:71 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:77 msgid "Is administered by users" msgstr "Est géré par le(s) utilisateurs(s)" -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:77 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:109 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:83 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:115 msgid "Indirect child role" msgstr "Héritage indirect" -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:87 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:93 msgid "Is administered by roles" msgstr "Est géré par le(s) rôle(s)" -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:93 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:99 msgid "Indirect admin role" msgstr "rôle hérité" -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:103 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:109 msgid "Child roles:" msgstr "Contient les membres des rôles :" -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:119 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:125 msgid "Parent roles:" msgstr "Contient les permissions des rôles :" -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:128 -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:137 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:134 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:143 msgid "This role is technical, you cannot modify its permissions." msgstr "Ce rôle est interne, vous ne pouvez pas en modifier les permissions." -#: src/authentic2/manager/templates/authentic2/manager/role_members.html:131 +#: src/authentic2/manager/templates/authentic2/manager/role_members.html:137 msgid "Indirect parent role" msgstr "rôle hérité" @@ -2783,7 +2799,7 @@ msgstr "" "avant de finaliser sa création :" #: src/authentic2/manager/templates/authentic2/manager/user_authorizations.html:17 -#: src/authentic2/manager/user_views.py:974 +#: src/authentic2/manager/user_views.py:978 msgctxt "manager" msgid "Consent Management" msgstr "Gestion des consentements" @@ -3585,15 +3601,15 @@ msgstr "ex. :" msgid "users.csv" msgstr "utilisateurs.csv" -#: src/authentic2/manager/user_views.py:924 +#: src/authentic2/manager/user_views.py:923 msgid "Simulation" msgstr "Simulation" -#: src/authentic2/manager/user_views.py:926 +#: src/authentic2/manager/user_views.py:925 msgid "Execution" msgstr "Importation" -#: src/authentic2/manager/user_views.py:943 +#: src/authentic2/manager/user_views.py:947 msgid "Switch user" msgstr "Reconnexion" @@ -3607,7 +3623,7 @@ msgstr "Supprimer l’objet « %s »" msgid "Edit %s" msgstr "Éditer l’objet « %s »" -#: src/authentic2/manager/views.py:753 +#: src/authentic2/manager/views.py:756 msgid "Site Import" msgstr "Import de site" @@ -3974,10 +3990,6 @@ msgstr "Temporaire" msgid "Username (use with Google Apps)" msgstr "Identifiant (à utiliser par exemple pour Google Apps)" -#: src/authentic2/saml/models.py:159 -msgid "UUID" -msgstr "UUID" - #: src/authentic2/saml/models.py:166 msgid "Use eduPersonTargetedID attribute" msgstr "Utiliser l’attribut eduPersonTargetedID" @@ -4246,7 +4258,6 @@ msgstr[1] "Veuillez corriger les erreurs suivantes." #: src/authentic2/saml/templates/admin/saml/libertyprovider/add_from_url.html:37 #: src/authentic2/templates/authentic2/accounts_edit.html:20 #: src/authentic2/templates/authentic2/login_password_registration_form.html:7 -#: src/authentic2/templates/registration/login_password_registration_form.html:7 #: src/authentic2/templates/registration/password_change_form.html:25 #: src/authentic2/templates/registration/password_reset_confirm.html:16 #: src/authentic2/templates/registration/password_reset_form.html:16 @@ -4978,7 +4989,7 @@ msgid "Logged out" msgstr "Déconnecté" #: src/authentic2/templates/registration/password_change_done.html:9 -#: src/authentic2/views.py:1337 +#: src/authentic2/views.py:1346 msgid "Password changed" msgstr "Mot de passe modifié" @@ -5019,6 +5030,24 @@ msgid "Password reset instructions" msgstr "Instructions de réinitialisation du mot de passe" #: src/authentic2/templates/registration/password_reset_instructions.html:10 +msgid "Your password reset request has been refused." +msgstr "" +"Votre demande de réinitialisation du mot de passe n'a pas été prise en " +"compte." + +#: src/authentic2/templates/registration/password_reset_instructions.html:10 +#: src/authentic2/templates/registration/registration_complete.html:10 +msgid "" +"Indeed your browser checked a hidden anti-robot checkbox on the registration " +"form. A browser extension may produce this behaviour, in this case disable " +"such extensions and try again." +msgstr "" +"En effet, votre navigateur a coché une case anti-robot cachée sur le " +"formulaire d’inscription. Ce comportement peut être provoqué par une " +"extension de votre navigateur, auquel cas veuillez désactiver les extensions " +"et essayer à nouveau." + +#: src/authentic2/templates/registration/password_reset_instructions.html:14 #, python-format msgid "" "\n" @@ -5031,7 +5060,7 @@ msgstr "" "a été envoyé à %(email)s.\n" " " -#: src/authentic2/templates/registration/password_reset_instructions.html:15 +#: src/authentic2/templates/registration/password_reset_instructions.html:19 msgid "" "\n" " Follow the instructions in this email in order to choose a new " @@ -5043,7 +5072,7 @@ msgstr "" "de passe.\n" " " -#: src/authentic2/templates/registration/password_reset_instructions.html:21 +#: src/authentic2/templates/registration/password_reset_instructions.html:25 #: src/authentic2/templates/registration/registration_complete.html:26 msgid "" "\n" @@ -5056,7 +5085,7 @@ msgstr "" " également être considéré comme un pourriel (spam) : n’oubliez pas\n" " de regarder dans votre dossier « courriers indésirables ». " -#: src/authentic2/templates/registration/password_reset_instructions.html:27 +#: src/authentic2/templates/registration/password_reset_instructions.html:31 #, python-format msgid "" "\n" @@ -5073,7 +5102,7 @@ msgstr "" " puis recommencez la procédure de réinitialisation du mot de passe.\n" " " -#: src/authentic2/templates/registration/password_reset_instructions.html:35 +#: src/authentic2/templates/registration/password_reset_instructions.html:40 msgid "Back to login" msgstr "Retour à la page de connexion" @@ -5087,17 +5116,8 @@ msgid "Registration in progress" msgstr "Création du compte en cours" #: src/authentic2/templates/registration/registration_complete.html:10 -msgid "" -"Your registration request has been refused. Indeed your " -"browser checked a hidden anti-robot checkbox on the registration form. A " -"browser extension may produce this behaviour, in this case disable such " -"extensions and try again." -msgstr "" -"Votre demande d’inscription n’a pas été prise en compte. En " -"effet, votre navigateur a coché une case anti-robot cachée sur le formulaire " -"d’inscription. Ce comportement peut être provoqué par une extension de votre " -"navigateur, auquel cas veuillez désactiver les extensions et essayer à " -"nouveau." +msgid "Your registration request has been refused." +msgstr "Votre demande d’inscription n’a pas été prise en compte." #: src/authentic2/templates/registration/registration_complete.html:14 #, python-format @@ -5140,7 +5160,7 @@ msgstr "" #: src/authentic2/templates/registration/registration_completion_choose.html:5 #: src/authentic2/templates/registration/registration_completion_form.html:5 #: src/authentic2/templates/registration/registration_completion_form.html:10 -#: src/authentic2/views.py:819 +#: src/authentic2/views.py:827 msgid "Registration" msgstr "Création d’un compte" @@ -5356,11 +5376,11 @@ msgstr "" "Cette page est périmée car vous vous êtes connecté entretemps; nous l’avons " "rechargée pour vous." -#: src/authentic2/views.py:645 src/authentic2/views.py:749 +#: src/authentic2/views.py:645 src/authentic2/views.py:757 msgid "Password Reset" msgstr "Réinitialisation du mot de passe" -#: src/authentic2/views.py:682 src/authentic2/views.py:863 +#: src/authentic2/views.py:690 src/authentic2/views.py:871 #, python-format msgid "" "An email has already been sent to %s. Click \"Validate\" again if you really " @@ -5369,7 +5389,7 @@ msgstr "" "Un courriel a déjà été envoyé à %s. Cliquez sur « Valider » si vous voulez " "vraiment qu’il soit réenvoyé." -#: src/authentic2/views.py:701 src/authentic2/views.py:881 +#: src/authentic2/views.py:709 src/authentic2/views.py:889 msgid "" "Multiple emails have already been sent to this address. Further attempts are " "blocked, please check your spam folder or try again later." @@ -5378,7 +5398,7 @@ msgstr "" "envois sont bloqués, vous devriez vérifier votre dossier d’indésirables " "(spams, pourriels) ou réessayer plus tard." -#: src/authentic2/views.py:717 +#: src/authentic2/views.py:725 msgid "" "Multiple password reset attempts have already been made from this IP " "address. No further email will be sent, please check your spam folder or try " @@ -5389,30 +5409,30 @@ msgstr "" "devriez vérifier votre dossier d’indésirables (spams, pourriels) ou " "réessayer plus tard." -#: src/authentic2/views.py:762 +#: src/authentic2/views.py:770 msgid "Password reset token is unknown or expired" msgstr "Le jeton de réinitialisation de mot de passe est inconnu ou expiré" -#: src/authentic2/views.py:765 +#: src/authentic2/views.py:773 msgid "Password reset token is invalid" msgstr "Le jeton de réinitialisation de mot de passe est invalide" -#: src/authentic2/views.py:773 +#: src/authentic2/views.py:781 msgid "User not found" msgstr "Utilisateur introuvable" -#: src/authentic2/views.py:781 +#: src/authentic2/views.py:789 msgid "" "It's not possible to reset your password. Please contact an administrator." msgstr "" "Votre mot de passe n’a pas pu être réinitialisé. Veuillez contacter votre " "administrateur." -#: src/authentic2/views.py:789 +#: src/authentic2/views.py:797 msgid "Enter new password" msgstr "Entrez un nouveau mot de passe" -#: src/authentic2/views.py:896 +#: src/authentic2/views.py:904 msgid "" "Multiple registration attempts have already been made from this IP address. " "No further email will be sent, please check your spam folder or try again " @@ -5423,63 +5443,63 @@ msgstr "" "vérifier votre dossier d’indésirables (spams, pourriels) ou réessayer plus " "tard." -#: src/authentic2/views.py:967 +#: src/authentic2/views.py:975 msgid "Your activation key is unknown or expired" msgstr "Votre clé d’activation est inconnue ou a expiré" -#: src/authentic2/views.py:970 +#: src/authentic2/views.py:978 msgid "Activation failed" msgstr "Échec à l’activation du compte" -#: src/authentic2/views.py:1226 +#: src/authentic2/views.py:1235 msgid "Request account deletion" msgstr "Demande de suppression de compte" -#: src/authentic2/views.py:1237 +#: src/authentic2/views.py:1246 msgid "" "An account deletion validation email has been sent to your email address." msgstr "" "Un message pour valider la suppression du compte a été envoyé à votre " "adresse électronique." -#: src/authentic2/views.py:1248 +#: src/authentic2/views.py:1257 msgid "Confirm account deletion" msgstr "Confirmation de la suppression du compte" -#: src/authentic2/views.py:1260 +#: src/authentic2/views.py:1269 msgid "This account is inactive, it cannot be deleted." msgstr "Ce compte est désactivé, il ne peut plus être supprimé." -#: src/authentic2/views.py:1263 +#: src/authentic2/views.py:1272 msgid "The account deletion request is too old, try again" msgstr "La demande de suppression de compte est expirée." -#: src/authentic2/views.py:1265 +#: src/authentic2/views.py:1274 msgid "The account deletion request is invalid, try again" msgstr "La demande de suppression de compte n’est pas valide." -#: src/authentic2/views.py:1267 +#: src/authentic2/views.py:1276 msgid "The account deletion request was not on this site, try again" msgstr "" "Votre demande de suppression de compte vient d’un autre site que celui-ci." -#: src/authentic2/views.py:1271 +#: src/authentic2/views.py:1280 msgid "This account has previously been deleted." msgstr "Ce compte a déjà été supprimé." -#: src/authentic2/views.py:1285 +#: src/authentic2/views.py:1294 msgid "Deletion performed." msgstr "Suppression effectuée." -#: src/authentic2/views.py:1315 +#: src/authentic2/views.py:1324 msgid "Password Change" msgstr "Changement de mot de passe" -#: src/authentic2/views.py:1326 +#: src/authentic2/views.py:1335 msgid "Password change is forbidden" msgstr "Changement de mot de passe interdit" -#: src/authentic2/views.py:1373 +#: src/authentic2/views.py:1385 msgid "Consent Management" msgstr "Gestion des autorisations" diff --git a/src/authentic2_auth_fc/locale/fr/LC_MESSAGES/django.po b/src/authentic2_auth_fc/locale/fr/LC_MESSAGES/django.po index ebc78ab7b..7a5b5f72f 100644 --- a/src/authentic2_auth_fc/locale/fr/LC_MESSAGES/django.po +++ b/src/authentic2_auth_fc/locale/fr/LC_MESSAGES/django.po @@ -18,7 +18,7 @@ msgid "" msgstr "" "Project-Id-Version: authentic2-auth-fc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-02 17:02+0200\n" +"POT-Creation-Date: 2021-04-28 12:01+0200\n" "PO-Revision-Date: 2021-04-02 16:55+0200\n" "Last-Translator: Benjamin Dauvergne \n" "Language-Team: french \n" @@ -57,7 +57,7 @@ msgid "access token" msgstr "jeton d’accès" #: src/authentic2_auth_fc/templates/authentic2_auth_fc/explanation.html:5 -#: src/authentic2_auth_fc/templates/authentic2_auth_fc/linking.html:27 +#: src/authentic2_auth_fc/templates/authentic2_auth_fc/linking.html:30 msgid "What is FranceConnect?" msgstr "Qu’est-ce que FranceConnect ?" @@ -83,9 +83,14 @@ msgid "Delete link" msgstr "Supprimer la liaison" #: src/authentic2_auth_fc/templates/authentic2_auth_fc/linking.html:20 +#: src/authentic2_auth_fc/templates/authentic2_auth_fc/linking.html:22 msgid "Link with a FranceConnect account" msgstr "Se lier avec un compte FranceConnect" +#: src/authentic2_auth_fc/templates/authentic2_auth_fc/login.html:10 +msgid "Log in with FranceConnect" +msgstr "Connectez-vous avec FranceConnect" + #: src/authentic2_auth_fc/templates/authentic2_auth_fc/manager_user_sidebar.html:4 msgid "Link with FranceConnect created on" msgstr "Liaison à un compte FranceConnect créée le" @@ -141,76 +146,82 @@ msgstr "Délier" msgid "Cancel" msgstr "Annuler" -#: src/authentic2_auth_fc/utils.py:123 src/authentic2_auth_fc/utils.py:134 +#: src/authentic2_auth_fc/utils.py:105 src/authentic2_auth_fc/utils.py:116 msgid "Unknown INSEE code" msgstr "Code INSEE inconnu" -#: src/authentic2_auth_fc/views.py:259 src/authentic2_auth_fc/views.py:286 +#: src/authentic2_auth_fc/views.py:143 src/authentic2_auth_fc/views.py:283 #, python-format msgid "Unable to connect to FranceConnect: \"%s\"." msgstr "Impossible de se connecter à FranceConnect : « %s »." -#: src/authentic2_auth_fc/views.py:261 -#, python-format -msgid "(\"%s\")" -msgstr "(« %s »)" - -#: src/authentic2_auth_fc/views.py:276 src/authentic2_auth_fc/views.py:298 -#: src/authentic2_auth_fc/views.py:306 src/authentic2_auth_fc/views.py:317 +#: src/authentic2_auth_fc/views.py:290 msgid "Unable to connect to FranceConnect." msgstr "Impossible de se connecter à FranceConnect." -#: src/authentic2_auth_fc/views.py:380 -msgid "Your account is already linked to a FranceConnect account" -msgstr "Votre compte est déjà associé à un compte FranceConnect." - -#: src/authentic2_auth_fc/views.py:385 -msgid "The FranceConnect account {} is already linked with another account." -msgstr "Le compte FranceConnect {} est déjà associé à un autre compte." - -#: src/authentic2_auth_fc/views.py:391 -msgid "Your account is disabled." -msgstr "Votre compte est désactivé." - -#: src/authentic2_auth_fc/views.py:410 +#: src/authentic2_auth_fc/views.py:321 msgid "Your FranceConnect account {} has been linked." msgstr "Votre compte FranceConnect {} a été associé." -#: src/authentic2_auth_fc/views.py:414 -msgid "Your local account has been updated." -msgstr "Votre compte local a été mis à jour." - -#: src/authentic2_auth_fc/views.py:475 -#, python-format -msgid "" -"Your FranceConnect email address '%s' is already used by another account, so " -"we cannot create an account for you. Please create an account with another " -"email address then link it to FranceConnect using your account management " -"page." -msgstr "" -"L’adresse de courriel fournie par FranceConnect « %s » est déjà utilisée par " -"un compte, nous ne pouvons pas vous créer un nouveau compte en l’utilisant. " -"Vous pouvez vous créer un compte avec une autre adresse de courriel, puis " -"demander à lier ce compte avec FranceConnect depuis la page de votre compte." - -#: src/authentic2_auth_fc/views.py:504 +#: src/authentic2_auth_fc/views.py:361 #, python-format msgid "The following fields are mandatory for account creation: %s" msgstr "Ces champs sont obligatoires pour créer un compte : %s" -#: src/authentic2_auth_fc/views.py:513 +#: src/authentic2_auth_fc/views.py:381 +#, python-format msgid "" -"If you already have an account, please log in, else create your account." +"Your FranceConnect email address '%s' is already used by another account, so " +"we cannot create an account for you. Please connect with you existing " +"account or create an account with another email address then link it to " +"FranceConnect using your account management page." msgstr "" -"Si vous avez déjà un compte saisissez vos identifiants sinon créez votre " -"compte." +"L’adresse de courriel fournie par FranceConnect « %s » est déjà utilisée par " +"un compte, nous ne pouvons pas vous créer un nouveau compte en l’utilisant. " +"Vous pouvez vous connecter avec votre compte, ou créer un compte avec une " +"autre adresse de courriel, puis demander à lier ce compte avec FranceConnect " +"depuis la page de votre compte." -#: src/authentic2_auth_fc/views.py:573 +#: src/authentic2_auth_fc/views.py:394 +#, python-format +msgid "" +"Your FranceConnect email address \"%(email)s\" is already used by the " +"FranceConnect account of \"%(user)s\", so we cannot create an account for " +"you. Please create an account with another email address then link it to " +"FranceConnect using your account management page." +msgstr "" +"L’adresse de courriel fournie par FranceConnect « %(email)s » est déjà " +"utilisée par le compte de « %(user)s », nous ne pouvons pas vous créer un " +"nouveau compte en l’utilisant. Vous pouvez vous créer un compte avec une " +"autre adresse de courriel, puis demander à lier ce compte avec FranceConnect " +"depuis la page de votre compte." + +#: src/authentic2_auth_fc/views.py:446 +msgid "Your account is already linked to a FranceConnect account" +msgstr "Votre compte est déjà associé à un compte FranceConnect." + +#: src/authentic2_auth_fc/views.py:451 +msgid "The FranceConnect account {} is already linked with another account." +msgstr "Le compte FranceConnect {} est déjà associé à un autre compte." + +#: src/authentic2_auth_fc/views.py:538 msgid "The link with the FranceConnect account has been deleted." msgstr "La liaison avec le compte FranceConnect a été supprimée." -#~ msgid "Log in with FranceConnect" -#~ msgstr "Connectez-vous avec FranceConnect" +#~ msgid "(\"%s\")" +#~ msgstr "(« %s »)" + +#~ msgid "Your account is disabled." +#~ msgstr "Votre compte est désactivé." + +#~ msgid "Your local account has been updated." +#~ msgstr "Votre compte local a été mis à jour." + +#~ msgid "" +#~ "If you already have an account, please log in, else create your account." +#~ msgstr "" +#~ "Si vous avez déjà un compte saisissez vos identifiants sinon créez votre " +#~ "compte." #~ msgid "Create your account with FranceConnect" #~ msgstr "Créez votre compte avec FranceConnect" diff --git a/src/authentic2_auth_oidc/locale/fr/LC_MESSAGES/django.po b/src/authentic2_auth_oidc/locale/fr/LC_MESSAGES/django.po index 93f4aef80..8ad60be77 100644 --- a/src/authentic2_auth_oidc/locale/fr/LC_MESSAGES/django.po +++ b/src/authentic2_auth_oidc/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: authentic2-auth-fc 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-04 21:22+0100\n" +"POT-Creation-Date: 2021-04-28 12:01+0200\n" "PO-Revision-Date: 2020-10-02 13:16+0200\n" "Last-Translator: Benjamin Dauvergne \n" "Language-Team: french \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: src/authentic2_auth_oidc/admin.py:54 +#: src/authentic2_auth_oidc/admin.py:68 msgid "Organizational unit slug (ou__slug)" msgstr "Identifiant de collectivité" @@ -25,21 +25,27 @@ msgstr "Identifiant de collectivité" msgid "OpenIDConnect" msgstr "OpenID Connect" -#: src/authentic2_auth_oidc/models.py:39 +#: src/authentic2_auth_oidc/models.py:37 #, python-format msgid "Invalid JWKSet: %s" msgstr "Ensemble de clé JWK invalide : %s" -#: src/authentic2_auth_oidc/models.py:48 +#: src/authentic2_auth_oidc/models.py:47 msgid "create" msgstr "créer" -#: src/authentic2_auth_oidc/models.py:49 +#: src/authentic2_auth_oidc/models.py:48 msgid "use sub to find existing user through UUID" msgstr "" "utiliser l’identifiant technique (sub) pour trouver un usager grâce à son " "UUID" +#: src/authentic2_auth_oidc/models.py:49 +msgid "use sub to find existing user through username" +msgstr "" +"utiliser l’identifiant technique (sub) pour trouver un usager grâce à son " +"identifiant" + #: src/authentic2_auth_oidc/models.py:50 src/authentic2_auth_oidc/models.py:57 msgid "none" msgstr "Aucun(e)" @@ -56,175 +62,182 @@ msgstr "HMAC" msgid "EC" msgstr "EC" -#: src/authentic2_auth_oidc/models.py:66 +#: src/authentic2_auth_oidc/models.py:63 msgid "name" msgstr "nom" -#: src/authentic2_auth_oidc/models.py:70 +#: src/authentic2_auth_oidc/models.py:64 msgid "slug" msgstr "identifiant court (slug)" -#: src/authentic2_auth_oidc/models.py:75 +#: src/authentic2_auth_oidc/models.py:65 msgid "issuer" msgstr "émetteur" -#: src/authentic2_auth_oidc/models.py:81 +#: src/authentic2_auth_oidc/models.py:66 msgid "client id" msgstr "identifiant du client (client id)" -#: src/authentic2_auth_oidc/models.py:85 +#: src/authentic2_auth_oidc/models.py:67 msgid "client secret" msgstr "secret du client (client secret)" -#: src/authentic2_auth_oidc/models.py:89 +#: src/authentic2_auth_oidc/models.py:69 msgid "authorization endpoint" msgstr "point d’accès d’autorisation (authorization endpoint)" -#: src/authentic2_auth_oidc/models.py:92 +#: src/authentic2_auth_oidc/models.py:70 msgid "token endpoint" msgstr "point d’accès de jeton (token endpoint)" -#: src/authentic2_auth_oidc/models.py:95 +#: src/authentic2_auth_oidc/models.py:71 msgid "userinfo endpoint" msgstr "point d’accès d’information utilisateur (userinfo endpoint)" -#: src/authentic2_auth_oidc/models.py:100 +#: src/authentic2_auth_oidc/models.py:73 msgid "end session endpoint" msgstr "point d’accès de terminaison de session (end session endpont)" -#: src/authentic2_auth_oidc/models.py:105 +#: src/authentic2_auth_oidc/models.py:76 msgid "token revocation endpoint" msgstr "point d’accès de révocation de jeton (token revocation endpoint)" -#: src/authentic2_auth_oidc/models.py:109 +#: src/authentic2_auth_oidc/models.py:78 msgid "scopes" msgstr "portées (scopes)" -#: src/authentic2_auth_oidc/models.py:111 +#: src/authentic2_auth_oidc/models.py:80 msgid "JSON WebKey set" msgstr "ensemble de WebKey JSON" -#: src/authentic2_auth_oidc/models.py:118 +#: src/authentic2_auth_oidc/models.py:83 msgid "IDToken signature algorithm" msgstr "algorithme de signature IDToken" -#: src/authentic2_auth_oidc/models.py:120 +#: src/authentic2_auth_oidc/models.py:86 msgid "Claims parameter supported" msgstr "Paramètre de claim pris en charge" -#: src/authentic2_auth_oidc/models.py:127 +#: src/authentic2_auth_oidc/models.py:90 msgid "strategy" msgstr "stratégie" -#: src/authentic2_auth_oidc/models.py:130 +#: src/authentic2_auth_oidc/models.py:92 msgid "organizational unit" msgstr "unité d’organisation" -#: src/authentic2_auth_oidc/models.py:135 +#: src/authentic2_auth_oidc/models.py:97 msgid "max authentication age" msgstr "délai depuis la dernière authentification" -#: src/authentic2_auth_oidc/models.py:141 +#: src/authentic2_auth_oidc/models.py:101 msgid "show on login page" msgstr "afficher sur la page de connexion" -#: src/authentic2_auth_oidc/models.py:147 -#: src/authentic2_auth_oidc/models.py:216 -#: src/authentic2_auth_oidc/models.py:245 +#: src/authentic2_auth_oidc/models.py:104 +#: src/authentic2_auth_oidc/models.py:156 +#: src/authentic2_auth_oidc/models.py:185 msgid "created" msgstr "date de création" -#: src/authentic2_auth_oidc/models.py:150 -#: src/authentic2_auth_oidc/models.py:219 -#: src/authentic2_auth_oidc/models.py:248 +#: src/authentic2_auth_oidc/models.py:105 +#: src/authentic2_auth_oidc/models.py:157 +#: src/authentic2_auth_oidc/models.py:186 msgid "modified" msgstr "date de dernière modification" -#: src/authentic2_auth_oidc/models.py:187 +#: src/authentic2_auth_oidc/models.py:141 msgid "not verified" msgstr "déclaratif" -#: src/authentic2_auth_oidc/models.py:188 +#: src/authentic2_auth_oidc/models.py:142 msgid "verified claim" msgstr "accompagné d’un claim de certification" -#: src/authentic2_auth_oidc/models.py:189 +#: src/authentic2_auth_oidc/models.py:143 msgid "always verified" msgstr "certifié" -#: src/authentic2_auth_oidc/models.py:194 -#: src/authentic2_auth_oidc/models.py:252 +#: src/authentic2_auth_oidc/models.py:147 +#: src/authentic2_auth_oidc/models.py:188 msgid "provider" msgstr "fournisseur" -#: src/authentic2_auth_oidc/models.py:199 +#: src/authentic2_auth_oidc/models.py:149 msgid "claim" msgstr "claim" -#: src/authentic2_auth_oidc/models.py:202 +#: src/authentic2_auth_oidc/models.py:150 msgid "attribute" msgstr "attribut" -#: src/authentic2_auth_oidc/models.py:206 +#: src/authentic2_auth_oidc/models.py:152 msgid "verified" msgstr "vérifié" -#: src/authentic2_auth_oidc/models.py:210 +#: src/authentic2_auth_oidc/models.py:154 msgid "required" msgstr "requis" -#: src/authentic2_auth_oidc/models.py:212 +#: src/authentic2_auth_oidc/models.py:155 msgid "idtoken claim" msgstr "claim de l’idtoken" -#: src/authentic2_auth_oidc/models.py:257 +#: src/authentic2_auth_oidc/models.py:192 msgid "user" msgstr "utilisateur" -#: src/authentic2_auth_oidc/models.py:261 +#: src/authentic2_auth_oidc/models.py:196 msgid "sub" msgstr "sub" -#: src/authentic2_auth_oidc/utils.py:84 +#: src/authentic2_auth_oidc/templates/authentic2_auth_oidc/manager_user_sidebar.html:4 +#, python-format +msgid "Link with OIDC provider %(name)s created on %(created)s (sub %(sub)s)." +msgstr "" +"Liaison avec le fournisseur d'identité OIDC %(name)s créée le %(created)s " +"(sub %(sub)s)." + +#: src/authentic2_auth_oidc/utils.py:83 #, python-format msgid "Key ID %r not in key set" msgstr "L’identifiant de clé (Key ID) %r n’est pas dans le trousseau" -#: src/authentic2_auth_oidc/utils.py:90 +#: src/authentic2_auth_oidc/utils.py:89 #, python-format msgid "Error during token parsing: %s" msgstr "Erreur à l’analyse du jeton : %s" -#: src/authentic2_auth_oidc/utils.py:125 +#: src/authentic2_auth_oidc/utils.py:123 msgid "Encoded ID Token must be either binary or string data" msgstr "" "L’ID Token encodé doit être une donnée binaire ou une chaîne de caractères" -#: src/authentic2_auth_oidc/utils.py:134 +#: src/authentic2_auth_oidc/utils.py:132 msgid "invalid id_token" msgstr "id_token invalide" -#: src/authentic2_auth_oidc/utils.py:139 +#: src/authentic2_auth_oidc/utils.py:136 #, python-format msgid "missing field: %s" msgstr "champ manquant : %s" -#: src/authentic2_auth_oidc/utils.py:144 src/authentic2_auth_oidc/utils.py:147 +#: src/authentic2_auth_oidc/utils.py:140 src/authentic2_auth_oidc/utils.py:142 #, python-format msgid "invalid amr value: %s" msgstr "valeur amr invalide : %s" -#: src/authentic2_auth_oidc/utils.py:150 +#: src/authentic2_auth_oidc/utils.py:146 #, python-format msgid "invalid %(key)s value: %(value)s" msgstr "valeur %(key)s invalide : %(value)s" -#: src/authentic2_auth_oidc/utils.py:162 +#: src/authentic2_auth_oidc/utils.py:157 #, python-format msgid "invalid auth_time value: %s" msgstr "valeur auth_time invalide : %s" -#: src/authentic2_auth_oidc/utils.py:208 +#: src/authentic2_auth_oidc/utils.py:212 #, python-format msgid "" "Unable to reach the OpenID Connect configuration for %(issuer)s: %(error)s" @@ -232,33 +245,33 @@ msgstr "" "Impossible d’atteindre la configuration OpenID Connect pour %(issuer)s : " "%(error)s" -#: src/authentic2_auth_oidc/utils.py:217 +#: src/authentic2_auth_oidc/utils.py:222 msgid "MUST be a dictionnary" msgstr "DOIT être un dictionnaire" -#: src/authentic2_auth_oidc/utils.py:220 +#: src/authentic2_auth_oidc/utils.py:225 #, python-format msgid "missing keys %s" msgstr "clés manquantes %s" -#: src/authentic2_auth_oidc/utils.py:224 +#: src/authentic2_auth_oidc/utils.py:229 #, python-format msgid "%(key)s is not an https:// URL; %(value)s" msgstr "%(key)s n’est pas une URL https://; %(value)s" -#: src/authentic2_auth_oidc/utils.py:229 +#: src/authentic2_auth_oidc/utils.py:236 #, python-format msgid "Invalid OpenID Connect configuration for %(issuer)s: %(error)s" msgstr "Configuration OpenID Connect invalide pour %(issuer)s : %(error)s" -#: src/authentic2_auth_oidc/utils.py:232 +#: src/authentic2_auth_oidc/utils.py:238 msgid "" "authorization code flow is unsupported: code response type is unsupported" msgstr "" "Le flot « authorization code » n’est pas pris en charge, aucune des « code " "response type » n’est pris en charge." -#: src/authentic2_auth_oidc/utils.py:238 +#: src/authentic2_auth_oidc/utils.py:244 #, python-format msgid "" "Unable to reach the OpenID Connect JWKSet for %(issuer)s: %(url)s %(error)s" @@ -266,17 +279,17 @@ msgstr "" "Impossible d’atteindre l’ensemble de clés JWL pour %(issuer)s : %(url)s " "%(error)s" -#: src/authentic2_auth_oidc/utils.py:247 +#: src/authentic2_auth_oidc/utils.py:254 #, python-format msgid "Invalid JSKSet document: %s" msgstr "Ensemble de clés JWK invalide : %s" -#: src/authentic2_auth_oidc/utils.py:262 +#: src/authentic2_auth_oidc/utils.py:271 #, python-format msgid "no common algorithm found for signing idtokens: %s" msgstr "aucun algorithme commun trouvé pour signer les idtokens : %s" -#: src/authentic2_auth_oidc/utils.py:286 +#: src/authentic2_auth_oidc/utils.py:298 msgid "" "invalid issuer URL, it must use the https:// scheme and not have a query or " "fragment" @@ -284,36 +297,45 @@ msgstr "" "URL d’issuer invalide, elle doit utiliser le protocole https:// et n’avoir " "ni paramètre ni fragment" -#: src/authentic2_auth_oidc/views.py:160 +#: src/authentic2_auth_oidc/views.py:157 #, python-format msgid "Unknown OpenID connect issuer: \"%s\"" msgstr "Fournisseur OpenID Connect inconnu : \"%s\"" -#: src/authentic2_auth_oidc/views.py:176 +#: src/authentic2_auth_oidc/views.py:173 #, python-format msgid "Missing code, report %s to an administrator" msgstr "Code absent, signalez l’erreur %s à un administrateur." -#: src/authentic2_auth_oidc/views.py:201 src/authentic2_auth_oidc/views.py:213 -#: src/authentic2_auth_oidc/views.py:227 +#: src/authentic2_auth_oidc/views.py:223 +#, python-format +msgid "" +"Authentication on %(name)s failed with error \"%(error)s\", report " +"%(request_id)s to an administrator. " +msgstr "" +"L'authentification sur %(name)s a échoué avec l'erreur « %(error)s », vous " +"pouvez signaler le numéro d’erreur %(request_id)s à un administrateur." + +#: src/authentic2_auth_oidc/views.py:234 src/authentic2_auth_oidc/views.py:252 +#: src/authentic2_auth_oidc/views.py:268 src/authentic2_auth_oidc/views.py:287 #, python-format msgid "Provider %(name)s is down, report %(request_id)s to an administrator. " msgstr "" "Le fournisseur OpenID Connect %(name)s est défaillant, signalez l’erreur " "%(request_id)s à un administrateur." -#: src/authentic2_auth_oidc/views.py:251 +#: src/authentic2_auth_oidc/views.py:310 msgid "No user found" msgstr "Aucun utilisateur trouvé" -#: src/authentic2_auth_oidc/views.py:266 +#: src/authentic2_auth_oidc/views.py:327 #, python-format msgid "Login with %(name)s failed, report %(request_id)s to an administrator." msgstr "" "La connexion depuis %(name)s a échoué, vous pouvez signaler le numéro " "d’erreur %(request_id)s à un administrateur." -#: src/authentic2_auth_oidc/views.py:273 +#: src/authentic2_auth_oidc/views.py:336 #, python-format msgid "Login with OpenIDConnect failed, report %s to an administrator" msgstr "" diff --git a/src/authentic2_auth_saml/locale/fr/LC_MESSAGES/django.po b/src/authentic2_auth_saml/locale/fr/LC_MESSAGES/django.po index 015b3893a..fb8b29f78 100644 --- a/src/authentic2_auth_saml/locale/fr/LC_MESSAGES/django.po +++ b/src/authentic2_auth_saml/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: authentic2-auth-fc 1.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-04 21:22+0100\n" +"POT-Creation-Date: 2021-04-28 12:01+0200\n" "PO-Revision-Date: 2021-03-04 08:59+0100\n" "Last-Translator: Benjamin Dauvergne \n" "Language-Team: french \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: src/authentic2_auth_saml/adapters.py:82 +#: src/authentic2_auth_saml/adapters.py:80 #, python-format msgid "user creation failed on a mandatory mapping action: %s" msgstr "" @@ -34,3 +34,12 @@ msgstr "Connexion" #: src/authentic2_auth_saml/templates/authentic2_auth_saml/login.html:10 msgid "Cancel" msgstr "Annuler" + +#: src/authentic2_auth_saml/templates/authentic2_auth_saml/manager_user_sidebar.html:5 +#, python-format +msgid "" +"Link with SAML provider %(provider)s created on %(created)s (NameID " +"%(name_id)s)." +msgstr "" +"Liaison avec le fournisseur d'identité SAML %(provider)s créée le " +"%(created)s (NameID %(name_id)s)." diff --git a/src/authentic2_idp_cas/locale/fr/LC_MESSAGES/django.po b/src/authentic2_idp_cas/locale/fr/LC_MESSAGES/django.po index d90d43c74..abcfad174 100644 --- a/src/authentic2_idp_cas/locale/fr/LC_MESSAGES/django.po +++ b/src/authentic2_idp_cas/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: authentic2_idp_cas 1.0 \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-04 21:22+0100\n" +"POT-Creation-Date: 2021-04-28 12:01+0200\n" "PO-Revision-Date: 2020-09-21 15:57+0200\n" "Last-Translator: Benjamin Dauvergne \n" "Language: fr\n" @@ -17,43 +17,43 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: src/authentic2_idp_cas/admin.py:37 src/authentic2_idp_cas/admin.py:58 +#: src/authentic2_idp_cas/admin.py:39 src/authentic2_idp_cas/admin.py:56 msgid "None" msgstr "Aucun" -#: src/authentic2_idp_cas/admin.py:97 +#: src/authentic2_idp_cas/admin.py:101 msgid "Logout" msgstr "Déconnexion" -#: src/authentic2_idp_cas/models.py:32 +#: src/authentic2_idp_cas/models.py:34 msgid "urls" msgstr "URLs" -#: src/authentic2_idp_cas/models.py:33 src/authentic2_idp_cas/models.py:85 +#: src/authentic2_idp_cas/models.py:35 src/authentic2_idp_cas/models.py:85 msgid "attribute name" msgstr "nom de l’attribut" -#: src/authentic2_idp_cas/models.py:37 +#: src/authentic2_idp_cas/models.py:39 msgid "proxy" msgstr "mandataire" -#: src/authentic2_idp_cas/models.py:38 +#: src/authentic2_idp_cas/models.py:40 msgid "services who can request proxy tickets for this service" msgstr "" "autres applications qui peuvent demander un ticket mandataire vers cette " "application" -#: src/authentic2_idp_cas/models.py:50 +#: src/authentic2_idp_cas/models.py:53 #, python-format msgid "%s is an invalid URL" msgstr "%s n’est pas une URL valide" -#: src/authentic2_idp_cas/models.py:75 src/authentic2_idp_cas/models.py:82 -#: src/authentic2_idp_cas/models.py:108 +#: src/authentic2_idp_cas/models.py:78 src/authentic2_idp_cas/models.py:83 +#: src/authentic2_idp_cas/models.py:113 msgid "service" msgstr "application" -#: src/authentic2_idp_cas/models.py:76 +#: src/authentic2_idp_cas/models.py:79 msgid "services" msgstr "applications" @@ -73,39 +73,39 @@ msgstr "attribut pour les tickets" msgid "CAS attributes" msgstr "attributs pour les tickets" -#: src/authentic2_idp_cas/models.py:103 +#: src/authentic2_idp_cas/models.py:110 msgid "ticket id" msgstr "identifiant du ticket" -#: src/authentic2_idp_cas/models.py:104 +#: src/authentic2_idp_cas/models.py:111 msgid "fresh authentication" msgstr "nécessite une ré-authentification" -#: src/authentic2_idp_cas/models.py:105 +#: src/authentic2_idp_cas/models.py:112 msgid "valid" msgstr "valide" -#: src/authentic2_idp_cas/models.py:110 +#: src/authentic2_idp_cas/models.py:114 msgid "service URL" msgstr "URL de l’application" -#: src/authentic2_idp_cas/models.py:116 +#: src/authentic2_idp_cas/models.py:120 msgid "user" msgstr "utilisateur" -#: src/authentic2_idp_cas/models.py:118 +#: src/authentic2_idp_cas/models.py:123 msgid "creation" msgstr "date de création" -#: src/authentic2_idp_cas/models.py:119 +#: src/authentic2_idp_cas/models.py:124 msgid "expire" msgstr "date d’expiration" -#: src/authentic2_idp_cas/models.py:121 +#: src/authentic2_idp_cas/models.py:126 msgid "django session key" msgstr "clé de session django" -#: src/authentic2_idp_cas/models.py:122 +#: src/authentic2_idp_cas/models.py:128 msgid "proxies" msgstr "mandataires" diff --git a/src/authentic2_idp_oidc/locale/fr/LC_MESSAGES/django.po b/src/authentic2_idp_oidc/locale/fr/LC_MESSAGES/django.po index 64f2aa3ad..41298b6d5 100644 --- a/src/authentic2_idp_oidc/locale/fr/LC_MESSAGES/django.po +++ b/src/authentic2_idp_oidc/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Authentic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-04 21:22+0100\n" +"POT-Creation-Date: 2021-04-28 12:01+0200\n" "PO-Revision-Date: 2021-03-04 09:00+0100\n" "Last-Translator: Benjamin Dauvergne \n" "Language-Team: None\n" @@ -17,133 +17,133 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: src/authentic2_idp_oidc/models.py:67 src/authentic2_idp_oidc/models.py:329 -#: src/authentic2_idp_oidc/models.py:389 +#: src/authentic2_idp_oidc/models.py:64 src/authentic2_idp_oidc/models.py:295 +#: src/authentic2_idp_oidc/models.py:334 msgid "uuid" msgstr "identifiant unique interne" -#: src/authentic2_idp_oidc/models.py:68 +#: src/authentic2_idp_oidc/models.py:65 msgid "pairwise unreversible" msgstr "pseudonyme irréversible" -#: src/authentic2_idp_oidc/models.py:69 +#: src/authentic2_idp_oidc/models.py:66 msgid "pairwise reversible" msgstr "pseudonyme réversible" -#: src/authentic2_idp_oidc/models.py:70 +#: src/authentic2_idp_oidc/models.py:67 msgid "email" msgstr "courriel" -#: src/authentic2_idp_oidc/models.py:77 +#: src/authentic2_idp_oidc/models.py:74 msgid "HMAC" msgstr "HMAC" -#: src/authentic2_idp_oidc/models.py:78 +#: src/authentic2_idp_oidc/models.py:75 msgid "RSA" msgstr "RSA" -#: src/authentic2_idp_oidc/models.py:79 +#: src/authentic2_idp_oidc/models.py:76 msgid "EC" msgstr "EC" -#: src/authentic2_idp_oidc/models.py:85 +#: src/authentic2_idp_oidc/models.py:82 msgid "authorization code" msgstr "code d’autorisation" -#: src/authentic2_idp_oidc/models.py:86 +#: src/authentic2_idp_oidc/models.py:83 msgid "implicit/native" msgstr "implicite/natif" -#: src/authentic2_idp_oidc/models.py:87 +#: src/authentic2_idp_oidc/models.py:84 msgid "resource owner password credentials" msgstr "mot de passe du propriétaire de ressource" -#: src/authentic2_idp_oidc/models.py:94 +#: src/authentic2_idp_oidc/models.py:91 msgid "authorization by service" msgstr "autoriser par service" -#: src/authentic2_idp_oidc/models.py:95 +#: src/authentic2_idp_oidc/models.py:92 msgid "authorization by ou" msgstr "autoriser par collectivité" -#: src/authentic2_idp_oidc/models.py:96 +#: src/authentic2_idp_oidc/models.py:93 msgid "none" msgstr "aucun" -#: src/authentic2_idp_oidc/models.py:101 src/authentic2_idp_oidc/models.py:268 +#: src/authentic2_idp_oidc/models.py:97 src/authentic2_idp_oidc/models.py:243 msgid "client id" msgstr "Identifiant du client (client id)" -#: src/authentic2_idp_oidc/models.py:106 +#: src/authentic2_idp_oidc/models.py:99 msgid "client secret" msgstr "Secret du client (client secret)" -#: src/authentic2_idp_oidc/models.py:109 +#: src/authentic2_idp_oidc/models.py:101 msgid "time during which the token is valid" msgstr "durée de validité du jeton" -#: src/authentic2_idp_oidc/models.py:114 +#: src/authentic2_idp_oidc/models.py:104 msgid "time during which the access token is valid" msgstr "durée de validité du jeton d’accès" -#: src/authentic2_idp_oidc/models.py:121 +#: src/authentic2_idp_oidc/models.py:109 msgid "authorization mode" msgstr "mode d’autorisation" -#: src/authentic2_idp_oidc/models.py:123 +#: src/authentic2_idp_oidc/models.py:112 msgid "authorization flow" msgstr "processus d’autorisation" -#: src/authentic2_idp_oidc/models.py:127 +#: src/authentic2_idp_oidc/models.py:114 msgid "redirect URIs" msgstr "URIs de redirection" -#: src/authentic2_idp_oidc/models.py:130 +#: src/authentic2_idp_oidc/models.py:116 msgid "post logout redirect URIs" msgstr "URIs de redirection après déconnexion" -#: src/authentic2_idp_oidc/models.py:135 +#: src/authentic2_idp_oidc/models.py:118 msgid "sector identifier URI" msgstr "URI d’identifiant de secteur" -#: src/authentic2_idp_oidc/models.py:138 +#: src/authentic2_idp_oidc/models.py:120 msgid "identifier policy" msgstr "politique des identifiants" -#: src/authentic2_idp_oidc/models.py:142 +#: src/authentic2_idp_oidc/models.py:123 msgid "resource owner credentials grant scope" msgstr "portée de cession par crédentiels du propriétaire de la ressource" -#: src/authentic2_idp_oidc/models.py:143 +#: src/authentic2_idp_oidc/models.py:124 msgid "Permitted or default scopes (for credentials grant)" msgstr "Portées autorisées ou par défaut (pour la cession par crédentiels)" -#: src/authentic2_idp_oidc/models.py:149 +#: src/authentic2_idp_oidc/models.py:129 msgid "IDToken signature algorithm" msgstr "algorithme de signature de l’IDToken" -#: src/authentic2_idp_oidc/models.py:151 +#: src/authentic2_idp_oidc/models.py:131 msgid "has API access" msgstr "a accès à l’API" -#: src/authentic2_idp_oidc/models.py:154 +#: src/authentic2_idp_oidc/models.py:132 msgid "frontchannel logout URI" msgstr "URI de déconnexion frontchannel" -#: src/authentic2_idp_oidc/models.py:157 +#: src/authentic2_idp_oidc/models.py:134 msgid "frontchannel timeout" msgstr "temps d’expiration pour la déconnexion frontchannel" -#: src/authentic2_idp_oidc/models.py:167 src/authentic2_idp_oidc/models.py:280 -#: src/authentic2_idp_oidc/models.py:358 src/authentic2_idp_oidc/models.py:408 +#: src/authentic2_idp_oidc/models.py:142 src/authentic2_idp_oidc/models.py:249 +#: src/authentic2_idp_oidc/models.py:306 src/authentic2_idp_oidc/models.py:341 msgid "created" msgstr "créé" -#: src/authentic2_idp_oidc/models.py:170 +#: src/authentic2_idp_oidc/models.py:143 msgid "modified" msgstr "modifié" -#: src/authentic2_idp_oidc/models.py:181 +#: src/authentic2_idp_oidc/models.py:153 #, python-format msgid "" "You cannot use algorithm %(algorithm)s, setting A2_IDP_OIDC_JWKSET is not " @@ -152,7 +152,7 @@ msgstr "" "Impossible d’utiliser l’algorithme %(algorithm)s, le paramètre " "A2_IDP_OIDC_JWKSET n’est pas défini." -#: src/authentic2_idp_oidc/models.py:188 +#: src/authentic2_idp_oidc/models.py:162 msgid "" "Redirect URIs must have the same domain or you must define a sector " "identifier URI if you want to use pairwiseidentifiers" @@ -160,64 +160,64 @@ msgstr "" "Les URIs de redirection doivent avoir le même domaine ou vous devez définir " "une URL d’identifiant de secteur si vous souhaitez utiliser des pseudonymes." -#: src/authentic2_idp_oidc/models.py:250 +#: src/authentic2_idp_oidc/models.py:224 msgid "OU-based authorization requires that the client be within an OU." msgstr "" "Le mode d’autorisation par collectivité nécessite d’en sélectionner une." -#: src/authentic2_idp_oidc/models.py:265 +#: src/authentic2_idp_oidc/models.py:241 msgid "client ct" msgstr "type de contenu du client" -#: src/authentic2_idp_oidc/models.py:272 src/authentic2_idp_oidc/models.py:337 -#: src/authentic2_idp_oidc/models.py:397 +#: src/authentic2_idp_oidc/models.py:245 src/authentic2_idp_oidc/models.py:297 +#: src/authentic2_idp_oidc/models.py:336 msgid "user" msgstr "utilisateur" -#: src/authentic2_idp_oidc/models.py:276 src/authentic2_idp_oidc/models.py:340 -#: src/authentic2_idp_oidc/models.py:400 +#: src/authentic2_idp_oidc/models.py:246 src/authentic2_idp_oidc/models.py:298 +#: src/authentic2_idp_oidc/models.py:337 msgid "scopes" msgstr "portées (scopes)" -#: src/authentic2_idp_oidc/models.py:283 src/authentic2_idp_oidc/models.py:361 -#: src/authentic2_idp_oidc/models.py:411 +#: src/authentic2_idp_oidc/models.py:250 src/authentic2_idp_oidc/models.py:307 +#: src/authentic2_idp_oidc/models.py:342 msgid "expire" msgstr "expiration" -#: src/authentic2_idp_oidc/models.py:333 src/authentic2_idp_oidc/models.py:393 -#: src/authentic2_idp_oidc/models.py:449 +#: src/authentic2_idp_oidc/models.py:296 src/authentic2_idp_oidc/models.py:335 +#: src/authentic2_idp_oidc/models.py:378 msgid "client" msgstr "client" -#: src/authentic2_idp_oidc/models.py:343 +#: src/authentic2_idp_oidc/models.py:299 msgid "state" msgstr "statut" -#: src/authentic2_idp_oidc/models.py:346 +#: src/authentic2_idp_oidc/models.py:300 msgid "nonce" msgstr "nonce" -#: src/authentic2_idp_oidc/models.py:348 +#: src/authentic2_idp_oidc/models.py:301 msgid "redirect URI" msgstr "URI de redirection" -#: src/authentic2_idp_oidc/models.py:351 src/authentic2_idp_oidc/models.py:402 +#: src/authentic2_idp_oidc/models.py:302 src/authentic2_idp_oidc/models.py:338 msgid "session key" msgstr "clé de session" -#: src/authentic2_idp_oidc/models.py:354 +#: src/authentic2_idp_oidc/models.py:303 msgid "auth time" msgstr "date d’autorisation" -#: src/authentic2_idp_oidc/models.py:453 +#: src/authentic2_idp_oidc/models.py:379 msgid "attribute name" msgstr "nom d’attribut" -#: src/authentic2_idp_oidc/models.py:456 +#: src/authentic2_idp_oidc/models.py:380 msgid "attribute value" msgstr "valeur de l’attribut" -#: src/authentic2_idp_oidc/models.py:459 +#: src/authentic2_idp_oidc/models.py:381 msgid "attribute scopes" msgstr "portées (scopes) liées à cet attribut" @@ -259,40 +259,40 @@ msgstr "Refuser" msgid "Sending logout to %(name)s..." msgstr "Déconnexion de %(name)s…" -#: src/authentic2_idp_oidc/views.py:108 +#: src/authentic2_idp_oidc/views.py:123 #, python-format msgid "OpenIDConnect Error \"%(error_code)s\": %(error_description)s" msgstr "Erreur OpenID Connect « %(error_code)s » : %(error_description)s" -#: src/authentic2_idp_oidc/views.py:132 +#: src/authentic2_idp_oidc/views.py:146 #, python-format msgid "Missing parameter \"%s\"" msgstr "Paramètre « %s » manquant" -#: src/authentic2_idp_oidc/views.py:167 +#: src/authentic2_idp_oidc/views.py:181 msgid "Wrong client identifier" msgstr "Mauvais identifiant de client" -#: src/authentic2_idp_oidc/views.py:171 +#: src/authentic2_idp_oidc/views.py:185 msgid "Wrong client secret" msgstr "Mauvais secret de client" -#: src/authentic2_idp_oidc/views.py:229 +#: src/authentic2_idp_oidc/views.py:245 #, python-format msgid "Unknown client identifier: \"%s\"" msgstr "Identifiant de client inconnu : « %s »" -#: src/authentic2_idp_oidc/views.py:234 +#: src/authentic2_idp_oidc/views.py:249 #, python-format msgid "Redirect URI \"%s\" is unknown." msgstr "L’URI de redirection « %s » est inconnue." -#: src/authentic2_idp_oidc/views.py:238 +#: src/authentic2_idp_oidc/views.py:251 #, python-format msgid " Known redirect URIs are: %s" msgstr "Les URIs de redirection connues sont : %s" -#: src/authentic2_idp_oidc/views.py:268 +#: src/authentic2_idp_oidc/views.py:284 msgid "" "Client is configured for resource owner password credentials grant, " "authorize endpoint is not usable" @@ -300,20 +300,20 @@ msgstr "" "Le client est configuré pour le type de cession par crédentiels du " "propriétaire de la ressource, l’endpoint d’autorisation n’est pas utilisable." -#: src/authentic2_idp_oidc/views.py:273 +#: src/authentic2_idp_oidc/views.py:290 msgid "Response type must be \"code\"" msgstr "Le type de réponse doit être « code »" -#: src/authentic2_idp_oidc/views.py:277 +#: src/authentic2_idp_oidc/views.py:293 msgid "Response type must be \"id_token token\" or \"id_token\"" msgstr "Le type de réponse doit être « id_token token » ou « id_token »" -#: src/authentic2_idp_oidc/views.py:288 +#: src/authentic2_idp_oidc/views.py:303 #, python-format msgid "Scope must contain \"openid\", received \"%s\"" msgstr "La portée (scope) doit contenir « openid », mais « %s » a été reçu" -#: src/authentic2_idp_oidc/views.py:292 +#: src/authentic2_idp_oidc/views.py:306 #, python-format msgid "" "Scope may contain \"%(allowed_scopes)s\" scope(s), received \"%(scopes)s\"" @@ -321,47 +321,47 @@ msgstr "" "La portée (scope) peut contenir « %(allowed_scopes)s », mais « %(scopes)s » " "a été reçu" -#: src/authentic2_idp_oidc/views.py:305 +#: src/authentic2_idp_oidc/views.py:321 msgid "Parameter \"max_age\" must be a positive integer" msgstr "Le paramètre « max_age » doit être un entier positif" -#: src/authentic2_idp_oidc/views.py:309 +#: src/authentic2_idp_oidc/views.py:325 msgid "Authentication cancelled by user" msgstr "Authentification annulée par l’usager" -#: src/authentic2_idp_oidc/views.py:313 +#: src/authentic2_idp_oidc/views.py:329 msgid "Login is required but prompt parameter is \"none\"" msgstr "" "La connexion est requise mais le paramètre d’invite (prompt) vaut « none »" -#: src/authentic2_idp_oidc/views.py:326 +#: src/authentic2_idp_oidc/views.py:342 msgid "Login is required because of max_age, but prompt parameter is \"none\"" msgstr "" "La connexion est de nouveau requise (max_age atteint), mais le paramètre " "d’invite (prompt) vaut « none »" -#: src/authentic2_idp_oidc/views.py:356 +#: src/authentic2_idp_oidc/views.py:374 msgid "Consent is required but prompt parameter is \"none\"" msgstr "" "Le consentement est requis mais le paramètre d’invite (prompt) vaut « none »" -#: src/authentic2_idp_oidc/views.py:383 +#: src/authentic2_idp_oidc/views.py:399 msgid "User did not consent" msgstr "L’usager n’a pas donné son consentement" -#: src/authentic2_idp_oidc/views.py:542 +#: src/authentic2_idp_oidc/views.py:566 #, python-format msgid "Rate limit exceeded for IP address \"%s\"" msgstr "Nombre maximal de tentatives atteint pour l’adresse IP « %s »" -#: src/authentic2_idp_oidc/views.py:548 +#: src/authentic2_idp_oidc/views.py:573 #, python-format msgid "Rate limit of %(ratelimit)s exceeded for client \"%(client)s\"" msgstr "" "Fréquence maximale de tentatives valant %(ratelimit)s atteinte pour le " "client « %(client)s »" -#: src/authentic2_idp_oidc/views.py:555 +#: src/authentic2_idp_oidc/views.py:580 msgid "" "Wrong content type. request content type must be 'application/x-www-form-" "urlencoded'" @@ -369,7 +369,7 @@ msgstr "" "Mauvais type de corps de requête (content type), le type doit être " "« application/x-www-form-urlencoded »" -#: src/authentic2_idp_oidc/views.py:565 +#: src/authentic2_idp_oidc/views.py:592 msgid "" "Request must bear both username and password as parameters using the " "\"application/x-www-form-urlencoded\" media type" @@ -378,13 +378,13 @@ msgstr "" "de passe (password) en tant que paramètre à l’aide du type de média " "« application/x-www-form-urlencoded »" -#: src/authentic2_idp_oidc/views.py:571 +#: src/authentic2_idp_oidc/views.py:601 msgid "Client is not configured for resource owner password credential grant" msgstr "" "Le client n’est pas configuré pour le type de cession par crédentiels du " "propriétaire de la ressource" -#: src/authentic2_idp_oidc/views.py:585 +#: src/authentic2_idp_oidc/views.py:616 #, python-format msgid "" "Too many attempts with erroneous RO password, you must wait %s seconds to " @@ -393,45 +393,45 @@ msgstr "" "Trop de tentatives avec un mot de passe de l’usager erroné, vous devez " "attendre %s secondes avant de pouvoir essayer à nouveau." -#: src/authentic2_idp_oidc/views.py:594 +#: src/authentic2_idp_oidc/views.py:627 msgid "Parameter \"ou_slug\" does not match an existing organizational unit" msgstr "Le paramètre « ou_slug » ne correspond à aucune collectivité existante" -#: src/authentic2_idp_oidc/views.py:599 +#: src/authentic2_idp_oidc/views.py:633 msgid "Invalid user credentials" msgstr "Mauvaises informations de connexion de l’usager" -#: src/authentic2_idp_oidc/views.py:653 +#: src/authentic2_idp_oidc/views.py:683 msgid "Parameter \"code\" is invalid" msgstr "Le paramètre « code » n’est pas valide" -#: src/authentic2_idp_oidc/views.py:655 +#: src/authentic2_idp_oidc/views.py:685 msgid "Parameter \"code\" has expired or user is disconnected" msgstr "" "Le paramètre « code » est arrivé à expiration, ou bien l’usager s’est " "déconnecté" -#: src/authentic2_idp_oidc/views.py:659 +#: src/authentic2_idp_oidc/views.py:689 msgid "Parameter \"redirect_uri\" does not match the code." msgstr "Le paramètre « redirect_uri » ne correspond pas au code." -#: src/authentic2_idp_oidc/views.py:731 +#: src/authentic2_idp_oidc/views.py:763 msgid "Bearer authentication is mandatory" msgstr "L’authentification Bearer est obligatoire" -#: src/authentic2_idp_oidc/views.py:734 +#: src/authentic2_idp_oidc/views.py:766 msgid "Invalid Bearer authentication" msgstr "Authentification Bearer invalide" -#: src/authentic2_idp_oidc/views.py:738 +#: src/authentic2_idp_oidc/views.py:770 msgid "Token unknown" msgstr "Jeton inconnu" -#: src/authentic2_idp_oidc/views.py:740 +#: src/authentic2_idp_oidc/views.py:772 msgid "Token expired or user disconnected" msgstr "Le jeton est arrivé à expiration, ou bien l’usager s’est déconnecté" -#: src/authentic2_idp_oidc/views.py:773 +#: src/authentic2_idp_oidc/views.py:807 msgid "Invalid post logout URI" msgstr "URI de retour après déconnexion invalide" diff --git a/src/django_rbac/locale/fr/LC_MESSAGES/django.po b/src/django_rbac/locale/fr/LC_MESSAGES/django.po index 938d3c468..585e80ef0 100644 --- a/src/django_rbac/locale/fr/LC_MESSAGES/django.po +++ b/src/django_rbac/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: django-rbac\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-03-04 21:22+0100\n" +"POT-Creation-Date: 2021-04-28 12:01+0200\n" "PO-Revision-Date: 2020-09-21 15:52+0200\n" "Last-Translator: Benjamin Dauvergner \n" "Language: \n" @@ -16,69 +16,69 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: src/django_rbac/models.py:30 +#: src/django_rbac/models.py:31 msgid "uuid" msgstr "Identifiant unique" -#: src/django_rbac/models.py:35 +#: src/django_rbac/models.py:32 msgid "name" msgstr "nom" -#: src/django_rbac/models.py:38 src/django_rbac/models.py:107 +#: src/django_rbac/models.py:33 src/django_rbac/models.py:98 msgid "slug" msgstr "identifiant court" -#: src/django_rbac/models.py:40 +#: src/django_rbac/models.py:34 msgid "description" msgstr "description" -#: src/django_rbac/models.py:74 src/django_rbac/models.py:99 -#: src/django_rbac/models.py:142 +#: src/django_rbac/models.py:66 src/django_rbac/models.py:92 +#: src/django_rbac/models.py:130 msgid "organizational unit" msgstr "collectivité" -#: src/django_rbac/models.py:100 +#: src/django_rbac/models.py:93 msgid "organizational units" msgstr "entités" -#: src/django_rbac/models.py:138 +#: src/django_rbac/models.py:127 msgid "operation" msgstr "opération" -#: src/django_rbac/models.py:182 +#: src/django_rbac/models.py:166 #, python-brace-format msgid " (scope \"{0}\")" msgstr " (portée « {0} »)" -#: src/django_rbac/models.py:196 +#: src/django_rbac/models.py:178 msgid "permission" msgstr "permission" -#: src/django_rbac/models.py:197 +#: src/django_rbac/models.py:179 msgid "permissions" msgstr "permissions" -#: src/django_rbac/models.py:260 +#: src/django_rbac/models.py:238 msgid "role" msgstr "rôle" -#: src/django_rbac/models.py:261 +#: src/django_rbac/models.py:239 msgid "roles" msgstr "rôles" -#: src/django_rbac/models.py:295 +#: src/django_rbac/models.py:272 msgid "role parenting relation" msgstr "relation de parenté entre rôles" -#: src/django_rbac/models.py:296 +#: src/django_rbac/models.py:273 msgid "role parenting relations" msgstr "relations de parenté entre rôles" -#: src/django_rbac/models.py:306 +#: src/django_rbac/models.py:284 msgid "superuser status" msgstr "statut super-utilisateur" -#: src/django_rbac/models.py:307 +#: src/django_rbac/models.py:286 msgid "" "Designates that this user has all permissions without explicitly assigning " "them." @@ -86,11 +86,11 @@ msgstr "" "Donne à cet utilisateur toutes les permissions sans les lui assigner de " "manière explicite." -#: src/django_rbac/models.py:311 +#: src/django_rbac/models.py:290 msgid "groups" msgstr "groupes" -#: src/django_rbac/models.py:313 +#: src/django_rbac/models.py:293 msgid "" "The groups this user belongs to. A user will get all permissions granted to " "each of his/her group." @@ -98,34 +98,34 @@ msgstr "" "Les groupes auxquels cet utilisateur appartient. Un utilisateur obtient " "toutes les permissions accordées à chacun de ses groupes." -#: src/django_rbac/models.py:318 +#: src/django_rbac/models.py:302 msgid "user permissions" msgstr "permissions de l’utilisateur" -#: src/django_rbac/models.py:319 +#: src/django_rbac/models.py:304 msgid "Specific permissions for this user." msgstr "Permissions spécifiques à cet utilisateur." -#: src/django_rbac/models.py:418 +#: src/django_rbac/models.py:405 msgid "Management" msgstr "Administration" -#: src/django_rbac/models.py:419 +#: src/django_rbac/models.py:406 msgid "Change" msgstr "Modification" -#: src/django_rbac/models.py:420 +#: src/django_rbac/models.py:407 msgid "Delete" msgstr "Suppression" -#: src/django_rbac/models.py:421 +#: src/django_rbac/models.py:408 msgid "Add" msgstr "Ajout" -#: src/django_rbac/models.py:422 +#: src/django_rbac/models.py:409 msgid "View" msgstr "Visualisation" -#: src/django_rbac/models.py:423 +#: src/django_rbac/models.py:410 msgid "Search" msgstr "Recherche"