You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
435 lines
22 KiB
TypeScript
435 lines
22 KiB
TypeScript
const fr = {
|
|
// Navigation
|
|
'nav.syntheses': 'Syntheses',
|
|
'nav.themes': 'Personnaliser les syntheses',
|
|
'nav.settings': 'Parametres',
|
|
'nav.admin': 'Administration',
|
|
'nav.logout': 'Deconnexion',
|
|
'nav.menu': 'Menu',
|
|
'nav.menuOpen': 'Ouvrir le menu',
|
|
'nav.menuClose': 'Fermer le menu',
|
|
|
|
// Auth
|
|
'auth.loginTitle': 'AI Weekly Synth',
|
|
'auth.loginSubtitle': 'Votre synthese hebdomadaire des actualites IA',
|
|
'auth.emailLabel': 'Adresse email',
|
|
'auth.emailPlaceholder': 'adresse@email.com',
|
|
'auth.displayNameLabel': 'Nom (optionnel)',
|
|
'auth.displayNamePlaceholder': 'Votre nom',
|
|
'auth.requestLink': 'Recevoir un lien de connexion',
|
|
'auth.createAccountButton': 'Creer mon compte',
|
|
'auth.noAccount': 'Pas encore de compte ?',
|
|
'auth.createAccount': 'Creer un compte',
|
|
'auth.hasAccount': 'Deja un compte ?',
|
|
'auth.signIn': 'Se connecter',
|
|
'auth.checkInbox': 'Verifiez votre boite de reception',
|
|
'auth.linkSent': 'Un lien de connexion vous a ete envoye a {email}.',
|
|
'auth.linkSentDescription':
|
|
'Cliquez sur le lien dans l\'email pour vous connecter. Verifiez egalement votre dossier spam.',
|
|
'auth.resendLink': 'Renvoyer le lien',
|
|
'auth.resendIn': 'Renvoyer dans {seconds}s',
|
|
'auth.verifying': 'Verification en cours...',
|
|
'auth.verifySuccess': 'Connexion reussie ! Redirection...',
|
|
'auth.verifyError': 'Le lien est invalide ou a expire.',
|
|
'auth.verifyErrorDescription':
|
|
'Le lien que vous avez utilise est invalide ou a expire. Veuillez demander un nouveau lien de connexion.',
|
|
'auth.backToLogin': 'Retour a la connexion',
|
|
'auth.sessionExpired': 'Votre session a expire. Veuillez vous reconnecter.',
|
|
'auth.invalidEmail': 'Veuillez entrer une adresse email valide.',
|
|
'auth.turnstileRequired': 'Veuillez completer la verification.',
|
|
'auth.rateLimited': 'Trop de tentatives. Veuillez reessayer plus tard.',
|
|
'auth.registerTitle': 'Creer un compte',
|
|
'auth.registerSubtitle': 'Rejoignez AI Weekly Synth pour generer vos syntheses personnalisees.',
|
|
|
|
// Home
|
|
'home.title': "Syntheses d'Actualites par IA",
|
|
'home.subtitle':
|
|
'Retrouvez ici toutes vos syntheses hebdomadaires generees automatiquement.',
|
|
'home.newSynthesis': 'Nouvelle Synthese',
|
|
'home.empty.title': 'Aucune synthese',
|
|
'home.empty.description':
|
|
'Commencez par generer votre premiere synthese hebdomadaire.',
|
|
'home.empty.action': 'Generer',
|
|
'home.comingSoon': 'Disponible prochainement',
|
|
'home.weekLabel': 'Semaine {week}',
|
|
'home.cardTitle': 'Synthese de la semaine',
|
|
'home.readLink': 'Lire la synthese',
|
|
'home.deleteConfirm': 'Confirmer',
|
|
'home.deleteTooltip': 'Supprimer',
|
|
'home.deleteConfirmTooltip': 'Cliquer a nouveau pour confirmer',
|
|
'home.noPreview': 'Aucune annonce majeure cette semaine.',
|
|
'home.previewCount': '{count} articles',
|
|
'home.loadError': 'Erreur lors du chargement des syntheses.',
|
|
'home.deleteError': 'Erreur lors de la suppression de la synthese.',
|
|
'home.generationInProgress': 'Une generation est en cours...',
|
|
'home.viewProgress': 'Voir la progression',
|
|
|
|
// Generate
|
|
'generate.title': 'Generer la Synthese Hebdomadaire',
|
|
'generate.description':
|
|
"Selectionnez un theme puis lancez la generation pour analyser les actualites via l'IA.",
|
|
'generate.note': 'Note : La generation peut prendre jusqu\'a 10 minutes.',
|
|
'generate.launch': 'Lancer la generation',
|
|
'generate.inProgress': 'Generation en cours...',
|
|
'generate.step.sources': 'Sources personnalisees',
|
|
'generate.step.websearch': 'Recherche web',
|
|
'generate.step.saving': 'Sauvegarde',
|
|
'generate.complete': 'Synthese generee avec succes ! Redirection...',
|
|
'generate.error': 'Une erreur est survenue lors de la generation.',
|
|
'generate.canLeave': 'Vous pouvez quitter cette page. La generation continuera en arriere-plan.',
|
|
'generate.retry': 'Reessayer',
|
|
'generate.alreadyInProgress': 'Une generation est deja en cours.',
|
|
'generate.provider': 'Fournisseur',
|
|
'generate.model': 'Modele',
|
|
'generate.noWebSearchWarning':
|
|
'Le fournisseur selectionne ne supporte pas la recherche web. Les resultats seront bases uniquement sur les connaissances du modele.',
|
|
'generate.selectTheme': 'Theme a generer',
|
|
'generate.noThemes': 'Aucun theme configure. Creez un theme pour pouvoir generer une synthese.',
|
|
'generate.createThemeLink': 'Creer un theme',
|
|
|
|
// Synthesis Detail
|
|
'synthesis.title': 'Synthese de la Semaine {week}',
|
|
'synthesis.generatedAt': 'Generee le {date}',
|
|
'synthesis.backLink': 'Retour aux syntheses',
|
|
'synthesis.delete': 'Supprimer',
|
|
'synthesis.deleteConfirmMessage':
|
|
'Etes-vous sur de vouloir supprimer cette synthese definitivement ?',
|
|
'synthesis.deleteCancel': 'Annuler',
|
|
'synthesis.deleteConfirm': 'Confirmer la suppression',
|
|
'synthesis.notFound': 'Synthese introuvable.',
|
|
'synthesis.loadError': 'Erreur lors du chargement de la synthese.',
|
|
'synthesis.deleteError': 'Erreur lors de la suppression.',
|
|
'synthesis.backToHome': 'Retour a l\'accueil',
|
|
'synthesis.noSections': 'Aucune section trouvee dans cette synthese.',
|
|
'synthesis.displayCompact': 'Compact',
|
|
'synthesis.displayFull': 'Complet',
|
|
|
|
// Synthesis - Email
|
|
'synthesis.email.title': 'Envoyer par email',
|
|
'synthesis.email.placeholder': 'adresse@email.com',
|
|
'synthesis.email.send': 'Envoyer par email',
|
|
'synthesis.email.sendSelf': 'S\'envoyer a soi-meme',
|
|
'synthesis.email.sending': 'Envoi en cours...',
|
|
'synthesis.email.success': 'L\'email a ete envoye avec succes !',
|
|
'synthesis.email.error': 'Erreur lors de l\'envoi de l\'email.',
|
|
|
|
// Synthesis - Export
|
|
'synthesis.export.title': 'Exporter',
|
|
'synthesis.export.markdown': 'Exporter en Markdown',
|
|
'synthesis.export.pdf': 'Exporter en PDF',
|
|
'synthesis.export.downloading': 'Telechargement...',
|
|
'synthesis.export.error': 'Erreur lors de l\'export.',
|
|
|
|
// Settings - Section headings
|
|
'settings.section.content': 'Contenu',
|
|
'settings.section.contentDesc': 'Definissez le theme, les categories et le format des syntheses.',
|
|
'settings.section.sources': 'Sources',
|
|
'settings.section.sourcesDesc': 'Configurez l\'extraction des articles depuis vos sources personnalisees.',
|
|
'settings.section.ai': 'Intelligence Artificielle',
|
|
'settings.section.aiDesc': 'Choisissez le fournisseur, les modeles et configurez vos cles API.',
|
|
'settings.section.performance': 'Performance',
|
|
'settings.section.performanceDesc': 'Parametres techniques pour optimiser la generation.',
|
|
'settings.section.importExport': 'Import / Export',
|
|
'settings.section.importExportDesc': 'Sauvegardez ou restaurez votre configuration.',
|
|
'settings.aiKeyConfigured': 'Cle configuree',
|
|
'settings.aiKeyNotConfigured': 'Cle non configuree',
|
|
|
|
// Settings
|
|
'settings.title': 'Parametres de generation',
|
|
'settings.theme': 'Theme de la recherche',
|
|
'settings.themeHelp':
|
|
"Le sujet principal pour la recherche d'actualites (ex: Intelligence Artificielle, Cybersecurite, etc.).",
|
|
'settings.maxAgeDays': 'Anciennete maximum (jours)',
|
|
'settings.maxItems': 'Actualites max par categorie',
|
|
'settings.maxArticlesPerSource': 'Articles max par source',
|
|
'settings.maxLinksPerSource': 'Liens max par source',
|
|
'settings.maxLinksPerSourceHelp': 'Nombre maximum de liens extraits de chaque source. Les premiers liens sont generalement les plus recents.',
|
|
'settings.searchBehavior': "Comportement de l'agent de recherche",
|
|
'settings.searchBehaviorHelp':
|
|
"Personnalisez les instructions donnees a l'IA concernant sa methode de recherche.",
|
|
'settings.searchBehaviorPlaceholder':
|
|
"Tu peux egalement utiliser d'autres sources pertinentes trouvees via la recherche Google.",
|
|
'settings.model': "Modele d'IA",
|
|
'settings.modelHelp':
|
|
"Choisissez le modele d'IA utilise pour generer les syntheses. Le modele Pro est conseille pour des resultats plus pertinents et une meilleure analyse.",
|
|
'settings.categories': "Categories d'actualite",
|
|
'settings.addCategory': 'Ajouter',
|
|
'settings.newCategory': 'Nouvelle categorie',
|
|
'settings.removeCategory': 'Supprimer cette categorie',
|
|
'settings.save': 'Enregistrer les parametres',
|
|
'settings.saved': 'Parametres enregistres avec succes.',
|
|
'settings.saveError': "Erreur lors de l'enregistrement des parametres.",
|
|
'settings.loadError': 'Erreur lors du chargement des parametres.',
|
|
'settings.modelResearch': "Modele d'IA (Recherche et Extraction)",
|
|
'settings.modelResearchHelp': "Choisissez le modele d'IA utilise pour rechercher et extraire les informations.",
|
|
'settings.modelWebsearch': "Modele d'IA (Recherche Web)",
|
|
'settings.modelWebsearchHelp': "Choisissez le modele d'IA utilise pour la recherche web et la generation des syntheses.",
|
|
'settings.rateLimitSection': 'Limitation de taux',
|
|
'settings.rateLimitMaxRequests': 'Requetes maximum',
|
|
'settings.rateLimitTimeWindow': 'Fenetre de temps (secondes)',
|
|
'settings.rateLimitHelp': "Configurez le nombre maximum de requetes autorisees pendant la fenetre de temps specifiee. Laissez vide pour utiliser les valeurs par defaut de l'administrateur.",
|
|
'settings.rateLimitEffective': '{max} requetes / {window} secondes',
|
|
'settings.rateLimitReset': 'Reinitialiser',
|
|
'settings.useBraveSearch': 'Utiliser Brave Search pour la recherche web',
|
|
'settings.useBraveSearchHelp': "Remplace la recherche web par IA par l'API Brave Search pour des resultats plus precis.",
|
|
'settings.braveSearch': 'Brave Search',
|
|
'settings.braveSearchKey': 'Cle API Brave Search',
|
|
'settings.braveSearchKeyHelp': 'Obtenez une cle sur api-dashboard.search.brave.com. Le plan gratuit offre 2000 requetes/mois.',
|
|
'settings.braveSearchNotConfigured': 'Configurez une cle API Brave Search pour activer cette option.',
|
|
'settings.articleHistoryDays': 'Historique des articles (jours)',
|
|
'settings.batchSize': 'Taille du lot de traitement',
|
|
'settings.batchSizeHelp': 'Nombre d\'articles traites en parallele lors de la generation (defaut: 5).',
|
|
'settings.sourceExtractionWindow': 'Sources par vague d\'extraction',
|
|
'settings.sourceExtractionWindowHelp': 'Nombre de sources analysees en parallele a chaque vague. Reduit le nombre d\'appels IA quand peu de sources suffisent.',
|
|
'settings.summaryLength': 'Niveau de detail des resumes',
|
|
'settings.summaryLengthHelp': 'Controle la longueur des resumes generes pour chaque article.',
|
|
'settings.summaryShort': 'Court',
|
|
'settings.summaryMedium': 'Moyen',
|
|
'settings.summaryDetailed': 'Detaille',
|
|
'settings.export': 'Exporter',
|
|
'settings.import': 'Importer',
|
|
'settings.exportIncludeKeys': 'Inclure les cles API',
|
|
'settings.exportKeysWarning': 'Les cles API seront incluses en clair dans le fichier. Ne partagez pas ce fichier.',
|
|
'settings.importSuccess': "Configuration importee avec succes. N'oubliez pas d'enregistrer.",
|
|
'settings.importError': "Erreur lors de l'importation du fichier JSON.",
|
|
|
|
// Sources
|
|
'sources.title': 'Sources Personnalisees',
|
|
'sources.subtitle':
|
|
"Ajoutez des sites web ou des blogs que l'IA devra obligatoirement consulter lors de la generation de vos syntheses. Ces sources s'ajoutent aux sources par defaut.",
|
|
'sources.addTitle': 'Ajouter une source',
|
|
'sources.titleLabel': 'Titre',
|
|
'sources.titlePlaceholder': 'Nom de la source (ex: Blog de Yann LeCun)',
|
|
'sources.urlLabel': 'URL',
|
|
'sources.urlPlaceholder': 'https://...',
|
|
'sources.add': 'Ajouter',
|
|
'sources.csvSection': 'Import / Export CSV',
|
|
'sources.csvDescription':
|
|
'Sauvegardez vos sources ou importez-en de nouvelles depuis un fichier CSV.',
|
|
'sources.exportCsv': 'Exporter en CSV',
|
|
'sources.importCsv': 'Importer depuis un CSV',
|
|
'sources.bulkSection': 'Import en masse',
|
|
'sources.bulkDescription':
|
|
"Ajoutez plusieurs sources d'un coup. Une source par ligne, au format :",
|
|
'sources.bulkFormat': 'Nom de la source;URL',
|
|
'sources.bulkPlaceholder':
|
|
'Blog IA;https://blog.ia.com\nNews Tech;https://tech.news.fr',
|
|
'sources.bulkImport': 'Importer les sources',
|
|
'sources.importing': 'Importation...',
|
|
'sources.empty': 'Aucune source personnalisee pour le moment.',
|
|
'sources.emptyHint':
|
|
"L'ajout de sources permet a l'IA de consulter vos sites preferes en priorite.",
|
|
'sources.deleteTitle': 'Supprimer',
|
|
'sources.confirmDelete': 'Confirmer ?',
|
|
'sources.addError': "Erreur lors de l'ajout de la source.",
|
|
'sources.deleteError': 'Erreur lors de la suppression de la source.',
|
|
'sources.bulkImportError':
|
|
"Aucune source valide trouvee. Verifiez le format (Nom;URL).",
|
|
'sources.csvImportError':
|
|
"Erreur lors de l'importation du fichier CSV.",
|
|
'sources.csvNoValidSources':
|
|
'Aucune source valide trouvee dans le fichier CSV.',
|
|
'sources.exportError': "Erreur lors de l'export CSV.",
|
|
'sources.titleRequired': 'Le titre est requis.',
|
|
'sources.urlRequired': "L'URL est requise.",
|
|
'sources.urlInvalid': "L'URL n'est pas valide.",
|
|
|
|
// Themes
|
|
'themes.title': 'Personnaliser les syntheses',
|
|
'themes.selectTheme': 'Choisir un theme',
|
|
'themes.createTheme': 'Creer un nouveau theme',
|
|
'themes.contentSection': 'Contenu',
|
|
'themes.name': 'Nom du theme',
|
|
'themes.searchTopic': 'Sujet de recherche',
|
|
'themes.searchTopicHelp': 'Le sujet que l\'IA utilisera pour rechercher des actualites.',
|
|
'themes.deleteTheme': 'Supprimer ce theme',
|
|
'themes.deleteConfirm': 'Les syntheses existantes seront conservees. Confirmer la suppression ?',
|
|
'themes.deleted': 'Theme supprime',
|
|
'themes.saved': 'Theme enregistre',
|
|
'themes.created': 'Theme cree',
|
|
'themes.noThemes': 'Aucun theme configure. Creez votre premier theme pour commencer.',
|
|
|
|
// Settings - API Keys
|
|
'settings.apiKeys.title': 'Vos cles API',
|
|
'settings.apiKeys.description':
|
|
'Configurez vos cles API pour chaque fournisseur. Votre cle est chiffree et stockee de maniere securisee.',
|
|
'settings.apiKeys.configured': 'Configuree',
|
|
'settings.apiKeys.notConfigured': 'Non configuree',
|
|
'settings.apiKeys.keyPrefix': 'Cle : {prefix}',
|
|
'settings.apiKeys.inputLabel': 'Cle API',
|
|
'settings.apiKeys.inputPlaceholder': 'Entrez votre cle API pour {provider}',
|
|
'settings.apiKeys.showKey': 'Afficher la cle',
|
|
'settings.apiKeys.hideKey': 'Masquer la cle',
|
|
'settings.apiKeys.save': 'Enregistrer',
|
|
'settings.apiKeys.saving': 'Enregistrement...',
|
|
'settings.apiKeys.saved': 'Cle API enregistree avec succes.',
|
|
'settings.apiKeys.saveError': "Erreur lors de l'enregistrement de la cle API.",
|
|
'settings.apiKeys.update': 'Modifier',
|
|
'settings.apiKeys.test': 'Tester',
|
|
'settings.apiKeys.testing': 'Test en cours...',
|
|
'settings.apiKeys.testSuccess': 'Cle API valide. Connexion reussie.',
|
|
'settings.apiKeys.testFailure': 'Cle API invalide : {message}',
|
|
'settings.apiKeys.delete': 'Supprimer',
|
|
'settings.apiKeys.deleteConfirm':
|
|
'Etes-vous sur de vouloir supprimer cette cle API ? Vous ne pourrez plus generer de syntheses avec ce fournisseur.',
|
|
'settings.apiKeys.deleted': 'Cle API supprimee avec succes.',
|
|
'settings.apiKeys.deleteError': 'Erreur lors de la suppression de la cle API.',
|
|
'settings.apiKeys.loadError': 'Erreur lors du chargement des cles API.',
|
|
'settings.apiKeys.noWebSearch':
|
|
'Ce fournisseur ne supporte pas la recherche web native. Le scraping backend sera utilise.',
|
|
|
|
// Settings - Provider
|
|
'settings.provider': "Fournisseur d'IA",
|
|
'settings.providerHelp':
|
|
"Selectionnez le fournisseur d'IA pour generer les syntheses.",
|
|
'settings.providerPlaceholder': 'Selectionnez un fournisseur',
|
|
'settings.modelPlaceholder': 'Selectionnez un modele',
|
|
'settings.providerUnavailable':
|
|
"Le fournisseur que vous utilisiez n'est plus disponible. Veuillez en selectionner un autre.",
|
|
'settings.provider.webSearchInfo':
|
|
'La recherche web en temps reel est disponible avec ce fournisseur.',
|
|
'settings.provider.noWebSearchInfo':
|
|
'Les resultats seront bases sur les connaissances du modele, sans recherche web.',
|
|
'settings.provider.geminiInfo':
|
|
'Google Gemini avec recherche Google integree.',
|
|
'settings.provider.openaiInfo': 'OpenAI avec recherche web integree.',
|
|
'settings.provider.anthropicInfo':
|
|
'Anthropic Claude avec recherche web integree.',
|
|
'settings.provider.webSearchBadge': 'Recherche web',
|
|
'settings.provider.noWebSearchBadge': 'Sans recherche web',
|
|
|
|
// Admin - Navigation
|
|
'admin.title': 'Administration',
|
|
'admin.nav.providers': 'Fournisseurs',
|
|
'admin.nav.rateLimits': 'Limites',
|
|
'admin.nav.users': 'Utilisateurs',
|
|
|
|
// Admin - Providers
|
|
'admin.providers.title': 'Configuration des fournisseurs LLM',
|
|
'admin.providers.subtitle':
|
|
'Gerez les fournisseurs et modeles disponibles pour les utilisateurs.',
|
|
'admin.providers.add': 'Ajouter un fournisseur',
|
|
'admin.providers.providerName': 'Identifiant du fournisseur',
|
|
'admin.providers.providerNamePlaceholder': 'ex: openai, anthropic, gemini',
|
|
'admin.providers.displayName': "Nom d'affichage",
|
|
'admin.providers.displayNamePlaceholder': 'ex: OpenAI, Google Gemini',
|
|
'admin.providers.models': 'Modeles disponibles',
|
|
'admin.providers.modelsScraping': 'Modeles (Extraction / Scraping)',
|
|
'admin.providers.modelsWebsearch': 'Modeles (Recherche Web)',
|
|
'admin.providers.modelId': 'Identifiant du modele',
|
|
'admin.providers.modelIdPlaceholder': 'ex: gpt-4o',
|
|
'admin.providers.modelDisplayName': "Nom d'affichage du modele",
|
|
'admin.providers.modelDisplayNamePlaceholder': 'ex: GPT-4o',
|
|
'admin.providers.defaultModel': 'Modele par defaut',
|
|
'admin.providers.enabled': 'Active',
|
|
'admin.providers.disabled': 'Desactive',
|
|
'admin.providers.addModel': 'Ajouter un modele',
|
|
'admin.providers.removeModel': 'Retirer ce modele',
|
|
'admin.providers.save': 'Enregistrer',
|
|
'admin.providers.delete': 'Supprimer le fournisseur',
|
|
'admin.providers.deleteConfirm':
|
|
'Etes-vous sur de vouloir supprimer ce fournisseur ? Cette action est irreversible.',
|
|
'admin.providers.saved': 'Fournisseur enregistre avec succes.',
|
|
'admin.providers.deleted': 'Fournisseur supprime avec succes.',
|
|
'admin.providers.saveError': "Erreur lors de l'enregistrement du fournisseur.",
|
|
'admin.providers.deleteError': 'Erreur lors de la suppression du fournisseur.',
|
|
'admin.providers.loadError': 'Erreur lors du chargement des fournisseurs.',
|
|
'admin.providers.empty': 'Aucun fournisseur configure.',
|
|
'admin.providers.emptyHint':
|
|
'Ajoutez un fournisseur LLM pour que les utilisateurs puissent generer des syntheses.',
|
|
'admin.providers.noModels': 'Aucun modele configure pour ce fournisseur.',
|
|
'admin.providers.created': 'Fournisseur cree avec succes.',
|
|
'admin.providers.createError': 'Erreur lors de la creation du fournisseur.',
|
|
|
|
// Admin - Rate Limits
|
|
'admin.rateLimits.title': "Configuration des limites d'usage",
|
|
'admin.rateLimits.subtitle':
|
|
'Definissez les limites de requetes par fournisseur.',
|
|
'admin.rateLimits.maxRequests': 'Requetes maximum',
|
|
'admin.rateLimits.timeWindow': 'Fenetre de temps (secondes)',
|
|
'admin.rateLimits.effectiveRate': '{count} requetes / {seconds} secondes',
|
|
'admin.rateLimits.save': 'Enregistrer',
|
|
'admin.rateLimits.saved': 'Limites enregistrees avec succes.',
|
|
'admin.rateLimits.saveError': "Erreur lors de l'enregistrement des limites.",
|
|
'admin.rateLimits.loadError': 'Erreur lors du chargement des limites.',
|
|
'admin.rateLimits.empty': 'Aucune limite configuree.',
|
|
'admin.rateLimits.emptyHint':
|
|
'Les limites apparaitront automatiquement lorsque des fournisseurs seront configures.',
|
|
|
|
// Admin - Users
|
|
'admin.users.title': 'Gestion des utilisateurs',
|
|
'admin.users.subtitle': 'Consultez et gerez les roles des utilisateurs.',
|
|
'admin.users.email': 'Email',
|
|
'admin.users.displayName': 'Nom',
|
|
'admin.users.role': 'Role',
|
|
'admin.users.createdAt': "Date d'inscription",
|
|
'admin.users.roleAdmin': 'Administrateur',
|
|
'admin.users.roleUser': 'Utilisateur',
|
|
'admin.users.changeRole': 'Modifier le role',
|
|
'admin.users.promoteConfirm':
|
|
'Etes-vous sur de vouloir promouvoir cet utilisateur en administrateur ?',
|
|
'admin.users.demoteConfirm':
|
|
'Etes-vous sur de vouloir retirer les droits administrateur de cet utilisateur ?',
|
|
'admin.users.roleUpdated': 'Role mis a jour avec succes.',
|
|
'admin.users.roleUpdateError': 'Erreur lors de la mise a jour du role.',
|
|
'admin.users.loadError': 'Erreur lors du chargement des utilisateurs.',
|
|
'admin.users.cannotDemoteSelf':
|
|
'Vous ne pouvez pas modifier votre propre role.',
|
|
'admin.users.empty': 'Aucun utilisateur enregistre.',
|
|
'admin.users.makeAdmin': 'Promouvoir admin',
|
|
'admin.users.makeUser': 'Retirer admin',
|
|
|
|
// Article History
|
|
'articleHistory.title': 'Historique des articles',
|
|
'articleHistory.date': 'Date',
|
|
'articleHistory.articleTitle': 'Titre',
|
|
'articleHistory.url': 'URL',
|
|
'articleHistory.sourceType': 'Source',
|
|
'articleHistory.status': 'Statut',
|
|
'articleHistory.category': 'Categorie',
|
|
'articleHistory.synthesis': 'Synthese',
|
|
'articleHistory.empty': 'Aucun historique disponible.',
|
|
'articleHistory.filterStatus': 'Filtrer par statut',
|
|
'articleHistory.filterSourceType': 'Filtrer par type de source',
|
|
'articleHistory.all': 'Tous',
|
|
'articleHistory.statusUsed': 'Utilise',
|
|
'articleHistory.statusFiltered': 'Filtre',
|
|
'articleHistory.viewHistory': 'Historique des articles',
|
|
'articleHistory.provenance': 'Provenance',
|
|
'articleHistory.provenanceEmpty': 'Aucune donnee de provenance disponible pour cette synthese.',
|
|
'articleHistory.provenanceDescription': 'Articles candidats traites lors de la generation de cette synthese.',
|
|
'articleHistory.clearAll': 'Effacer l\'historique',
|
|
'articleHistory.clearConfirm': 'Etes-vous sur de vouloir effacer tout l\'historique des articles ? Cette action est irreversible.',
|
|
'articleHistory.cleared': 'Historique efface',
|
|
|
|
// LLM Logs
|
|
'llmLogs.title': 'Logs des appels IA',
|
|
'llmLogs.callType': 'Type',
|
|
'llmLogs.model': 'Modele',
|
|
'llmLogs.duration': 'Duree',
|
|
'llmLogs.systemPrompt': 'Prompt systeme',
|
|
'llmLogs.userPrompt': 'Prompt utilisateur',
|
|
'llmLogs.response': 'Reponse',
|
|
'llmLogs.empty': 'Aucun log disponible pour cette synthese.',
|
|
'llmLogs.viewLogs': 'Voir les logs IA',
|
|
'llmLogs.seconds': 's',
|
|
'llmLogs.back': 'Retour',
|
|
'llmLogs.articleUrl': 'Article',
|
|
|
|
// Common
|
|
'common.loading': 'Chargement...',
|
|
'common.error': 'Une erreur est survenue.',
|
|
'common.errorTitle': 'Erreur inattendue',
|
|
'common.errorDescription':
|
|
"Une erreur inattendue s'est produite. Veuillez reessayer.",
|
|
'common.retry': 'Reessayer',
|
|
'common.confirm': 'Confirmer',
|
|
'common.cancel': 'Annuler',
|
|
'common.delete': 'Supprimer',
|
|
'common.save': 'Enregistrer',
|
|
'common.close': 'Fermer',
|
|
} as const;
|
|
|
|
export type TranslationKey = keyof typeof fr;
|
|
export default fr;
|