feat(SPA): screen to manage API keys (PART 2/3)

This commit is contained in:
fsylvain committed 2026-10-05 00:05:12 +02:00
1 parent 844842fdae
commit 514a082c96
30 files changed
+3844 -83

No files matched your search

+65
View File
@@ -0,0 +1,65 @@
import { describe, expect, it } from 'vitest'
import { messages } from './messages'
const API_KEYS_MESSAGES = [
'API keys',
'Create key',
'Key',
'Created by',
'Last used',
'Expires',
'active',
'expired',
'revoked',
'Revoke',
'None',
'Never',
'Created {0}',
'Created {0} by {1}',
'Last used {0}',
'Expires {0}',
"Keys act as the user who created them. As an owner you see everyone's keys.",
'Keys act as you, with your role. You only see your own keys.',
"Resetting a user's password revokes all of their keys.",
'No API keys yet',
'Create a key to call the API from a script or service.',
"Couldn't load your API keys",
'Create API key',
'The key acts as you, with your role. It is shown in full once.',
'Required. Up to 60 characters.',
'Expiry date (optional)',
'Optional. Must be in the future. Leave it empty for a key that does not expire.',
'Enter a name.',
'Use 60 characters or fewer.',
'Choose a date in the future.',
'Your new API key',
'"{0}" is ready. Copy the key and store it somewhere safe.',
"You won't be able to see this key again.",
'Closing this window discards the key from the screen. Copy it first.',
'Done',
'Revoke this key?',
'"{0}" ({1}) will stop working right away. Requests that use it answer 401. This can\'t be undone.',
'Keep key',
'Revoke key',
'Key revoked',
'"{0}" can no longer be used.',
'Revoking…',
"Couldn't create the key. Try again in a moment.",
"Couldn't reach RenewCMS. Check your connection and try again.",
'Too many requests. Wait a moment, then try again.',
"Something in the form isn't valid. Check the highlighted fields.",
"Couldn't revoke the key. Try again in a moment.",
'That key no longer exists.',
'Manage API keys',
'Loading API keys',
]
describe('API keys screen messages', () => {
it.each(API_KEYS_MESSAGES)('has a French entry for "%s"', (key) => {
const french = (messages as Record<string, string>)[key]
expect(french).toBeTruthy()
if (key !== 'active') {
expect(french).not.toBe(key)
}
})
})
+60
View File
@@ -293,6 +293,7 @@ export const messages = {
"Titles can't be changed after an article is created. To use a different title, create a new article and delete this one.":
'Les titres ne peuvent pas être modifiés après la création d’un article. Pour changer de titre, créez un nouvel article et supprimez celui-ci.',
'Back to Articles': 'Retour aux articles',
'Back to Integration': 'Retour à l’intégration',
'Your changes to "{0}" haven\'t been saved.':
'Vos modifications de « {0} » n’ont pas été enregistrées.',
'Shorten the text or remove an image. Formatting counts too.':
@@ -824,6 +825,65 @@ export const messages = {
'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é',
'Created by': 'Créée par',
'Last used': 'Dernière utilisation',
Expires: 'Expire le',
active: 'active',
expired: 'expirée',
revoked: 'révoquée',
Revoke: 'Révoquer',
None: 'Aucune',
Never: 'Jamais',
'Created {0}': 'Créée le {0}',
'Created {0} by {1}': 'Créée le {0} par {1}',
'Last used {0}': 'Dernière utilisation : {0}',
'Expires {0}': 'Expire : {0}',
"Keys act as the user who created them. As an owner you see everyone's keys.":
'Les clés agissent comme l’utilisateur qui les a créées. En tant que propriétaire, vous voyez les clés de tout le monde.',
'Keys act as you, with your role. You only see your own keys.':
'Les clés agissent en votre nom, avec votre rôle. Vous ne voyez que vos propres clés.',
"Resetting a user's password revokes all of their keys.":
'Réinitialiser le mot de passe d’un utilisateur révoque toutes ses clés.',
'No API keys yet': 'Aucune clé d’API pour l’instant',
'Create a key to call the API from a script or service.':
'Créez une clé pour appeler l’API depuis un script ou un service.',
"Couldn't load your API keys": 'Impossible de charger vos clés d’API',
'Create API key': 'Créer une clé d’API',
'The key acts as you, with your role. It is shown in full once.':
'La clé agit en votre nom, avec votre rôle. Elle n’est affichée en entier qu’une seule fois.',
'Required. Up to 60 characters.': 'Obligatoire. 60 caractères maximum.',
'Expiry date (optional)': 'Date d’expiration (facultative)',
'Optional. Must be in the future. Leave it empty for a key that does not expire.':
'Facultative. Doit être dans le futur. Laissez vide pour une clé qui n’expire pas.',
'Enter a name.': 'Saisissez un nom.',
'Choose a date in the future.': 'Choisissez une date dans le futur.',
'Your new API key': 'Votre nouvelle clé d’API',
'"{0}" is ready. Copy the key and store it somewhere safe.':
'« {0} » est prête. Copiez la clé et conservez-la en lieu sûr.',
"You won't be able to see this key again.": 'Vous ne pourrez plus revoir cette clé.',
'Closing this window discards the key from the screen. Copy it first.':
'Fermer cette fenêtre supprime la clé de l’écran. Copiez-la d’abord.',
Done: 'Terminé',
'Revoke this key?': 'Révoquer cette clé ?',
'"{0}" ({1}) will stop working right away. Requests that use it answer 401. This can\'t be undone.':
'« {0} » ({1}) cessera de fonctionner immédiatement. Les requêtes qui l’utilisent recevront une réponse 401. Cette action est irréversible.',
'Keep key': 'Garder la clé',
'Revoke key': 'Révoquer la clé',
'Key revoked': 'Clé révoquée',
'"{0}" can no longer be used.': '« {0} » ne peut plus être utilisée.',
'Revoking…': 'Révocation…',
"Couldn't create the key. Try again in a moment.":
'Impossible de créer la clé. Réessayez dans un instant.',
'Too many requests. Wait a moment, then try again.':
'Trop de requêtes. Patientez un instant, puis réessayez.',
"Couldn't revoke the key. Try again in a moment.":
'Impossible de révoquer la clé. Réessayez dans un instant.',
'That key no longer exists.': 'Cette clé n’existe plus.',
'Manage API keys': 'Gérer les clés d’API',
'Loading API keys': 'Chargement des clés d’API',
} as const
export type MessageKey = keyof typeof messages