import type { Dict } from '../types';

export const fr: Dict = {
  'common.cancel': 'Annuler',
  'common.save': 'Enregistrer',
  'common.close': 'Fermer',
  'common.delete': 'Supprimer',
  'common.rename': 'Renommer',
  'common.preview': 'Aperçu',
  'common.share': 'Partager',
  'common.search': 'Rechercher',
  'common.searchEllipsis': 'Rechercher…',
  'common.loading': 'Chargement…',
  'common.all': 'Tout',
  'common.none': 'Aucun',
  'common.default': 'Par défaut',
  'common.installed': 'installé',
  'common.notInstalled': 'non installé',
  'common.active': 'actif',
  'common.offline': 'hors ligne',
  'common.selected': 'sélectionné',
  'common.create': 'Créer',
  'common.openPreview': 'Ouvrir l\'aperçu',
  'common.exitFullscreen': 'Quitter le plein écran',
  'common.fullscreen': 'Plein écran',
  'common.openInNewTab': 'Ouvrir dans un nouvel onglet',
  'common.exportPdf': 'Exporter en PDF',
  'common.exportZip': 'Télécharger en .zip',
  'common.exportHtml': 'Exporter en HTML autonome',
  'common.justNow': 'à l\'instant',
  'common.minutesAgo': 'il y a {n} min',
  'common.hoursAgo': 'il y a {n} h',
  'common.daysAgo': 'il y a {n} j',
  'common.now': 'maintenant',
  'common.minutesShort': '{n} min',
  'common.hoursShort': '{n} h',
  'common.daysShort': '{n} j',
  'common.untitled': 'Sans titre',

  'app.brand': 'Open Design',
  'app.brandPill': 'Aperçu de recherche',
  'app.brandSubtitle': 'par Nexu Labs',
  'app.welcomeLoading': 'Chargement de l\'espace de travail…',

  'settings.welcomeKicker': 'Bienvenue',
  'settings.welcomeTitle': 'Configurer Open Design',
  'settings.welcomeSubtitle':
    'Choisissez comment vous souhaitez exécuter les générations. Vous pouvez changer cela à tout moment depuis le bouton Paramètres dans la barre supérieure.',
  'settings.kicker': 'Paramètres',
  'settings.title': 'Exécution et modèle',
  'settings.subtitle': 'Choisissez entre CLI local et BYOK. Votre clé API est stockée uniquement dans ce navigateur.',
  'settings.modeAria': 'Mode d\'exécution',
  'settings.protocolAria': 'Protocole d\'API',
  'settings.modeDaemon': 'CLI local',
  'settings.modeDaemonHelp': 'Exécuter via un agent CLI sur votre machine',
  'settings.modeDaemonOffline': 'Le daemon n\'est pas en cours d\'exécution',
  'settings.modeDaemonOfflineMeta': 'daemon hors ligne',
  'settings.modeDaemonInstalledMeta': '{count} installé(s)',
  'settings.modeApi': 'Fournisseur API',
  'settings.modeApiMeta': 'BYOK',
  'settings.codeAgent': 'Agent de code',
  'settings.codeAgentHint':
    'Détecté en analysant votre PATH. Choisissez le CLI à travers lequel les générations seront exécutées.',
  'settings.rescan': '↻ Réanalyser',
  'settings.rescanTitle': 'Réanalyser le PATH',
  'settings.rescanRunning': 'Analyse...',
  'settings.rescanSuccess': 'Analyse terminée. {count} disponible(s).',
  'settings.rescanFailed': 'L’analyse a échoué. Vérifiez le daemon et réessayez.',
  'settings.noAgentsDetected':
    'Aucun agent détecté pour l\'instant. Installez Claude Code, Codex, Devin for Terminal, Gemini CLI, OpenCode, Cursor Agent, Qwen ou GitHub Copilot CLI, puis cliquez sur Réanalyser.',
  'settings.apiSection': 'API Anthropic',
  'settings.quickFillProvider': 'Remplissage rapide du fournisseur',
  'settings.customProvider': 'Fournisseur personnalisé',
  'settings.apiKey': 'Clé API',
  'settings.showKey': 'Afficher la clé',
  'settings.hideKey': 'Masquer la clé',
  'settings.show': 'Afficher',
  'settings.hide': 'Masquer',
  'settings.model': 'Modèle',
  'settings.suggestedModelsHint':
    'Ce sont des modèles suggérés pour ce protocole. Votre fournisseur peut prendre en charge d\'autres modèles.',
  'settings.baseUrl': 'URL de base',
  'settings.baseUrlInvalid': 'Saisissez une URL publique http:// ou https:// valide. Localhost est autorisé ; les IP de réseau privé sont bloquées.',
  'settings.azureDeploymentModel': 'Nom du déploiement',
  'settings.azureDeploymentModelHint':
    'Pour Azure OpenAI, ce champ est utilisé comme nom du déploiement dans /openai/deployments/<model>. Saisissez le nom du déploiement créé dans Azure.',
  'settings.apiVersion': 'Version API',
  'settings.maxTokens': 'Tokens max (optionnel)',
  'settings.maxTokensHint':
    'Limite de la longueur de réponse. Chaque modèle a une valeur par défaut (affichée en placeholder) ; laissez vide pour l\'utiliser, ou entrez un nombre pour la remplacer.',
  'settings.apiHint': 'Les appels passent par le proxy du daemon local vers la Base URL définie. La clé est stockée uniquement dans ce navigateur et envoyée avec les requêtes au fournisseur.',
  'settings.skipForNow': 'Passer pour l\'instant',
  'settings.getStarted': 'Commencer',
  'settings.envConfigure': 'Configurer le mode d\'exécution',
  'settings.localCli': 'CLI local',
  'settings.anthropicApi': 'API Anthropic',
  'settings.noAgentSelected': 'aucun agent sélectionné',
  'settings.language': 'Langue',
  'settings.languageHint': 'Changer la langue de l\'interface. Enregistré dans ce navigateur.',
  'settings.appearance': 'Apparence',
  'settings.appearanceHint': 'Choisissez clair, sombre, ou suivez le paramètre système.',
  'settings.themeSystem': 'Système',
  'settings.themeLight': 'Clair',
  'settings.themeDark': 'Sombre',
  'settings.modelPicker': 'Modèle',
  'settings.reasoningPicker': 'Effort de raisonnement',
  'settings.modelPickerHint':
    'Récupéré depuis le CLI lorsqu\'il expose une commande `models`. « Par défaut » laisse le choix à la configuration du CLI ; « Personnalisé… » vous permet de saisir n\'importe quel identifiant de modèle accepté par le CLI.',
  'settings.modelCustom': 'Personnalisé (saisir ci-dessous)…',
  'settings.modelCustomLabel': 'Identifiant du modèle personnalisé',
  'settings.modelCustomPlaceholder': 'ex. anthropic/claude-sonnet-4-6',
  'settings.mediaProviders': 'Fournisseurs de médias',
  'settings.mediaProvidersHint':
    'Clés API pour la génération d\'images, de vidéos et d\'audio. Stockées localement et synchronisées avec le daemon local.',
  'settings.mediaProviderApiKey': 'Clé API',
  'settings.mediaProviderBaseUrl': 'URL de base',
  'settings.mediaProviderConfigured': 'Configuré',
  'settings.mediaProviderUnset': 'Non défini',
  'settings.mediaProviderClear': 'Effacer',
  'settings.mediaProviderPlaceholder': 'Coller la clé API',
  'settings.mediaProviderBaseUrlPlaceholder': 'Remplacer l\'URL de base par défaut',
  'settings.about': 'À propos',
  'settings.aboutHint': 'Version et informations d\'exécution',
  'settings.appVersion': 'Version',
  'settings.appChannel': 'Canal',
  'settings.appRuntime': 'Environnement',
  'settings.appPlatform': 'Plateforme',
  'settings.appArchitecture': 'Architecture',
  'settings.runtimePackaged': 'Application empaquetée',
  'settings.runtimeDevelopment': 'Développement',
  'settings.versionUnavailable': 'Les informations de version sont indisponibles lorsque le daemon est hors ligne.',

  'entry.tabDesigns': 'Designs',
  'entry.tabExamples': 'Exemples',
  'entry.tabDesignSystems': 'Design systems',
  'entry.openSettingsTitle': 'Paramètres',
  'entry.openSettingsAria': 'Ouvrir les paramètres',
  'entry.resizeAria': 'Redimensionner la barre latérale',
  'entry.loadingWorkspace': 'Chargement de l\'espace de travail…',
  'entry.tabImageTemplates': 'Modèles d\'image',
  'entry.tabVideoTemplates': 'Modèles de vidéo',
  'promptTemplates.searchPlaceholder': 'Rechercher des modèles…',
  'promptTemplates.countLabel': '{n} résultats',
  'promptTemplates.emptyImage': 'Aucun modèle de prompt d\'image installé pour l\'instant.',
  'promptTemplates.emptyVideo': 'Aucun modèle de prompt vidéo installé pour l\'instant.',
  'promptTemplates.emptyNoMatch': 'Aucun modèle ne correspond à votre recherche.',
  'promptTemplates.attributionFooter': 'Adapté de bibliothèques de prompts publiques. Chaque carte renvoie vers l\'auteur original.',
  'promptTemplates.openPreviewTitle': 'Ouvrir le prompt et l\'aperçu',
  'promptTemplates.sourcePrefix': 'Source :',
  'promptTemplates.fetchError': 'Impossible de charger le contenu de ce modèle.',
  'promptTemplates.promptLabel': 'Corps du prompt',
  'promptTemplates.copyPrompt': 'Copier le prompt',
  'promptTemplates.copyDone': 'Copié !',
  'promptTemplates.modelHint': 'Modèle suggéré : {model}',
  'promptTemplates.openSource': 'Voir l\'original',
  'promptTemplates.openFullscreen': 'Ouvrir l\'aperçu en plein écran',
  'promptTemplates.closeFullscreen': 'Fermer l\'aperçu plein écran',
  'promptTemplates.retry': 'Réessayer',

  'newproj.tabPrototype': 'Prototype',
  'newproj.tabDeck': 'Diaporama',
  'newproj.tabTemplate': 'Depuis un modèle',
  'newproj.tabOther': 'Autre',
  'newproj.titlePrototype': 'Nouveau prototype',
  'newproj.titleDeck': 'Nouveau diaporama',
  'newproj.titleTemplate': 'Partir d\'un modèle',
  'newproj.titleImage': 'Nouvelle image',
  'newproj.titleVideo': 'Nouvelle vidéo',
  'newproj.titleAudio': 'Nouvel audio',
  'newproj.titleOther': 'Nouveau projet',
  'newproj.namePlaceholder': 'Nom du projet',
  'newproj.fidelityLabel': 'Fidélité',
  'newproj.fidelityWireframe': 'Wireframe',
  'newproj.fidelityHigh': 'Haute fidélité',
  'newproj.toggleSpeakerNotes': 'Utiliser des notes d\'orateur',
  'newproj.toggleSpeakerNotesHint': 'Moins de texte sur les diapositives — gardez les points de discussion dans les notes.',
  'newproj.toggleAnimations': 'Inclure des animations',
  'newproj.toggleAnimationsHint':
    'Ajouter du mouvement (entrée, survol, transitions) en plus du modèle.',
  'newproj.templateLabel': 'Modèle',
  'newproj.noTemplatesTitle': 'Aucun modèle pour l\'instant',
  'newproj.noTemplatesBody':
    'Ouvrez un projet, puis utilisez le menu Partager dans la visionneuse de fichiers pour le convertir en modèle. Les modèles apparaissent ici.',
  'newproj.savedTemplate': 'Modèle enregistré',
  'newproj.fileSingular': 'fichier',
  'newproj.filePlural': 'fichiers',
  'newproj.create': 'Créer',
  'newproj.createFromTemplate': 'Créer depuis le modèle',
  'newproj.createDisabledTitle':
    'Enregistrez d\'abord un projet comme modèle (menu Partager dans un projet).',
  'newproj.importClaudeZip': 'Importer un ZIP Claude Design',
  'newproj.importClaudeZipTitle': 'Importer une exportation .zip Claude Design',
  'newproj.importingClaudeZip': 'Importation…',
  'newproj.privacyFooter': 'Seul vous pouvez voir votre projet par défaut.',
  'newproj.designSystem': 'Design system',
  'newproj.dsNoneFreeform': 'Aucun — libre',
  'newproj.dsNoneSubtitleEmpty': 'Pas de jetons système, choisissez votre propre palette',
  'newproj.dsNoneSubtitleSelected': 'Ignorer les jetons système. L\'agent choisit sa propre palette.',
  'newproj.dsCategoryFallback': 'Design system',
  'newproj.dsSearch': 'Rechercher des design systems…',
  'newproj.dsModeAria': 'Mode de sélection',
  'newproj.dsModeSingle': 'Unique',
  'newproj.dsModeMulti': 'Multiple',
  'newproj.dsNoneTitle': 'Aucun — libre',
  'newproj.dsNoneSub': 'Ignorer les jetons système. L\'agent choisit sa propre palette.',
  'newproj.dsEmpty': 'Aucun design system ne correspond à « {query} ».',
  'newproj.dsFootSingular': 'est uniquement à titre d\'inspiration.',
  'newproj.dsFootPlural': 'sont uniquement à titre d\'inspiration.',
  'newproj.dsFootClear': 'Effacer',
  'newproj.dsBadgeDefault': 'DÉFAUT',
  'newproj.dsPrimaryFallback': 'Primaire',
  'newproj.surfaceImage': 'Image',
  'newproj.surfaceVideo': 'Vidéo',
  'newproj.surfaceAudio': 'Audio',
  'newproj.modelLabel': 'Modèle',
  'newproj.aspectLabel': 'Format',
  'newproj.imageStyleLabel': 'Notes de style',
  'newproj.imageStylePlaceholder': 'Photo éditoriale, lumière douce, palette sobre',
  'newproj.videoLengthLabel': 'Durée',
  'newproj.videoLengthSeconds': '{n}s',
  'newproj.audioKindLabel': 'Type d\'audio',
  'newproj.audioKindMusic': 'Musique',
  'newproj.audioKindSpeech': 'Voix / TTS',
  'newproj.audioKindSfx': 'Effets sonores',
  'newproj.audioDurationLabel': 'Durée',
  'newproj.audioDurationSeconds': '{n}s',
  'newproj.voiceLabel': 'Voix',
  'newproj.voicePlaceholder': 'Identifiant de voix du fournisseur, optionnel',
  'newproj.promptTemplateLabel': 'Modèle de référence',
  'newproj.promptTemplateNoneTitle': 'Aucun — rédigez le vôtre',
  'newproj.promptTemplateNoneSub': 'Ignorer la galerie, décrivez votre propre brief',
  'newproj.promptTemplateRefSub': 'Modèle de référence',
  'newproj.promptTemplateSearch': 'Rechercher des modèles…',
  'newproj.promptTemplateEmpty': 'Aucun modèle installé pour cette surface pour l\'instant.',
  'newproj.promptTemplateBodyLabel': 'Prompt (vous pouvez l\'ajuster)',
  'newproj.promptTemplateOptimizeHint':
    'Modifiez ce que vous voulez — vos modifications sont transmises au brief de l\'agent.',
  'newproj.promptTemplateBodyEmpty':
    'Corps vide — l\'agent ne recevra aucune référence de modèle.',

  'designs.subRecent': 'Récents',
  'designs.subYours': 'Vos designs',
  'designs.filterAria': 'Filtrer les projets',
  'designs.searchPlaceholder': 'Rechercher…',
  'designs.emptyNoProjects': 'Aucun projet pour l\'instant. Créez-en un à gauche.',
  'designs.emptyNoMatch': 'Aucun projet ne correspond à votre recherche.',
  'designs.deleteTitle': 'Supprimer le projet',
  'designs.deleteConfirm': 'Supprimer « {name} » ?',
  'designs.cardFreeform': 'libre',
  'designs.status.notStarted': 'Non commencé',
  'designs.status.queued': 'En file d\'attente',
  'designs.status.running': 'En cours',
  'designs.status.awaitingInput': 'Entrée requise',
  'designs.status.succeeded': 'Terminé',
  'designs.status.failed': 'Échoué',
  'designs.status.canceled': 'Annulé',
  'designs.viewToggleAria': 'Mode d\'affichage',
  'designs.viewGrid': 'Vue grille',
  'designs.viewKanban': 'Vue tableau',
  'designs.kanbanEmptyColumn': 'Aucun design',
  'designs.deleteAria': 'Supprimer le projet {name}',

  'examples.typeLabel': 'Type',
  'examples.surfaceLabel': 'Surface',
  'examples.surfaceWeb': 'Web',
  'examples.surfaceImage': 'Image',
  'examples.surfaceVideo': 'Vidéo',
  'examples.surfaceAudio': 'Audio',
  'examples.scenarioLabel': 'Scénario',
  'examples.modeAll': 'Tout',
  'examples.modePrototypeDesktop': 'Prototypes · Bureau',
  'examples.modePrototypeMobile': 'Prototypes · Mobile',
  'examples.modeDeck': 'Diaporamas',
  'examples.modeDocument': 'Docs et modèles',
  'examples.scenarioGeneral': 'Général',
  'examples.scenarioEngineering': 'Ingénierie',
  'examples.scenarioProduct': 'Produit',
  'examples.scenarioDesign': 'Design',
  'examples.scenarioMarketing': 'Marketing',
  'examples.scenarioSales': 'Ventes',
  'examples.scenarioFinance': 'Finance',
  'examples.scenarioHr': 'RH',
  'examples.scenarioOperations': 'Opérations',
  'examples.scenarioSupport': 'Support',
  'examples.scenarioLegal': 'Juridique',
  'examples.scenarioEducation': 'Éducation',
  'examples.scenarioPersonal': 'Personnel',
  'examples.searchPlaceholder': 'Rechercher des exemples…',
  'examples.searchAria': 'Rechercher des exemples par nom',
  'examples.emptyNoSkills': 'Aucune compétence disponible. Le daemon est-il en cours d\'exécution ?',
  'examples.emptyNoMatch': 'Aucun exemple ne correspond à ces filtres.',
  'examples.openPreview': '⤢ Ouvrir l\'aperçu',
  'examples.loadingPreview': 'Chargement de l\'aperçu…',
  'examples.hoverPreview': 'Survoler pour prévisualiser',
  'examples.usePrompt': 'Utiliser ce prompt',
  'examples.previewModalTitle': 'Ouvrir l\'aperçu complet (modale)',
  'examples.shareTitle': 'Partager cet exemple',
  'examples.shareLoadFirst': 'Survolez pour charger l\'aperçu d\'abord',
  'examples.shareMenu': 'Partager ▾',
  'examples.exportPdfAllSlides': 'Exporter en PDF (toutes les diapos)',
  'examples.exportPptxLocked': 'Exporter en PPTX… (ouvrez d\'abord le modèle)',
  'examples.tagSlideDeck': 'Diaporama',
  'examples.tagTemplate': 'Modèle',
  'examples.tagDesignSystem': 'Design system',
  'examples.tagMobilePrototype': 'Prototype mobile',
  'examples.tagDesktopPrototype': 'Prototype bureau',
  'examples.tagImage': 'Image',
  'examples.tagVideo': 'Vidéo',
  'examples.tagAudio': 'Audio',
  'examples.previewLabel': 'Aperçu',

  'ds.surfaceLabel': 'Surface',
  'ds.surfaceWeb': 'Web',
  'ds.surfaceImage': 'Image',
  'ds.surfaceVideo': 'Vidéo',
  'ds.surfaceAudio': 'Audio',
  'ds.searchPlaceholder': 'Rechercher des design systems…',
  'ds.emptyNoMatch': 'Aucun design system ne correspond à votre recherche.',
  'ds.badgeDefault': 'DÉFAUT',
  'ds.preview': 'Aperçu',
  'ds.previewTitle': 'Aperçu du design system',
  'ds.categoryAll': 'Tout',
  'ds.categoryUncategorized': 'Non catégorisé',
  'ds.showcase': 'Vitrine',
  'ds.tokens': 'Jetons',
  'ds.specToggle': 'DESIGN.md',
  'ds.specLoading': 'Chargement du DESIGN.md…',

  'avatar.title': 'Compte et paramètres',
  'avatar.localCli': 'CLI local',
  'avatar.anthropicApi': 'API Anthropic',
  'avatar.useLocal': 'Utiliser le CLI local',
  'avatar.useApi': 'Utiliser API · BYOK',
  'avatar.codeAgent': 'Agent de code',
  'avatar.rescan': 'Réanalyser le PATH',
  'avatar.settings': 'Paramètres',
  'avatar.backToProjects': 'Retour aux projets',
  'avatar.metaActive': 'actif',
  'avatar.metaOffline': 'hors ligne',
  'avatar.metaSelected': 'sélectionné',
  'avatar.noAgentSelected': 'aucun agent sélectionné',
  'avatar.modelSection': 'Modèle',
  'avatar.modelLabel': 'Modèle',
  'avatar.reasoningLabel': 'Raisonnement',
  'avatar.customSuffix': '(personnalisé)',

  'project.backToProjects': 'Retour aux projets',
  'project.metaFreeform': 'libre',
  'chat.tabChat': 'Chat',
  'chat.tabComments': 'Commentaires',
  'chat.commentsSoon': 'Commentaires — bientôt disponible',
  'chat.comments.attached': 'Attaché au chat',
  'chat.comments.emptyAttached': 'Aucun commentaire attaché.',
  'chat.comments.saved': 'Commentaires enregistrés',
  'chat.comments.emptySaved': 'Aucun commentaire enregistré.',
  'chat.comments.add': 'Ajouter',
  'chat.comments.addAll': 'Tout ajouter',
  'chat.comments.remove': 'Retirer',
  'chat.comments.placeholder': 'Commenter cet élément…',
  'chat.comments.addSend': 'Ajouter et envoyer',
  'chat.comments.updateSend': 'Mettre à jour et envoyer',
  'chat.comments.removeAttachment': 'Retirer le commentaire attaché',
  'chat.comments.removeAttachmentAria': 'Retirer le commentaire attaché pour {name}',
  'chat.conversationsTitle': 'Conversations',
  'chat.conversationsAria': 'Historique des conversations',
  'chat.newConversation': 'Nouvelle conversation',
  'chat.newConversationsTitle': 'Nouvelle conversation',
  'chat.conversationsHeading': 'Conversations',
  'chat.new': 'Nouvelle',
  'chat.emptyConversations': 'Aucune conversation pour l\'instant.',
  'chat.deleteConversation': 'Supprimer la conversation',
  'chat.deleteConversationConfirm':
    'Supprimer « {title} » ? Cela supprime ses messages.',
  'chat.untitledConversation': 'Conversation sans titre',
  'chat.startTitle': 'Démarrer une conversation',
  'chat.startHint':
    'Déposez ou collez des images comme référence visuelle, ou tapez @ pour attacher un fichier du projet. Ou essayez l\'une de ces suggestions :',
  'chat.fillInputTitle': 'Cliquez pour remplir le champ',
  'chat.jumpToLatest': 'Aller au plus récent',
  'chat.scrollToLatest': 'Défiler jusqu\'au plus récent',
  'chat.you': 'Vous',
  'chat.openFile': 'Ouvrir {name}',
  'chat.composerPlaceholder':
    'Décrivez le design souhaité — collez ou déposez des images, ou @ un fichier…',
  'chat.composerHint':
    '⌘/Ctrl + Entrée pour envoyer · coller des images · @ pour référencer des fichiers',
  'chat.cliSettingsTitle': 'Paramètres CLI et modèle',
  'chat.cliSettingsAria': 'Ouvrir les paramètres CLI et modèle',
  'chat.attachTitle': 'Attacher des fichiers (ou coller / déposer)',
  'chat.attachAria': 'Attacher des fichiers',
  'chat.importTitle': 'Importer des sources (bientôt disponible)',
  'chat.importLabel': 'Importer',
  'chat.importComingSoon': 'Bientôt disponible',
  'chat.importSoon': 'Bientôt',
  'chat.importFig': 'Téléverser un fichier .fig',
  'chat.importGitHub': 'Connecter GitHub',
  'chat.importWeb': 'Capturer un élément web',
  'chat.importFolder': 'Lier un dossier de code',
  'chat.importSkills': 'Compétences et design systems',
  'chat.importProject': 'Référencer un autre projet',
  'chat.send': 'Envoyer',
  'chat.stop': 'Arrêter',
  'chat.removeAria': 'Retirer {name}',
  'chat.example1Title': 'Pitch deck éditorial',
  'chat.example1Tag': 'Magazine',
  'chat.example1Prompt':
    'Un pitch deck éditorial de 10 diapositives pour un studio de design levant des fonds — mise en page grille suisse, titres avec empattement surdimensionnés et lettrines, numéros de section en monospace, généreux espaces négatifs, et diapositives photo pleine page entrecoupées de diapos riches en texte. Couverture, vision, marché, produit, traction, équipe, levée de fonds, contact.',
  'chat.example2Title': 'Tableau de bord SaaS analytics',
  'chat.example2Tag': 'Données',
  'chat.example2Prompt':
    'Un tableau de bord analytics dense pour un SaaS d\'outils développeurs — bandeau KPI avec deltas semaine sur semaine, deux graphiques en lignes empilées (MRR et espaces de travail actifs), une carte de chaleur mondiale d\'utilisation, une grille de rétention de cohortes, un classement des meilleurs clients et un fil d\'actualité en temps réel. Thème sombre, chiffres tabulaires en monospace, accents sparkline.',
  'chat.example3Title': 'Rapport annuel long défilement',
  'chat.example3Tag': 'Éditorial',
  'chat.example3Prompt':
    'Un rapport annuel interactif pour une ONG climatique — mise en page éditoriale à long défilement mêlant de grands blocs de citation, des visualisations de données (barres empilées, compteurs animés, une carte choroplèthe des sites de projet), des séparateurs photo, un mur de donateurs et un appel à l\'action final. Texte en serif moderne, étiquettes de graphiques en sans-serif, palette papier aux tons terreux.',

  'preview.shareMenu': 'Partager ▾',
  'preview.openInNewTab': 'Ouvrir dans un nouvel onglet',
  'preview.exit': '⤓ Quitter',
  'preview.fullscreen': '⤢ Plein écran',
  'preview.closeTitle': 'Fermer (Échap)',
  'preview.loading': 'Chargement de {label}…',
  'preview.showSidebar': 'Afficher {label}',
  'preview.hideSidebar': 'Masquer {label}',

  'misc.savedTemplate': 'Modèle enregistré',
  'misc.primary': 'Primaire',
  'misc.designSystem': 'Design system',

  'workspace.designFiles': 'Fichiers de design',
  'workspace.closeTab': 'Fermer l\'onglet',
  'workspace.deleteFileConfirm': 'Supprimer « {name} » du dossier du projet ?',
  'workspace.openFromDesignFiles': 'Ouvrir un fichier depuis',
  'workspace.designFilesLink': 'Fichiers de design',
  'workspace.loadingSketch': 'Chargement du croquis…',
  'designFiles.title': 'Fichiers de design',
  'designFiles.upload': 'Téléverser des fichiers',
  'designFiles.pasteText': 'Coller comme fichier texte',
  'designFiles.newSketch': 'Nouveau croquis',
  'designFiles.empty':
    'Rien ici pour l\'instant. Déposez des fichiers ci-dessous, ou créez un croquis / collez du texte.',
  'designFiles.refresh': 'Actualiser',
  'designFiles.delete': 'Supprimer',
  'designFiles.searchPlaceholder': 'Rechercher des fichiers…',
  'designFiles.up': 'Haut',
  'designFiles.back': 'Retour',
  'designFiles.crumbs': 'projet',
  'designFiles.rowMenu': 'Menu de ligne',
  'designFiles.openInTab': 'Ouvrir dans un onglet',
  'designFiles.download': 'Télécharger',
  'designFiles.downloadSelected': 'Download {n} as ZIP',
  'designFiles.clearSelection': 'Clear',
  'designFiles.selectAll': 'Select all',
  'designFiles.dropTitle': '⤓ Déposez les fichiers ici',
  'designFiles.dropDesc':
    'Images, documents, références ou dossiers — l\'agent les utilisera comme contexte.',
  'designFiles.upload.title': 'Téléverser des fichiers',
  'designFiles.paste.title': 'Coller du texte comme fichier',
  'designFiles.upload.label': 'Téléverser',
  'designFiles.paste.label': 'Coller',
  'designFiles.previewOpen': 'Ouvrir',
  'designFiles.previewClose': 'Fermer l\'aperçu',
  'designFiles.modified': 'Modifié {time} · {size}',
  'designFiles.weeksAgo': 'il y a {n} sem',
  'designFiles.sectionPages': 'Pages',
  'designFiles.sectionScripts': 'Scripts',
  'designFiles.sectionImages': 'Images',
  'designFiles.sectionSketches': 'Croquis',
  'designFiles.sectionOther': 'Autre',
  'designFiles.showMore': 'Afficher +{n} de plus',
  'designFiles.kindHtml': 'Page HTML',
  'designFiles.kindImage': 'Image',
  'designFiles.kindSketch': 'Croquis',
  'designFiles.kindText': 'Texte',
  'designFiles.kindCode': 'Script',
  'designFiles.kindPdf': 'PDF',
  'designFiles.kindDocument': 'Document',
  'designFiles.kindPresentation': 'Présentation',
  'designFiles.kindSpreadsheet': 'Tableur',
  'designFiles.kindBinary': 'Binaire',
  'pasteDialog.title': 'Coller du texte',
  'pasteDialog.hint': 'Enregistré dans le dossier du projet. Choisissez un nom.',
  'pasteDialog.fileNameLabel': 'Nom du fichier',
  'pasteDialog.namePlaceholder': 'notes.txt',
  'pasteDialog.contentLabel': 'Contenu',
  'pasteDialog.contentPlaceholder': 'Collez n\'importe quoi…',
  'pasteDialog.save': 'Enregistrer',
  'pasteDialog.cancel': 'Annuler',
  'sketch.save': 'Enregistrer le croquis',
  'sketch.cancel': 'Annuler',
  'sketch.saving': 'Enregistrement…',
  'sketch.tooltipDirty': 'Modifications non enregistrées',
  'sketch.tooltipClean': 'Enregistré',
  'fileViewer.empty': 'Sélectionnez un fichier à afficher.',
  'fileViewer.loading': 'Chargement…',
  'fileViewer.exportPptx': 'Exporter en PPTX',
  'fileViewer.openInNewTab': 'Ouvrir dans un nouvel onglet',
  'fileViewer.copyPath': 'Copier le chemin',
  'fileViewer.copied': 'Copié !',
  'fileViewer.share': 'Partager',
  'fileViewer.binaryMeta': 'Binaire · {size}',
  'fileViewer.binaryNote':
    'Fichier binaire ({size} octets). Téléchargez ou ouvrez depuis le disque pour inspecter.',
  'fileViewer.pdfMeta': 'PDF · {size}',
  'fileViewer.documentMeta': 'Document',
  'fileViewer.presentationMeta': 'Présentation',
  'fileViewer.spreadsheetMeta': 'Tableur',
  'fileViewer.previewUnavailable': 'Aperçu indisponible. Téléchargez ou ouvrez le fichier pour inspecter.',
  'fileViewer.download': 'Télécharger',
  'fileViewer.open': 'Ouvrir',
  'fileViewer.imageMeta': 'Image · {size}',
  'fileViewer.reactMeta': 'Composant React · {size}',
  'fileViewer.sketchMeta': 'Croquis · {size}',
  'fileViewer.markdownStreamingMeta': 'Aperçu en streaming…',
  'fileViewer.markdownErrorMeta': 'L\'aperçu peut être incomplet (erreur de génération).',
  'fileViewer.markdownStreamingStatus': 'Streaming… affichage du markdown partiel.',
  'fileViewer.markdownErrorStatus': 'Erreur de génération. Affichage du dernier contenu disponible.',
  'fileViewer.videoMeta': 'Vidéo · {size}',
  'fileViewer.audioMeta': 'Audio · {size}',
  'fileViewer.reload': 'Recharger',
  'fileViewer.reloadDisk': 'Recharger depuis le disque',
  'fileViewer.copy': 'Copier',
  'fileViewer.copyTitle': 'Copier le contenu du fichier',
  'fileViewer.saveDisabled': 'Enregistrer (visionneuse en lecture seule)',
  'fileViewer.save': 'Enregistrer',
  'fileViewer.preview': 'Aperçu',
  'fileViewer.source': 'Source',
  'fileViewer.tweaks': 'Ajustements',
  'fileViewer.comment': 'Commenter',
  'fileViewer.edit': 'Modifier',
  'fileViewer.draw': 'Dessiner',
  'fileViewer.zoomOut': 'Zoom arrière',
  'fileViewer.zoomIn': 'Zoom avant',
  'fileViewer.resetZoom': 'Réinitialiser le zoom',
  'fileViewer.reloadAria': 'Recharger',
  'fileViewer.previousSlide': 'Diapositive précédente',
  'fileViewer.nextSlide': 'Diapositive suivante',
  'fileViewer.slideNavAria': 'Navigation des diapositives',
  'fileViewer.present': 'Présenter',
  'fileViewer.presentInTab': 'Dans cet onglet',
  'fileViewer.presentFullscreen': 'Plein écran',
  'fileViewer.presentNewTab': 'Nouvel onglet',
  'fileViewer.exitPresentation': 'Quitter la présentation',
  'fileViewer.shareLabel': 'Partager',
  'fileViewer.exportPdf': 'Exporter en PDF',
  'fileViewer.exportPdfAllSlides': 'Exporter en PDF (toutes les diapos)',
  'fileViewer.exportPptxBusy': 'Attendez la fin du tour en cours.',
  'fileViewer.exportPptxHint':
    'Envoyez une requête à l\'agent pour convertir ce design en PPTX.',
  'fileViewer.exportPptxNa': 'L\'export PPTX n\'est pas disponible ici.',
  'fileViewer.exportZip': 'Télécharger en .zip',
  'fileViewer.exportHtml': 'Exporter en HTML autonome',
  'fileViewer.exportMd': 'Exporter en Markdown',
  'fileViewer.exportJsx': 'Exporter en JSX',
  'fileViewer.exportReactHtml': 'Exporter l\'aperçu en HTML',
  'fileViewer.saveAsTemplate': 'Enregistrer comme modèle…',
  'fileViewer.savingTemplate': 'Enregistrement du modèle…',
  'fileViewer.savedTemplate': 'Enregistré comme « {name} »',
  'fileViewer.savedTemplateFail': 'Impossible d\'enregistrer le modèle — réessayez.',
  'fileViewer.templateNamePrompt': 'Nom du modèle',
  'fileViewer.templateNameDefault': 'Modèle sans titre',
  'fileViewer.templateDescPrompt':
    'Courte description (optionnelle — qu\'est-ce qui rend ce modèle utile ?)',
  'fileViewer.deployToVercel': 'Déployer sur Vercel',
  'fileViewer.redeployToVercel': 'Redéployer',
  'fileViewer.deployingToVercel': 'Déploiement sur Vercel…',
  'fileViewer.preparingPublicLink': 'Préparation du lien public…',
  'fileViewer.copyDeployLink': 'Copier le lien',
  'fileViewer.deployModalTitle': 'Déployer sur Vercel',
  'fileViewer.deployModalSubtitle':
    'Déployez cet artefact HTML en tant que Vercel Preview avec votre propre compte.',
  'fileViewer.vercelToken': 'Jeton Vercel',
  'fileViewer.vercelTokenGetLink': 'Obtenir un jeton Vercel',
  'fileViewer.vercelTokenPlaceholder': 'Collez votre jeton Vercel',
  'fileViewer.vercelTokenReuseHint':
    'Le jeton enregistré sera utilisé. Entrez un nouveau jeton pour le remplacer.',
  'fileViewer.vercelTokenRequired': 'Entrez et enregistrez d\'abord un jeton Vercel.',
  'fileViewer.vercelTeamId': 'ID d\'équipe',
  'fileViewer.vercelTeamSlug': 'Slug d\'équipe',
  'fileViewer.optional': 'Optionnel',
  'fileViewer.vercelPreviewOnly': 'Les déploiements sont en Preview uniquement pour l\'instant.',
  'fileViewer.savingConfig': 'Enregistrement…',
  'fileViewer.deployConfigSaveFailed': 'Impossible d\'enregistrer les paramètres Vercel.',
  'fileViewer.deployFailed': 'Le déploiement a échoué. Vérifiez les paramètres Vercel et réessayez.',
  'fileViewer.deployResultLabel': 'URL déployée',
  'fileViewer.deployLinkPreparingLabel': 'Lien public en attente',
  'fileViewer.deployLinkDelayed':
    'Votre site est déployé. Vercel prépare encore le lien public.',
  'fileViewer.deployLinkProtectedLabel': 'Protection Vercel activée',
  'fileViewer.deployLinkProtected':
    'Votre site est déployé, mais Vercel exige une authentification pour ce lien de prévisualisation. Désactivez la protection de déploiement ou utilisez un domaine personnalisé.',
  'fileViewer.retryLink': 'Réessayer maintenant',

  'questionForm.submit': 'Envoyer',
  'questionForm.skip': 'Passer',
  'questionForm.locked': 'Répondu',

  'conv.switch': 'Changer de conversation',
  'conv.label': 'Conversation',
  'conv.heading': 'Conversations',
  'conv.new': '+ Nouvelle',
  'conv.empty': 'Aucune conversation pour l\'instant.',
  'conv.untitled': 'Conversation sans titre',
  'conv.renameTooltip': 'Double-cliquez pour renommer',
  'conv.delete': 'Supprimer la conversation',
  'conv.deleteConfirm': 'Supprimer « {title} » ? Cela supprime ses messages.',

  'agentPicker.label': 'Agent',
  'agentPicker.modeChoose': 'Choisir le mode d\'exécution',
  'agentPicker.localCli': 'CLI local',
  'agentPicker.daemonOff': 'daemon arrêté',
  'agentPicker.byok': 'API · BYOK',
  'agentPicker.selectAgent': 'Sélectionner un agent CLI détecté',
  'agentPicker.noAgents': 'aucun agent dans le PATH',
  'agentPicker.notInstalled': 'non installé',
  'agentPicker.rescan': 'Réanalyser le PATH local pour les agents',

  'tool.openInTab': 'Ouvrir {name} dans un onglet',
  'tool.open': 'ouvrir',
  'tool.todos': 'Tâches',
  'tool.write': 'Écrire',
  'tool.edit': 'Modifier',
  'tool.read': 'Lire',
  'tool.bash': 'Bash',
  'tool.glob': 'Glob',
  'tool.grep': 'Grep',
  'tool.fetch': 'Fetch',
  'tool.search': 'Rechercher',
  'tool.lines': '{n} lignes',
  'tool.changeSingular': 'modification',
  'tool.changePlural': 'modifications',
  'tool.in': 'dans {path}',
  'tool.hide': 'masquer',
  'tool.output': 'sortie',
  'tool.running': 'en cours…',
  'tool.error': 'erreur',
  'tool.done': 'terminé',

  'assistant.role': 'Assistant',
  'assistant.workingLabel': 'En cours',
  'assistant.doneLabel': 'Terminé',
  'assistant.unfinishedLabel': 'Arrêté avec du travail non terminé',
  'assistant.unfinishedSummary': '{n} tâche(s) restante(s)',
  'assistant.unfinishedMore': '+{n} de plus',
  'assistant.continueRemaining': 'Continuer les tâches restantes',
  'assistant.outTokens': '{n} sortie',
  'assistant.producedFiles': 'Fichiers de ce tour',
  'assistant.openFile': 'Ouvrir',
  'assistant.downloadFile': 'Télécharger',
  'assistant.thinking': 'Réflexion',
  'assistant.systemReminder': 'Rappel système',
  'assistant.waitingFirstOutput': 'En attente de la première sortie',
  'assistant.statusBootingAgent': 'Démarrage de l\'agent',
  'assistant.statusStarting': 'Démarrage',
  'assistant.statusRequesting': 'Envoi de la requête',
  'assistant.statusThinking': 'Réflexion',
  'assistant.statusStreaming': 'Streaming',
  'assistant.slowHint':
    'Plus long que d\'habitude. Le formulaire s\'affiche généralement en 5–10s — vous pouvez Arrêter et reformuler.',
  'assistant.verbEditing': 'Modification',
  'assistant.verbWriting': 'Écriture',
  'assistant.verbReading': 'Lecture',
  'assistant.verbSearching': 'Recherche',
  'assistant.verbRunning': 'Exécution',
  'assistant.verbTodos': 'Tâches',
  'assistant.verbFetching': 'Récupération',
  'assistant.verbCalling': 'Appel',

  'qf.answered': 'répondu',
  'qf.choose': 'Choisir…',
  'qf.required': 'requis',
  'qf.lockedSubmitted':
    'Réponses envoyées — l\'agent les utilise pour le reste de la session.',
  'qf.lockedPrev': 'Ce formulaire provient d\'un tour précédent.',
  'qf.hint':
    'Choisissez ce qui convient. Ignorez les champs optionnels qui ne vous intéressent pas — l\'agent utilisera des valeurs par défaut raisonnables.',
  'qf.submitDefault': 'Envoyer les réponses',
  'qf.submitDisabledTitle': 'Remplissez d\'abord les champs requis',
  'qf.submitTitle': 'Envoyer les réponses',
  'qf.cardSelected': 'sélectionné',
  'qf.cardRefs': 'Réfs :',
  'qf.cardSampleText': 'Portez ce vieux whisky au juge blond qui fume · 0123',

  'sketch.toolSelect': 'Sélection (sans effet)',
  'sketch.toolPen': 'Stylo',
  'sketch.toolText': 'Texte',
  'sketch.toolRect': 'Rectangle',
  'sketch.toolArrow': 'Flèche',
  'sketch.toolEraser': 'Gomme',
  'sketch.color': 'Couleur',
  'sketch.strokeSize': 'Taille du trait',
  'sketch.undo': 'Annuler',
  'sketch.clear': 'Effacer',
  'sketch.close': 'Fermer',
  'sketch.textPrompt': 'Texte :',

  'pet.title': 'Compagnons',
  'pet.subtitle': 'Adoptez un petit compagnon qui flotte au-dessus de votre espace de travail.',
  'pet.navTitle': 'Compagnons',
  'pet.navHint': 'Adopter ou personnaliser',
  'pet.tabBuiltIn': 'Intégrés',
  'pet.tabBuiltInHint': 'Compagnons fournis avec Open Design — choisissez-en un et adoptez-le.',
  'pet.builtInEmpty': 'Les compagnons intégrés sont indisponibles pour l\'instant. Essayez d\'actualiser l\'onglet Communauté une fois le daemon en ligne.',
  'pet.tabCustom': 'Personnalisé',
  'pet.tabCustomHint': 'Créez le vôtre avec un nom, un glyphe, une couleur ou un sprite.',
  'pet.tabCommunity': 'Communauté',
  'pet.tabCommunityHint': 'Compagnons éclos de Codex — adoptez-en un ou générez-en un nouveau.',
  'pet.tabsAria': 'Source du compagnon',
  'pet.adopt': 'Adopter',
  'pet.adoptedBadge': 'Adopté',
  'pet.adoptCallout': 'Adopter un compagnon',
  'pet.changePet': 'Changer de compagnon',
  'pet.wake': 'Réveiller',
  'pet.tuck': 'Cacher',
  'pet.wakeTitle': 'Réveiller le compagnon — afficher l\'overlay flottant.',
  'pet.tuckTitle': 'Cacher le compagnon — masquer l\'overlay flottant.',
  'pet.settingsTitle': 'Ouvrir les paramètres du compagnon',
  'pet.useCustom': 'Utiliser mon compagnon',
  'pet.customTitle': 'Créez le vôtre',
  'pet.customHint': 'Choisissez un nom, un glyphe et une couleur d\'accent — l\'overlay se met à jour en direct.',
  'pet.customGreetingPlaceholder': 'Faites dire bonjour à votre compagnon…',
  'pet.fieldName': 'Nom',
  'pet.fieldGlyph': 'Glyphe',
  'pet.fieldGlyphHint': 'Un seul emoji fonctionne le mieux (ex. 🐝, 🦄, 🐢).',
  'pet.fieldGreeting': 'Salutation',
  'pet.fieldAccent': 'Couleur d\'accent',
  'pet.fieldAccentCustom': 'Couleur personnalisée',
  'pet.overlayAria': 'Compagnon',
  'pet.spriteAria': '{name} — glisser pour déplacer, cliquer pour chatter',
  'pet.spriteTitle': 'Salut de {name} ! Cliquez pour chatter.',
  'pet.railAria': 'Sélecteur de compagnon',
  'pet.railTitle': 'Compagnons',
  'pet.railHint': 'Choisissez un compagnon à faire flotter au-dessus de votre espace de travail.',
  'pet.railExpand': 'Afficher le sélecteur de compagnon',
  'pet.railCollapse': 'Réduire le sélecteur de compagnon',
  'pet.railHide': 'Masquer le sélecteur de compagnon',
  'pet.railShow': 'Afficher le sélecteur de compagnon',
  'pet.railCustomFlavor': 'Le vôtre — nom, glyphe, couleur.',
  'pet.railCustomize': 'Personnaliser…',
  'pet.composerTitle': 'Compagnons — réveiller, cacher ou choisir',
  'pet.composerMenuTitle': 'Compagnons',
  'pet.composerMenuHint': 'astuce : tapez /pet pour basculer',
  'pet.composerOpenSettings': 'Personnaliser dans les paramètres',
  'pet.welcomeTeaserTitle': 'Adoptez un compagnon',
  'pet.welcomeTeaserBody': 'Un petit compagnon flottant qui traîne avec vous.',
  'pet.welcomeTeaserCta': 'En choisir un',
  'pet.imageUpload': 'Téléverser un sprite',
  'pet.imageReplace': 'Remplacer le sprite',
  'pet.imageRemove': 'Utiliser un emoji',
  'pet.imageHintIdle': 'PNG, JPG, WebP, GIF ou SVG. Téléversement de planche ? Déposez une bande horizontale et définissez le nombre de frames.',
  'pet.imageHintActive': 'Affichage de votre sprite. Définissez frames > 1 pour faire défiler une planche de sprites horizontale.',
  'pet.fieldFrames': 'Frames',
  'pet.fieldFramesHint': '1 = statique. > 1 = planche de sprites horizontale.',
  'pet.fieldFps': 'Vitesse (fps)',
  'pet.fieldFpsHint': 'À quelle vitesse les frames défilent.',
  'pet.atlasImport': 'Importer un sprite Codex',
  'pet.atlasImportTitle': 'Importer un atlas de pet 8×9 / 192×208 (PNG ou WebP).',
  'pet.atlasPickerTitle': 'Choisir une rangée d\'animation',
  'pet.atlasPickerHint': 'Les pets Codex sont livrés avec 9 rangées d\'animation. Par défaut, nous gardons l\'atlas complet pour que le pet change de rangée au survol, au glisser et à l\'inactivité. Vous pouvez aussi le figer sur une seule boucle.',
  'pet.atlasCancel': 'Abandonner l\'atlas',
  'pet.atlasAdopt': 'Figer sur cette rangée',
  'pet.atlasAdoptFull': 'Utiliser l\'atlas complet (animé)',
  'pet.atlasAdoptFullTitle': 'Garder chaque rangée pour que le pet réagisse au survol, à la direction du glisser et aux longues inactivités.',
  'pet.atlasAdoptRowTitle': 'Découper uniquement la rangée sélectionnée en une seule bande en boucle.',
  'pet.atlasActiveHint': 'Atlas animé actif — le pet choisit une rangée selon votre interaction (survol, glisser, inactivité).',
  'pet.atlasRow.idle': 'Inactif',
  'pet.atlasRow.running-right': 'Court à droite',
  'pet.atlasRow.running-left': 'Court à gauche',
  'pet.atlasRow.waving': 'Salut',
  'pet.atlasRow.jumping': 'Saut',
  'pet.atlasRow.failed': 'Échec',
  'pet.atlasRow.waiting': 'Attente',
  'pet.atlasRow.running': 'Course',
  'pet.atlasRow.review': 'Révision',
  'pet.hatchTitle': 'Faire éclore un nouveau compagnon avec l\'IA',
  'pet.hatchHint': 'Utilisez la compétence hatch-pet intégrée dans le chat pour générer une planche de sprites style Codex, puis importez-la ici.',
  'pet.hatchConcept': 'Concept du compagnon (optionnel)',
  'pet.hatchConceptPlaceholder': 'ex. un petit shiba pixel art dans un pull douillet',
  'pet.hatchCopy': 'Copier le prompt',
  'pet.hatchCopied': 'Copié !',
  'pet.hatchFoot': 'Une fois que la compétence a enregistré votre compagnon, revenez et choisissez « Importer un sprite Codex ».',
  'pet.slashPopoverAria': 'Commandes slash',
  'pet.slashPopoverTitle': 'Commandes',
  'pet.slashPopoverHint': '↑↓ naviguer · entrée pour choisir · échap pour fermer',
  'pet.slashPet': 'Basculer, adopter ou aller aux paramètres du compagnon.',
  'pet.slashPetWake': 'Réveiller l\'overlay flottant du compagnon.',
  'pet.slashPetTuck': 'Cacher le compagnon pour l\'instant.',
  'pet.slashHatch': 'Générer un pet Codex via la compétence hatch-pet.',
  'pet.slashHatchArg': '<concept>',
  'pet.codexTitle': 'Éclos récemment',
  'pet.codexSubtitle': 'Les pets empaquetés par la compétence hatch-pet apparaissent ici pour une adoption en un clic.',
  'pet.codexSubtitleWithDir': 'Analyse de {dir} pour les pets empaquetés par la compétence hatch-pet.',
  'pet.codexEmpty': 'Aucun pet éclos pour l\'instant. Tapez /hatch dans le chat pour en générer un.',
  'pet.codexLoading': 'Recherche de pets éclos…',
  'pet.codexRefresh': 'Actualiser',
  'pet.codexAdopt': 'Adopter',
  'pet.codexAdopting': 'Adoption…',
  'pet.communitySync': 'Télécharger les pets de la communauté',
  'pet.communitySyncing': 'Téléchargement…',
  'pet.communitySyncTitle': 'Synchroniser les derniers pets de Codex Pet Share + j20 Hatchery dans ~/.codex/pets/.',
  'pet.communitySyncDone': '{wrote} nouveaux pets synchronisés ({total} au total).',
  'pet.communitySyncFailed': 'Échec de la synchronisation : {error}',
  'pet.codexBundled': 'Fourni',
  'pet.codexBundledTitle': 'Livré avec Open Design — aucun téléchargement nécessaire.',

  'settings.notifications': 'Notifications',
  'settings.notificationsHint': 'Son et notification bureau à la fin d\'une tâche',
  'settings.notifyCompletionSound': 'Son de fin',
  'settings.notifyCompletionSoundHint': 'Joué quand un tour se termine. Désactivé par défaut.',
  'settings.notifySuccessSound': 'Son de succès',
  'settings.notifyFailureSound': 'Son d\'échec',
  'settings.notifyDesktop': 'Notification bureau',
  'settings.notifyDesktopHint': 'Envoyée lorsque la fenêtre n\'est pas active.',
  'settings.notifyDesktopBlocked': 'Notifications bloquées par le navigateur. Autorisez-les dans les paramètres du site.',
  'settings.notifyDesktopUnsupported': 'Notifications bureau indisponibles dans cet environnement.',
  'settings.notifyTest': 'Envoyer un test',
  'settings.notifyTestSent': 'Notification de test envoyée. Si aucune bannière n\'apparaît, vérifiez les paramètres de notification du navigateur et du système.',
  'settings.notifyTestFailed': 'L\'appel de notification a échoué. Vérifiez les paramètres de notification du navigateur et du système.',
  'settings.notifySoundDing': 'Ding',
  'settings.notifySoundChime': 'Carillon',
  'settings.notifySoundTwoToneUp': 'Bitonale montante',
  'settings.notifySoundPluck': 'Pizzicato',
  'settings.notifySoundBuzz': 'Buzz',
  'settings.notifySoundTwoToneDown': 'Bitonale descendante',
  'settings.notifySoundThud': 'Sourd',
  'notify.successTitle': 'Tâche terminée',
  'notify.failureTitle': 'Tâche échouée',
  'notify.successBody': 'Un tour est terminé.',
  'notify.failureBody': 'La tâche s\'est terminée avec une erreur.',
};
