fix: technical debts left by the Sites, Authors and SEO slices, plus backend support for the new Sites and Authors pagination

This commit is contained in:
Florian Sylvain committed 2026-10-19 00:25:31 +02:00
1 parent 9f4ce426a8
commit daf3594316
86 files changed
+4223 -1485

No files matched your search

+18 -39
View File
@@ -586,7 +586,6 @@ export const messages = {
Accepted: 'Acceptée',
Expired: 'Expirée',
Owner: 'Propriétaire',
Member: 'Membre',
You: 'Vous',
'Renew invite': 'Renouveler l’invitation',
'Renewing…': 'Renouvellement…',
@@ -608,17 +607,8 @@ export const messages = {
'Your site reads published articles from RenewCMS. Share this guide with whoever builds it.':
'Votre site lit les articles publiés dans RenewCMS. Partagez ce guide avec la personne qui le développe.',
'Open the guide': 'Ouvrir le guide',
'A guide for the developer who builds your public site.':
'Un guide pour la personne qui développe votre site public.',
"RenewCMS is headless: it stores and publishes your articles but doesn't show them to visitors. Your website fetches published articles from the two addresses below and displays them in its own design.":
'RenewCMS stocke et publie vos articles sans les afficher aux visiteurs. Votre site récupère les articles publiés aux deux adresses ci-dessous et les affiche selon son propre design.',
'Base URL': 'URL de base',
'Public API URL': 'URL de l’API publique',
'Lists every online article.': 'Liste tous les articles publiés.',
'Returns one online article. Drafts and unknown ids both return 404.':
'Renvoie un article publié. Les brouillons et les identifiants inconnus renvoient 404.',
'Anonymous callers only ever get online articles. Drafts stay private until you publish them.':
'Les requêtes anonymes n’obtiennent que les articles publiés. Les brouillons restent privés jusqu’à leur publication.',
"Browsers can only call the API from origins listed in the server's CORS setting. Ask whoever runs the server to add your site's address.":
'Les navigateurs ne peuvent appeler l’API que depuis les origines autorisées par le paramètre CORS du serveur. Demandez à la personne qui gère le serveur d’ajouter l’adresse de votre site.',
Response: 'Réponse',
@@ -773,7 +763,6 @@ export const messages = {
"You're offline. You can look through the images that are loaded, but uploading, renaming and deleting need a connection.":
'Vous êtes hors ligne. Vous pouvez consulter les images chargées, mais l’importation, le renommage et la suppression nécessitent une connexion.',
"You're offline": 'Vous êtes hors ligne',
"You're back online": 'Vous êtes de nouveau en ligne',
'{0} — account menu': '{0} — menu du compte',
"You're logged in as {0}.": 'Vous êtes connecté en tant que {0}.',
'Counted from the text of your articles each time you open this page.':
@@ -794,8 +783,6 @@ export const messages = {
"It's": 'Elle est',
'All {0} are': 'Les {0} sont',
'{0} used in {1}, {2} {3}': '{0} utilisées dans {1}, {2} {3}',
'{0} {1} attention': '{0} {1} votre attention',
'{0} {1} rejected': '{0} {1} refusées',
'{0} {1} the same content.': '{0} {1} le même contenu.',
'{0} · RenewCMS': '{0} · RenewCMS',
Enter: 'Entrée',
@@ -804,7 +791,6 @@ export const messages = {
'Delete {0}?': 'Supprimer {0} ?',
'Delete {0}': 'Supprimer {0}',
'Used in {0}': 'Utilisée dans {0}',
'Copy {0} example': 'Copier l’exemple {0}',
'Drop to upload': 'Déposez pour importer',
'Drop an image here, or choose a file': 'Déposez une image ici ou choisissez un fichier',
'Send invite': 'Envoyer l’invitation',
@@ -823,8 +809,6 @@ export const messages = {
'Choose a new password': 'Choisir un nouveau mot de passe',
'Changing password…': 'Modification du mot de passe…',
'Change password': 'Modifier le mot de passe',
'Images in body use paths like /static/uploadedImages/<uuid>.png. Prefix them with the base URL before rendering.':
'Les images du contenu utilisent des chemins comme /static/uploadedImages/<uuid>.png. Ajoutez l’URL de base avant de les afficher.',
selected: 'sélectionnées',
you: 'vous',
now: 'maintenant',
@@ -847,13 +831,6 @@ export const messages = {
'{0} files were rejected': '{0} fichiers ont été refusés',
'{0} file needs attention': '{0} fichier nécessite votre attention',
'{0} files need attention': '{0} fichiers nécessitent votre attention',
'{0} has the same content.': '{0} a le même contenu.',
'{0} have the same content.': '{0} ont le même contenu.',
'{0} images · {1} selected': '{0} images · {1} sélectionnées',
'image, {0} selected': 'image, {0} sélectionnée',
'images, {0} selected': 'images, {0} sélectionnées',
'Used in 1 article': 'Utilisée dans 1 article',
'Used in {0} articles': 'Utilisée dans {0} articles',
'API keys': 'Clés d’API',
'Create key': 'Créer une clé',
Key: 'Clé',
@@ -1651,12 +1628,11 @@ export const messages = {
'List keys': 'Lister les clés',
'Create a key': 'Créer une clé',
'Revoke a key': 'Révoquer une clé',
'List one page of articles, newest update first, with the total and the tab counts. Anonymous callers get online articles only.':
'Liste une page d’articles, du plus récemment modifié au plus ancien, avec le total et les compteurs des onglets. Les appels anonymes ne reçoivent que les articles publiés.',
'List one page of articles, newest update first, with the total and the tab counts (all, online, draft and suggestions). Anonymous callers get online articles only.':
'Liste une page d’articles, du plus récemment modifié au plus ancien, avec le total et les compteurs des onglets (tous, publiés, brouillons et suggestions). Les appels anonymes ne reçoivent que les articles publiés.',
'Get one article. Drafts answer 404 to anonymous callers.':
'Récupère un article. Les brouillons répondent 404 aux appels anonymes.',
'Create a draft article.': 'Crée un article en brouillon.',
'Update the body of an article.': 'Modifie le corps d’un article.',
'Publish an article.': 'Publie un article.',
'Unpublish an article.': 'Dépublie un article.',
'Delete an article.': 'Supprime un article.',
@@ -1666,7 +1642,6 @@ export const messages = {
'Delete an image. Articles that use it show a broken image.':
'Supprime une image. Les articles qui l’utilisent affichent une image cassée.',
'Merge identical copies into one image.': 'Fusionne les copies identiques en une seule image.',
'List the articles that use an image.': 'Liste les articles qui utilisent une image.',
'Get the automatic duplicate purge settings.':
'Récupère les paramètres de la purge automatique des doublons.',
'Turn the automatic purge on or off, or change its interval.':
@@ -1971,16 +1946,28 @@ export const messages = {
'La requête ne peut pas être traitée car le format du corps ne correspond pas.',
site_not_found: 'Site introuvable',
'25, 50, 100 or 500. Default 100.': '25, 50, 100 ou 500. Par défaut 100.',
'List the sites, the default first and then by name, each with its article count.':
'Liste les sites, le site par défaut d’abord puis par nom, chacun avec son nombre d’articles.',
'List the sites, the default first and then by name, each with its article count. Without page or size every matching site is returned; the number of matching sites is in the X-Total-Count header.':
'Liste les sites, le site par défaut d’abord puis par nom, chacun avec son nombre d’articles. Sans page ni taille, tous les sites correspondants sont renvoyés ; leur nombre est dans l’en-tête X-Total-Count.',
'Up to 200 characters, matched in the name, the key or the base URL, ignoring case and accents.':
'Jusqu’à 200 caractères, recherchés dans le nom, la clé ou l’URL de base, sans tenir compte de la casse ni des accents.',
'Log in. Made for the browser. A key is ignored here, with no 403.':
'Se connecter. Conçu pour le navigateur. Une clé est ignorée ici, sans 403.',
'Log out. Made for the browser. A key is ignored here, with no 403.':
'Se déconnecter. Conçu pour le navigateur. Une clé est ignorée ici, sans 403.',
'Register. Made for the browser. A key is ignored here, with no 403.':
'S’inscrire. Conçu pour le navigateur. Une clé est ignorée ici, sans 403.',
'Reset password. Made for the browser. A key is ignored here, with no 403.':
'Réinitialiser le mot de passe. Conçu pour le navigateur. Une clé est ignorée ici, sans 403.',
'Get one image, with the same fields as an item of the list.':
'Récupère une image, avec les mêmes champs qu’un élément de la liste.',
'You must be logged in to access this resource.':
'Vous devez être connecté pour accéder à cette ressource.',
'You must verify your account to access this resource.':
'Vous devez vérifier votre compte pour accéder à cette ressource.',
'The people credited on articles. Any verified user can read them; changes are made in the browser by an owner or admin.':
'Les personnes créditées sur les articles. Tout utilisateur vérifié peut les lire ; les modifications se font dans le navigateur par un propriétaire ou un administrateur.',
'List the authors by name, each with its article count.':
'Liste les auteurs par nom, chacun avec son nombre d’articles.',
'List the authors by name, each with its article count. The total is also in the X-Total-Count header.':
'Liste les auteurs par nom, chacun avec son nombre d’articles. Le total est aussi dans l’en-tête X-Total-Count.',
'The page, size or search is not valid.':
'La page, la taille ou la recherche n’est pas valide.',
'Up to 200 characters, matched in the name or the slug.':
@@ -2247,14 +2234,6 @@ export const messages = {
'Certaines images à fusionner ont changé. Actualisez et réessayez.',
'List the articles, authors and sites that use an image, with the places where each one uses it.':
'Liste les articles, auteurs et sites qui utilisent une image, avec les endroits où chacun l’utilise.',
'Log in. Made for the browser. A key is ignored here, with no 403.':
'Se connecter. Conçu pour le navigateur. Une clé est ignorée ici, sans 403.',
'Log out. Made for the browser. A key is ignored here, with no 403.':
'Se déconnecter. Conçu pour le navigateur. Une clé est ignorée ici, sans 403.',
'Register. Made for the browser. A key is ignored here, with no 403.':
'S’inscrire. Conçu pour le navigateur. Une clé est ignorée ici, sans 403.',
'Reset password. Made for the browser. A key is ignored here, with no 403.':
'Réinitialiser le mot de passe. Conçu pour le navigateur. Une clé est ignorée ici, sans 403.',
} as const
export type MessageKey = keyof typeof messages