feat: activity screen in the SPA, route /activity

This commit is contained in:
fsylvain committed 2026-10-07 01:48:21 +02:00
1 parent e37a46a027
commit 35db442cd3
47 files changed
+7582 -11

No files matched your search

+179
View File
@@ -1004,6 +1004,185 @@ export const messages = {
'La médiathèque a changé, rien n’a donc été purgé. Vérifiez le nouveau récapitulatif et réessayez.',
'A purge is already running.': 'Une purge est déjà en cours.',
'Duplicates purged': 'Doublons purgés',
Activity: 'Activité',
'My activity': 'Mon activité',
'Who did what, and when, across your site.': 'Qui a fait quoi, et quand, sur votre site.',
"Everything you've done on this site.": 'Tout ce que vous avez fait sur ce site.',
'Export CSV': 'Exporter en CSV',
'Preparing file…': 'Préparation du fichier…',
'Export started. Your file will download shortly.':
'Export lancé. Votre fichier va se télécharger sous peu.',
"Couldn't export activity. Try again.": "Impossible d'exporter l'activité. Réessayez.",
'Total actions': 'Actions au total',
'Active people': 'Personnes actives',
'Failed actions': 'Actions en échec',
'Security events': 'Événements de sécurité',
'{0}% vs previous 7 days': '{0} % par rapport aux 7 jours précédents',
'{0}% vs previous day': '{0} % par rapport au jour précédent',
'{0}% vs previous 30 days': '{0} % par rapport aux 30 jours précédents',
'{0}% vs previous period': '{0} % par rapport à la période précédente',
'No earlier data': 'Aucune donnée antérieure',
'No change': 'Aucun changement',
'No data yet': 'Aucune donnée pour le moment',
'{0} people': '{0} personnes',
'1 person': '1 personne',
'{0} API keys': "{0} clés d'API",
'1 API key': "1 clé d'API",
'{0}% of all actions': '{0} % de toutes les actions',
'{0} flagged': '{0} signalés',
'1 flagged': '1 signalé',
'Nothing failed': 'Aucun échec',
'Nothing to flag': 'Rien à signaler',
'Search activity': "Rechercher dans l'activité",
'All people': 'Toutes les personnes',
'All categories': 'Toutes les catégories',
Succeeded: 'Réussie',
Failed: 'Échec',
'7 days': '7 jours',
'30 days': '30 jours',
Custom: 'Personnalisée',
Person: 'Personne',
Category: 'Catégorie',
Outcome: 'Résultat',
Dates: 'Dates',
Filters: 'Filtres',
'Clear all': 'Tout effacer',
'Search: {0}': 'Recherche : {0}',
'Person: {0}': 'Personne : {0}',
'Category: {0}': 'Catégorie : {0}',
'Outcome: {0}': 'Résultat : {0}',
'Dates: {0}': 'Dates : {0}',
'Remove filter {0}': 'Retirer le filtre {0}',
'Show {0} results': 'Afficher {0} résultats',
'Show 1 result': 'Afficher 1 résultat',
'Showing {0}–{1} of {2}': 'Affichage de {0} à {1} sur {2}',
'Page {0} of {1}': 'Page {0} sur {1}',
'{0}–{1} of {2}': '{0} à {1} sur {2}',
'Rows per page': 'Lignes par page',
'Previous page': 'Page précédente',
'Next page': 'Page suivante',
'Start date': 'Date de début',
'End date': 'Date de fin',
When: 'Quand',
Actor: 'Acteur',
Action: 'Action',
Target: 'Cible',
'Not signed in': 'Non connecté',
Deleted: 'Supprimé',
'Target deleted': 'Cible supprimée',
Security: 'Sécurité',
Article: 'Article',
User: 'Utilisateur',
Invite: 'Invitation',
Release: 'Version',
'{0} min ago': 'Il y a {0} min',
'{0} h ago': 'Il y a {0} h',
'No activity yet': 'Aucune activité pour le moment',
'Actions on articles, media, users and API keys will appear here.':
"Les actions sur les articles, les médias, les utilisateurs et les clés d'API apparaîtront ici.",
'Your actions will appear here once you start working on the site.':
'Vos actions apparaîtront ici dès que vous commencerez à travailler sur le site.',
'No activity matches these filters': 'Aucune activité ne correspond à ces filtres',
'Try a different search or a wider date range.':
'Essayez une autre recherche ou une période plus large.',
"Couldn't load activity": "Impossible de charger l'activité",
"You can't view this activity": 'Vous ne pouvez pas consulter cette activité',
"Your role doesn't include this page. Ask an owner or admin if you need access.":
"Votre rôle n'inclut pas cette page. Demandez à un propriétaire ou à un administrateur si vous avez besoin d'y accéder.",
'Back to home': "Retour à l'accueil",
'Loading activity': "Chargement de l'activité",
'Activity details': "Détails de l'activité",
'Why it failed': "Raison de l'échec",
Source: 'Source',
'IP address': 'Adresse IP',
Browser: 'Navigateur',
'Web app': 'Application web',
'System task': 'Tâche système',
'Not applicable': 'Sans objet',
Changes: 'Modifications',
Before: 'Avant',
After: 'Après',
'Show more': 'Voir plus',
'Show less': 'Voir moins',
'Previous event': 'Événement précédent',
'Next event': 'Événement suivant',
'Event {0} of {1}': 'Événement {0} sur {1}',
'{0} of {1}': '{0} sur {1}',
'{0} (your time)': '{0} (votre heure)',
'{0} UTC': '{0} UTC',
'This item was deleted. Its name is kept for reference.':
'Cet élément a été supprimé. Son nom est conservé pour référence.',
'Body edited ({0} characters)': 'Corps modifié ({0} caractères)',
'Body edited ({0} character)': 'Corps modifié ({0} caractère)',
'Publish state': 'État de publication',
Body: 'Corps',
'File name': 'Nom du fichier',
Published: 'Publié',
'Created the article {0}': 'Article créé : {0}',
'Edited the article {0}': 'Article modifié : {0}',
'Published the article {0}': 'Article publié : {0}',
'Unpublished the article {0}': 'Article dépublié : {0}',
'Deleted the article {0}': 'Article supprimé : {0}',
'Uploaded the image {0}': 'Image téléversée : {0}',
'Renamed the image {0}': 'Image renommée : {0}',
'Deleted the image {0}': 'Image supprimée : {0}',
'Merged duplicates into the image {0}': "Doublons fusionnés dans l'image {0}",
'Purged duplicate images: {0}': 'Doublons purgés : {0}',
'Ran the scheduled duplicate purge: {0}': 'Purge automatique des doublons : {0}',
'{0} articles updated': '{0} articles mis à jour',
'1 article updated': '1 article mis à jour',
'{0} groups failed': '{0} groupes en échec',
'1 group failed': '1 groupe en échec',
'Registered the account {0}': 'Compte créé : {0}',
'Verified the account {0}': 'Compte vérifié : {0}',
'Updated the profile of {0}': 'Profil mis à jour : {0}',
'Invited {0}': 'Invitation envoyée à {0}',
'Cancelled the invite for {0}': 'Invitation annulée : {0}',
'Renewed the invite for {0}': 'Invitation renouvelée : {0}',
'Accepted the invite for {0}': 'Invitation acceptée : {0}',
'Created API key {0}': "Clé d'API créée : {0}",
'Revoked API key {0}': "Clé d'API révoquée : {0}",
'Logged in': 'Connexion',
'Logged out': 'Déconnexion',
'Requested a password reset': 'Réinitialisation du mot de passe demandée',
'Reset the password': 'Mot de passe réinitialisé',
'Checked for updates': 'Recherche de mises à jour',
'Downloaded the update {0}': 'Mise à jour téléchargée : {0}',
'Requested a restart': 'Redémarrage demandé',
'Restarted to apply the update {0}': 'Redémarrage pour appliquer la mise à jour {0}',
'Changed the activity retention from {0} to {1}':
"Durée de conservation de l'activité modifiée : {0} → {1}",
'Removed {0} old events from the activity log':
"{0} anciens événements supprimés du journal d'activité",
'Removed 1 old event from the activity log':
"1 ancien événement supprimé du journal d'activité",
'{0} days': '{0} jours',
Forever: 'Toujours',
'Failed to create the article {0}': "Échec de la création de l'article {0}",
'Failed to edit the article {0}': "Échec de la modification de l'article {0}",
'Failed to publish the article {0}': "Échec de la publication de l'article {0}",
'Failed to unpublish the article {0}': "Échec de la dépublication de l'article {0}",
'Failed to delete the article {0}': "Échec de la suppression de l'article {0}",
'Failed to upload the image {0}': "Échec du téléversement de l'image {0}",
'Failed to rename the image {0}': "Échec du renommage de l'image {0}",
'Failed to delete the image {0}': "Échec de la suppression de l'image {0}",
'Failed to merge duplicates into the image {0}':
"Échec de la fusion des doublons dans l'image {0}",
'Failed to purge duplicate images': 'Échec de la purge des doublons',
'Failed to run the scheduled duplicate purge': 'Échec de la purge automatique des doublons',
'Failed to register the account {0}': 'Échec de la création du compte {0}',
'Failed to verify the account {0}': 'Échec de la vérification du compte {0}',
'Failed to update the profile of {0}': 'Échec de la mise à jour du profil de {0}',
'Failed to invite {0}': "Échec de l'invitation de {0}",
'Failed to cancel the invite for {0}': "Échec de l'annulation de l'invitation de {0}",
'Failed to renew the invite for {0}': "Échec du renouvellement de l'invitation de {0}",
'Failed to accept the invite for {0}': "Échec de l'acceptation de l'invitation de {0}",
'Failed to create API key {0}': "Échec de la création de la clé d'API {0}",
'Failed to revoke API key {0}': "Échec de la révocation de la clé d'API {0}",
'Failed login attempt for {0}': 'Échec de connexion pour {0}',
'Failed to check for updates': 'Échec de la recherche de mises à jour',
'Failed to download the update {0}': 'Échec du téléchargement de la mise à jour {0}',
'Failed to restart': 'Échec du redémarrage',
} as const
export type MessageKey = keyof typeof messages