L'editeur lisait les styles mais ne les ecrivait pas, exportait la feuille entiere et laissait le dernier-ecrivain gagner entre processus. - A8 : bouton Mise en forme (gras/italique/souligne, alignements, couleurs via selecteur natif, formats de nombre, fusion, volets figes, largeur/hauteur) et nouvelle route PUT .../xlsx/style (verrou, backup, swap atomique, garde de perte, If-Match) ; A9 : decision "pas de moteur de formule" annoncee dans l'UI ; A10 : undo/redo unifie, piles par fichier conservees au re-rendu - A11 : export de la selection + Markdown/HTML/impression et recherche sur toutes les feuilles ; A12 : concurrence optimiste (If-Match -> 409 reparable, retry qui relit) ; A13 : cache des metadonnees par (chemin, mtime, taille) - A14 : outils IA .xlsm/.csv + search_workbook, analyze_range, edit_xlsx_structure - tests : test_xlsx_styles.py (17), test_spreadsheet_tools.py (34), TestOptimisticConcurrency/TestMetaCache, JSDOM xlsx-viewer 107/107
2361 lines
165 KiB
JSON
2361 lines
165 KiB
JSON
{
|
||
"_meta": {
|
||
"locale": "fr",
|
||
"name": "Français"
|
||
},
|
||
"about.api_version": "Version API",
|
||
"about.backend": "Backend",
|
||
"about.browser": "Navigateur",
|
||
"about.built_with": "Construit avec",
|
||
"about.editor": "Éditeur",
|
||
"about.file_watcher": "Surveillance fichiers",
|
||
"about.files": "Fichiers",
|
||
"about.files_indexed": "Fichiers indexés",
|
||
"about.footer": "Fait avec ☕, 🍕 et quelques git push --force accidentels.",
|
||
"about.frontend": "Frontend",
|
||
"about.fun_quote": "« Aucun LLM n'a été blessé durant ce développement. »",
|
||
"about.git": "Git : <strong id=\"about-commit\">—</strong>",
|
||
"about.icons": "Icônes",
|
||
"about.joke_0": "0 bug connu. Les autres sont timides.",
|
||
"about.joke_1": "Compile du premier coup. (Sauf le lundi matin.)",
|
||
"about.joke_2": "Écrit par un humain. Probablement.",
|
||
"about.joke_3": "Aucun LLM n'a été blessé durant ce développement.",
|
||
"about.joke_4": "Quand ça marche, on appelle ça une feature.",
|
||
"about.joke_5": "CSS: 90% du temps de dev, 10% du code.",
|
||
"about.joke_6": "Dark mode activé depuis la naissance du projet.",
|
||
"about.joke_7": "Ça marche sur ma machine™",
|
||
"about.joke_8": "Techniquement, tout est un edge case.",
|
||
"about.joke_9": "Le CSS de ce panneau a pris plus de temps que le backend.",
|
||
"about.language": "Langue",
|
||
"about.last_delivery": "Dernière livraison : <strong id=\"about-build-date\">Juin 2026</strong>",
|
||
"about.made_with": "Fait avec ☕, 🎧 et quelques <code>git push --force</code> accidentels.",
|
||
"about.markdown_renderer": "Rendu Markdown",
|
||
"about.name": "Nom",
|
||
"about.platform": "Plateforme",
|
||
"about.section_app": "Application",
|
||
"about.section_components": "Composants",
|
||
"about.section_env": "Environnement",
|
||
"about.status": "Statut",
|
||
"about.subtitle": "Vos notes Obsidian, simplement accessibles.",
|
||
"about.syntax_highlight": "Coloration syntaxe",
|
||
"about.tagline": "Vos notes Obsidian,<br>simplement accessibles.",
|
||
"about.tests": "Tests",
|
||
"about.vaults_configured": "Vaults configurés",
|
||
"about.version": "Version",
|
||
"admin.audit_all_actions": "Toutes les actions",
|
||
"admin.audit_empty": "Aucun log disponible",
|
||
"admin.audit_filter_action": "Action",
|
||
"admin.audit_filter_user": "Filtrer par utilisateur",
|
||
"admin.audit_refresh": "Rafraîchir",
|
||
"admin.audit_title": "Logs d'audit",
|
||
"admin.back_btn": "← Retour",
|
||
"admin.backups_newest": "Plus récent : {days} jours",
|
||
"admin.backups_oldest": "Plus ancien : {days} jours",
|
||
"admin.backups_per_vault": "Par vault",
|
||
"admin.backups_title": "Statistiques backups",
|
||
"admin.backups_total": "Total : {count} backups ({size})",
|
||
"admin.backups_vault_empty": "Aucun backup",
|
||
"admin.close": "Fermer",
|
||
"admin.col_actions": "Actions",
|
||
"admin.col_last_login": "Dernière connexion",
|
||
"admin.col_role": "Rôle",
|
||
"admin.col_status": "Statut",
|
||
"admin.col_user": "Utilisateur",
|
||
"admin.col_vaults": "Vaults",
|
||
"admin.forbidden_msg": "Vous devez être administrateur pour accéder à cette page.",
|
||
"admin.forbidden_title": "Accès refusé",
|
||
"admin.header_subtitle": "Tableau de bord administrateur",
|
||
"admin.new_user": "+ Nouvel utilisateur",
|
||
"admin.page_title": "ObsiGate — Administration",
|
||
"admin.stats_cpu": "CPU",
|
||
"admin.stats_disk": "Disque",
|
||
"admin.stats_memory": "Mémoire",
|
||
"admin.stats_refresh": "Dernière mise à jour : {time}",
|
||
"admin.stats_sessions": "Sessions actives",
|
||
"admin.stats_title": "Statistiques temps réel",
|
||
"admin.stats_uptime": "Uptime",
|
||
"admin.title": "Administration — Utilisateurs",
|
||
"admin.users_manage_btn": "Gérer les utilisateurs",
|
||
"admin.users_manage_hint": "Ouvrir la modale de gestion des utilisateurs (CRUD complet)",
|
||
"admin.users_title": "Gestion utilisateurs",
|
||
"ai.action_applied": "Appliqué ✓",
|
||
"ai.action_apply": "Appliquer",
|
||
"ai.action_apply_all": "Tout approuver ({count})",
|
||
"ai.action_applying": "Application…",
|
||
"ai.action_create_dir": "Créer le dossier {path}",
|
||
"ai.action_create_file": "Créer le fichier {path}",
|
||
"ai.action_created_dir": "Dossier créé : {path}",
|
||
"ai.action_created_file": "Fichier créé : {path}",
|
||
"ai.action_failed": "Échec de l'action : {error}",
|
||
"ai.confirm_actions": "{count} actions à approuver",
|
||
"ai.stop": "Arrêter l'assistant",
|
||
"ai.stopped": "Exécution arrêtée.",
|
||
"ai.agent_mode_off": "Mode agent désactivé (lecture/recherche + actions)",
|
||
"ai.agent_mode_on": "Mode agent activé (outils de lecture/recherche + actions)",
|
||
"ai.casual": "Ton décontracté",
|
||
"ai.close": "Fermer l'assistant",
|
||
"ai.completion_added": "AI: complétion ajoutée",
|
||
"ai.context_documents": "{count} document(s) ouvert(s)",
|
||
"ai.context_general": "Contexte général",
|
||
"ai.context_general_desc": "Questions sur l'application et création de fichiers",
|
||
"ai.continue": "Continuer",
|
||
"ai.custom_rewrite": "Réécriture personnalisée",
|
||
"ai.diff_preview": "Aperçu des modifications",
|
||
"ai.done": "AI: texte traité",
|
||
"ai.edit": "Éditer",
|
||
"ai.error_invalid_key": "clé API invalide",
|
||
"ai.explain": "Expliquer",
|
||
"ai.fix_spelling": "Corriger l'orthographe",
|
||
"ai.fix_spelling_hint": "Corrige les fautes",
|
||
"ai.frontmatter": "Générer frontmatter",
|
||
"ai.fullscreen": "Plein écran",
|
||
"ai.generate": "Générer",
|
||
"ai.hint_add_details": "Ajoute des détails",
|
||
"ai.hint_edit_selection": "Modifie le texte sélectionné",
|
||
"ai.hint_generate": "Génère du contenu à partir de la sélection",
|
||
"ai.hint_improve": "Améliore la qualité du texte",
|
||
"ai.hint_translate": "Traduit le texte sélectionné",
|
||
"ai.improve": "Améliorer",
|
||
"ai.input_hint": "Entrée pour envoyer · Ctrl+Entrée pour un saut de ligne",
|
||
"ai.inline_completion_title": "AI Inline Completion (Ctrl+J) — Complète le texte automatiquement",
|
||
"ai.invalid_api_key": "AI: clé API invalide. Vérifiez DEEPSEEK_API_KEY dans .env",
|
||
"ai.longer": "Allonger",
|
||
"ai.no_api_key": "Aucune clé API configurée",
|
||
"ai.not_configured": "⚠️ AI non configuré — ajouter DEEPSEEK_API_KEY, OPENROUTER_API_KEY ou GEMINI_API_KEY dans .env",
|
||
"ai.processing": "⏳ AI: traitement en cours...",
|
||
"ai.professional": "Ton professionnel",
|
||
"ai.provider": "Fournisseur",
|
||
"ai.provider_default": "— défaut —",
|
||
"ai.model": "Modèle",
|
||
"ai.model_default": "— défaut —",
|
||
"ai.model_loading": "Chargement…",
|
||
"ai.model_offline": "hors ligne",
|
||
"ai.model_load_error": "Erreur de chargement",
|
||
"ai.model_settings": "Fournisseur & modèle",
|
||
"ai.model_search": "Rechercher un modèle…",
|
||
"ai.model_info": "Capacités du modèle",
|
||
"ai.model_more": "… {count} autres — affinez la recherche",
|
||
"ai.add_context": "Ajouter un contexte",
|
||
"ai.attach_image": "Joindre une image",
|
||
"ai.cap_audio_speech": "Audio Speech",
|
||
"ai.cap_audio_transcription": "Audio Transcriptions",
|
||
"ai.cap_chat": "Chat",
|
||
"ai.cap_embeddings": "Embeddings",
|
||
"ai.cap_images": "Images",
|
||
"ai.cap_rerank": "Rerank",
|
||
"ai.cap_video": "Video",
|
||
"ai.cap_vision": "Vision capable",
|
||
"ai.commands": "Commandes",
|
||
"ai.activity_sending": "Envoi de la requête…",
|
||
"ai.activity_streaming": "Réponse en cours…",
|
||
"ai.activity_tool": "Outil : {name}…",
|
||
"ai.activity_confirmation": "En attente de confirmation…",
|
||
"ai.activity_error": "Échec de la requête",
|
||
"ai.activity_done": "Terminé",
|
||
"ai.composer_label": "Message à l'assistant",
|
||
"ai.create_skill": "Créer un skill",
|
||
"ai.image": "image",
|
||
"ai.keys": "Clés API enregistrées",
|
||
"ai.model_changed": "Modèle changé : {name}",
|
||
"ai.no_results": "Aucun résultat",
|
||
"ai.none": "Aucun",
|
||
"ai.provider_changed": "Fournisseur changé : {name}",
|
||
"ai.providers": "Fournisseurs actifs",
|
||
"ai.remove": "Retirer",
|
||
"ai.resize_panel": "Redimensionner le panneau",
|
||
"ai.skill_created": "Skill « {name} » créé",
|
||
"ai.skill_id": "Identifiant",
|
||
"ai.skill_label": "Nom",
|
||
"ai.skill_prompt": "Prompt / instructions",
|
||
"ai.skill_prompt_placeholder": "Décris le comportement attendu du skill…",
|
||
"ai.usage_model": "Modèles disponibles : {list}",
|
||
"ai.usage_provider": "Fournisseurs disponibles : {list}",
|
||
"ai.vision_unsupported": "Le modèle sélectionné ne supporte pas l'analyse d'images",
|
||
"ai.quota_exceeded": "AI: quota dépassé ou paiement requis",
|
||
"ai.rewrite": "💬 Réécrire",
|
||
"ai.rewrite_done": "AI: texte réécrit",
|
||
"ai.rewrite_prompt": "Instruction de réécriture :",
|
||
"ai.rewrite_placeholder": "Ex. : rends le ton plus formel et ajoute une conclusion",
|
||
"ai.rewrite_title": "Réécrit le texte selon vos instructions",
|
||
"ai.select_text": "AI: sélectionnez du texte à traiter",
|
||
"ai.shorter": "Raccourcir",
|
||
"ai.shorter_hint": "Rend le texte plus concis",
|
||
"ai.simplify": "Simplifier",
|
||
"ai.simplify_hint": "Simplifie le langage",
|
||
"ai.suggestion_capabilities": "Que sais-tu faire ?",
|
||
"ai.suggestion_create_file": "Crée un fichier de notes de réunion",
|
||
"ai.suggestion_docs_contradictions": "Y a-t-il des contradictions entre ces documents ?",
|
||
"ai.suggestion_docs_keypoints": "Quels sont les points clés de ces documents ?",
|
||
"ai.suggestion_docs_summary": "Résume les documents ouverts",
|
||
"ai.suggestion_search": "Comment rechercher efficacement dans mes notes ?",
|
||
"ai.summarize": "Résumer",
|
||
"ai.text_processed": "AI: texte traité ✓",
|
||
"ai.text_rewritten": "AI: texte réécrit",
|
||
"ai.to_canvas": "Convertir en Canvas",
|
||
"ai.to_list": "Convertir en liste",
|
||
"ai.to_table": "Convertir en tableau",
|
||
"ai.tone_hint": "Change le ton du texte",
|
||
"ai.tool_call": "Outil : {name}",
|
||
"ai.tool_call_failed": "Outil {name} en échec",
|
||
"ai.toolbar_edit": "Éditer",
|
||
"ai.toolbar_generate": "Générer",
|
||
"ai.toolbar_rewrite": "Réécrire",
|
||
"ai.toolbar_tone": "Ton",
|
||
"ai.toolbar_toolbox": "Toolbox",
|
||
"ai.toolbar_translate": "Traduire",
|
||
"ai.toolbox": "🧰 Boîte",
|
||
"ai.toolbox_hint": "Outils de conversion",
|
||
"ai.translate_to": "Traduire en {lang}",
|
||
"auth.cannot_delete_self": "Impossible de supprimer son propre compte",
|
||
"auth.logged_out": "Déconnecté",
|
||
"auth.login_button": "Se connecter",
|
||
"auth.login_error": "Identifiants invalides",
|
||
"auth.login_title": "Accès sécurisé à vos vaults",
|
||
"auth.logout_title": "Déconnexion",
|
||
"auth.network_error": "Erreur réseau — vérifiez votre connexion",
|
||
"auth.new_password": "Nouveau mot de passe (vide = inchangé)",
|
||
"auth.password": "Mot de passe",
|
||
"auth.password_min": "Min. 8 caracteres",
|
||
"auth.remember_me": "Se souvenir de moi (30 jours)",
|
||
"auth.session_expired": "Session expirée, veuillez vous reconnecter",
|
||
"auth.user_deleted": "Utilisateur supprimé",
|
||
"auth.username": "Nom d'utilisateur",
|
||
"auto.0257e77f": "🧰 Boîte ▾",
|
||
"auto.033a9ddf": "Modèle par défaut",
|
||
"auto.03a6e5b1": "Les opérateurs utilisés s'affichent sous forme\n de chips colorés :",
|
||
"auto.13c3ee2c": "Recherche et autocomplétion",
|
||
"auto.13eb7a51": "AI: clé API invalide",
|
||
"auto.14c75ac6": "Sélectionnez les événements souhaités",
|
||
"auto.195a8e44": "Créer répertoire",
|
||
"auto.1a54bd69": "Exemple combiné",
|
||
"auto.1a8a8118": "Glisser-déposer",
|
||
"auto.1abf6661": "Le chemin affiché au-dessus du contenu est\n interactif :",
|
||
"auto.1d3330cc": "Pas de retry automatique en cas d'échec",
|
||
"auto.1d46301c": "Numéros de ligne",
|
||
"auto.1efbbc9a": "Édition avec CodeMirror 6",
|
||
"auto.209c5490": "La barre supérieure contient les éléments\n essentiels :",
|
||
"auto.272dd29a": "Providers supportés",
|
||
"auto.27a2f7c1": "ObsiGate supporte l'ouverture de plusieurs\n fichiers simultanément dans des onglets.",
|
||
"auto.28bf6aab": "Sécurité : signature HMAC-SHA256",
|
||
"auto.2a5af19b": "Le workflow se déclenche automatiquement à\n chaque événement",
|
||
"auto.2bc24d2e": "Toutes les opérations sensibles sont tracées\n dans un journal.",
|
||
"auto.2bc66bab": "Création de dossier via l'API",
|
||
"auto.337d8626": "Thème clair/sombre",
|
||
"auto.37561472": "🛡️ Sécurité",
|
||
"auto.396d0dd8": "La barre d'outils AI apparaît sous le titre\n de l'éditeur",
|
||
"auto.3be698f6": "Favorisez les opérateurs",
|
||
"auto.404c8f1c": "L'autocomplétion vous aide à trouver rapidement\n :",
|
||
"auto.41d7c6af": "Répertoire dédié",
|
||
"auto.460b8298": "Données",
|
||
"auto.4bc1f00a": "Utilisez des opérateurs pour affiner votre\n recherche :",
|
||
"auto.4c908ade": "Cliquez sur un vault pour l'ouvrir et voir son\n contenu. Les dossiers affichent un chevron et un\n badge avec le nombre d'éléments.",
|
||
"auto.4d281c6c": "AI: texte traité ✓",
|
||
"auto.4dfa6a25": "Pas de filtrage par vault — un webhook\n écoute toutes les vaults",
|
||
"auto.4fa5d7c2": "Édition rapide",
|
||
"auto.559ef1da": "Workflow recommandé",
|
||
"auto.598a0ca7": "Événements tracés",
|
||
"auto.5a486420": "Supprimer répertoire",
|
||
"auto.5d4a2516": "Ouvrez un fichier en mode Édition (bouton ✏️\n Éditer)",
|
||
"auto.5d936af6": "Regex générée",
|
||
"auto.62c3d50d": "💬 Réécrire",
|
||
"auto.678711b5": "Sélectionnez un contexte",
|
||
"auto.695d9e47": "Éditeur CodeMirror 6",
|
||
"auto.6c166d35": "ObsiGate est votre porte d'entrée web vers\n vos vaults Obsidian. Accédez, naviguez et\n recherchez dans toutes vos notes depuis\n n'importe quel appareil via une interface\n moderne et responsive.",
|
||
"auto.72e515fa": "Contrôle d'accès par vault",
|
||
"auto.753d30a8": "Ouvrez un fichier pour le voir\n apparaître ici",
|
||
"auto.774dbd63": "La palette de commandes permet d'accéder\n rapidement aux fichiers et aux actions sans\n utiliser la souris.",
|
||
"auto.79f6e1dd": "Multi-fenêtres",
|
||
"auto.7c9cdc3c": "Cochez les événements à écouter",
|
||
"auto.7e13c97a": "Ces paramètres s'appliquent immédiatement\n côté client.",
|
||
"auto.83a0efdf": "Réindexation",
|
||
"auto.9122fd5c": "Configuration avancée",
|
||
"auto.98c547ea": "ne déclenchent pas",
|
||
"auto.a05514cb": "Création via l'API ou la palette",
|
||
"auto.a105a2d9": "Éditer ▾",
|
||
"auto.a131dfab": "Éditeur CodeMirror",
|
||
"auto.a232672b": "Déploiement",
|
||
"auto.a3319169": "📦 À propos",
|
||
"auto.aa8ca265": "La vue utilise l'algorithme Barnes-Hut pour\n calculer la disposition en O(n log n),\n garantissant des performances fluides même avec\n des centaines de nœuds.",
|
||
"auto.ab5e6155": "ObsiGate crée automatiquement des sauvegardes\n avant chaque modification destructive.",
|
||
"auto.aedff644": "Créer fichier markdown",
|
||
"auto.b114ed1c": "Ces paramètres sont sauvegardés sur le\n serveur. Certains nécessitent un redémarrage\n ou une réindexation.",
|
||
"auto.b419c2c2": "Récepteur Python (Flask)",
|
||
"auto.b86ba5ea": "Recherche multi-critères",
|
||
"auto.b893650a": "Éditer fichier courant",
|
||
"auto.ba768f01": "Événements supportés",
|
||
"auto.c089d968": "Épinglez des fichiers pour les retrouver\n ici.",
|
||
"auto.c14b5603": "🎨 Thèmes",
|
||
"auto.c4922a99": "🤖 Intelligence Artificielle dans l'Éditeur",
|
||
"auto.caac40b9": "Choisissez un thème visuel. Chaque thème\n offre un mode sombre et clair.",
|
||
"auto.cd7332c8": "Les résultats incluent des facettes pour affiner\n :",
|
||
"auto.ce4eb802": "Générer ▾",
|
||
"auto.d33601dc": "Surveillance des fichiers en temps réel via\n watchdog. Les modifications sont détectées\n automatiquement et l'index est mis à jour\n sans redémarrage.",
|
||
"auto.d4d28717": "Déclencheur",
|
||
"auto.e0b8a606": "Définissez les patterns de tags à masquer\n dans la sidebar. Vous pouvez utiliser des\n wildcards pour cibler les tags de template.",
|
||
"auto.e61598c1": "Partagez un document pour le voir\n apparaître ici",
|
||
"auto.ec7260fa": "Types de fichiers supportés",
|
||
"auto.edf89626": "L'éditeur intégré offre :",
|
||
"auto.ef8c5f4d": "L'éditeur intégré offre une expérience complète\n d'édition :",
|
||
"auto.f346076a": "✏️ Édition avancée",
|
||
"auto.f5a8c116": "Événement",
|
||
"auto.f8ba6127": "🗂️ Fichiers cachés",
|
||
"auto.fc694490": "Suppression via l'API ou l'éditeur",
|
||
"backup.delete": "Supprimer",
|
||
"backup.diff": "Comparer",
|
||
"backup.file_restored": "Fichier restauré avec succès",
|
||
"backup.no_backups": "Aucune sauvegarde",
|
||
"backup.preview": "Aperçu",
|
||
"backup.purge": "Purger",
|
||
"backup.restore": "Restaurer",
|
||
"backup.restore_failed": "Échec de la restauration",
|
||
"backup.select_to_restore": "Sélectionnez un backup à restaurer",
|
||
"backup.timestamp_not_found": "Impossible de trouver le timestamp du backup",
|
||
"backup.title": "Sauvegardes",
|
||
"backup.version": "Version du {date}",
|
||
"backups.delete_confirm": "Supprimer ce backup ?",
|
||
"backups.empty": "Aucun backup disponible pour ce fichier.",
|
||
"backups.hint": "Les backups sont crees automatiquement avant chaque modification.",
|
||
"backups.loading": "Chargement des backups...",
|
||
"backups.purge_file": "Supprimer TOUS les backups de",
|
||
"backups.purge_vault": "Supprimer TOUS les backups du vault",
|
||
"backups.restore_confirm": "a la version du backup selectionne ?\nLa version actuelle sera sauvegardee.",
|
||
"backups.title": "Backups",
|
||
"button.cancel": "Annuler",
|
||
"common.actions": "Actions",
|
||
"common.all": "Tous",
|
||
"common.back": "Retour",
|
||
"common.cancel": "Annuler",
|
||
"common.close": "Fermer",
|
||
"common.confirm": "Confirmer",
|
||
"common.copied": "Copié !",
|
||
"common.copy": "Copier",
|
||
"common.create": "Créer",
|
||
"common.delete": "Supprimer",
|
||
"common.download": "Télécharger",
|
||
"common.edit": "Éditer",
|
||
"common.error": "Erreur",
|
||
"common.loading": "Chargement...",
|
||
"common.move": "Déplacer",
|
||
"common.never": "Jamais",
|
||
"common.next": "Suivant",
|
||
"common.no": "Non",
|
||
"common.none": "Aucun",
|
||
"common.ok": "OK",
|
||
"common.previous": "Précédent",
|
||
"common.refresh": "Rafraîchir",
|
||
"common.rename": "Renommer",
|
||
"common.root": "(racine)",
|
||
"common.save": "Enregistrer",
|
||
"common.search": "Rechercher",
|
||
"common.unknown": "Inconnue",
|
||
"common.yes": "Oui",
|
||
"collab.peers_title": "{count} personne(s) connectée(s)",
|
||
"collab.presence_title": "Collaboration temps réel",
|
||
"collab.status_connected": "Collaboration active",
|
||
"collab.status_connecting": "Connexion à la collaboration…",
|
||
"collab.status_disconnected": "Collaboration interrompue — reconnexion…",
|
||
"config.about": "À propos",
|
||
"config.about_error": "Erreur de chargement",
|
||
"config.about_loading": "Chargement...",
|
||
"config.add_webhook": "Ajouter",
|
||
"config.ai_deepseek_label": "DeepSeek API Key",
|
||
"config.ai_default_model": "Modèle par défaut",
|
||
"config.ai_capabilities": "Capacités du modèle",
|
||
"config.ai_default_provider": "Fournisseur par défaut",
|
||
"config.ai_gemini_label": "Gemini API Key",
|
||
"config.ai_keys": "Clés API IA",
|
||
"config.ai_keys_desc": "Configurez les clés API pour l'éditeur IA.",
|
||
"config.ai_model": "Modèle",
|
||
"config.ai_openrouter_label": "OpenRouter API Key",
|
||
"config.ai_header_desc": "Configurez vos clés API fournisseur par fournisseur. Dépliez une carte pour saisir une clé, puis cliquez sur Tester pour charger les modèles.",
|
||
"config.ai_search_placeholder": "Rechercher un fournisseur…",
|
||
"config.ai_default_section": "Configuration par défaut",
|
||
"config.ai_providers_title": "Fournisseurs d'API",
|
||
"config.ai_providers_empty": "Aucun fournisseur ne correspond",
|
||
"config.ai_status_configured": "Configuré",
|
||
"config.ai_status_not_configured": "Non configuré",
|
||
"config.ai_delete_key_title": "Supprimer la clé API",
|
||
"config.api_keys_saved": "Clés API sauvegardées",
|
||
"config.section_sources": "🔗 Sources connectées & recherche",
|
||
"config.sources_desc": "Clés utilisées par les outils de l'Assistant IA (recherche web à clé : Tavily, Brave, SerpAPI, Exa ; sources connectées : Gitea, GitHub). Elles sont stockées sur le serveur et priment sur les variables d'environnement.",
|
||
"config.gitea_url": "URL Gitea",
|
||
"config.key_set": "Configuré",
|
||
"config.key_unset": "Non configuré",
|
||
"config.delete_key": "Supprimer",
|
||
"config.delete_key_confirm": "Supprimer la clé",
|
||
"config.key_deleted": "Clé supprimée :",
|
||
"config.avatar_label": "Photo de profil",
|
||
"config.avatar_hint": "PNG, JPG ou WEBP — image carrée recadrée et réduite à 256 px. Apparaît dans la barre latérale.",
|
||
"config.avatar_presets_label": "Ou choisissez un avatar prédéfini",
|
||
"config.avatar_choose": "Choisir une image",
|
||
"config.avatar_remove": "Supprimer la photo",
|
||
"config.avatar_updated": "Photo de profil mise à jour",
|
||
"config.avatar_removed": "Photo de profil supprimée",
|
||
"config.avatar_too_large": "Image trop lourde (8 Mo maximum)",
|
||
"config.avatar_invalid_type": "Format non pris en charge — utilisez PNG, JPG ou WEBP",
|
||
"config.avatar_upload_failed": "Échec de l'enregistrement de la photo de profil",
|
||
"config.backups": "Sauvegardes",
|
||
"config.backups_desc": "Gérez les sauvegardes automatiques de vos fichiers.",
|
||
"config.client_config": "Configuration client",
|
||
"config.create_share": "Créer un partage",
|
||
"config.debounce_label": "Délai debounce (ms)",
|
||
"config.diagnostics": "Diagnostics",
|
||
"config.diagnostics_desc": "Informations techniques sur l'état du serveur.",
|
||
"config.display_name": "Nom d'affichage",
|
||
"config.error_prefix": "Erreur",
|
||
"config.error_unknown": "Erreur inconnue",
|
||
"config.force_reindex": "Forcer réindexation",
|
||
"config.hidden_files": "Fichiers cachés",
|
||
"config.hidden_files_desc": "Masquer les fichiers/dossiers commencant par un point dans l'interface (ils restent indexes et cherchables)",
|
||
"config.hidden_files_toggle": "Masquer les fichiers/dossiers caches",
|
||
"config.hidden_include_label": "Inclure les fichiers cachés",
|
||
"config.hidden_whitelist_label": "Whitelist (séparés par des virgules)",
|
||
"config.hint_activer_d_sactiver_la_surveillance_automatique_des": "Activer/désactiver la surveillance automatique des fichiers",
|
||
"config.hint_annuler_la_recherche_apr_s_ce_d_lai_5000_120000_": "Annuler la recherche après ce délai (5000-120000)",
|
||
"config.hint_contenu_index_par_fichier_10k_1m_r_indexation_requ": "Contenu indexé par fichier (10K-1M). Réindexation requise.",
|
||
"config.hint_d_lai_avant_ex_cution_de_la_recherche_100_2000_": "Délai avant exécution de la recherche (100-2000)",
|
||
"config.hint_d_lai_avant_traitement_des_changements_group_s_0_5": "Délai avant traitement des changements groupés (0.5-10 secondes)",
|
||
"config.hint_entre_5_et_100_fichiers_sauvegarde_sur_le_serveur_": "Entre 5 et 100 fichiers (sauvegarde sur le serveur)",
|
||
"config.hint_forcer_le_mode_polling_au_lieu_de_inotify_natif_ut": "Forcer le mode polling au lieu de inotify natif (utile si le mode natif ne fonctionne pas)",
|
||
"config.hint_intervalle_de_scrutation_en_mode_polling_1_30_seco": "Intervalle de scrutation en mode polling (1-30 secondes)",
|
||
"config.hint_multiplicateur_de_pertinence_pour_les_correspondan": "Multiplicateur de pertinence pour les correspondances dans le titre",
|
||
"config.hint_nombre_de_r_sultats_affich_s_par_page_10_200_": "Nombre de résultats affichés par page (10-200)",
|
||
"config.hint_nombre_max_de_tokens_largis_par_pr_fixe_10_200_": "Nombre max de tokens élargis par préfixe (10-200)",
|
||
"config.hint_nombre_maximum_de_versions_backup_conservees_par_f": "Nombre maximum de versions backup conservees par fichier (1-50)",
|
||
"config.hint_nombre_minimum_de_caract_res_avant_recherche_1_5_": "Nombre minimum de caractères avant recherche (1-5)",
|
||
"config.hint_threads_d_di_s_la_recherche_1_8_": "Threads dédiés à la recherche (1-8)",
|
||
"config.just_now": "a l'instant",
|
||
"config.lang_hint": "Utilisée par l'autocomplétion et le ghost text.",
|
||
"config.lang_label": "Langue préférée",
|
||
"config.link_copied": "Lien copié !",
|
||
"config.link_created": "Lien créé !",
|
||
"config.logout": "Déconnexion",
|
||
"config.max_backups": "Max backups par fichier",
|
||
"config.max_backups_desc": "Nombre maximum de versions backup conservées par fichier (1-50)",
|
||
"config.max_backups_label": "Max backups par fichier",
|
||
"config.max_content_hint": "Contenu indexé par fichier (10K-1M). Réindexation requise.",
|
||
"config.max_content_label": "Taille max contenu (octets)",
|
||
"config.max_content_size": "Taille max contenu (octets)",
|
||
"config.max_prefix_expansions": "Expansions préfixe max",
|
||
"config.min_query_label": "Longueur min. requête",
|
||
"config.min_query_length": "Longueur min. requête",
|
||
"config.name_placeholder": "Votre nom",
|
||
"config.no_keys": "Aucune clé à sauvegarder",
|
||
"config.no_restart": "Redémarrage non requis",
|
||
"config.note": "Note :",
|
||
"config.open_new_window": "Ouvrir dans nouvelle fenêtre",
|
||
"config.prefix_expansions_hint": "Nombre max de tokens élargis par préfixe (10-200)",
|
||
"config.prefix_expansions_label": "Expansions préfixe max",
|
||
"config.profile": "Profil utilisateur",
|
||
"config.profile_desc": "Préférences personnelles pour personnaliser l'expérience ObsiGate.",
|
||
"config.project_repo": "dépôt du projet",
|
||
"config.recent_history_count": "Nombre de fichiers dans l'historique",
|
||
"config.recent_history_count_desc": "Entre 5 et 100 fichiers (sauvegarde sur le serveur)",
|
||
"config.reindex": "Réindexer",
|
||
"config.reindex_desc": "Reconstruire l'index de recherche pour toutes les vaults.",
|
||
"config.reindex_error": "Erreur de réindexation",
|
||
"config.reindexing": "Réindexation...",
|
||
"config.reset": "Réinitialiser",
|
||
"config.restart_required": "Redémarrage requis",
|
||
"config.results_per_page": "Résultats par page",
|
||
"config.results_per_page_label": "Résultats par page",
|
||
"config.save": "Enregistrer",
|
||
"config.save_ai_keys": "Enregistrer les clés",
|
||
"config.save_backend": "Sauvegarder la configuration serveur",
|
||
"config.save_error": "Erreur de sauvegarde",
|
||
"config.save_hidden": "Enregistrer",
|
||
"config.saved": "✓ Sauvegardé",
|
||
"config.saving": "Sauvegarde",
|
||
"config.search_timeout": "Timeout recherche (ms)",
|
||
"config.search_workers": "Workers de recherche",
|
||
"config.search_workers_hint": "Threads dédiés à la recherche (1-8)",
|
||
"config.search_workers_label": "Workers de recherche",
|
||
"config.section_a-propos": "📦 À propos",
|
||
"config.section_about": "À propos",
|
||
"config.section_actions-sur-fichiers": "Actions sur fichiers",
|
||
"config.section_activation": "Activation",
|
||
"config.section_affichage": "Affichage",
|
||
"config.section_ai": "Clés API IA",
|
||
"config.section_arborescence-des-vaults": "Arborescence des vaults",
|
||
"config.section_astuces-et-bonnes-pratiques": "💡 Astuces et bonnes pratiques",
|
||
"config.section_audit-log": "Audit log",
|
||
"config.section_authentification": "Authentification",
|
||
"config.section_autocompletion": "Autocomplétion",
|
||
"config.section_backend": "🖥️ Paramètres backend",
|
||
"config.section_backup-automatique": "Backup automatique",
|
||
"config.section_backups": "Sauvegardes",
|
||
"config.section_barre-d-outils-ai": "Barre d'outils AI",
|
||
"config.section_breadcrumb-et-repositionnement": "Breadcrumb et repositionnement",
|
||
"config.section_cas-d-usage": "Cas d'usage",
|
||
"config.section_cas-d-usage-avances": "Cas d'usage avancés",
|
||
"config.section_chips-de-filtres-actifs": "Chips de filtres actifs",
|
||
"config.section_cles-api-intelligence-artificielle": "🤖 Cles API Intelligence Artificielle",
|
||
"config.section_configuration": "Configuration",
|
||
"config.section_configuration-avancee": "Configuration avancée",
|
||
"config.section_construit-avec": "Construit avec",
|
||
"config.section_diag": "Diagnostics",
|
||
"config.section_diagnostics": "Diagnostics",
|
||
"config.section_editeur-codemirror": "Éditeur CodeMirror",
|
||
"config.section_editeur-codemirror-6": "Éditeur CodeMirror 6",
|
||
"config.section_edition-avancee": "✏️ Édition avancée",
|
||
"config.section_edition-avec-codemirror-6": "Édition avec CodeMirror 6",
|
||
"config.section_en-tete": "En-tête",
|
||
"config.section_evenements-supportes": "Événements supportés",
|
||
"config.section_exemples-concrets": "Exemples concrets",
|
||
"config.section_facettes-et-tri": "Facettes et tri",
|
||
"config.section_fichiers": "📄 Fichiers",
|
||
"config.section_filtrage-de-la-sidebar": "Filtrage de la sidebar",
|
||
"config.section_filtrage-de-tags": "Filtrage de tags",
|
||
"config.section_filtrage-de-tags-template": "Filtrage de tags template",
|
||
"config.section_fonctionnalites": "Fonctionnalités",
|
||
"config.section_format-du-payload": "Format du payload",
|
||
"config.section_gestion-des-onglets": "📑 Gestion des onglets",
|
||
"config.section_hidden": "🗂️ Fichiers cachés",
|
||
"config.section_historique-recent-redemarrage-non-requis": "📋 Historique récent\n Redémarrage non requis",
|
||
"config.section_indicateurs-visuels": "Indicateurs visuels",
|
||
"config.section_intelligence-artificielle-dans-l-editeur": "🤖 Intelligence Artificielle dans l'Éditeur",
|
||
"config.section_interaction": "Interaction",
|
||
"config.section_interface": "Interface",
|
||
"config.section_interface-utilisateur": "🧭 Interface utilisateur",
|
||
"config.section_limitations-actuelles": "Limitations actuelles",
|
||
"config.section_mode-commandes": "Mode commandes",
|
||
"config.section_mode-fichiers": "Mode fichiers",
|
||
"config.section_navigation": "Navigation",
|
||
"config.section_navigation-entre-onglets": "Navigation entre onglets",
|
||
"config.section_onglets": "Onglets",
|
||
"config.section_operateurs-avances": "Opérateurs avancés",
|
||
"config.section_optimisations": "Optimisations",
|
||
"config.section_ouverture": "Ouverture",
|
||
"config.section_ouverture-d-onglets": "Ouverture d'onglets",
|
||
"config.section_palette-de-commandes": "⌨️ Palette de commandes",
|
||
"config.section_parametres-backend-redemarrage-requis": "Paramètres backend\n Redémarrage requis",
|
||
"config.section_parametres-de-recherche": "Paramètres de recherche",
|
||
"config.section_partage-et-webhooks": "🔗 Partage et Webhooks",
|
||
"config.section_partages-publics": "📤 Partages publics",
|
||
"config.section_perf": "Performance",
|
||
"config.section_performance": "Performance",
|
||
"config.section_personnalisation": "🎨 Personnalisation",
|
||
"config.section_profil-utilisateur": "👤 Profil utilisateur",
|
||
"config.section_profile": "Profil utilisateur",
|
||
"config.section_protection": "Protection",
|
||
"config.section_providers-supportes": "Providers supportés",
|
||
"config.section_publication-publique": "Publication publique",
|
||
"config.section_raccourcis-clavier": "⌨️ Raccourcis clavier",
|
||
"config.section_recent": "📜 Historique récent",
|
||
"config.section_recherche": "🔍 Recherche",
|
||
"config.section_recherche-et-autocompletion": "Recherche et autocomplétion",
|
||
"config.section_recherche-simple": "Recherche simple",
|
||
"config.section_redimensionnement-de-la-sidebar": "Redimensionnement de la sidebar",
|
||
"config.section_sauvegarde-automatique": "Sauvegarde automatique",
|
||
"config.section_sauvegardes-et-audits": "💾 Sauvegardes et Audits",
|
||
"config.section_search": "Paramètres de recherche",
|
||
"config.section_securite": "🛡️ Sécurité",
|
||
"config.section_securite-signature-hmac-sha256": "Sécurité : signature HMAC-SHA256",
|
||
"config.section_selection-de-vault": "Sélection de vault",
|
||
"config.section_server": "Serveur",
|
||
"config.section_shares": "📤 Partages publics",
|
||
"config.section_sidebar-barre-laterale": "Sidebar (barre latérale)",
|
||
"config.section_synchronisation-automatique": "Synchronisation automatique",
|
||
"config.section_tag-cloud": "Tag cloud",
|
||
"config.section_tags": "🏷️ Tags",
|
||
"config.section_tags-inline-vs-frontmatter": "Tags inline vs frontmatter",
|
||
"config.section_theme-clair-sombre": "Thème clair/sombre",
|
||
"config.section_themes": "🎨 Thèmes",
|
||
"config.section_trucs-et-astuces": "Trucs et astuces",
|
||
"config.section_types-de-fichiers-supportes": "Types de fichiers supportés",
|
||
"config.section_visualisation": "Visualisation",
|
||
"config.section_vue-graphe": "🗺️ Vue Graphe",
|
||
"config.section_watcher": "Synchronisation automatique",
|
||
"config.section_webhooks": "🪝 Webhooks",
|
||
"config.section_push": "🔔 Notifications push",
|
||
"config.section_plugins": "🧩 Plugins",
|
||
"config.section_workflow-recommande": "Workflow recommandé",
|
||
"config.section_zone-de-contenu": "Zone de contenu",
|
||
"config.server_config": "Configuration serveur",
|
||
"config.settings_saved": "✓ Paramètres sauvegardés",
|
||
"config.share_revoked": "Partage révoqué",
|
||
"config.shares": "Partages publics",
|
||
"config.shares_desc": "Gérez les liens de partage public de vos documents.",
|
||
"config.shares_empty": "Aucun partage actif",
|
||
"config.tag_boost_hint": "Multiplicateur de pertinence pour les correspondances dans les tags",
|
||
"config.tag_boost_label": "Boost tags",
|
||
"config.tag_filtering_label": "Filtrage de tags",
|
||
"config.test": "Tester",
|
||
"config.timeout_label": "Timeout recherche (ms)",
|
||
"config.title": "Configuration",
|
||
"config.toc_close": "Fermer le sommaire",
|
||
"config.toc_toggle": "Afficher le sommaire",
|
||
"config.title_boost": "Boost titre",
|
||
"config.title_boost_hint": "Multiplicateur de pertinence pour les correspondances dans le titre",
|
||
"config.title_boost_label": "Boost titre",
|
||
"config.nav_tokens": "🔑 Clés API & MCP",
|
||
"config.section_tokens": "🔑 Clés API & MCP",
|
||
"config.tokens_desc": "Jetons longue durée pour l'API REST et le serveur MCP — la même clé fonctionne pour les deux (en-tête Authorization: Bearer).",
|
||
"config.tokens_empty": "Aucune clé API créée.",
|
||
"config.token_name_placeholder": "Nom (ex: Claude Desktop)",
|
||
"config.token_name_required": "Un nom est requis",
|
||
"config.token_expiry_1d": "1 jour",
|
||
"config.token_expiry_30d": "1 mois",
|
||
"config.token_expiry_180d": "6 mois",
|
||
"config.token_expiry_365d": "1 an",
|
||
"config.token_expiry_never": "Sans fin",
|
||
"config.token_create": "Créer une clé",
|
||
"config.token_secret_warning": "Copiez cette clé maintenant — elle ne sera plus jamais affichée.",
|
||
"config.token_copy": "Copier",
|
||
"config.token_copied": "Clé copiée dans le presse-papiers",
|
||
"config.token_done": "Terminé",
|
||
"config.token_usage": "Utilisation",
|
||
"config.token_usage_detail": ": en-tête « Authorization: Bearer <clé> » sur l'API ; pour MCP, déclarez-la dans les headers de l'URL /mcp.",
|
||
"config.token_created": "Créée le",
|
||
"config.token_expires": "Expire",
|
||
"config.token_last_used": "Dernière utilisation",
|
||
"config.token_never_used": "Jamais utilisée",
|
||
"config.token_status_active": "Active",
|
||
"config.token_status_expired": "Expirée",
|
||
"config.token_revoke": "Révoquer",
|
||
"config.token_revoke_confirm": "Révoquer la clé",
|
||
"config.token_revoked_toast": "Clé révoquée (effet immédiat API + MCP)",
|
||
"config.token_created_toast": "Clé créée",
|
||
"config.url_required": "URL requise",
|
||
"config.watcher_debounce_label": "Debounce (s)",
|
||
"config.watcher_enabled_label": "Activer la surveillance",
|
||
"config.watcher_interval_label": "Intervalle polling (s)",
|
||
"config.watcher_polling_label": "Mode polling (fallback)",
|
||
"config.webhook_name_placeholder": "Nom",
|
||
"config.webhook_url_placeholder": "URL",
|
||
"config.webhooks": "Webhooks",
|
||
"config.webhooks_desc": "Notifications HTTP vers des services externes lors des changements de fichiers.",
|
||
"config.plugins": "Plugins",
|
||
"config.plugins_desc": "Gérer les plugins installés pour ce vault.",
|
||
"config.workers_label": "Workers de recherche",
|
||
"confirm.delete_dir": "Supprimer ce dossier et tout son contenu ?",
|
||
"confirm.delete_dir_named": "Supprimer \"{path}\" et TOUT son contenu ?",
|
||
"confirm.delete_file": "Supprimer définitivement ce fichier ?",
|
||
"confirm.delete_file_named": "Supprimer le fichier \"{path}\" ?",
|
||
"confirm.logout": "Voulez-vous vraiment vous déconnecter ?",
|
||
"conflict.no_conflicts": "Aucun conflit détecté",
|
||
"conflict.resolve_conflict": "Garder version conflit",
|
||
"conflict.resolve_local": "Garder version locale",
|
||
"conflict.resolved": "Conflit résolu",
|
||
"dashboard.all_vaults": "Tous les vaults",
|
||
"dashboard.bookmark_add": "Ajouter aux bookmarks",
|
||
"dashboard.bookmark_remove": "Retirer des bookmarks",
|
||
"dashboard.bookmarks": "Favoris",
|
||
"dashboard.conflict_date": "Conflit du ",
|
||
"dashboard.conflict_resolved": "Conflit résolu",
|
||
"dashboard.conflicts": "Conflits",
|
||
"dashboard.conflicts_title": "Conflits de synchronisation",
|
||
"dashboard.copy_btn": "Copier",
|
||
"dashboard.count_files": "fichier",
|
||
"dashboard.count_files_plural": "fichiers",
|
||
"dashboard.ctrl_hover_tip": "Survolez un document avec Ctrl pour un aperçu rapide. Cliquez sur Forge dans la barre d'outils pour l'éditeur avancé.",
|
||
"dashboard.day_ago": "il y a {n} j",
|
||
"dashboard.error_prefix": "Erreur: ",
|
||
"dashboard.expires": "Expire le {date}",
|
||
"dashboard.hide": "Masquer",
|
||
"dashboard.hour_ago": "il y a {n} h",
|
||
"dashboard.just_now": "à l'instant",
|
||
"dashboard.keep_conflict": "Garder le conflit",
|
||
"dashboard.keep_original": "Garder l'original",
|
||
"dashboard.load_error": "Erreur de chargement",
|
||
"dashboard.loading": "Chargement...",
|
||
"dashboard.min_ago": "il y a {n} min",
|
||
"dashboard.no_bookmarks": "Aucun favori",
|
||
"dashboard.no_conflicts": "Aucun conflit",
|
||
"dashboard.no_recent": "Aucun fichier récent",
|
||
"dashboard.no_shares": "Aucun document partagé",
|
||
"dashboard.open_btn": "Ouvrir",
|
||
"dashboard.pin_error": "Erreur lors de l'épinglage",
|
||
"dashboard.pin_hint": "Épinglez des fichiers pour les retrouver ici.",
|
||
"dashboard.quick_help": "Raccourcis & Astuces",
|
||
"dashboard.recent": "Récents",
|
||
"dashboard.recent_hint": "Ouvrez un fichier pour le voir apparaître ici",
|
||
"dashboard.shared_hint": "Partagez un document pour le voir apparaître ici",
|
||
"dashboard.shares": "Partages",
|
||
"dashboard.show": "Afficher",
|
||
"dashboard.size_bytes": " o",
|
||
"dashboard.size_gb": " Go",
|
||
"dashboard.size_kb": " Ko",
|
||
"dashboard.size_mb": " Mo",
|
||
"dashboard.stats": "Statistiques",
|
||
"dashboard.stats_files": "Fichiers",
|
||
"dashboard.stats_size": "Taille totale",
|
||
"dashboard.stats_tags": "Tags uniques",
|
||
"dashboard.stats_vaults": "Vaults",
|
||
"dashboard.tab_recent": "Récents",
|
||
"dashboard.tab_shared": "Partagés",
|
||
"dashboard.tab_stats": "Statistiques",
|
||
"dashboard.total_files": "Fichiers totaux",
|
||
"dashboard.total_size": "Taille totale",
|
||
"dashboard.total_tags": "Tags uniques",
|
||
"dashboard.vaults_count": "Vaults",
|
||
"dashboard.views": "{count} vue(s)",
|
||
"dashboard.welcome": "Bienvenue dans ObsiGate",
|
||
"dashboard.zero_files": "0 fichiers",
|
||
"dragdrop.cross_vault_unsupported": "Le déplacement entre vaults différents n'est pas supporté",
|
||
"dragdrop.move_failed": "Échec du déplacement",
|
||
"dragdrop.overlay_title": "Déposer des fichiers ou dossiers",
|
||
"dragdrop.overlay_vault_zone": "Importer dans le Vault",
|
||
"dragdrop.overlay_ai_zone": "Analyser avec l'Assistant IA",
|
||
"upload.uploading": "Téléversement de {count} fichier(s)...",
|
||
"upload.success": "{count} fichier(s) importé(s) avec succès",
|
||
"upload.partial": "{count} fichier(s) importé(s) ({errors} erreurs)",
|
||
"upload.error": "Échec de l'importation",
|
||
"upload.choose_target_folder": "Destination de l'importation",
|
||
"upload.target_vault": "Voute cible",
|
||
"upload.vault_root": "/ (Racine de la voute)",
|
||
"upload.target_directory": "Sous-répertoire cible",
|
||
"upload.filter_folders": "Filtrer ou rechercher un dossier...",
|
||
"upload.custom_folder": "Ou saisir un nouveau sous-dossier...",
|
||
"upload.import_summary": "Éléments à importer : {files} fichier(s), {dirs} dossier(s)",
|
||
"upload.import_button": "Importer",
|
||
"editor.cancel": "Annuler",
|
||
"editor.close": "Fermer",
|
||
"editor.delete_error": "Erreur de suppression",
|
||
"editor.edit": "Éditer fichier courant",
|
||
"editor.edit_current_desc": "Ouvrir le fichier actif dans l'éditeur",
|
||
"editor.exit_fullscreen": "Quitter le plein écran",
|
||
"editor.find": "Rechercher dans le fichier...",
|
||
"editor.find_case": "Respecter la casse",
|
||
"editor.find_regex": "Regex",
|
||
"editor.find_whole": "Mot entier",
|
||
"editor.forge_close_editor": "Fermer l'éditeur / modale",
|
||
"editor.forge_help": "Aide de l'éditeur Forge",
|
||
"editor.fullscreen": "Plein écran",
|
||
"editor.no_results": "Aucun résultat",
|
||
"editor.replace": "Remplacer",
|
||
"editor.save": "Enregistrer",
|
||
"editor.save_error": "Erreur de sauvegarde",
|
||
"editor.saved": "Sauvegardé ✓",
|
||
"editor.unsaved": "Modifications non sauvegardées",
|
||
"error.initialization": "Erreur lors de l'initialisation",
|
||
"file.copy_path": "Copier le chemin",
|
||
"file.delete": "Supprimer",
|
||
"file.graph_view": "Vue graphe",
|
||
"file.new_file": "Nouveau fichier",
|
||
"file.new_folder": "Nouveau dossier",
|
||
"file.properties": "Propriétés",
|
||
"file.rename": "Renommer",
|
||
"forge.popout": "Ouvrir dans une nouvelle fenêtre",
|
||
"forge.popout_label": "pop-out",
|
||
"forge.title_placeholder": "Titre...",
|
||
"graph.back": "Retour",
|
||
"graph.btn_directory": "📁 Dossier",
|
||
"graph.btn_full": "🌐 Tout",
|
||
"graph.cache_label": "(cache)",
|
||
"graph.category": "📂 Catégorie",
|
||
"graph.click_to_open": "cliquer pour ouvrir",
|
||
"graph.ctrl_hover_preview": "Ctrl+survol = aperçu complet",
|
||
"graph.ctrl_hover_preview_short": "Ctrl+survol = aperçu",
|
||
"graph.depth": "Profondeur",
|
||
"graph.depth_label": "prof={depth}",
|
||
"graph.edges_count": "{count} liens",
|
||
"graph.error_loading": "Erreur de chargement",
|
||
"graph.export_png": "Exporter PNG",
|
||
"graph.favorites": "Favoris",
|
||
"graph.filter_tag": "Filtrer par tag",
|
||
"graph.filter_type": "Filtrer par type",
|
||
"graph.focus_mode": "Mode focus",
|
||
"graph.forward": "Avancer",
|
||
"graph.fullscreen": "Plein écran",
|
||
"graph.loading": "Construction du graphe...",
|
||
"graph.nodes_count": "{count} nœuds",
|
||
"graph.parent": "Parent",
|
||
"graph.published": "Publié",
|
||
"graph.published_badge": "✅ publié",
|
||
"graph.scope_directory": "Dossier",
|
||
"graph.scope_full": "Vault complet",
|
||
"graph.title": "Vue Graphique — {vault}{path}",
|
||
"graph.type_directory": "Dossier",
|
||
"graph.type_file": "Fichier",
|
||
"graph.type_markdown": "Markdown",
|
||
"header.admin_panel": "Administration",
|
||
"header.config": "Configuration",
|
||
"header.help": "Aide",
|
||
"header.install_app": "Installer l'application",
|
||
"header.logo": "ObsiGate",
|
||
"header.logout": "Déconnexion",
|
||
"header.menu_about": "À propos",
|
||
"header.menu_about_desc": "Version, crédits & info",
|
||
"header.menu_admin": "Administration",
|
||
"header.menu_admin_desc": "Gérer les utilisateurs",
|
||
"header.menu_api": "API",
|
||
"header.menu_api_desc": "Documentation OpenAPI",
|
||
"header.menu_config": "Configurations",
|
||
"header.menu_config_desc": "Paramètres de l'application",
|
||
"header.menu_help": "Guide d'utilisation",
|
||
"header.menu_help_desc": "Ouvrir l'aide",
|
||
"header.menu_logout": "Déconnexion",
|
||
"header.menu_logout_desc": "Quitter la session",
|
||
"header.menu_profile": "Profil",
|
||
"header.menu_profile_desc": "Langue & préférences",
|
||
"header.menu_theme": "Thème",
|
||
"header.menu_theme_light": "Clair",
|
||
"header.menu_toggle": "Menu",
|
||
"header.menu_version": "Version",
|
||
"header.profile": "Profil",
|
||
"header.quick_help": "Raccourcis & Astuces",
|
||
"header.refresh": "Rafraîchir",
|
||
"header.search_placeholder": "Rechercher dans toutes les vaults...",
|
||
"header.sidebar_toggle": "Afficher/Masquer la sidebar",
|
||
"header.sync_status": "Synchronisation",
|
||
"help.00b9572b": ":\n Résultats classés par pertinence TF-IDF",
|
||
"help.04df1506": ":\n Recherche globale avec autocomplétion",
|
||
"help.065f53ee": ":\n Auto-save silencieux après 2s d'inactivité,\n flash vert de confirmation",
|
||
"help.085ec31f": ":\n Sélection rapide en haut de l'onglet Vaults",
|
||
"help.096367af": "Indicateurs visuels",
|
||
"help.170a6982": ": Affichage\n horizontal avec le nom du fichier et son\n icône",
|
||
"help.229fd3e2": "Notification Discord",
|
||
"help.2507242f": "🏷️ Tags",
|
||
"help.29afa01d": "🪝 Webhooks",
|
||
"help.2a2e5b0f": "⌨️ Raccourcis clavier",
|
||
"help.2a92203f": "Trucs et astuces",
|
||
"help.2c03a7ba": "Tags inline vs frontmatter",
|
||
"help.2dad2bfd": "Sauvegarde automatique",
|
||
"help.381abec7": "Limitations actuelles",
|
||
"help.3cf370b1": "Mode commandes",
|
||
"help.40dd7e38": "Tester avec curl",
|
||
"help.4de7e318": ": Les 50\n dernières recherches (localStorage)",
|
||
"help.550b0240": "Exemples concrets",
|
||
"help.5ab8c78d": ":\n Restent ouverts jusqu'à fermeture manuelle",
|
||
"help.5d0fbb81": ":\n Workers, boosts TF-IDF, expansions préfixe",
|
||
"help.5f87ea79": "Tag cloud",
|
||
"help.61ee5a22": "Interaction",
|
||
"help.62308f96": "⌨️ Palette de commandes",
|
||
"help.62549eca": "💾 Sauvegardes et Audits",
|
||
"help.63f024d4": "Filtrage de tags template",
|
||
"help.686f8313": "💡 Astuces et bonnes pratiques",
|
||
"help.6a5ddef2": ": Les tags\n s'adaptent au vault sélectionné",
|
||
"help.6ae5342c": ": Stats index,\n mémoire, moteur de recherche",
|
||
"help.6b88a375": ":\n Délai debounce, résultats par page, timeout",
|
||
"help.6b8fc728": ": ↑/↓\n pour naviguer, Enter pour sélectionner",
|
||
"help.6d547397": "Mode fichiers",
|
||
"help.6e940dac": ": Cliquez sur\n l'icône sidebar dans le header",
|
||
"help.733f0559": "🗺️ Navigation",
|
||
"help.77f4f06e": "Format du payload",
|
||
"help.7bcbb2e3": "Redimensionnement de la sidebar",
|
||
"help.7db70e27": ": Copier,\n Source, Télécharger, Éditer, Ouvrir dans\n nouvelle fenêtre",
|
||
"help.83f1d9ca": "Protection",
|
||
"help.86e3825d": "🎨 Personnalisation",
|
||
"help.8717768b": ":\n Métadonnées du nœud (tags, liens, chemin)",
|
||
"help.89bd3c4c": ": N'affiche\n que les nœuds avec un tag spécifique",
|
||
"help.8c5341e0": "📑 Gestion des onglets",
|
||
"help.8c65b2f2": "🔗 Partage et Webhooks",
|
||
"help.8caed987": "Affichage",
|
||
"help.9c7a0a8d": "🗺️ Vue Graphe",
|
||
"help.9edeaa11": ":\n Contrôle la profondeur d'exploration (0-3)",
|
||
"help.9f78b3ec": ":\n Navigation facilitée dans les fichiers longs",
|
||
"help.a4a4e21b": ": Bouton \"×\" pour\n réinitialiser le filtre",
|
||
"help.a579cf4d": ": Aperçu du\n contenu de la note sans naviguer",
|
||
"help.a648c49e": "Facettes et tri",
|
||
"help.ab2c4150": ": Fichiers (carrés)\n et dossiers (cercles) avec icônes",
|
||
"help.about": "À propos",
|
||
"help.access": "Accès",
|
||
"help.action_buttons": "Boutons d'action",
|
||
"help.actions_available": "Boutons disponibles au-dessus du contenu :",
|
||
"help.actions_detail": "Boutons disponibles au-dessus du contenu :",
|
||
"help.activation": "Activation",
|
||
"help.active_filter_chips": "Chips de filtres actifs",
|
||
"help.active_tab": "Onglet actif",
|
||
"help.add_remove": "Ajout/Suppression",
|
||
"help.adf30d78": "🔍 Recherche",
|
||
"help.advanced_operators": "Opérateurs avancés",
|
||
"help.advanced_use_cases": "Cas d'usage avancés",
|
||
"help.ai_completes": "Complète",
|
||
"help.ai_features": "Édition, ton, traduction, génération et outils via AI.",
|
||
"help.ai_flash_green": "flashe en vert",
|
||
"help.ai_tone_casual": "Ton décontracté",
|
||
"help.all_vaults": "Tous les vaults",
|
||
"help.atomic_writes": "Atomic writes",
|
||
"help.audit_log": "Audit log",
|
||
"help.auto_save": "Sauvegarde automatique",
|
||
"help.auto_scroll": "Auto-scroll",
|
||
"help.autocomplete": "Autocomplétion",
|
||
"help.b6619ac9": "Ouverture",
|
||
"help.backlinks_panel": "Panneau Backlinks",
|
||
"help.backup_auto": "Backup automatique",
|
||
"help.before_write": "Avant écriture",
|
||
"help.breadcrumb": "Breadcrumb",
|
||
"help.breadcrumb_clickable": "Breadcrumb cliquable",
|
||
"help.breadcrumb_reposition": "Breadcrumb et repositionnement",
|
||
"help.c017944b": "📄 Fichiers",
|
||
"help.c48fb18a": "Authentification",
|
||
"help.c8532869": ":\n Complétion, réécriture, traduction (voir\n section",
|
||
"help.case_sensitive": "Case-sensitive",
|
||
"help.cf8615b1": "Visualisation",
|
||
"help.ci_cd": "Automatisation CI/CD",
|
||
"help.clear": "Effacer",
|
||
"help.clear_search": "Effacer",
|
||
"help.click_segment": "Cliquez sur un segment",
|
||
"help.click_tab": "Clic sur un onglet",
|
||
"help.click_vault": "Cliquez sur le vault",
|
||
"help.clickable": "Cliquable",
|
||
"help.close_help": "Fermer l'aide",
|
||
"help.close_tab_x": "Bouton ✕",
|
||
"help.code_preview": "Code + Prévisualisation",
|
||
"help.command_palette": "Palette de commande",
|
||
"help.configuration": "Configuration",
|
||
"help.content_area": "Zone de contenu",
|
||
"help.content_shows": "La zone centrale affiche :",
|
||
"help.context_actions": "Actions sur fichiers",
|
||
"help.context_menu": "Menu contextuel (clic droit)",
|
||
"help.copy_path": "Copier le chemin",
|
||
"help.d186a19e": ":\n L'onglet \"Récent\" dans la sidebar liste vos\n derniers fichiers",
|
||
"help.d1ea1dc6": "n8n / Make (no-code)",
|
||
"help.d5c977ac": ": Les blocs de\n code s'adaptent au thème",
|
||
"help.dark": "Sombre",
|
||
"help.dashboard": "Dashboard statistiques",
|
||
"help.delete": "Supprimer",
|
||
"help.desc_00b9572b": ":\n Résultats classés par pertinence TF-IDF",
|
||
"help.desc_04493800": ": 64\n caractères hexadécimaux, impossible à\n deviner",
|
||
"help.desc_065f53ee": ":\n Auto-save silencieux après 2s d'inactivité,\n flash vert de confirmation",
|
||
"help.desc_071da87a": "Lecture seule : La vue\n publique n'affiche que le contenu sans\n édition",
|
||
"help.desc_0739c6a9": "Images : Support complet\n des syntaxes Obsidian",
|
||
"help.desc_085ec31f": ":\n Sélection rapide en haut de l'onglet Vaults",
|
||
"help.desc_0f9a1e5b": "Utilisez le filtrage sidebar\n : Plus rapide que la recherche globale pour\n trouver un fichier",
|
||
"help.desc_11cf9e8a": "Éditer ▾ — Menu de\n modification du texte sélectionné :\n \n 🪄\n Improve writing :\n Améliore la qualité, la clarté et le\n flux du texte",
|
||
"help.desc_13d206d4": "📊\n Convert to table :\n Transforme en tableau Markdown",
|
||
"help.desc_13d90039": "ObsiGate permet de partager des documents via un\n lien public temporaire.",
|
||
"help.desc_1577912b": "Rate limiting : 10\n tentatives / 15 min par IP + verrouillage\n compte",
|
||
"help.desc_170a6982": ": Affichage\n horizontal avec le nom du fichier et son\n icône",
|
||
"help.desc_188bc423": "Pour plus d'informations, consultez le\n dépôt du projet.",
|
||
"help.desc_19cf5730": ": Rotation\n automatique à 10 Mo",
|
||
"help.desc_19cfa369": "L'éditeur sauvegarde automatiquement après 2\n secondes d'inactivité. Le bouton de sauvegarde\n flashe en vert brièvement pour\n confirmer.",
|
||
"help.desc_1a04ae18": "Masquez la sidebar : Plus\n d'espace pour le contenu",
|
||
"help.desc_1ba39cc4": ":\n Déclencher un build quand une note de\n procédure est mise à jour",
|
||
"help.desc_1c130d89": "— Traduit le\n texte sélectionné vers une autre langue :",
|
||
"help.desc_1f11691c": "Atomic writes : Écriture\n via fichier temporaire + renommage atomique",
|
||
"help.desc_2349271d": "Automatisation CI/CD :\n Déclencher un build quand une note de\n procédure est mise à jour",
|
||
"help.desc_26f81732": "Édition rapide : Ouvrez\n l'éditeur, modifiez, sauvegardez",
|
||
"help.desc_287be69c": ":\n Réduisez les sections Vaults/Tags selon vos\n besoins",
|
||
"help.desc_2c220763": "Gestion des liens : Liste\n et révocation dans les Configurations",
|
||
"help.desc_2f2c16b5": ": Publier un\n article de blog quand un fichier est marqué",
|
||
"help.desc_31e7253b": ": Chaque backup\n est horodaté",
|
||
"help.desc_32e3d66d": "En cas d'erreur de clé API :\n AI: clé API invalide",
|
||
"help.desc_39979e71": ":\n Choisissez un vault pour réduire le bruit",
|
||
"help.desc_39e97b2f": "Note : l'événement\n file_modified est réservé pour\n usage futur. Les modifications de contenu\n via l'éditeur ne déclenchent pas encore de\n webhook.",
|
||
"help.desc_3ace259e": "— Complétion inline\n (",
|
||
"help.desc_3c4711b8": "Événements tracés :\n Écritures, suppressions, changements de\n configuration",
|
||
"help.desc_3d4e9189": "📋\n Simplify language :\n Simplifie le langage, évite le\n jargon",
|
||
"help.desc_3da1896a": "Les webhooks peuvent être activés/désactivés,\n modifiés ou supprimés à tout moment. Le\n last_fired_at indique la dernière\n exécution.",
|
||
"help.desc_3db2812f": "X-ObsiGate-Signature: sha256=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08\n \n Pour vérifier côté récepteur : calculez\n HMAC-SHA256(corps_brut, secret) et\n comparez. Le header\n X-ObsiGate-Event contient aussi le\n type d'événement pour un routage rapide.",
|
||
"help.desc_40c92863": "Exploration par tags :\n Cliquez sur un tag dans une note pour voir\n toutes les notes similaires",
|
||
"help.desc_42a81347": ": Dernière\n modification",
|
||
"help.desc_443b76b5": "Wikilinks : Naviguez entre\n notes comme dans Obsidian",
|
||
"help.desc_47e1e10f": "Générer ▾ — Génère du\n contenu à partir de la sélection :\n \n ℹ️ Explain this :\n Explique le texte sélectionné de\n façon claire",
|
||
"help.desc_4de7e318": ": Les 50\n dernières recherches (localStorage)",
|
||
"help.desc_50a33a05": "⚙️\n Generate frontmatter\n : Génère un bloc YAML frontmatter",
|
||
"help.desc_5374685a": "Mobile-friendly : Utilisez\n le bouton hamburger sur mobile",
|
||
"help.desc_5396ed9e": "Profitez de l'historique :\n Réutilisez vos recherches fréquentes",
|
||
"help.desc_53bfaeca": ": Navigation par\n pages de 50 résultats",
|
||
"help.desc_5524e921": "Ton ▾ — Change le ton du\n texte :\n \n \n 💼 Professional :\n Ton formel et professionnel",
|
||
"help.desc_555e0305": "Pour changer de provider par défaut :\n AI_DEFAULT_PROVIDER=openrouter",
|
||
"help.desc_56760d7f": "Chaque webhook reçoit un POST avec\n Content-Type: application/json :",
|
||
"help.desc_58d2326f": "Navigation visuelle : Le\n breadcrumb repositionne automatiquement la\n sidebar",
|
||
"help.desc_599f3242": ": Logger\n toutes les modifications dans une base de\n données externe",
|
||
"help.desc_5a53de53": "📏 Make shorter :\n Rend le texte plus concis tout en\n préservant l'information",
|
||
"help.desc_5ab8c78d": ":\n Restent ouverts jusqu'à fermeture manuelle",
|
||
"help.desc_5d0fbb81": ":\n Workers, boosts TF-IDF, expansions préfixe",
|
||
"help.desc_5e9a7fd9": ": Liste\n et révocation dans les Configurations",
|
||
"help.desc_5fc28b7d": ": Créé\n automatiquement au premier démarrage",
|
||
"help.desc_625112fd": "Sélectionnez un contexte :\n Choisissez un vault pour réduire le bruit",
|
||
"help.desc_660051b0": "Audit externe : Logger\n toutes les modifications dans une base de\n données externe",
|
||
"help.desc_664b1d09": "Breadcrumb cliquable :\n Repositionnez rapidement la sidebar",
|
||
"help.desc_68c2b170": "Rotation : Rotation\n automatique à 10 Mo",
|
||
"help.desc_6902f20d": "Favorisez les opérateurs :\n tag: et\n vault: accélèrent la recherche",
|
||
"help.desc_698d92ec": "Gestion de l'espace :\n Réduisez les sections Vaults/Tags selon vos\n besoins",
|
||
"help.desc_6a5ddef2": ": Les tags\n s'adaptent au vault sélectionné",
|
||
"help.desc_6a80241e": ": La largeur\n est sauvegardée",
|
||
"help.desc_6ae5342c": ": Stats index,\n mémoire, moteur de recherche",
|
||
"help.desc_6b649b1e": ": Surligné en\n couleur d'accentuation",
|
||
"help.desc_6b88a375": ":\n Délai debounce, résultats par page, timeout",
|
||
"help.desc_6b8fc728": ": ↑/↓\n pour naviguer, Enter pour sélectionner",
|
||
"help.desc_6bc48f59": "Créez un\n Webhook Trigger dans n8n ou\n Make",
|
||
"help.desc_6caffeed": ": Cliquez pour\n filtrer les résultats",
|
||
"help.desc_6d68fbc9": "from flask import Flask, request\\nimport hmac, hashlib\\n\\napp = Flask(__name__)\\nWEBHOOK_SECRET = \"mon-secret\" # même que dans ObsiGate\\n\\[email protected](\"/webhook\", methods=[\"POST\"])\\ndef webhook():\\n # Vérifier la signature\\n signature = request.headers.get(\"X-ObsiGate-Signature\", \"\")\\n body = request.get_data()\\n expected = \"sha256=\" + hmac.new(\\n WEBHOOK_SECRET.encode(), body, hashlib.sha256\\n ).hexdigest()\\n if not hmac.compare_digest(signature, expected):\\n return \"Invalid signature\", 403\\n\\n payload = request.get_json()\\n print(f\"Événement: {payload['event']}\")\\n print(f\"Fichier: {payload['data']['vault']}/{payload['data']['path']}\")\\n return \"OK\", 200\\n\\napp.run(port=5000)\n\n n8n / Make (no-code)\n \n \n Créez un\n Webhook Trigger dans n8n ou\n Make\n \n \n Copiez l'URL générée (ex:\n https://n8n.monserveur.com/webhook/abc123)\n \n \n Dans ObsiGate, ajoutez un webhook pointant\n vers cette URL\n \n Sélectionnez les événements souhaités\n \n Le workflow se déclenche automatiquement à\n chaque événement\n \n \n\n Notification Discord\n \n Utilisez un webhook relais (n8n, Make, ou un\n script) pour transformer le payload ObsiGate en\n message Discord :",
|
||
"help.desc_6ebebdfd": ": Chaque type\n d'opérateur a sa couleur",
|
||
"help.desc_6f7c5889": ": Alerter un\n canal Slack/Discord quand un document est\n créé",
|
||
"help.desc_71eeb16a": ":\n Réutilisez vos recherches fréquentes",
|
||
"help.desc_723ed8db": "Non-root Docker : Conteneur\n tourne avec UID 1000",
|
||
"help.desc_752789ab": ": Écriture\n via fichier temporaire + renommage atomique",
|
||
"help.desc_759926ee": "💬 Casual : Ton\n décontracté et conversationnel",
|
||
"help.desc_7671e56a": "Avant écriture : Sauvegarde\n du contenu original dans\n .obsigate-backup/",
|
||
"help.desc_7708f226": "JWT + Argon2id : Tokens JWT\n avec mots de passe hachés Argon2id",
|
||
"help.desc_7819b56f": "Copiez l'URL générée (ex:\n https://n8n.monserveur.com/webhook/abc123)",
|
||
"help.desc_7ab5be50": "Traduire ▾ — Traduit le\n texte sélectionné vers une autre langue :\n \n 🇬🇧 English · 🇨🇳 Chinese · 🇯🇵\n Japanese · 🇩🇪 German · 🇫🇷 French ·\n 🇪🇸 Spanish",
|
||
"help.desc_7b45490b": "Dans ObsiGate, ajoutez un webhook pointant\n vers cette URL",
|
||
"help.desc_7e86626c": "Bouton Partager : Dans les\n actions du fichier, génère un lien unique",
|
||
"help.desc_7f1d0512": "Path traversal : Validation\n des chemins contre les attaques\n ../",
|
||
"help.desc_7ff2fa21": "Pendant une requête AI, un toast\n ⏳ AI: traitement en cours...\n s'affiche",
|
||
"help.desc_803161e5": "La barre d'outils contient les boutons suivants\n :",
|
||
"help.desc_828db5da": ": Les\n deux types sont combinés",
|
||
"help.desc_858681a1": ":\n Durée de vie en heures",
|
||
"help.desc_85effb89": "Timeout de 5 secondes par\n requête — les webhooks sont \"fire and\n forget\" (pas de retry)",
|
||
"help.desc_8717768b": ":\n Métadonnées du nœud (tags, liens, chemin)",
|
||
"help.desc_87b348c3": "Recherche multi-critères :\n tag:docker tag:linux vault:IT\n nginx",
|
||
"help.desc_89a8f5de": "Déploiement : Publier un\n article de blog quand un fichier est marquépublish: true",
|
||
"help.desc_89bd3c4c": ": N'affiche\n que les nœuds avec un tag spécifique",
|
||
"help.desc_8f0bffe3": ": Tokens JWT\n avec mots de passe hachés Argon2id",
|
||
"help.desc_9186a3a3": "Explorez l'arborescence :\n Naviguez dans les dossiers",
|
||
"help.desc_93902d18": "Utilisez les tags : Filtrez\n par tags pour affiner",
|
||
"help.desc_9846fc07": ": Masque\n JWT, clés API, tokens GitHub dans les\n aperçus",
|
||
"help.desc_985d759b": "Token unique : 64\n caractères hexadécimaux, impossible à\n deviner",
|
||
"help.desc_991307d6": "— Génère du\n contenu à partir de la sélection :",
|
||
"help.desc_995a711f": ": Ouvre l'éditeur\n CodeMirror",
|
||
"help.desc_99c6f0ec": "Export : Téléchargez des\n fichiers pour backup ou partage",
|
||
"help.desc_9cb5974c": ": Ouvrez\n plusieurs notes dans des onglets séparés",
|
||
"help.desc_9d0e39d0": "Headers CSP :\n Content-Security-Policy, X-Frame-Options,\n XSS-Protection",
|
||
"help.desc_9edeaa11": ":\n Contrôle la profondeur d'exploration (0-3)",
|
||
"help.desc_9f321d1e": ":\n Écritures, suppressions, changements de\n configuration",
|
||
"help.desc_9f78b3ec": ":\n Navigation facilitée dans les fichiers longs",
|
||
"help.desc_9fec424d": ": Score\n TF-IDF (défaut)",
|
||
"help.desc_a0ec890a": "— Menu de\n modification du texte sélectionné :",
|
||
"help.desc_a13f7f2c": "Une fois terminé,\n AI: texte traité ✓ confirme\n le succès",
|
||
"help.desc_a4a4e21b": ": Bouton \"×\" pour\n réinitialiser le filtre",
|
||
"help.desc_a52fc3b1": ": Télécharge le\n fichier",
|
||
"help.desc_a579cf4d": ": Aperçu du\n contenu de la note sans naviguer",
|
||
"help.desc_a601f22e": "Allez dans ⚙️ Configurations → onglet\n Webhooks",
|
||
"help.desc_a69804cd": "Répertoire dédié :\n .obsigate-backup/ dans le\n répertoire de la vault",
|
||
"help.desc_a6cb3b26": "🔤\n Fix spelling & grammar\n : Corrige les fautes d'orthographe\n et de grammaire",
|
||
"help.desc_a974f7a6": "Journal : Fichier\n data/audit.log au format JSON\n lines",
|
||
"help.desc_a9c2c520": "Les webhooks permettent à ObsiGate de\n notifier automatiquement des services\n externes\n lorsque des fichiers ou dossiers sont modifiés.\n Chaque événement déclenche un\n POST HTTP vers l'URL de votre\n choix, avec un payload JSON détaillé.",
|
||
"help.desc_a9db82b5": ": Centre la vue\n sur un nœud spécifique",
|
||
"help.desc_ab2c4150": ": Fichiers (carrés)\n et dossiers (cercles) avec icônes",
|
||
"help.desc_action_buttons": "Copier, Source, Télécharger, Éditer, Ouvrir dans nouvelle fenêtre",
|
||
"help.desc_adv_syntax": ":\n Python, JS, HTML, CSS, Java, C++, Rust, Go\n et bien d'autres",
|
||
"help.desc_ae213f54": ":\n Combinez opérateurs et texte libre",
|
||
"help.desc_aec0ad2c": "💬 Réécrire — Réécrit le\n texte selon vos instructions personnalisées.\n Une boîte de dialogue vous demande votre\n instruction.",
|
||
"help.desc_all_tags": ": Extraits des frontmatters YAML et inline (#tag)",
|
||
"help.desc_all_vaults": ": Vue globale de tous vos contenus",
|
||
"help.desc_autoscroll": ": La sidebar se positionne automatiquement",
|
||
"help.desc_b54c21ef": "Contrôle d'accès par vault\n : Chaque utilisateur voit uniquement ses\n vaults",
|
||
"help.desc_b5f89b3b": "ObsiGate intègre un assistant IA directement\n dans l'éditeur de texte. Pour l'activer,\n configurez au moins un provider AI dans le\n fichier .env (DeepSeek, OpenRouter\n ou Gemini).",
|
||
"help.desc_b6169f2e": "Les webhooks se gèrent dans le modal\n Configurations (⚙️ menu\n Options), section Webhooks. Réservé aux\n administrateurs.",
|
||
"help.desc_b9c94994": ": Aperçu de\n la regex appliquée",
|
||
"help.desc_ba4578ae": "Redémarrez le conteneur :\n docker compose down && docker compose\n up -d --build",
|
||
"help.desc_bc08f215": "Secret redactor : Masque\n JWT, clés API, tokens GitHub dans les\n aperçus",
|
||
"help.desc_beed5686": ": Cliquez sur\n \"Thème\" dans le menu",
|
||
"help.desc_breadcrumb": "Chemin du fichier (cliquable pour repositionner la sidebar)",
|
||
"help.desc_c1f72521": "{\n \"event\": \"file_created\",\n \"timestamp\": \"2026-06-03T14:30:00.123456+00:00\",\n \"data\": {\n \"vault\": \"IT\",\n \"path\": \"procedures/deploiement.md\"\n }\n}\n\n Sécurité : signature HMAC-SHA256\n \n Si vous configurez un secret, chaque requête\n inclut un header\n X-ObsiGate-Signature :",
|
||
"help.desc_c63f02cc": "— Réécrit le\n texte selon vos instructions personnalisées.\n Une boîte de dialogue vous demande votre\n instruction.",
|
||
"help.desc_c8532869": ":\n Complétion, réécriture, traduction (voir\n section",
|
||
"help.desc_c992f2e5": "Remplissez :\n Nom (descriptif),\n URL (endpoint cible),\n Secret (optionnel)",
|
||
"help.desc_case_sensitive": ": Bouton \"Aa\" pour respecter la casse",
|
||
"help.desc_cb6f0bfd": ": Ouvrez\n l'éditeur, modifiez, sauvegardez",
|
||
"help.desc_cc8e35ba": "Notifications : Alerter un\n canal Slack/Discord quand un document est\n créé",
|
||
"help.desc_cdf7bb46": "Recherchez intelligemment :\n Combinez opérateurs et texte libre",
|
||
"help.desc_cf5ccd40": ": Compteurs\n par tag dans les résultats",
|
||
"help.desc_cfe362a7": "Export PDF : Téléchargement\n du document partagé en PDF via/s/{token}/pdf",
|
||
"help.desc_check_btn": ": Sauvegarde\n manuelle",
|
||
"help.desc_chip_remove": ": Cliquez sur \"×\" pour retirer un filtre",
|
||
"help.desc_chip_view": ": Voir d'un coup d'œil les filtres actifs",
|
||
"help.desc_click_segment": ": Navigation vers ce dossier",
|
||
"help.desc_click_tab": ": Active l'onglet",
|
||
"help.desc_click_vault": ": Focus sur le vault dans la sidebar",
|
||
"help.desc_close_btn": ": Ferme l'onglet (sauf s'il est seul)",
|
||
"help.desc_cm_autocomplete": ":\n Suggestions contextuelles",
|
||
"help.desc_cm_lines": ":\n Navigation facile",
|
||
"help.desc_cm_search": ": Ctrl+F pour\n chercher dans le fichier",
|
||
"help.desc_cm_syntax": ":\n Support de nombreux langages",
|
||
"help.desc_combined": "recherche \"serveur web\" dans les fichiers\n Markdown du vault IT avec le tag linux.",
|
||
"help.desc_context_menu": ": Clic\n droit sur un vault ou dossier → Vue\n Graphique",
|
||
"help.desc_copy_btn": ": Copie le contenu\n source dans le presse-papiers",
|
||
"help.desc_ctrl_tab": ": Onglet suivant",
|
||
"help.desc_ctrl_w": ": Fermer l'onglet actif",
|
||
"help.desc_d186a19e": ":\n L'onglet \"Récent\" dans la sidebar liste vos\n derniers fichiers",
|
||
"help.desc_d3a71d97": "file_modified n'est pas encore\n dispatché (réservé pour version future)",
|
||
"help.desc_d5c977ac": ": Les blocs de\n code s'adaptent au thème",
|
||
"help.desc_d646b709": "Compte admin : Créé\n automatiquement au premier démarrage",
|
||
"help.desc_d66e911c": ": Dans les\n actions du fichier, génère un lien unique",
|
||
"help.desc_d915c72b": "Synchronisation : Copier\n les nouveaux fichiers vers un autre système\n (SharePoint, Google Drive)",
|
||
"help.desc_d9cdaa89": ": Copier\n les nouveaux fichiers vers un autre système\n (SharePoint, Google Drive)",
|
||
"help.desc_d9e8ab0b": "🧰 Boîte ▾ — Outils de\n conversion :\n \n \n 📋\n Convert to list :\n Transforme le texte en liste\n Markdown",
|
||
"help.desc_dc4d7186": "Les modifications détectées par le watcher\n filesystem (watchdog)\n ne déclenchent pas de\n webhooks — seules les opérations via l'API\n REST sont prises en compte",
|
||
"help.desc_delete_btn_new": ": Bouton\n corbeille pour supprimer",
|
||
"help.desc_double_click": ": Ouvre le fichier dans un onglet persistant",
|
||
"help.desc_e0525213": "✦ AI — Complétion inline\n (Ctrl+J). Complète\n automatiquement le texte là où se trouve le\n curseur.",
|
||
"help.desc_e23c94dd": ": Dans la\n barre d'outils (le cas échéant)",
|
||
"help.desc_e36f3eaa": "📐 Make longer :\n Ajoute des détails, exemples ou\n explications",
|
||
"help.desc_e3fce7a3": ": Ouvre le\n fichier dans un onglet temporaire (aperçu,\n italique)",
|
||
"help.desc_e47d2328": ": La vue\n publique n'affiche que le contenu sans\n édition",
|
||
"help.desc_e5246734": ": Onglet\n précédent",
|
||
"help.desc_e5b67e3d": ": Votre choix\n est sauvegardé en localStorage",
|
||
"help.desc_e5cf90b2": "📝 Summarize :\n Résume le texte de façon concise",
|
||
"help.desc_e6129268": "Confort de lecture :\n Ajustez la largeur de la sidebar",
|
||
"help.desc_e7e3157a": "Timestamp : Chaque backup\n est horodaté",
|
||
"help.desc_e93517a5": ": Téléchargement\n du document partagé en PDF via",
|
||
"help.desc_ec5f7a26": "Expiration configurable :\n Durée de vie en heures",
|
||
"help.desc_ecf302ae": "Multi-fenêtres : Ouvrez\n plusieurs notes dans des onglets séparés",
|
||
"help.desc_edges": ": Wikilinks sortants\n (bleu) et backlinks entrants (vert)",
|
||
"help.desc_eebf177f": "ObsiGate v1.7.0 - Porte\n d'entrée web pour vos vaults Obsidian",
|
||
"help.desc_ef1531ce": ": Un\n onglet temporaire (italique) est remplacé\n par le prochain clic",
|
||
"help.desc_ef3f8158": ": Gérez\n vos patterns de filtrage",
|
||
"help.desc_examples": ":\n <code>ext:sh</code> recherche dans les scripts\n bash, <code>ext:py</code> dans les scripts\n Python, <code>ext:md</code> dans les fichiers\n Markdown.\n </p>",
|
||
"help.desc_expand": ": Cliquez sur un dossier",
|
||
"help.desc_export_png": ": Sauvegardez le\n graphe en image",
|
||
"help.desc_f0adf67a": ": Molette pour\n zoomer, cliquer-glisser pour se déplacer",
|
||
"help.desc_f2d4e369": "✏️\n Continue writing :\n Continue l'écriture à partir du\n texte",
|
||
"help.desc_f53badcd": "Ajoutez votre clé API dans\n .env :\n DEEPSEEK_API_KEY=sk-...",
|
||
"help.desc_f58da6e1": "Cliquez Ajouter",
|
||
"help.desc_f9083ce5": ": Téléchargez des\n fichiers pour backup ou partage",
|
||
"help.desc_f952db17": "Refresh tokens : Cookies\n HttpOnly avec rotation automatique",
|
||
"help.desc_fa126609": "🔷\n Convert to canvas :\n Convertit en diagramme Mermaid.js",
|
||
"help.desc_facet_vaults": ": Compteurs par vault",
|
||
"help.desc_fc9391f3": "# Exemple avec curl + jq dans un script bash\nWEBHOOK_URL=\"https://discord.com/api/webhooks/...\"\nOBSIGATE_SECRET=\"mon-secret\"\n\n# Lire le payload depuis stdin\nread -r payload\nevent=$(echo \"$payload\" | jq -r '.event')\npath=$(echo \"$payload\" | jq -r '.data.path')\n\ncurl -H \"Content-Type: application/json\" -d \"{\n \\\"content\\\": \\\"📝 **$event** — $path\\\"\n}\" \"$WEBHOOK_URL\"\n\n Tester avec curl\n # Simuler ce qu'ObsiGate envoie (pour tester votre endpoint)\ncurl -X POST https://votre-serveur.com/webhook \\\n -H \"Content-Type: application/json\" \\\n -H \"X-ObsiGate-Event: file_created\" \\\n -H \"X-ObsiGate-Signature: sha256=$(echo -n '{\"event\":\"file_created\",...}' | openssl dgst -sha256 -hmac 'mon-secret' | cut -d' ' -f2)\" \\\n -d '{\"event\":\"file_created\",\"timestamp\":\"2026-06-03T14:30:00Z\",\"data\":{\"vault\":\"IT\",\"path\":\"notes/test.md\"}}'\n\n Limitations actuelles\n \n \n Timeout de 5 secondes par\n requête — les webhooks sont \"fire and\n forget\" (pas de retry)\n \n \n Les modifications détectées par le watcher\n filesystem (watchdog)\n ne déclenchent pas de\n webhooks — seules les opérations via l'API\n REST sont prises en compte\n \n \n file_modified n'est pas encore\n dispatché (réservé pour version future)\n \n Pas de retry automatique en cas d'échec\n \n Pas de filtrage par vault — un webhook\n écoute toutes les vaults\n \n \n \n \n 💾 Sauvegardes et Audits\n\n Backup automatique\n \n ObsiGate crée automatiquement des sauvegardes\n avant chaque modification destructive.",
|
||
"help.desc_fdeaf803": ": Chaque type de\n fichier a son icône (markdown, code, etc.)",
|
||
"help.desc_file_suggest": ": Suggestions de titres de fichiers",
|
||
"help.desc_filter_type": ":\n Inclut/exclut fichiers, dossiers, markdown,\n autres",
|
||
"help.desc_filter_usage": "Utilisez la barre de filtrage en haut de la sidebar pour rechercher rapidement :",
|
||
"help.desc_filtering": "Barre de recherche pour filtrer fichiers/tags",
|
||
"help.desc_find_in_page": ": Ctrl+F pour\n chercher dans le fichier (casse, regex, mot\n entier)",
|
||
"help.desc_frontmatter": ": <code>tags: [docker, linux]</code> ou <code>tags: docker, linux</code>",
|
||
"help.desc_fullscreen": ": Bouton pour\n agrandir la vue",
|
||
"help.desc_graph_intro": "La vue graphe offre une visualisation\n interactive des connexions entre vos notes via\n les wikilinks.",
|
||
"help.desc_graph_nav": ":\n Historique de navigation entre les nœuds",
|
||
"help.desc_grouped_results": ": Affichage par vault avec chemins complets",
|
||
"help.desc_hamburger": "(mobile) : Affiche/masque la sidebar",
|
||
"help.desc_hide": "Cliquez sur l'icône sidebar dans le header",
|
||
"help.desc_images": ": Support\n de <code>![[image.png]]</code>",
|
||
"help.desc_inline_tags": ": <code>#docker</code> dans le contenu markdown",
|
||
"help.desc_instant_filter": ": Tapez pour filtrer fichiers et dossiers",
|
||
"help.desc_logo": "Retour à l'accueil",
|
||
"help.desc_markdown_all": ":\n Rendu complet du markdown",
|
||
"help.desc_md_render": "Les fichiers markdown sont rendus avec :",
|
||
"help.desc_menu_header": ": Dropdown \"Vault\" dans le menu Options",
|
||
"help.desc_menu_options": ": Accès aux\n paramètres, thème, aide et version",
|
||
"help.desc_op_ext": ": Filtrer par type de fichier",
|
||
"help.desc_op_path": ": Filtrer par chemin",
|
||
"help.desc_op_phrase": ": Recherche de phrase entre guillemets",
|
||
"help.desc_op_tag": ": Filtrer par tag",
|
||
"help.desc_op_title": ": Chercher dans les titres uniquement",
|
||
"help.desc_op_vault": ": Rechercher dans un vault spécifique",
|
||
"help.desc_open_file": ": Cliquez sur le nom du fichier",
|
||
"help.desc_open_new": ": Ouvre le fichier dans un nouvel onglet",
|
||
"help.desc_patterns": ": Ex: <code>#<% ... %></code> ou <code>#{{ ... }}</code>",
|
||
"help.desc_quick_select": "Dropdown pour changer de vault",
|
||
"help.desc_rendered_content": "Markdown avec wikilinks et images",
|
||
"help.desc_resize": "Glissez le bord droit pour ajuster la largeur",
|
||
"help.desc_save_btn_new": ": Bouton ✓ pour\n enregistrer",
|
||
"help.desc_search_all": ": Titre, contenu, tags, chemins",
|
||
"help.desc_search_bar": "Recherche globale avec autocomplétion",
|
||
"help.desc_search_intro": "<p>\n Tapez dans la barre de recherche en haut pour\n lancer une recherche fulltext :\n </p>",
|
||
"help.desc_sidebar_toggle": "Masque la sidebar pour plus d'espace",
|
||
"help.desc_snippets": ": Extraits avec termes en surbrillance",
|
||
"help.desc_source_btn": ": Affiche/masque le\n markdown brut",
|
||
"help.desc_specific_vault": ": Focus sur un seul vault",
|
||
"help.desc_syntax_hl": ":\n Coloration des blocs de code",
|
||
"help.desc_tag_cloud_intro": "<p>\n L'onglet Tags de la sidebar affiche un nuage de\n tags :\n </p>",
|
||
"help.desc_tag_filter_use": ": Utilisez la barre de filtrage pour chercher un tag",
|
||
"help.desc_tag_suggest": ": Suggestions de tags avec compteurs",
|
||
"help.desc_tags_tab": "Nuage de tags cliquables",
|
||
"help.desc_template_intro": "<p>\n Dans les Configurations, vous pouvez masquer les\n tags de template :\n </p>",
|
||
"help.desc_title_tags": "Métadonnées du fichier",
|
||
"help.desc_trash_btn": ": Suppression du\n fichier",
|
||
"help.desc_two_tag_types": "<p>ObsiGate supporte deux types de tags :</p>",
|
||
"help.desc_vault_context": "Changez de contexte pour filtrer l'affichage :",
|
||
"help.desc_vault_indicator": "Affiche le contexte actif (All, vault1, etc.)",
|
||
"help.desc_vaults_tab": "Arborescence des fichiers et dossiers",
|
||
"help.desc_visual_search": ": Barre\n de recherche pour surligner des nœuds",
|
||
"help.desc_wikilinks": ":\n <code>[[lien]]</code> et\n <code>[[lien|texte]]</code>",
|
||
"help.double_click": "Double clic",
|
||
"help.drag_drop_tabs": "Drag & drop des onglets",
|
||
"help.e23c94dd": ": Dans la\n barre d'outils (le cas échéant)",
|
||
"help.e3fce7a3": ": Ouvre le\n fichier dans un onglet temporaire (aperçu,\n italique)",
|
||
"help.e5b67e3d": ": Votre choix\n est sauvegardé en localStorage",
|
||
"help.editor_section": "Éditeur",
|
||
"help.ef1531ce": ": Un\n onglet temporaire (italique) est remplacé\n par le prochain clic",
|
||
"help.experience": "Expérience",
|
||
"help.export": "Export",
|
||
"help.external_audit": "Audit externe",
|
||
"help.f0adf67a": ": Molette pour\n zoomer, cliquer-glisser pour se déplacer",
|
||
"help.fallback_editor": "Éditeur de fallback",
|
||
"help.fdeaf803": ": Chaque type de\n fichier a son icône (markdown, code, etc.)",
|
||
"help.fe388b67": "Optimisations",
|
||
"help.file_actions": "Actions sur le fichier ouvert :",
|
||
"help.file_viewer": "Visionneur de fichier",
|
||
"help.filter_toggles": "Toggles Aa, wd, .*",
|
||
"help.filtering": "Filtrage",
|
||
"help.find_capabilities": "Recherche regex, mot entier, case-sensitive dans le document affiché avec TreeWalker DOM.",
|
||
"help.find_in_page": "Recherche dans la page",
|
||
"help.footer": "© 2026 — Fait avec ☕, 🎧 et quelques",
|
||
"help.graph_context": "Menu contextuel",
|
||
"help.graph_depth": "Slider de profondeur",
|
||
"help.graph_export": "Export PNG",
|
||
"help.graph_filter_depth": "Filtres & profondeur",
|
||
"help.graph_focus": "Mode focus",
|
||
"help.graph_fullscreen": "Plein écran & export PNG",
|
||
"help.graph_info": "Panneau d'info",
|
||
"help.graph_nav_arrows": "Navigation ← → ↑",
|
||
"help.graph_navigation": "Navigation historique ← → ↑",
|
||
"help.graph_nodes": "Nœuds",
|
||
"help.graph_preview": "Ctrl+survol",
|
||
"help.graph_sticky": "Sticky panels",
|
||
"help.graph_tag_filter": "Filtre par tag",
|
||
"help.graph_type_filter": "Filtre par type",
|
||
"help.graph_view": "Vue graphe",
|
||
"help.graph_visual": "Recherche visuelle",
|
||
"help.graph_zoom": "Zoom/Pan",
|
||
"help.graph_zoom_pan": "Zoom & pan molette",
|
||
"help.guide_official": "Guide officiel",
|
||
"help.hamburger_btn": "Bouton menu hamburger",
|
||
"help.header_section": "En-tête",
|
||
"help.help_title": "Aide",
|
||
"help.hide": "Masquage",
|
||
"help.hide_help": "Masquer l'aide",
|
||
"help.highlighted_snippets": "Snippets surlignés",
|
||
"help.indexes": "ObsiGate indexe et affiche :",
|
||
"help.instant": "Instantanée",
|
||
"help.light": "Clair",
|
||
"help.logo": "Logo ObsiGate",
|
||
"help.markdown": "Syntaxe Markdown",
|
||
"help.menu_header": "Menu header",
|
||
"help.menu_options": "Menu Options",
|
||
"help.mermaid_section": "Diagrammes Mermaid",
|
||
"help.mermaid_templates": "Templates",
|
||
"help.mobile": "Barre flottante résultats",
|
||
"help.mobile_editor_gestures": " : balayage vers la gauche → liens entrants, vers la droite → table des matières.",
|
||
"help.mobile_editor_gestures_label": "Gestes tactiles",
|
||
"help.mobile_editor_intro": "Sur téléphone et tablette, l'édition s'adapte au tactile : barre d'outils flottante, gestes et mode lecture plein écran.",
|
||
"help.mobile_editor_paste": " : bouton « Coller » persistant (contourne la restriction iOS).",
|
||
"help.mobile_editor_paste_label": "Presse-papiers",
|
||
"help.mobile_editor_reading": " : plein écran sans en-tête ni barres latérales ; balayage horizontal pour passer au fichier suivant ou précédent.",
|
||
"help.mobile_editor_reading_label": "Mode lecture",
|
||
"help.mobile_editor_title": "📱 Édition mobile",
|
||
"help.mobile_editor_toolbar": " : ruban horizontal défilable (titres, gras, italique, barré, surligné, code, citation, listes, cases à cocher, liens, tags, pièces jointes). L'icône ⚙ permet d'ajouter, retirer ou réordonner les commandes ; A−/A+ ajustent la taille de la police.",
|
||
"help.mobile_editor_toolbar_label": "Ruban d'édition",
|
||
"help.mobile_editor_zoom": " : pincement à deux doigts pour zoomer, poignée pour redimensionner la zone d'édition.",
|
||
"help.mobile_editor_zoom_label": "Zoom & hauteur",
|
||
"help.modal_title": "Guide d'utilisation ObsiGate",
|
||
"help.multi_vault": "Multi-vault",
|
||
"help.nav_ai": "🤖 IA Éditeur",
|
||
"help.nav_backups": "💾 Sauvegardes",
|
||
"help.nav_customization": "🎨 Personnalisation",
|
||
"help.nav_editing": "✏️ Édition",
|
||
"help.nav_files": "📁 Fichiers",
|
||
"help.nav_graph": "🗺️ Graphe",
|
||
"help.nav_interface": "🧭 Interface",
|
||
"help.nav_intro": "📘 Introduction",
|
||
"help.nav_mobile_editor": "📱 Mobile",
|
||
"help.nav_navigation": "🗺️ Navigation",
|
||
"help.nav_palette": "⌨️ Palette",
|
||
"help.nav_search": "🔍 Recherche",
|
||
"help.nav_security": "🛡️ Sécurité",
|
||
"help.nav_sharing": "🔗 Partage",
|
||
"help.nav_shortcuts": "⌨️ Raccourcis",
|
||
"help.nav_tabs": "📑 Onglets",
|
||
"help.nav_tags": "🏷️ Tags",
|
||
"help.nav_tips": "💡 Astuces",
|
||
"help.nav_webhooks": "🪝 Webhooks",
|
||
"help.nav_plugins": "🧩 Plugins",
|
||
"help.nav_excalidraw": "🎨 Excalidraw",
|
||
"help.new_file": "Nouveau fichier",
|
||
"help.new_folder": "Nouveau dossier",
|
||
"help.nights": "nuits blanches 😅",
|
||
"help.nodes_edges": "Arêtes",
|
||
"help.other": "Autres",
|
||
"help.outline_panel": "Panneau Plan (droite)",
|
||
"help.pagination": "Pagination",
|
||
"help.pal_close_the_palette": "Fermer la palette",
|
||
"help.pal_delete_a_folder_and_its_contents": "Supprime un dossier et son contenu",
|
||
"help.pal_delete_the_file_from_the_active_tab": "Supprime le fichier de l'onglet actif",
|
||
"help.pal_move_desc": "Se déplacer dans la liste",
|
||
"help.pal_open___select": "Ouvrir/sélectionner",
|
||
"help.pal_open_the_editor_on_the_active_tab": "Ouvre l'éditeur sur l'onglet actif",
|
||
"help.pal_open_this_guide": "Ouvre ce guide",
|
||
"help.pal_popout_desc": "Ouvre le document dans une fenêtre détachée",
|
||
"help.pal_toggle_light_dark": "Bascule clair/sombre",
|
||
"help.pdf_export": "Export PDF",
|
||
"help.persistent_display": "Affichage persistant dans la barre",
|
||
"help.persistent_tabs": "Onglets persistants",
|
||
"help.popout_button": "Bouton dédié",
|
||
"help.powered_by": "Propulsé par Python, FastAPI, vanilla JS, CodeMirror, Mermaid, Lucide Icons et ❤️ pour Obsidian.",
|
||
"help.preview_tab": "Prévisualisation",
|
||
"help.properties": "Propriétés",
|
||
"help.public_shares": "Publication publique",
|
||
"help.pwa_section": "PWA",
|
||
"help.quick_help": "Raccourcis & Astuces",
|
||
"help.quick_select": "Sélection rapide",
|
||
"help.rate_limiting": "Rate limiting",
|
||
"help.recent_nav": "Navigation récente",
|
||
"help.rename": "Renommer",
|
||
"help.rendered_content": "Contenu rendu",
|
||
"help.rendering_images": "Rendu d'images",
|
||
"help.rendering_md": "Rendu dans le Markdown",
|
||
"help.resize": "Redimensionnement",
|
||
"help.results_counter": "Compteur de résultats",
|
||
"help.results_grouped": "Résultats groupés",
|
||
"help.search_bar": "Barre de recherche",
|
||
"help.search_dropdown": "Dropdown de recherche",
|
||
"help.search_everywhere": "Recherche dans tout",
|
||
"help.search_facets": "Facettes",
|
||
"help.search_filters": "Filtres de recherche",
|
||
"help.search_history": "Historique de recherche",
|
||
"help.search_operators": "Opérateurs de recherche",
|
||
"help.search_placeholder": "Rechercher dans l'aide...",
|
||
"help.search_save": "Recherches sauvegardées",
|
||
"help.secret_redaction": "Redaction de secrets",
|
||
"help.security_section": "Sécurité",
|
||
"help.share_button": "Bouton Partager",
|
||
"help.shortcut_ai_completion": "Completion IA inline (dans l'éditeur)",
|
||
"help.shortcut_close": "Fermer l'éditeur / modale",
|
||
"help.shortcut_close_editor": "Fermer l'éditeur / modale",
|
||
"help.shortcut_close_palette": "Fermer la palette",
|
||
"help.shortcut_close_tab": "Fermer l'onglet",
|
||
"help.shortcut_command_palette": "Palette de commandes",
|
||
"help.shortcut_file_palette": "Palette de fichiers (nav. rapide)",
|
||
"help.shortcut_focus_search": "Focus barre de recherche",
|
||
"help.shortcut_forge_help": "Aide de l'éditeur Forge",
|
||
"help.shortcut_next_tab": "Onglet suivant",
|
||
"help.shortcut_palette": "Palette de commandes",
|
||
"help.shortcut_palette_cmd": "Palette de commandes (mode commande)",
|
||
"help.shortcut_prev_tab": "Onglet précédent",
|
||
"help.shortcut_quick_insert": "Insertion rapide (éditeur Forge)",
|
||
"help.shortcut_quick_search": "Recherche rapide (hors champ texte)",
|
||
"help.shortcut_redo": "Refaire",
|
||
"help.shortcut_save": "Sauvegarder",
|
||
"help.shortcut_save_file": "Sauvegarder le fichier ouvert",
|
||
"help.shortcut_search_doc": "Rechercher dans le document",
|
||
"help.shortcut_select": "Ouvrir/sélectionner",
|
||
"help.shortcut_tip": "Survolez un document avec <strong>Ctrl</strong> pour un aperçu rapide. Cliquez sur <strong>Forge</strong> dans la barre d'outils pour l'éditeur avancé.",
|
||
"help.shortcut_undo": "Annuler",
|
||
"help.shortcuts": "Raccourcis clavier",
|
||
"help.shortcuts_title": "Raccourcis & Astuces",
|
||
"help.sidebar_dropdown": "Sidebar dropdown",
|
||
"help.sidebar_features": "Fonctionnalités de la sidebar :",
|
||
"help.sidebar_filtering": "Filtrage de la sidebar",
|
||
"help.sidebar_section": "Sidebar (barre latérale)",
|
||
"help.sidebar_tabs": "La sidebar est divisée en deux onglets :",
|
||
"help.sidebar_user": "Compte",
|
||
"help.desc_sidebar_user": ": Avatar, nom, rôle et déconnexion en bas de la sidebar",
|
||
"help.sidebar_toggle_btn": "Bouton toggle sidebar",
|
||
"help.simple": "Simple",
|
||
"help.simple_search": "Recherche simple",
|
||
"help.single_click": "Simple clic",
|
||
"help.smart_scoring": "Scoring intelligent",
|
||
"help.sort_options": "Options de tri",
|
||
"help.supported_languages": "Support de nombreux langages",
|
||
"help.syncthing": "Conflits Syncthing",
|
||
"help.syncthing_conflicts": "Conflits Syncthing",
|
||
"help.tab_bar": "Barre d'onglets",
|
||
"help.tab_features": "Fonctionnalités",
|
||
"help.tab_nav": "Navigation entre onglets",
|
||
"help.tabs_section": "Ouverture d'onglets",
|
||
"help.theme_section": "Thème",
|
||
"help.theme_sync": "Thème synchronisé",
|
||
"help.theme_toggle": "Basculez entre les thèmes :",
|
||
"help.themes": "Thèmes",
|
||
"help.tip_hide_sidebar": "Masquez la sidebar",
|
||
"help.tip_sidebar_filter": "Utilisez le filtrage sidebar",
|
||
"help.tip_use_tags": "Utilisez les tags",
|
||
"help.title": "Aide ObsiGate",
|
||
"help.title_tags": "Titre et tags",
|
||
"help.toc_title": "SOMMAIRE",
|
||
"help.assistant_panel": "🧠 Panneau Assistant (BooksLM)",
|
||
"help.assistant_panel_desc": "L'assistant latéral (bouton flottant ou menu contextuel d'un dossier) répond en Markdown formaté et contextualise vos répertoires ou documents. En contexte général, il connaît aussi ce que vous voyez : documents ouverts, répertoire courant, recherche en cours et fichiers récemment modifiés.",
|
||
"help.assistant_markdown": "Réponses formatées : titres, listes, tableaux, citations et blocs de code.",
|
||
"help.assistant_insert": "Le bouton « Ajouter » (au survol d'une réponse) insère la réponse dans le document ouvert dans l'éditeur (Editer ou Forge) ; chaque bloc de code propose « Ajouter la section » pour n'insérer que ce bloc.",
|
||
"help.assistant_links": "Les fichiers et chemins cités sont des liens : un simple nom de fichier copie le nom dans le presse-papiers, un dossier est révélé dans l'arborescence, et un chemin de fichier l'ouvre dans le viewer.",
|
||
"help.assistant_sessions": "L'icône historique de l'en-tête liste les sessions passées (recharger ou supprimer) ; « + » démarre une nouvelle conversation.",
|
||
"help.assistant_agent": "Le bouton « mode agent » active les outils (lire, lister, chercher) ; les actions de modification demandent une confirmation avec aperçu des changements.",
|
||
"help.assistant_agent_run": "Les actions s'affichent dans le fil : l'assistant regroupe les modifications en une seule approbation (« Tout approuver ») et met à jour l'arborescence et le document ouvert dès qu'elles sont appliquées. Le bouton d'envoi devient « Stop » pour interrompre l'exécution à tout moment.",
|
||
"help.assistant_resize": "Le bord gauche du panneau est redimensionnable ; la largeur est mémorisée.",
|
||
"help.assistant_at": "Tapez @ pour joindre un fichier ou un répertoire au contexte, ou pour attacher une image d'un répertoire.",
|
||
"help.assistant_slash": "Tapez / pour lancer un skill (recherche, résumé, correction, plan…) ou une commande admin (/help, /providers, /model, /keys).",
|
||
"help.assistant_images": "Collez une image dans la zone de saisie (ou joignez-la) pour l'analyser avec un modèle compatible vision. Le bouton ⓘ affiche les capacités du modèle sélectionné, et la liste des modèles est filtrable par recherche.",
|
||
"help.toolbar_section": "Barre d'outils AI",
|
||
"help.tree_section": "Arborescence des vaults",
|
||
"help.use_cases": "Cas d'usage",
|
||
"help.vault_indicator": "Indicateur de vault",
|
||
"help.vault_selector": "Sélection de vault",
|
||
"help.vault_specific": "Vault spécifique",
|
||
"help.webhook_blog_post": "article de blog quand un fichier est marqué",
|
||
"help.webhook_note": "Note : l'événement",
|
||
"help.webhook_notify": "notifier automatiquement des services",
|
||
"help.webhook_post": "HTTP vers l'URL de votre",
|
||
"help.webhooks": "Webhooks",
|
||
"help.welcome_desc": "ObsiGate est votre porte d'entrée web vers vos vaults Obsidian. Accédez, naviguez et recherchez dans toutes vos notes depuis n'importe quel appareil via une interface moderne et responsive.",
|
||
"help.welcome_tag1": "⚡ Navigation rapide",
|
||
"help.welcome_tag2": "📁 Multi-vault",
|
||
"help.welcome_tag3": "🏷️ Tags intelligents",
|
||
"help.welcome_tag4": "📖 Lecture et édition",
|
||
"help.welcome_tag5": "🔍 Recherche TF-IDF",
|
||
"help.welcome_title": "Bienvenue dans ObsiGate",
|
||
"help.wikilinks": "Wikilinks",
|
||
"help.zoom_pan": "Zoom & Pan",
|
||
"mermaid.code": "Code",
|
||
"mermaid.copy_svg": "Copier SVG",
|
||
"mermaid.download_png": "Télécharger PNG",
|
||
"mermaid.preview": "Aperçu",
|
||
"mermaid.zoom_in": "Zoom avant",
|
||
"mermaid.zoom_out": "Zoom arrière",
|
||
"mobile.all_vaults": "📂 Toutes les vaults",
|
||
"mobile_editor.add_command": "Ajouter une commande",
|
||
"mobile_editor.backlinks": "Liens entrants",
|
||
"mobile_editor.bold": "Gras",
|
||
"mobile_editor.close": "Fermer",
|
||
"mobile_editor.cmd_attachment": "Pièce jointe",
|
||
"mobile_editor.cmd_bold": "Gras",
|
||
"mobile_editor.cmd_bullet": "Liste à puces",
|
||
"mobile_editor.cmd_checkbox": "Case à cocher",
|
||
"mobile_editor.cmd_code": "Code en ligne",
|
||
"mobile_editor.cmd_codeblock": "Bloc de code",
|
||
"mobile_editor.cmd_dedent": "Désindenter",
|
||
"mobile_editor.cmd_files": "Modèle / fichiers",
|
||
"mobile_editor.cmd_h1": "Titre 1",
|
||
"mobile_editor.cmd_h2": "Titre 2",
|
||
"mobile_editor.cmd_h3": "Titre 3",
|
||
"mobile_editor.cmd_h4": "Titre 4",
|
||
"mobile_editor.cmd_h5": "Titre 5",
|
||
"mobile_editor.cmd_h6": "Titre 6",
|
||
"mobile_editor.cmd_highlight": "Surligné",
|
||
"mobile_editor.cmd_indent": "Indenter",
|
||
"mobile_editor.cmd_italic": "Italique",
|
||
"mobile_editor.cmd_link": "Lien externe",
|
||
"mobile_editor.cmd_ordered": "Liste numérotée",
|
||
"mobile_editor.cmd_quote": "Citation",
|
||
"mobile_editor.cmd_redo": "Refaire",
|
||
"mobile_editor.cmd_strike": "Barré",
|
||
"mobile_editor.cmd_tag": "Tag",
|
||
"mobile_editor.cmd_undo": "Annuler",
|
||
"mobile_editor.cmd_wikilink": "Lien interne",
|
||
"mobile_editor.code": "Code",
|
||
"mobile_editor.customize": "Personnaliser la barre",
|
||
"mobile_editor.customize_reset": "Réinitialiser",
|
||
"mobile_editor.customize_title": "Personnaliser la barre d'outils",
|
||
"mobile_editor.done": "Terminé",
|
||
"mobile_editor.error": "Erreur de chargement",
|
||
"mobile_editor.font_larger": "Agrandir la police",
|
||
"mobile_editor.font_smaller": "Réduire la police",
|
||
"mobile_editor.italic": "Italique",
|
||
"mobile_editor.link": "Lien",
|
||
"mobile_editor.list": "Liste à puces",
|
||
"mobile_editor.loading": "Chargement…",
|
||
"mobile_editor.move_down": "Descendre",
|
||
"mobile_editor.move_up": "Monter",
|
||
"mobile_editor.no_backlinks": "Aucun lien entrant",
|
||
"mobile_editor.no_headings": "Aucun titre dans ce document",
|
||
"mobile_editor.no_next": "Dernier fichier du dossier",
|
||
"mobile_editor.no_prev": "Premier fichier du dossier",
|
||
"mobile_editor.paste": "Coller",
|
||
"mobile_editor.paste_hint": "Appuyez longuement dans le champ puis choisissez « Coller » (accès au presse-papiers refusé).",
|
||
"mobile_editor.reading_enter": "Mode lecture",
|
||
"mobile_editor.reading_exit": "Quitter le mode lecture",
|
||
"mobile_editor.remove_command": "Supprimer",
|
||
"mobile_editor.resize": "Ajuster la hauteur de l'éditeur",
|
||
"mobile_editor.toc": "Table des matières",
|
||
"mobile_editor.toolbar": "Barre d'outils d'édition mobile",
|
||
"modal.create_btn": "Créer",
|
||
"modal.create_file": "Créer un fichier",
|
||
"modal.creating": "Création...",
|
||
"modal.delete_dir": "Supprimer le dossier",
|
||
"modal.delete_dir_warning": "Tous les fichiers et sous-dossiers seront supprimés définitivement.",
|
||
"modal.delete_file": "Supprimer le fichier",
|
||
"modal.delete_irreversible": "Cette action est irréversible.",
|
||
"modal.delete_permanently": "Supprimer définitivement",
|
||
"modal.delete_warning": "Attention !",
|
||
"modal.dir_to_delete": "Dossier à supprimer:",
|
||
"modal.file_name": "Nom du fichier",
|
||
"modal.file_to_delete": "Fichier à supprimer:",
|
||
"modal.file_type": "Type de fichier",
|
||
"modal.in_folder": "Dans: {path}",
|
||
"month.april": "Avril",
|
||
"month.august": "Août",
|
||
"month.december": "Décembre",
|
||
"month.february": "Février",
|
||
"month.january": "Janvier",
|
||
"month.july": "Juillet",
|
||
"month.june": "Juin",
|
||
"month.march": "Mars",
|
||
"month.may": "Mai",
|
||
"month.november": "Novembre",
|
||
"month.october": "Octobre",
|
||
"month.september": "Septembre",
|
||
"offline.all_synced": "Toutes les modifications ont été synchronisées",
|
||
"offline.conflict_title": "Conflit de synchronisation",
|
||
"offline.keep_local": "Garder version locale",
|
||
"offline.keep_server": "Garder version serveur",
|
||
"offline.mode_offline": "Mode hors-ligne — vos modifications seront synchronisées au retour",
|
||
"offline.pending": "{count} modification(s) en attente",
|
||
"offline.reconnected": "Connexion rétablie — synchronisation en cours...",
|
||
"offline.status": "Hors-ligne",
|
||
"offline.sync_now": "Synchroniser maintenant",
|
||
"palette.browse_dirs": "📂 Parcourir les répertoires...",
|
||
"palette.browse_hint": "Naviguer dans les vaults pour trouver un fichier",
|
||
"palette.browse_in": "Dans {path}",
|
||
"palette.browse_no_results": "Aucun résultat — naviguer manuellement",
|
||
"palette.browse_open_file": "📂 Ouvrir un fichier dans ce dossier",
|
||
"palette.browse_root": "racine",
|
||
"palette.close_current": "Fermer fichier courant",
|
||
"palette.close_current_desc": "Fermer l'onglet actif sans supprimer",
|
||
"palette.cmd_back_home": "🏠 Accueil",
|
||
"palette.cmd_back_home_desc": "Retour à l'accueil",
|
||
"palette.cmd_config": "⚙️ Configuration",
|
||
"palette.cmd_config_desc": "Ouvrir les paramètres",
|
||
"palette.cmd_create_dir": "📁 Créer répertoire",
|
||
"palette.cmd_create_dir_desc": "Choisir la vault, naviguer, puis nommer le dossier",
|
||
"palette.cmd_create_file": "📄 Créer fichier markdown",
|
||
"palette.cmd_create_file_desc": "Choisir la vault, naviguer, puis nommer le fichier",
|
||
"palette.cmd_delete_dir": "🗑️ Supprimer répertoire",
|
||
"palette.cmd_delete_dir_desc": "Choisir la vault, naviguer et supprimer",
|
||
"palette.cmd_theme": "🌓 Changer le thème",
|
||
"palette.cmd_theme_desc": "Basculer clair/sombre",
|
||
"palette.del_all_content": "Tout le contenu sera supprimé",
|
||
"palette.delete_current": "Supprimer fichier courant",
|
||
"palette.delete_current_desc": "Supprimer le fichier de l'onglet actif",
|
||
"palette.delete_file_desc": "Rechercher un fichier à supprimer",
|
||
"palette.dir_delete_confirm": "Tout le contenu sera supprimé",
|
||
"palette.dir_name": "Nom du dossier",
|
||
"palette.empty_dir": "📂 Dossier vide",
|
||
"palette.error_loading": "Erreur de chargement",
|
||
"palette.error_prefix": "Erreur : {msg}",
|
||
"palette.file_name": "Nom du fichier",
|
||
"palette.help_desc": "Ouvrir le guide",
|
||
"palette.md_hint": "(.md ajouté si besoin)",
|
||
"palette.mode_commands": "Commandes",
|
||
"palette.mode_files": "Fichiers",
|
||
"palette.no_results": "Aucun résultat pour \"{query}\"",
|
||
"palette.no_vaults": "Aucune vault trouvée",
|
||
"palette.popout_desc": "Ouvrir le document dans une fenêtre",
|
||
"palette.reindex_desc": "Forcer la réindexation complète",
|
||
"palette.search_commands": "Tapez une commande...",
|
||
"palette.search_error": "Erreur de recherche",
|
||
"palette.search_files": "Rechercher un fichier...",
|
||
"palette.type_command": "Tapez une commande...",
|
||
"palette.type_search": "Rechercher un fichier... (+inclure -exclure)",
|
||
"palette.vault_count": "{count} fichiers",
|
||
"pwa.dismiss": "Plus tard",
|
||
"pwa.install_button": "Installer",
|
||
"pwa.install_desc": "Installez cette application sur votre appareil pour un accès rapide.",
|
||
"pwa.install_title": "Installer ObsiGate",
|
||
"qa.all_actions": "Toutes les actions",
|
||
"qa.audit_code": "Détecter les bugs et failles potentielles",
|
||
"qa.audit_code.prompt": "Identifie les bugs potentiels, cas limites non gérés et failles de sécurité dans ce code, avec les correctifs proposés.",
|
||
"qa.backlinks": "Suggérer des liens et backlinks du vault",
|
||
"qa.backlinks.prompt": "Suggère des liens [[wikilinks]] pertinents vers d'autres notes du vault et des backlinks à ajouter à ce document.",
|
||
"qa.badge_code": "Fichier de code",
|
||
"qa.badge_directory": "Répertoire",
|
||
"qa.badge_general": "Mode général",
|
||
"qa.badge_multi": "{count} docs ouverts",
|
||
"qa.badge_selection": "Sélection active",
|
||
"qa.badge_single": "1 doc ouvert",
|
||
"qa.capabilities": "Que sais-tu faire ?",
|
||
"qa.capabilities.prompt": "Que sais-tu faire ? Présente tes capacités sur ce vault.",
|
||
"qa.cat_code": "Code & Scripts",
|
||
"qa.cat_cross": "Cross-documents",
|
||
"qa.cat_edition": "Édition & Reformulation",
|
||
"qa.cat_general": "Assistant",
|
||
"qa.cat_structure": "Productivité & Structuration",
|
||
"qa.cat_synthesis": "Synthèse & Analyse",
|
||
"qa.checklist": "Extraire la checklist d'actions",
|
||
"qa.checklist.prompt": "Extrais toutes les actions concrètes à mener sous forme de to-do list Markdown avec cases à cocher [ ].",
|
||
"qa.compare": "Comparer différences et convergences",
|
||
"qa.compare.prompt": "Compare l'ensemble des documents ouverts et résume leurs convergences, divergences et oppositions.",
|
||
"qa.concise": "Rendre plus concis et percutant",
|
||
"qa.concise.prompt": "Reformule la sélection pour la rendre plus concise et percutante, sans perdre l'essentiel.",
|
||
"qa.create_note": "Créer une note de réunion",
|
||
"qa.create_note.prompt": "Crée un fichier de notes de réunion dans le vault.",
|
||
"qa.doc_code": "Ajouter la documentation et les types",
|
||
"qa.doc_code.prompt": "Ajoute les docstrings, JSDoc et annotations de type appropriés à toutes les fonctions de ce fichier.",
|
||
"qa.drawer_title": "Bibliothèque d'actions",
|
||
"qa.empty_hint": "Sélectionnez une action instantanée adaptée à votre contexte, ou posez une question directe.",
|
||
"qa.explain_code": "Expliquer la logique du script",
|
||
"qa.explain_code.prompt": "Analyse et explique pas à pas la structure et l'algorithme de ce code source.",
|
||
"qa.explain_selection": "Expliquer la sélection",
|
||
"qa.explain_selection.prompt": "Explique le passage sélectionné : son rôle, son contexte et ce qu'il implique.",
|
||
"qa.faq": "Générer une FAQ / questions-clés",
|
||
"qa.faq.prompt": "Génère une liste de 5 questions-réponses clés pour évaluer la compréhension de ce texte.",
|
||
"qa.fix_style": "Corriger et améliorer le style",
|
||
"qa.fix_style.prompt": "Corrige les fautes d'orthographe, de grammaire et améliore la fluidité syntaxique de ce passage.",
|
||
"qa.frictions": "Relever les frictions et contradictions",
|
||
"qa.frictions.prompt": "Analyse ce document et relève les incohérences, zones d'ombre ou contradictions.",
|
||
"qa.frontmatter": "Générer le frontmatter YAML",
|
||
"qa.frontmatter.prompt": "Génère un bloc frontmatter YAML complet au format du vault et applique-le au document ouvert (insère-le en tête du fichier ou remplace le bloc existant, en conservant les valeurs non vides déjà présentes) : titre, auteur, creation_date et modification_date en ISO-8601 avec fuseau, catégorie, tags (liste en ligne [a, b]), aliases, status, publish, favoris, template, task, archive, draft, private (booléens), NomDeVoute (nom du vault courant), Description (résumé en une phrase du contenu).",
|
||
"qa.frontmatter_update": "Mettre à jour le frontmatter",
|
||
"qa.frontmatter_update.prompt": "Mets à jour le frontmatter YAML du document ouvert sans supprimer les champs existants : actualise modification_date (horodatage courant ISO-8601 avec fuseau), recalcule titre, tags, aliases, catégorie, NomDeVoute et Description d'après le contenu actuel, complète tout champ de la section métadonnée manquant (auteur, creation_date, status, publish, favoris, template, task, archive, draft, private) et applique la modification au fichier.",
|
||
"qa.header_suggested": "Actions suggérées",
|
||
"qa.memo": "Rédiger un mémo exécutif partageable",
|
||
"qa.memo.prompt": "Rédige un mémo exécutif partageable basé sur ce document : contexte, constats, recommandations.",
|
||
"qa.merge": "Fusionner en une note de synthèse",
|
||
"qa.merge.prompt": "Fusionne les éléments essentiels de tous les documents ouverts en une note de synthèse unifiée et fluide.",
|
||
"qa.no_match": "Aucune action ne correspond.",
|
||
"qa.plan": "Créer un plan d'action par étapes",
|
||
"qa.plan.prompt": "Transforme ce contenu en un plan d'action structuré par étapes, avec priorités et estimations.",
|
||
"qa.rephrase": "Reformuler ce passage",
|
||
"qa.rephrase.prompt": "Reformule ce passage en gardant le sens mais avec une tournure différente.",
|
||
"qa.search_help": "Rechercher efficacement dans mes notes",
|
||
"qa.search_help.prompt": "Comment rechercher efficacement dans mes notes ?",
|
||
"qa.search_placeholder": "Rechercher une action...",
|
||
"qa.sections": "Structurer en sections hiérarchiques",
|
||
"qa.sections.prompt": "Restructure ce document avec une hiérarchie logique de titres Markdown (H2, H3) et des listes à puces propres.",
|
||
"qa.summarize_3": "Résumer en 3 points clés",
|
||
"qa.summarize_3.prompt": "Fais un résumé synthétique de ce document en 3 points clés, clairs et concis.",
|
||
"qa.test_code": "Générer les tests unitaires",
|
||
"qa.test_code.prompt": "Rédige une suite de tests unitaires couvrant les cas nominaux et d'erreur pour ce code.",
|
||
"qa.timeline": "Construire une chronologie transversale",
|
||
"qa.timeline.prompt": "Construis une chronologie transversale des événements datés mentionnés dans ces documents.",
|
||
"qa.translate": "Traduire la sélection",
|
||
"qa.translate.prompt": "Traduis ce passage dans la langue appropriée (anglais si le texte est en français, et inversement).",
|
||
"qa.vulgarize": "Vulgariser ce document",
|
||
"qa.vulgarize.prompt": "Explique le contenu de ce document de manière simple, accessible et sans jargon.",
|
||
"search.advanced_operators": "Opérateurs avancés",
|
||
"search.aria_label": "Suggestions de recherche",
|
||
"search.case_sensitive": "Respecter la casse",
|
||
"search.clear": "Effacer",
|
||
"search.dropdown_clear_history": "Effacer l'historique",
|
||
"search.dropdown_files": "Fichiers",
|
||
"search.dropdown_history": "Historique",
|
||
"search.error": "Erreur de recherche",
|
||
"search.exclude_placeholder": "Exclure: vendor/*, *.lock",
|
||
"search.facet_tags": "Tags",
|
||
"search.facet_vaults": "Vaults",
|
||
"search.files_filtered": "{count} fichier(s) avec filtres",
|
||
"search.filter_path_title": "Filtres de chemin (Alt-F)",
|
||
"search.filters": "Filtres",
|
||
"search.full_text": "Recherche dans tout",
|
||
"search.highlighted_snippets": "Snippets surlignés",
|
||
"search.include_placeholder": "Inclure: **/*.md, notes/**",
|
||
"search.loading": "Recherche en cours...",
|
||
"search.no_results": "Aucun résultat trouvé",
|
||
"search.operators_help": "Opérateurs : tag:mot, vault:nom, title:mot, path:mot, ext:md",
|
||
"search.pagination": "Pagination",
|
||
"search.previous": "← Précédent",
|
||
"search.query_time": "({time} ms)",
|
||
"search.regex": "Expression régulière",
|
||
"search.results_count": "{count} résultat(s)",
|
||
"search.results_filtered": "{count} résultat(s) pour \"{query}\" avec filtres",
|
||
"search.results_for": "{count} résultat(s) pour \"{query}\"",
|
||
"search.save_search": "Sauvegarder la recherche",
|
||
"search.saved": "Recherche sauvegardée",
|
||
"search.sections_all_vaults": "Tous les vaults",
|
||
"search.semantic_score": "sim",
|
||
"search.semantic_title": "Recherche sémantique (Alt-S)",
|
||
"search.semantic_unavailable": "Recherche sémantique indisponible",
|
||
"search.simple_search": "Recherche simple",
|
||
"search.smart_scoring": "Scoring intelligent",
|
||
"search.sort_date": "Date",
|
||
"search.sort_relevance": "Pertinence",
|
||
"search.sort_title": "Titre",
|
||
"search.whole_word": "Mot entier",
|
||
"settings.about": "📦 À propos",
|
||
"settings.ai": "🤖 IA",
|
||
"settings.backend_section": "Paramètres backend",
|
||
"settings.client_label": "Ces paramètres s'appliquent immédiatement côté client.",
|
||
"settings.diagnostics": "🩺 Diagnostics",
|
||
"settings.explorer": "Explorateur",
|
||
"settings.history_count_desc": "Entre 5 et 100 fichiers (sauvegarde sur le serveur)",
|
||
"settings.history_count_label": "Nombre de fichiers dans l'historique",
|
||
"settings.history_section": "Historique récent",
|
||
"settings.no_restart_badge": "Redémarrage non requis",
|
||
"settings.profile": "👤 Profil",
|
||
"settings.reindex": "Forcer réindexation",
|
||
"settings.search": "Recherche",
|
||
"settings.search_placeholder": "Rechercher...",
|
||
"settings.sync": "🔄 Synchronisation",
|
||
"settings.tabs": "Onglets",
|
||
"settings.themes": "🎨 Thèmes",
|
||
"share.copied": "Lien copié !",
|
||
"share.copy_link": "Copier le lien",
|
||
"share.create": "Créer un lien de partage",
|
||
"share.expires": "Expire le",
|
||
"share.never": "Jamais",
|
||
"share.revoke": "Révoquer",
|
||
"share.title": "Partage public",
|
||
"shortcut.ai_completion": "Completion IA inline (dans l'éditeur)",
|
||
"shortcut.close_editor": "Fermer l'éditeur / modale",
|
||
"shortcut.command_palette": "Palette de commandes",
|
||
"shortcut.editor_help": "Aide de l'éditeur Forge",
|
||
"shortcut.file_palette": "Palette de fichiers (nav. rapide)",
|
||
"shortcut.focus_search": "Focus barre de recherche",
|
||
"shortcut.quick_insert": "Insertion rapide (éditeur Forge)",
|
||
"shortcut.quick_search": "Recherche rapide (hors champ texte)",
|
||
"shortcut.save_file": "Sauvegarder le fichier ouvert",
|
||
"shortcut.search_in_doc": "Rechercher dans le document",
|
||
"shortcut.tip_preview": "Survolez un document avec **Ctrl** pour un aperçu rapide. Cliquez sur **Forge** dans la barre d'outils pour l'éditeur avancé.",
|
||
"sidebar.all_vaults": "Tous les vaults",
|
||
"sidebar.case_sensitive": "Respecter la casse",
|
||
"sidebar.clear_filter": "Effacer",
|
||
"sidebar.expand_collapse": "Développer/Réduire",
|
||
"sidebar.file_icons": "Icônes",
|
||
"sidebar.filter_instant": "Recherche instantanée",
|
||
"sidebar.filter_ai": "Filtrer l'historique IA...",
|
||
"sidebar.filter_recent": "Filtrer les fichiers récents...",
|
||
"sidebar.filter_saved": "Filtrer les recherches sauvegardées...",
|
||
"sidebar.filter_path": "Filtres de chemin",
|
||
"sidebar.filter_placeholder": "Filtrer fichiers...",
|
||
"sidebar.filter_results_grouped": "Résultats groupés",
|
||
"sidebar.loading": "Chargement...",
|
||
"sidebar.no_recent_files": "Aucun fichier récent",
|
||
"sidebar.no_results": "Aucun repertoire ou fichier correspondant.",
|
||
"sidebar.no_saved_searches": "Aucune recherche sauvegardée",
|
||
"sidebar.open_file": "Ouvrir un fichier",
|
||
"sidebar.saved_dirs_tab": "Répertoires",
|
||
"sidebar.saved_searches_tab": "Recherches",
|
||
"sidebar.sidebar_dropdown": "Menu contextuel vault",
|
||
"sidebar.sidebar_filtering": "Filtrage de la sidebar",
|
||
"sidebar.tab_backups": "Sauvegardes",
|
||
"sidebar.tab_recent": "Récents",
|
||
"sidebar.tab_saved": "Recherches",
|
||
"sidebar.tab_tags": "Tags",
|
||
"sidebar.tab_vaults": "Vaults",
|
||
"sidebar.user_role_admin": "Administrateur",
|
||
"sidebar.user_role_user": "Utilisateur",
|
||
"sidebar.vault_context_all": "Toutes les vaults",
|
||
"sidebar.vault_specific": "Vault spécifique",
|
||
"sync.autocomplete": "Auto-complétion",
|
||
"sync.autocomplete_active": "Auto-complétion active",
|
||
"sync.connected": "Synchronisé",
|
||
"sync.connected_short": "Connecté",
|
||
"sync.disconnected": "Déconnecté",
|
||
"sync.event_index_progress": "Vault indexé",
|
||
"sync.event_index_start": "Démarrage index.",
|
||
"sync.event_index_updated": "Mise à jour",
|
||
"sync.event_vault_added": "Vault ajouté",
|
||
"sync.event_vault_removed": "Vault supprimé",
|
||
"sync.index_complete": "Indexation terminée ({count} fichiers)",
|
||
"sync.index_reloaded": "Index complet rechargé",
|
||
"sync.index_started": "Indexation démarrée ({count} vaults)",
|
||
"sync.install_success": "ObsiGate installé avec succès !",
|
||
"sync.model_not_loaded": "Modèle non chargé",
|
||
"sync.no_provider": "Aucun fournisseur",
|
||
"sync.no_recent_events": "Aucun événement récent",
|
||
"sync.not_configured": "Non configuré",
|
||
"sync.processing": "Traitement en cours…",
|
||
"sync.update": "Mettre à jour",
|
||
"sync.updating": "Mise à jour...",
|
||
"sync.vault_added": "Vault \"{vault}\" ajouté ({count} fichiers)",
|
||
"sync.vault_added_label": "Vault ajouté",
|
||
"sync.vault_files": "{vault} ({files} fichiers)",
|
||
"sync.vault_indexed_label": "Vault indexé",
|
||
"sync.vault_removed": "Vault \"{vault}\" supprimé",
|
||
"sync.vault_removed_label": "Vault supprimé",
|
||
"sync.verifying": "Vérification…",
|
||
"theme.change": "Changer le thème",
|
||
"theme.dark": "Sombre",
|
||
"theme.light": "Clair",
|
||
"theme.high_contrast": "Contraste élevé",
|
||
"theme.sepia": "Sépia",
|
||
"theme.title": "Thème",
|
||
"theme.export_all": "Exporter les thèmes",
|
||
"theme.import": "Importer un thème",
|
||
"theme.import_success": "{count} thème(s) importé(s)",
|
||
"theme.import_error": "Erreur d'importation",
|
||
"theme.delete_confirm": "Supprimer ce thème personnalisé ?",
|
||
"themes.name_gradients": "Degrades subtils",
|
||
"themes.name_terminal": "Noir pur & vert",
|
||
"toast.ai_keys_saved": "Clés API sauvegardées",
|
||
"toast.ai_no_key": "Aucune clé à sauvegarder",
|
||
"toast.bookmark_added": "Ajouté aux favoris",
|
||
"toast.bookmark_removed": "Retiré des favoris",
|
||
"toast.cannot_delete_self": "Impossible de supprimer son propre compte",
|
||
"toast.config_client_saved": "Paramètres client sauvegardés",
|
||
"toast.config_reset": "Configuration réinitialisée",
|
||
"toast.config_saved": "Configuration sauvegardée",
|
||
"toast.conflict_resolved": "Conflit résolu",
|
||
"toast.copied": "Copié !",
|
||
"toast.copy_error": "Erreur lors de la copie",
|
||
"toast.create_error": "Erreur lors de la création",
|
||
"toast.created": "Créé",
|
||
"toast.delete_error": "Erreur lors de la suppression",
|
||
"toast.deleted": "Supprimé",
|
||
"toast.dir_created": "Dossier \"{name}\" créé",
|
||
"toast.dir_deleted": "Dossier supprimé ({count} fichiers)",
|
||
"toast.dir_renamed": "Dossier renommé",
|
||
"toast.dir_saved_search": "Répertoire sauvegardé dans les recherches",
|
||
"toast.error_delete": "Erreur de suppression",
|
||
"toast.error_init": "Erreur lors de l'initialisation",
|
||
"toast.error_load": "Erreur de chargement",
|
||
"toast.error_network": "Erreur réseau",
|
||
"toast.error_rename": "Impossible de renommer cet élément",
|
||
"toast.file_created": "Fichier \"{name}\" créé",
|
||
"toast.file_deleted": "Fichier supprimé",
|
||
"toast.file_renamed": "Fichier renommé",
|
||
"toast.hidden_saved": "✓ Paramètres sauvegardés",
|
||
"toast.index_reloaded": "Index complet rechargé",
|
||
"toast.installed": "ObsiGate installé avec succès !",
|
||
"toast.link_created": "Lien créé !",
|
||
"toast.moved": "Déplacé",
|
||
"toast.no_open_file": "Aucun fichier ouvert",
|
||
"toast.not_found_tree": "Élément introuvable dans l'arborescence",
|
||
"toast.path_copied": "Chemin copié : {path}",
|
||
"toast.reindex_done": "Réindexation terminée",
|
||
"toast.reindex_started": "Réindexation en cours...",
|
||
"toast.rename_error": "Erreur lors du renommage",
|
||
"toast.renamed": "Renommé",
|
||
"toast.saved": "Sauvegardé",
|
||
"toast.search_saved": "Recherche sauvegardée",
|
||
"toast.share_revoked": "Partage révoqué",
|
||
"toast.url_required": "URL requise",
|
||
"toast.user_created": "Utilisateur créé",
|
||
"toast.user_deleted": "Utilisateur supprimé",
|
||
"toast.user_modified": "Utilisateur modifié",
|
||
"toast.viewer_error": "Erreur lors du chargement du viewer",
|
||
"toc.hide_panel": "Masquer le panneau",
|
||
"toc.no_headings": "Aucun titre dans ce document",
|
||
"toc.title": "SUR CETTE PAGE",
|
||
"tree.new_file": "Nouveau fichier",
|
||
"tree.new_folder": "Nouveau dossier",
|
||
"tree.vault_home": "Accueil du vault",
|
||
"ui.backups_versions": "Backups / Versions",
|
||
"ui.cannot_rename": "Impossible de renommer cet élément",
|
||
"ui.delete_name_empty": "Le nom ne peut pas etre vide",
|
||
"ui.element_not_found": "Élément introuvable dans l'arborescence",
|
||
"ui.vault_readonly": "Vault en lecture seule",
|
||
"vault.add_dynamic": "Ajouter une vault",
|
||
"vault.reindex": "Réindexer la vault",
|
||
"vault.remove_dynamic": "Retirer la vault",
|
||
"vaulthome.empty": "Aucun fichier dans ce repertoire",
|
||
"vaulthome.error_loading": "Erreur de chargement:",
|
||
"vaulthome.file_count": "{count} fichier",
|
||
"vaulthome.file_count_plural": "{count} fichiers",
|
||
"vaulthome.loading": "Chargement des fichiers...",
|
||
"vaulthome.size_bytes": "o",
|
||
"vaulthome.size_kb": "Ko",
|
||
"vaulthome.size_mb": "Mo",
|
||
"viewer.backlinks": "Backlinks",
|
||
"viewer.binary_download": "Télécharger le fichier",
|
||
"viewer.binary_unsupported": "Fichier binaire non supporté",
|
||
"viewer.bookmark_add": "Ajouter aux bookmarks",
|
||
"viewer.bookmark_remove": "Retirer des bookmarks",
|
||
"viewer.bookmark_toggle": "Ajouter/Retirer des bookmarks",
|
||
"viewer.breadcrumb_home": "Accueil",
|
||
"viewer.click_to_download": "Cliquez pour le télécharger",
|
||
"viewer.copied": "Copié !",
|
||
"viewer.copy": "Copier",
|
||
"viewer.copy_error": "Erreur lors de la copie",
|
||
"viewer.download": "Télécharger",
|
||
"xlsx.lossy_title": "Enregistrement simplifié",
|
||
"xlsx.lossy_hint": "Ces éléments ne peuvent pas être conservés par ObsiGate : une sauvegarde vous demandera confirmation.",
|
||
"xlsx.lossy_confirm": "Enregistrer quand même ? Les éléments suivants seront perdus : {features}",
|
||
"xlsx.lossy_cancelled": "Sauvegarde annulée",
|
||
"xlsx.lossy_confirm_btn": "Enregistrer quand même",
|
||
"xlsx.conflict_msg": "Le classeur a été modifié ailleurs entre-temps. Vos modifications sont conservées : réessayez l'enregistrement.",
|
||
"xlsx.conflict_retry": "Réessayer",
|
||
"xlsx.formula_toggle_title": "Interpréter « = » et « @ » comme des formules (désactivé par défaut)",
|
||
"xlsx.undo": "Annuler la dernière modification",
|
||
"xlsx.redo": "Rétablir la modification",
|
||
"xlsx.cached_value_title": "Dernière valeur calculée par Excel",
|
||
"xlsx.tabs_add_sheet": "Ajouter une feuille",
|
||
"xlsx.readonly_badge": "Lecture seule",
|
||
"xlsx.readonly_hint": "Ce format (.xls / .ods) n'est pas modifiable dans ObsiGate — convertissez-le en .xlsx pour l'éditer.",
|
||
"xlsx.formulas_note": "Formules non recalculées",
|
||
"xlsx.formulas_note_title": "ObsiGate affiche la formule telle qu'elle est enregistrée : Excel la recalcule à l'ouverture. Les cellules dépendantes ne se rafraîchissent pas à l'écran.",
|
||
"xlsx.truncated_title": "Feuille tronquée",
|
||
"xlsx.truncated_rows": "{shown} lignes affichées sur {total}.",
|
||
"xlsx.truncated_cols": "{shown} colonnes affichées sur {total}.",
|
||
"xlsx.truncated_hint": "Les cellules hors de l'affichage ne sont pas éditables ici ; le classeur n'est pas modifié.",
|
||
"xlsx.load_more": "Charger la suite",
|
||
"xlsx.loading_more": "Chargement…",
|
||
"xlsx.load_error": "Chargement de la suite impossible",
|
||
"xlsx.formula_bar_placeholder": "Contenu de la cellule active",
|
||
"xlsx.active_cell": "Cellule",
|
||
"xlsx.name_box_label": "Zone Nom — atteindre une cellule ou une plage",
|
||
"xlsx.name_box_hint": "Saisissez une référence (B12, A1:B3) puis Entrée pour y aller",
|
||
"xlsx.name_box_invalid": "Référence inconnue : {ref}",
|
||
"xlsx.copy": "Copier",
|
||
"xlsx.cut": "Couper",
|
||
"xlsx.paste": "Coller",
|
||
"xlsx.paste_empty": "Presse-papiers vide ou illisible",
|
||
"xlsx.paste_out_of_grid": "Une partie du collage dépasse la grille affichée et a été ignorée",
|
||
"xlsx.fn_suggestions": "SOMME;MOYENNE;NB;NBVAL;MIN;MAX;SI;RECHERCHEV;RECHERCHEX;SOMME.SI;SOMME.SI.ENS;NB.SI;CONCAT;GAUCHE;DROITE;STXT;AUJOURDHUI;MAINTENANT;ARRONDI;ABS;RACINE",
|
||
"xlsx.formula_stored_as_text": "{n} valeur(s) commençant par « = » ou « @ » enregistrée(s) comme texte — activez le bouton f(x) pour écrire de vraies formules",
|
||
"xlsx.find_placeholder": "Rechercher dans le classeur…",
|
||
"xlsx.find_prev": "Précédent",
|
||
"xlsx.find_next": "Suivant",
|
||
"xlsx.find_case": "Respecter la casse",
|
||
"xlsx.find_no_match": "Aucune correspondance",
|
||
"xlsx.find_count": "{index}/{count}",
|
||
"xlsx.find_count_sheets": "{index}/{count} · {sheets} feuilles",
|
||
"xlsx.csv_export": "Exporter la feuille ou la sélection en CSV",
|
||
"xlsx.export_btn": "Exporter",
|
||
"xlsx.export_title": "Exporter la sélection ou la feuille",
|
||
"xlsx.export_md": "Exporter en Markdown",
|
||
"xlsx.export_html": "Exporter en HTML",
|
||
"xlsx.print": "Imprimer",
|
||
"xlsx.export_scope_sheet": "la feuille",
|
||
"xlsx.export_scope_selection": "la sélection",
|
||
"xlsx.export_done": "Export de {scope} terminé",
|
||
"xlsx.format_btn": "Mise en forme",
|
||
"xlsx.format_bold": "Gras",
|
||
"xlsx.format_italic": "Italique",
|
||
"xlsx.format_underline": "Souligné",
|
||
"xlsx.format_clear": "Effacer la mise en forme",
|
||
"xlsx.format_align_left": "Aligner à gauche",
|
||
"xlsx.format_align_center": "Centrer",
|
||
"xlsx.format_align_right": "Aligner à droite",
|
||
"xlsx.format_font_color": "Couleur du texte",
|
||
"xlsx.format_fill_color": "Couleur de fond",
|
||
"xlsx.format_num_general": "Format général",
|
||
"xlsx.format_num_number": "Nombre (2 décimales)",
|
||
"xlsx.format_num_percent": "Pourcentage",
|
||
"xlsx.format_num_currency": "Monétaire (€)",
|
||
"xlsx.format_num_date": "Date (JJ/MM/AAAA)",
|
||
"xlsx.format_num_text": "Texte",
|
||
"xlsx.format_merge": "Fusionner les cellules",
|
||
"xlsx.format_unmerge": "Annuler la fusion",
|
||
"xlsx.format_merge_needs_range": "Sélectionnez au moins deux cellules pour fusionner",
|
||
"xlsx.format_freeze": "Figer les volets ici",
|
||
"xlsx.format_unfreeze": "Libérer les volets",
|
||
"xlsx.format_col_width": "Largeur de colonne…",
|
||
"xlsx.format_col_prompt": "Largeur de la colonne {col} (0 à 255)",
|
||
"xlsx.format_row_height": "Hauteur de ligne…",
|
||
"xlsx.format_row_prompt": "Hauteur de la ligne {row} (0 à 409)",
|
||
"xlsx.format_applied": "Mise en forme enregistrée",
|
||
"xlsx.format_error": "Échec de la mise en forme",
|
||
"xlsx.sort_asc": "Trier la colonne A→Z",
|
||
"xlsx.sort_desc": "Trier la colonne Z→A",
|
||
"xlsx.sort_applied": "Tri appliqué sur {col} — l'affichage seul, le classeur n'est pas modifié",
|
||
"xlsx.sort_reset": "Réinitialiser le tri et le filtre",
|
||
"xlsx.filter_placeholder": "Filtrer les lignes…",
|
||
"xlsx.structure_btn": "Structure de la feuille",
|
||
"xlsx.structure_title": "Modifier la structure du classeur",
|
||
"xlsx.sheet_add": "Ajouter une feuille",
|
||
"xlsx.sheet_rename": "Renommer la feuille courante",
|
||
"xlsx.sheet_duplicate": "Dupliquer la feuille courante",
|
||
"xlsx.sheet_delete": "Supprimer la feuille courante",
|
||
"xlsx.row_insert": "Insérer une ligne au-dessus",
|
||
"xlsx.row_delete": "Supprimer la ligne de la cellule active",
|
||
"xlsx.col_insert": "Insérer une colonne à gauche",
|
||
"xlsx.col_delete": "Supprimer la colonne de la cellule active",
|
||
"xlsx.structure_prompt_add": "Nom de la nouvelle feuille :",
|
||
"xlsx.structure_prompt_rename": "Nouveau nom de la feuille :",
|
||
"xlsx.structure_confirm_delete_sheet": "Supprimer définitivement la feuille « {name} » ? Cette action modifie le fichier (un backup est créé).",
|
||
"xlsx.structure_confirm_row": "Supprimer la ligne {n} ? Cette action modifie le fichier (un backup est créé).",
|
||
"xlsx.structure_confirm_col": "Supprimer la colonne {n} ? Cette action modifie le fichier (un backup est créé).",
|
||
"xlsx.select_column": "Sélectionner la colonne",
|
||
"xlsx.select_row": "Sélectionner la ligne",
|
||
"xlsx.insert_row_above": "Insérer une ligne au-dessus",
|
||
"xlsx.insert_row_below": "Insérer une ligne en dessous",
|
||
"xlsx.insert_col_left": "Insérer une colonne à gauche",
|
||
"xlsx.insert_col_right": "Insérer une colonne à droite",
|
||
"xlsx.delete_rows": "Supprimer {n} ligne(s)",
|
||
"xlsx.delete_cols": "Supprimer {n} colonne(s)",
|
||
"xlsx.clear_contents": "Effacer le contenu",
|
||
"xlsx.confirm_delete_rows": "Supprimer {n} ligne(s) ? Cette action modifie le fichier (un backup est créé).",
|
||
"xlsx.confirm_delete_cols": "Supprimer {n} colonne(s) ? Cette action modifie le fichier (un backup est créé).",
|
||
"xlsx.structure_saved": "Structure mise à jour",
|
||
"xlsx.structure_error": "Modification de la structure impossible",
|
||
"xlsx.last_sheet": "Impossible de supprimer la dernière feuille",
|
||
"xlsx.dashboard_btn": "Tableau de bord",
|
||
"xlsx.inspector_title": "Inspecteur",
|
||
"xlsx.inspector_ai": "Assistant IA",
|
||
"xlsx.inspector_ai_short": "IA",
|
||
"xlsx.inspector_resize": "Redimensionner l'inspecteur",
|
||
"xlsx.range_not_visible": "Cellule hors de l'affichage (feuille tronquée)",
|
||
"xlsx.dashboard_title": "Tableau de bord du classeur",
|
||
"xlsx.dashboard_stats": "{{cells}} cellules · {{rows}} lignes · {{cols}} colonnes · {{formulas}} formules · {{numeric}} valeurs numériques",
|
||
"xlsx.dashboard_charts": "{{n}} graphique(s)",
|
||
"xlsx.dashboard_pivots": "{{n}} TCD",
|
||
"xlsx.dashboard_empty": "Aucune plage nommée ni donnée exploitable dans ce classeur.",
|
||
"xlsx.dashboard_nr_name": "Nom",
|
||
"xlsx.dashboard_nr_scope": "Portée",
|
||
"xlsx.dashboard_nr_ref": "Référence",
|
||
"xlsx.dashboard_hint": "Sélectionnez une plage ou ouvrez l'assistant IA pour analyser ces données.",
|
||
"xlsx.feature_cached_values": "valeurs calculées",
|
||
"xlsx.feature_cached_values_unverified": "valeurs calculées non vérifiables (classeur trop volumineux)",
|
||
"xlsx.feature_slicers": "segments et chronologies",
|
||
"xlsx.feature_form_controls": "contrôles de formulaire",
|
||
"xlsx.feature_connections": "connexions et requêtes",
|
||
"xlsx.feature_custom_xml": "XML personnalisé",
|
||
"xlsx.feature_signature": "signature numérique",
|
||
"xlsx.feature_rich_comments": "commentaires enrichis",
|
||
"xlsx.feature_macros": "macros",
|
||
"viewer.download_md": "Télécharger en .md",
|
||
"viewer.download_file": "Télécharger le fichier",
|
||
"viewer.pretty": "Pretty",
|
||
"viewer.pretty_title": "Mode formaté : couleurs et numéros de ligne",
|
||
"viewer.download_pdf": "Télécharger en PDF",
|
||
"viewer.edit": "Éditer",
|
||
"viewer.error": "Erreur de chargement",
|
||
"viewer.export": "Exporter",
|
||
"viewer.export_done": "Export terminé",
|
||
"viewer.export_epub": "Exporter en ePub",
|
||
"viewer.export_error": "Erreur d'export :",
|
||
"viewer.export_html": "Exporter en HTML",
|
||
"viewer.export_md_bundle": "Exporter en bundle Markdown (.zip)",
|
||
"viewer.export_start": "Export en cours...",
|
||
"viewer.export_title": "Exporter le document",
|
||
"viewer.forge_brand": "Forge",
|
||
"viewer.forge_title": "Forge (nouvel éditeur)",
|
||
"viewer.image_dimensions": "Dimensions",
|
||
"viewer.image_error": "Impossible de charger l'image",
|
||
"viewer.image_fullscreen": "Plein écran (lightbox)",
|
||
"viewer.image_metadata": "Métadonnées",
|
||
"viewer.image_next": "Image suivante",
|
||
"viewer.image_open_original": "Ouvrir l'original",
|
||
"viewer.image_prev": "Image précédente",
|
||
"viewer.image_strip_next": "Faire défiler les miniatures vers la droite",
|
||
"viewer.image_strip_prev": "Faire défiler les miniatures vers la gauche",
|
||
"viewer.image_type": "Type",
|
||
"viewer.image_zoom_in": "Zoom avant",
|
||
"viewer.image_zoom_out": "Zoom arrière",
|
||
"viewer.image_zoom_reset": "Réinitialiser le zoom",
|
||
"viewer.index_start": "Démarrage index.",
|
||
"viewer.index_updated": "Mise à jour",
|
||
"viewer.loaded_from_cache": "Fichier chargé depuis le cache hors-ligne",
|
||
"viewer.loading": "Chargement du fichier...",
|
||
"viewer.markdown": "Markdown",
|
||
"viewer.media_too_large": "Fichier trop volumineux pour la lecture intégrée. Téléchargez-le pour le lire.",
|
||
"viewer.media_unsupported": "Ce format ne peut pas être lu dans votre navigateur.",
|
||
"viewer.metadata_created": "Créé",
|
||
"viewer.metadata_modified": "Modifié",
|
||
"viewer.metadata_path": "Chemin",
|
||
"viewer.metadata_size": "Taille",
|
||
"viewer.metadata_tags": "Tags",
|
||
"viewer.metadata_vault": "Vault",
|
||
"viewer.no_headings": "Aucun titre dans ce document",
|
||
"viewer.on_this_page": "SUR CETTE PAGE",
|
||
"viewer.outline": "Plan",
|
||
"viewer.pdf_pages": "{count} pages",
|
||
"viewer.popout": "Ouvrir dans une fenêtre",
|
||
"viewer.raw": "Brut",
|
||
"viewer.share": "Partager",
|
||
"viewer.shared_doc_title": "Document partagé — cliquer pour gérer",
|
||
"viewer.source": "Source",
|
||
"viewer.syncing": "Mise à jour...",
|
||
"viewer.toc": "Table des matières",
|
||
"viewer.unsupported_file": "Ce fichier est binaire et ne peut pas être affiché",
|
||
"webhook.trigger_create": "Création via API ou palette",
|
||
"webhook.trigger_delete": "Suppression via API ou éditeur",
|
||
"webhook.trigger_dir_create": "Création de dossier via API",
|
||
"webhook.trigger_dir_delete": "Suppression de dossier via l'API",
|
||
"webhook.trigger_dir_rename": "Renommage de dossier via l'API",
|
||
"webhook.trigger_rename": "Renommage via l'API",
|
||
"settings.security": "🔒 Sécurité du compte",
|
||
"settings.security_desc": "Activez l'authentification à deux facteurs (2FA) pour renforcer la sécurité de votre compte.",
|
||
"mfa.title": "Authentification à deux facteurs",
|
||
"mfa.subtitle": "Entrez le code à 6 chiffres de votre application d'authentification.",
|
||
"mfa.verify": "Vérifier",
|
||
"mfa.verifying": "Vérification...",
|
||
"mfa.use_recovery": "Utiliser un code de récupération",
|
||
"mfa.back_to_login": "Retour à la connexion",
|
||
"mfa.recovery_title": "Code de récupération",
|
||
"mfa.recovery_subtitle": "Entrez l'un de vos codes de récupération (format : XXXX-XXXX).",
|
||
"mfa.use_totp": "Utiliser le code authenticator",
|
||
"mfa.status_label": "Authentification à deux facteurs",
|
||
"mfa.enabled": "Activée",
|
||
"mfa.disabled": "Désactivée",
|
||
"mfa.enabled_desc": "Votre compte est protégé par l'authentification à deux facteurs.",
|
||
"mfa.setup_desc": "Ajoutez une couche de sécurité supplémentaire à votre compte avec le TOTP.",
|
||
"mfa.enable_btn": "Activer la 2FA",
|
||
"mfa.disable_btn": "Désactiver la 2FA",
|
||
"mfa.scan_qr": "Scannez ce QR code avec votre application d'authentification",
|
||
"mfa.manual_entry": "Saisie manuelle (si vous ne pouvez pas scanner)",
|
||
"mfa.enter_code": "Entrez le code à 6 chiffres pour confirmer",
|
||
"mfa.confirm_enable": "Confirmer et activer",
|
||
"mfa.recovery_codes_title": "Codes de récupération",
|
||
"mfa.recovery_codes_warning": "Enregistrez ces codes dans un endroit sûr. Chaque code ne peut être utilisé qu'une seule fois.",
|
||
"mfa.copy_codes": "Copier",
|
||
"mfa.download_codes": "Télécharger",
|
||
"mfa.done": "Terminé",
|
||
"mfa.codes_copied": "Codes de récupération copiés !",
|
||
"mfa.disable_confirm_title": "Désactiver la 2FA",
|
||
"mfa.disable_confirm_desc": "Entrez votre mot de passe et un code TOTP valide pour désactiver l'authentification à deux facteurs.",
|
||
"mfa.password_label": "Mot de passe",
|
||
"mfa.password_placeholder": "Votre mot de passe actuel",
|
||
"mfa.totp_code_label": "Code TOTP",
|
||
"mfa.disable_confirm_btn": "Désactiver la 2FA",
|
||
"mfa.disabled_success": "La 2FA a été désactivée.",
|
||
"mfa.fill_all_fields": "Veuillez remplir tous les champs.",
|
||
"mfa.qr_unavailable": "QR code indisponible — utilisez la saisie manuelle ci-dessous.",
|
||
"mfa.password_change_title": "Mot de passe",
|
||
"mfa.password_change_desc": "Modifiez le mot de passe de votre compte (min. 8 caractères). Toutes les autres sessions sont invalidées.",
|
||
"mfa.current_password_label": "Mot de passe actuel",
|
||
"mfa.current_password_placeholder": "Votre mot de passe actuel",
|
||
"mfa.new_password_label": "Nouveau mot de passe",
|
||
"mfa.new_password_placeholder": "Min. 8 caractères",
|
||
"mfa.new_password_confirm_label": "Confirmer le nouveau mot de passe",
|
||
"mfa.new_password_confirm_placeholder": "Répétez le nouveau mot de passe",
|
||
"mfa.password_change_btn": "Changer le mot de passe",
|
||
"mfa.password_mismatch": "Les deux mots de passe ne correspondent pas.",
|
||
"mfa.password_changed": "Mot de passe mis à jour.",
|
||
"mfa.challenge_unavailable": "Écran de vérification indisponible — veuillez recharger la page.",
|
||
"bookslm.title": "BooksLM",
|
||
"bookslm.files_indexed": "{count} fichiers indexés",
|
||
"bookslm.chars_loaded": "{chars} caractères chargés",
|
||
"bookslm.placeholder": "",
|
||
"bookslm.send": "Envoyer",
|
||
"bookslm.new_conversation": "Nouvelle conversation",
|
||
"bookslm.export": "Exporter la conversation",
|
||
"bookslm.toggle_sidebar": "Masquer/Afficher la sidebar AI",
|
||
"bookslm.copy": "Copier",
|
||
"bookslm.insert": "Ajouter",
|
||
"bookslm.insert_hint": "Ajouter la réponse au document ouvert dans l'éditeur",
|
||
"bookslm.inserted": "Réponse ajoutée au document",
|
||
"bookslm.insert_no_editor": "Aucun document ouvert dans l'éditeur",
|
||
"bookslm.insert_block": "Ajouter la section",
|
||
"bookslm.insert_block_hint": "Ajouter uniquement ce bloc de code au document ouvert dans l'éditeur",
|
||
"ai.steps_count": "{count} étape",
|
||
"ai.steps_count_plural": "{count} étapes",
|
||
"ai.activity_thinking": "Réflexion…",
|
||
"ai.step.thought": "Réflexion : {value}",
|
||
"ai.thought_label": "Réflexion",
|
||
"ai.sources_label": "Sources ({count})",
|
||
"ai.steps_running": "exécution en cours",
|
||
"ai.step.backlinks": "Backlinks analysés",
|
||
"ai.step.backup_diff": "Comparaison de sauvegarde : {value}",
|
||
"ai.step.backup_restore": "Sauvegarde restaurée : {value}",
|
||
"ai.step.backups": "Sauvegardes consultées",
|
||
"ai.step.dir_create": "Dossier proposé : {value}",
|
||
"ai.step.dir_delete": "Dossier supprimé : {value}",
|
||
"ai.step.dir_rename": "Dossier renommé : {value}",
|
||
"ai.step.directory": "Répertoire exploré : {value}",
|
||
"ai.step.file_append": "Fichier complété : {value}",
|
||
"ai.step.file_create": "Fichier proposé : {value}",
|
||
"ai.step.file_delete": "Fichier supprimé : {value}",
|
||
"ai.step.file_edit": "Fichier modifié : {value}",
|
||
"ai.step.file_read": "Fichier lu : {value}",
|
||
"ai.step.file_rename": "Fichier renommé : {value}",
|
||
"ai.step.files": "Fichiers listés",
|
||
"ai.step.generic": "Outil utilisé : {tool}",
|
||
"ai.step.graph": "Graphe du vault consulté",
|
||
"ai.step.move": "Élément déplacé : {value}",
|
||
"ai.step.recent": "Fichiers récents consultés",
|
||
"ai.step.replace": "Remplacements : {value}",
|
||
"ai.step.search": "Recherche dans le vault : {value}",
|
||
"ai.step.search_paths": "Chemins recherchés : {value}",
|
||
"ai.step.tags": "Tags consultés",
|
||
"ai.step.tags_suggest": "Tags suggérés pour {value}",
|
||
"ai.step.vaults": "Liste des vaults consultée",
|
||
"ai.step.fetch_url": "Page web consultée : {value}",
|
||
"ai.step.web_search": "Recherche sur le web : {value}",
|
||
"ai.step.crawl": "Site exploré : {value}",
|
||
"ai.step.git_repos": "Dépôts listés ({value})",
|
||
"ai.step.git_issues": "Issues recherchées : {value}",
|
||
"ai.step.git_file": "Fichier de dépôt lu : {value}",
|
||
"ai.step.xlsx_create": "Tableur proposé : {value}",
|
||
"ai.step.xlsx_sheets": "Feuilles du classeur listées : {value}",
|
||
"ai.step.xlsx_read": "Classeur lu : {value}",
|
||
"ai.step.xlsx_update": "Cellules modifiées : {value}",
|
||
"ai.step.xlsx_append": "Lignes ajoutées : {value}",
|
||
"ai.step.xlsx_search": "Recherche dans le classeur : {value}",
|
||
"ai.step.xlsx_analyze": "Plage analysée : {value}",
|
||
"ai.step.xlsx_structure": "Structure modifiée : {value}",
|
||
"ai.step.docx_create": "Document Word proposé : {value}",
|
||
"ai.step.csv_create": "Fichier CSV proposé : {value}",
|
||
"ai.step.pdf_create": "Document PDF proposé : {value}",
|
||
"bookslm.copied": "Réponse copiée dans le presse-papiers",
|
||
"bookslm.error": "Erreur du service AI",
|
||
"bookslm.regenerate": "Régénérer",
|
||
"bookslm.suggestion_summary": "Résume ce répertoire",
|
||
"bookslm.suggestion_themes": "Quels sont les thèmes principaux ?",
|
||
"bookslm.suggestion_contradictions": "Y a-t-il des contradictions entre ces documents ?",
|
||
"bookslm.no_context": "Aucun fichier trouvé dans ce répertoire",
|
||
"bookslm.context_too_large": "Répertoire trop volumineux — certains fichiers ont été tronqués",
|
||
"bookslm.source": "Source",
|
||
"bookslm.session_history": "Historique des sessions",
|
||
"bookslm.session_delete": "Supprimer la session",
|
||
"bookslm.history_empty": "Aucune session enregistrée",
|
||
"bookslm.history_no_match": "Aucune conversation ne correspond à la recherche",
|
||
"bookslm.untitled": "Conversation sans titre",
|
||
"bookslm.no_vault": "Aucun vault actif pour ouvrir ce lien",
|
||
"bookslm.copied_name": "Nom copié : {name}",
|
||
"bookslm.add_options": "Options d'ajout",
|
||
"bookslm.ext_files": "Téléverser des fichiers",
|
||
"bookslm.ext_files_hint": "Ajouter des fichiers au contexte de la conversation",
|
||
"bookslm.ext_image_hint": "Joindre une image pour les modèles à vision",
|
||
"bookslm.ext_contexts": "Ajouter des contextes",
|
||
"bookslm.ext_contexts_hint": "Joindre des fichiers ou répertoires via la commande @",
|
||
"bookslm.ext_skills": "Ajouter des skills",
|
||
"bookslm.ext_skills_hint": "Sélectionner un skill actif",
|
||
"bookslm.ext_deep_research": "Deep Research",
|
||
"bookslm.ext_deep_research_hint": "Recherche approfondie à étapes multiples",
|
||
"bookslm.ext_web": "Recherche sur Internet",
|
||
"bookslm.ext_web_hint": "Bientôt disponible",
|
||
"bookslm.ext_canva": "Canva",
|
||
"bookslm.ext_canva_hint": "Bientôt disponible",
|
||
"bookslm.coming_soon": "Fonctionnalité à venir",
|
||
"bookslm.soon": "Bientôt",
|
||
"bookslm.ext_more_coming": "D'autres options à venir…",
|
||
"bookslm.deep_research_prompt": "Réalise une analyse approfondie de la demande en décomposant les étapes, en cherchant les informations pertinentes dans le vault, en les croisant, et en produisant une synthèse structurée avec sources.",
|
||
"bookslm.deep_research_started": "Deep Research activé — ajoutez votre question puis envoyez.",
|
||
"bookslm.mode_general": "Général",
|
||
"bookslm.mode_directory": "Répertoire",
|
||
"bookslm.mode_documents": "Documents",
|
||
"palette.bookslm_open": "BooksLM: Ouvrir pour le répertoire courant",
|
||
"palette.bookslm_open_desc": "Ouvre l'assistant AI pour le contexte courant (documents ouverts ou général)",
|
||
"palette.bookslm_new": "BooksLM: Nouvelle conversation",
|
||
"palette.bookslm_new_desc": "Réinitialise la conversation de l'assistant AI",
|
||
"fab.open": "Ouvrir l'assistant AI",
|
||
"fab.close": "Fermer l'assistant AI",
|
||
"mfa.webauthn_title": "Clés de sécurité (WebAuthn)",
|
||
"mfa.webauthn_desc": "Authentifiez-vous avec une clé physique (YubiKey) ou la biométrie de votre appareil (Windows Hello, Touch ID).",
|
||
"mfa.webauthn_none": "Aucune clé enregistrée.",
|
||
"mfa.webauthn_add": "Ajouter une clé de sécurité",
|
||
"mfa.webauthn_label_prompt": "Nom de la clé (ex : YubiKey de poche)",
|
||
"mfa.webauthn_added": "Clé de sécurité enregistrée.",
|
||
"mfa.webauthn_removed": "Clé de sécurité supprimée.",
|
||
"mfa.webauthn_remove": "Retirer",
|
||
"mfa.webauthn_remove_confirm": "Entrez votre mot de passe pour retirer cette clé :",
|
||
"mfa.webauthn_prompt": "Présentez votre clé de sécurité ou confirmez avec Windows Hello.",
|
||
"mfa.webauthn_btn": "Valider avec ma clé",
|
||
"mfa.webauthn_cancelled": "Cérémonie WebAuthn annulée.",
|
||
"mfa.webauthn_no_key": "Aucune clé de sécurité enregistrée pour ce compte.",
|
||
"player.now_playing": "Lecture en cours",
|
||
"player.play": "Lecture",
|
||
"player.pause": "Pause",
|
||
"player.previous": "Précédent",
|
||
"player.next": "Suivant",
|
||
"player.seek": "Position de lecture",
|
||
"player.volume": "Volume",
|
||
"player.speed": "Vitesse de lecture",
|
||
"player.expand": "Agrandir le lecteur",
|
||
"player.minimize": "Réduire le lecteur",
|
||
"player.close": "Arrêter et fermer le lecteur",
|
||
"player.continues": "Lecture en cours — utilisez le lecteur pour l'arrêter.",
|
||
"player.reopen_tab": "Revenir au média",
|
||
"player.pip": "Image dans l'image",
|
||
"player.move": "Déplacer",
|
||
"player.resize": "Redimensionner",
|
||
"player.resume": "Reprise de la dernière lecture",
|
||
"plugins.title": "🧩 Plugins",
|
||
"plugins.description": "Étendez ObsiGate avec des renderers personnalisés, filtres de recherche et actions d'éditeur.",
|
||
"plugins.install": "Installer le plugin",
|
||
"plugins.template": "Voir le modèle",
|
||
"plugins.none": "Aucun plugin installé.",
|
||
"plugins.manifest_json": "Manifeste (plugin.json)",
|
||
"plugins.code": "Code du plugin (fichier principal)",
|
||
"plugins.view_code": "Voir le code",
|
||
"plugins.uninstall": "Désinstaller",
|
||
"plugins.enable": "Activer",
|
||
"plugins.disable": "Désactiver",
|
||
"plugins.enabled": "Plugin '{name}' activé.",
|
||
"plugins.disabled": "Plugin '{name}' désactivé.",
|
||
"plugins.installed": "Plugin '{name}' installé avec succès.",
|
||
"plugins.uninstalled": "Plugin '{name}' désinstallé.",
|
||
"plugins.confirm_uninstall": "Désinstaller le plugin '{name}' ? Cette action est irréversible.",
|
||
"help.plugins_title": "🧩 Plugins",
|
||
"help.plugins_intro": "Les plugins étendent ObsiGate : affichage personnalisé des fichiers, filtres de recherche, actions d'édition, widgets et intégrations. Ils s'exécutent dans des Web Workers sandboxés — isolés de la page pour la sécurité.",
|
||
"help.plugins_install": "Installation",
|
||
"help.plugins_install_1": "Ouvrez Réglages → 🧩 Plugins.",
|
||
"help.plugins_install_2": "Cliquez « Installer un plugin ».",
|
||
"help.plugins_install_3": "Sélectionnez un fichier .zip contenant le manifest plugin.json et le code du plugin.",
|
||
"help.plugins_install_4": "Le manifest est validé (nom, version semver, hooks, permissions) avant installation.",
|
||
"help.plugins_manage": "Gestion",
|
||
"help.plugins_manage_1": "Activer / Désactiver : boutons sur chaque plugin — les hooks ne tournent que si le plugin est activé.",
|
||
"help.plugins_manage_2": "Désinstaller : supprime définitivement le plugin du vault.",
|
||
"help.plugins_manage_3": "Code : visualisez le code source du plugin installé.",
|
||
"help.plugins_dev": "Développer un plugin",
|
||
"help.plugins_dev_intro": "Téléchargez le modèle depuis Réglages → Plugins → « Obtenir le modèle ». Un plugin se compose d'un manifest plugin.json et d'un fichier principal (ex. index.js).",
|
||
"help.plugins_hooks": "Hooks disponibles",
|
||
"help.plugins_hook_render": "onFileRender",
|
||
"help.plugins_hook_render_desc": "transforme le contenu affiché d'un fichier.",
|
||
"help.plugins_hook_search": "onSearchFilter",
|
||
"help.plugins_hook_search_desc": "filtre les résultats de recherche.",
|
||
"help.plugins_hook_editor": "onEditorAction",
|
||
"help.plugins_hook_editor_desc": "intercepte les actions de l'éditeur.",
|
||
"help.plugins_hook_sidebar": "onSidebarItem",
|
||
"help.plugins_hook_sidebar_desc": "ajoute des éléments à la barre latérale.",
|
||
"help.plugins_hook_file": "onFileCreate / onFileDelete",
|
||
"help.plugins_hook_file_desc": "réagit à la création / suppression de fichiers.",
|
||
"help.plugins_hook_vault": "onVaultMount",
|
||
"help.plugins_hook_vault_desc": "exécuté au chargement d'un vault.",
|
||
"help.plugins_security": "Sécurité",
|
||
"help.plugins_security_1": "Sandbox Web Worker : le code plugin tourne isolé, sans accès direct au DOM.",
|
||
"help.plugins_security_2": "Permissions : chaque hook déclaré doit être satisfait par les permissions du manifest.",
|
||
"help.plugins_security_3": "Empaquetage sécurisé : le .zip est vérifié contre le path traversal à l'installation.",
|
||
"help.plugins_security_4": "Admin uniquement : l'installation et la suppression requièrent le rôle admin.",
|
||
"help.plugins_template": "Utilisez le bouton <strong>Template</strong> dans Paramètres > Plugins pour générer un plugin starter valide.",
|
||
"help.excalidraw_title": "🎨 Diagrammes Excalidraw",
|
||
"help.excalidraw_intro": "Les fichiers <code>.excalidraw</code> et <code>.excalidraw.md</code> s'ouvrent dans un éditeur visuel Excalidraw complet, intégré dans une iframe sandboxée.",
|
||
"help.excalidraw_open_title": "Ouverture",
|
||
"help.excalidraw_open": "Cliquez sur un fichier <code>.excalidraw</code> dans l'arborescence : l'éditeur s'ouvre à la place du viewer markdown.",
|
||
"help.excalidraw_edit": "Dessinez, ajoutez des formes, du texte, des flèches et des images — l'expérience Excalidraw complète.",
|
||
"help.excalidraw_save_title": "Sauvegarde",
|
||
"help.excalidraw_save": "Les modifications sont sauvegardées automatiquement (2 s) ou avec <strong>Ctrl+S</strong>. L'éditeur suit le thème clair/sombre.",
|
||
"help.excalidraw_search_title": "Recherche",
|
||
"help.excalidraw_search": "Le texte des éléments du diagramme est extrait à l'indexation : il est donc recherchable via la recherche full-text.",
|
||
"help.excalidraw_compat": "Les fichiers créés avec le plugin Obsidian Excalidraw (y compris le format <code>.excalidraw.md</code> compressé) sont compatibles.",
|
||
"help.footer_tagline": "- Porte d'entrée web pour vos vaults Obsidian",
|
||
"guide105.nav_architecture": "🏗️ Architecture",
|
||
"guide105.nav_library": "⭐ Bibliothèque",
|
||
"guide105.nav_diagrams": "📊 Diagrammes",
|
||
"guide105.nav_offline": "📴 Hors-ligne",
|
||
"guide105.nav_collab": "👥 Collaboration",
|
||
"guide105.nav_desktop": "🖥️ Desktop",
|
||
"guide105.nav_api": "🔌 API",
|
||
"guide105.nav_languages": "🌍 Multilingue",
|
||
"guide105.arch_intro": "ObsiGate est une application web complète construite en couches indépendantes, sans base de données externe : les notes vivent dans vos dossiers Obsidian, l'état applicatif dans des fichiers JSON de <code>data/</code>, l'index de recherche en mémoire.",
|
||
"guide105.arch_diagram_note": "Le diagramme est interactif dans l'application : zoom, plein écran, copie SVG ou code.",
|
||
"guide105.arch_h3_layers": "Les grandes composantes",
|
||
"guide105.arch_lbl_fe": "Frontend",
|
||
"guide105.arch_fe": " — SPA en JavaScript vanilla (modules ES), sans framework ni build npm : <code>frontend/js/</code> (~30 modules). Le CSS utilise des variables pour les thèmes.",
|
||
"guide105.arch_lbl_be": "Backend",
|
||
"guide105.arch_be": " — serveur FastAPI (Python 3.11) : rendu markdown (mistune + wikilinks), recherche TF-IDF stemmisée (index inversé en mémoire), watchers watchdog, JWT + Argon2id, webhooks HMAC, export PDF (WeasyPrint).",
|
||
"guide105.arch_lbl_realtime": "Temps réel & MCP",
|
||
"guide105.arch_rt": " — passerelle WebSocket (collaboration Yjs, notifications SSE/push) et serveur MCP (Streamable HTTP, <code>/mcp</code>) pour les clients externes.",
|
||
"guide105.arch_lbl_ai": "Couche IA",
|
||
"guide105.arch_ai": " — assistants d'édition et BooksLM multi-providers (DeepSeek, OpenRouter, Gemini, Mistral…), bibliothèque d'outils (function calling, recherche web, crawl, lecture de documents) et embeddings optionnels pour la recherche sémantique.",
|
||
"guide105.arch_lbl_data": "Données",
|
||
"guide105.arch_data": " — les vaults Obsidian sur disque (source de vérité), la configuration en JSON (<code>data/</code>), les backups horodatés (<code>.obsigate-backup/</code>), l'audit en JSON lines, les clés API chiffrées dans <code>data/api_keys.json</code>.",
|
||
"guide105.arch_lbl_deploy": "Déploiement",
|
||
"guide105.arch_deploy": " — application desktop Tauri (Rust) embarquant le backend Python, conteneur Docker, ou PWA installable dans le navigateur (mode hors-ligne).",
|
||
"guide105.arch_h3_flux": "Flux typique",
|
||
"guide105.arch_flux": " Un clic sur un fichier émet <code>GET /api/file/...</code> ; le backend résout le chemin en sécurité, parse le frontmatter, rend le markdown et renvoie le HTML ; le frontend enrichit l'affichage (Mermaid, coloration, wikilinks cliquables). Chaque écriture crée un backup avant application.",
|
||
"guide105.dia_intro": "Les blocs <code>```mermaid</code> de vos notes sont rendus en diagrammes interactifs (Mermaid v11, chargé depuis un CDN).",
|
||
"guide105.dia_zoom": "Zoom : boutons + / − dans la barre d'outils du diagramme.",
|
||
"guide105.dia_fs": "Plein écran : idéal pour les grandes matrices.",
|
||
"guide105.dia_copy": "Copie : exportez le SVG ou le code source (boutons dédiés).",
|
||
"guide105.dia_toggle": "Bascule Aperçu / Code pour éditer la source sans quitter la vue.",
|
||
"guide105.dia_theme": "Thème : le diagramme suit le thème clair/sombre de l'application.",
|
||
"guide105.dia_types": "Types supportés : flowchart, sequence, class, state, ER, gantt, pie, journey, quadrant, radar, mindmap, timeline, C4, xychart, sankey — plus un préprocesseur qui comprend la syntaxe Obsidian.",
|
||
"guide105.dia_excalidraw_ref": "Les dessins à main levée (<code>.excalidraw</code>, <code>.excalidraw.md</code>) sont couverts dans la section 🎨 Excalidraw.",
|
||
"guide105.lib_h3_bookmarks": "Signets & récents",
|
||
"guide105.lib_bookmarks": "Marquez un fichier d'un ★ (bouton Signet de la barre d'actions) : il rejoint la liste des signets du dashboard. Les fichiers récemment ouverts sont listés automatiquement dans l'onglet « Récents » de la sidebar, avec un filtre de recherche dédié.",
|
||
"guide105.lib_h3_saved": "Recherches sauvegardées",
|
||
"guide105.lib_saved": "Enregistrez une recherche depuis la page de résultats pour la relancer en un clic depuis la sidebar : chaque recherche sauvegardée conserve ses opérateurs et filtres.",
|
||
"guide105.lib_h3_backlinks": "Backlinks & graphe",
|
||
"guide105.lib_backlinks": "Le panneau Backlinks liste toutes les notes qui pointent vers le fichier ouvert. La vue Graphe (bouton 🕸️) affiche les liens entre fichiers : glissez les nœuds, zoomez à la molette, double-cliquez pour ouvrir une note.",
|
||
"guide105.lib_h3_conflicts": "Conflits de synchronisation",
|
||
"guide105.lib_conflicts": "Si vous synchronisez le vault avec Syncthing, ObsiGate détecte les fichiers de conflit (copies « sync-conflict ») et propose de les comparer puis résoudre depuis la page dédiée du menu Options.",
|
||
"guide105.lib_h3_attach": "Fichiers joints & médias",
|
||
"guide105.lib_attach": "Les images <code>![[image.png]]</code>, pièces jointes et médias (audio, vidéo, PDF intégrés) dans les notes sont rendus dans le viewer et indexés pour la recherche. Les images apparaissent aussi dans l'arborescence et s'ouvrent dans une visionneuse dédiée (zoom molette, pan, navigation fluide entre les images du dossier — image redimensionnée au cadre, flèches latérales au survol, pellicule de miniatures persistante —, métadonnées, lightbox) ; les fichiers audio (.mp3, .wav, .flac…) et vidéo (.mp4, .webm…) s'ouvrent dans un lecteur HTML5 intégré (lecture, déplacement, vitesse, plein écran), avec repli sur le téléchargement si le format n'est pas lisible par le navigateur ; la lecture continue pendant la navigation grâce à un mini-lecteur flottant (audio) ou une mini-fenêtre vidéo, qui permet à tout moment de revenir au média ou de l'arrêter. Le bouton « Rescan attachments » de la configuration recrée l'index des pièces jointes.",
|
||
"guide105.off_pwa": "ObsiGate est une PWA : installez-la (icône d'installation de la barre d'adresse) pour l'ouvrir comme une application. Le service worker met en cache l'interface et vos derniers documents consultés.",
|
||
"guide105.off_edit": "Hors-ligne, vous pouvez lire les documents en cache et même les éditer : les modifications sont mises en file d'attente dans IndexedDB.",
|
||
"guide105.off_sync": "Au retour en ligne, la file se rejoue automatiquement (badge de synchronisation dans l'en-tête). Si la version serveur a divergé entre-temps, le fichier est marqué en conflit et la version serveur est préservée en backup.",
|
||
"guide105.off_watch": "Les modifications externes (Obsidian sur disque) sont détectées par le watcher : la vue se recharge sans perte de position, ou signale « modifié en externe » pendant une édition.",
|
||
"guide105.col_intro": "Ouvrez un document en mode Édition : plusieurs personnes peuvent travailler simultanément sur le même fichier via un WebSocket Yjs (CRDT). Les modifications fusionnent sans verrou.",
|
||
"guide105.col_cursors": "Les curseurs et sélections des collaborateurs apparaissent avec une couleur et un nom par personne (awareness).",
|
||
"guide105.col_save": "La fusion est persistée côté serveur après 2 s d'inactivité ; chaque écriture crée un backup horodaté avant application.",
|
||
"guide105.col_perm": "Accès limité aux utilisateurs authentifiés disposant de la permission sur la vault.",
|
||
"guide105.des_get": "L'application desktop ObsiGate (Tauri) embarque le serveur Python : aucune installation de Docker nécessaire. Elle se télécharge sur la page des Releases du dépôt et se met à jour automatiquement (updater signé).",
|
||
"guide105.des_wizard": "Au premier lancement, un assistant demande le dossier de vos vaults (ou crée un vault de démonstration). Chaque document peut être détaché en fenêtre native séparée.",
|
||
"guide105.des_data": "Les données desktop restent dans le répertoire applicatif ; les vaults pointent sur vos dossiers existants. Toutes les fonctionnalités web (recherche, IA, partage) sont disponibles.",
|
||
"guide105.des_native": "Menu système natif, raccourci global optionnel pour afficher/masquer la fenêtre et jumplist des vaults récents.",
|
||
"guide105.api_intro": "ObsiGate expose une API REST couvrant toute l'application (vaults, fichiers, recherche, backups, export, IA, partage, admin), documentée en OpenAPI 3.1 :",
|
||
"guide105.api_docs_url": "<code>/docs</code> — interface Swagger UI pour essayer les requêtes en direct.",
|
||
"guide105.api_redoc": "<code>/redoc</code> — référence alternative plus compacte.",
|
||
"guide105.api_landing": "<code>/api</code> — page de garde regroupant les endpoints par catégorie.",
|
||
"guide105.api_schema": "<code>/openapi.json</code> — le schéma machine, à importer dans Postman ou Insomnia.",
|
||
"guide105.api_h3_auth": "Authentification",
|
||
"guide105.api_auth": "Connectez-vous via <code>POST /api/auth/login</code> pour obtenir un token Bearer (le même jeton est accepté en cookie HttpOnly, ce qui permet aux clients navigateur d'utiliser <code>credentials: \"include\"</code>). Toutes les routes <code>/api/*</code> exigent ce jeton sauf mention contraire.",
|
||
"guide105.api_h3_mcp": "Serveur MCP",
|
||
"guide105.api_mcp": "Les outils de l'assistant IA (lire, lister, chercher, ouvrir, écrire…) sont exposés à tout client MCP (Claude Desktop, Cursor, Cline…) sur <code>https://votre-instance/mcp</code> avec un token d'API. Configuration et exemples : <code>docs/MCP_GUIDE.md</code>.",
|
||
"guide105.api_h3_autom": "Automatisation",
|
||
"guide105.api_autom": "Pour automatiser depuis l'extérieur : <code>GET /api/search?q=…</code> et <code>GET /api/file/{vault}?path=…</code> permettent d'indexer ou relire vos notes dans un autre outil ; les webhooks sortants (section 🪝) évitent le polling.",
|
||
"guide105.lng_how": "L'interface est intégralement bilingue français / anglais. Réglages → Profil → Langue : le choix est enregistré sur votre compte et vous suit sur tous les appareils.",
|
||
"guide105.lng_scope": "Tout est traduit : menus, messages, notifications, et le présent guide. Les réponses de l'assistant IA suivent la langue de vos documents.",
|
||
"guide105.lng_export": "Les boutons Markdown / PDF de ce guide téléchargent la version dans votre langue.",
|
||
"guide105.h3_semantic": "Recherche sémantique (hybride)",
|
||
"guide105.sem_p1": "Activez le bouton « S » de la barre de recherche (ou Alt-S) pour combiner TF-IDF et similarité vectorielle (fusion RRF) : les concepts approchants (« velours » trouve « tissu doux ») remontent mieux.",
|
||
"guide105.sem_p2": "Le moteur d'embeddings (modèle multilingue) est optionnel : sans lui, un repli par hash conserve une recherche hybride fonctionnelle. Les vecteurs sont recalculés à chaque indexation du vault.",
|
||
"guide105.h3_push": "Notifications web (push)",
|
||
"guide105.push_p1": "Autorisez les notifications (bouton 🔔 de l'en-tête) pour être averti des fins de synchronisation hors-ligne et des événements importants. La gestion des abonnements est dans les Configurations.",
|
||
"guide105.push_p2": "Basée sur la Web Push API (clés VAPID) ; fonctionne sur desktop et PWA mobile, sans service tiers : le serveur émet directement vers les endpoints push des navigateurs.",
|
||
"guide105.h3_panes": "Vue multi-panneaux (split view)",
|
||
"guide105.panes_p": "Le bouton « Diviser » de la barre d'actions ouvre le document dans un panneau jumeau ; empilez plusieurs panneaux pour comparer deux notes ou lire et éditer en parallèle. Les largeurs se règlent au bord des panneaux et sont mémorisées.",
|
||
"guide105.h3_dupe": "Anti-doublons à l'upload",
|
||
"guide105.dupe_p": "L'upload en masse (glisser-déposer un dossier sur la sidebar) compare chaque fichier au contenu existant : un fichier déjà présent est ignoré plutôt que dupliqué avec un suffixe « (1) ». Utile pour restaurer un vault sans créer de doublons.",
|
||
"guide105.h3_pdf": "Export PDF",
|
||
"guide105.pdf_p": "Le bouton « PDF » d'un document le rend avec le même moteur que la vue (WeasyPrint) : titres, tableaux, listes et code sont conservés. Depuis un lien public, la route <code>/s/{token}/pdf</code> produit le même PDF.",
|
||
"guide105.h3_exports": "Export HTML / ePub / ZIP",
|
||
"guide105.exp_p": "Le menu « Exporter » propose trois formats : HTML autonome (fichier unique, images incluses), ePub pour les liseuses et, pour un dossier, un bundle Markdown en ZIP — liens et ressources résolus pendant l'export.",
|
||
"guide105.h3_mfa": "MFA : TOTP, WebAuthn, codes de secours",
|
||
"guide105.mfa_p": "Activez la double authentification dans Réglages → Profil : applications TOTP (Authy, Aegis…), clés de sécurité et passkeys (WebAuthn, y compris Windows Hello) et 10 codes de secours à conserver hors ligne. Chaque méthode s'active et se désactive indépendamment.",
|
||
"guide105.h3_admin": "Tableau de bord administrateur",
|
||
"guide105.admin_p": "Le rôle admin ouvre une page dédiée <code>/admin.html</code> (bouton du menu Options) : statut du serveur en direct, utilisateurs, vaults, sessions actives et journal d'audit. Le CRUD utilisateurs est aussi disponible dans les Configurations.",
|
||
"guide105.dl_md_title": "Télécharger ce guide en Markdown",
|
||
"guide105.dl_pdf_title": "Télécharger ce guide en PDF",
|
||
"guide105.export_title": "Guide d'utilisation ObsiGate",
|
||
"guide105.export_footer": "Généré depuis ObsiGate {version} — {date}. Ce document est la copie du guide intégré ; la version la plus récente est toujours dans l'application."
|
||
}
|