chore: lots of i18n

This commit is contained in:
2026-02-21 12:34:06 +01:00
parent c991015ea8
commit b27a3e6885
18 changed files with 1355 additions and 661 deletions

View File

@@ -69,46 +69,46 @@
"settings.data.title": "Maintenance de la base de données",
"settings.data.fileSystemTitle": "Système de fichiers",
"settings.search.placeholder": "Rechercher des paramètres...",
"settings.search.noResults": "No paramètres found matching \"{query}\"",
"settings.search.noResults": "Aucun paramètre correspondant à \"{query}\"",
"settings.search.clear": "Effacer la recherche",
"settings.toast.publishingSaved": "Identifiants de publication enregistrés",
"settings.toast.saveCredentialsFailed": "Échec de save credentials",
"settings.toast.saveCredentialsFailed": "Impossible denregistrer les identifiants",
"settings.toast.credentialsCleared": "Identifiants {type} effacés",
"settings.toast.projectSaved": "Project paramètres saved",
"settings.toast.projectSaveFailed": "Échec de save project paramètres",
"settings.toast.projectSaved": "Paramètres du projet enregistrés",
"settings.toast.projectSaveFailed": "Impossible denregistrer les paramètres du projet",
"settings.toast.categoryAdded": "Catégorie \"{category}\" ajoutée",
"settings.toast.categoryAddFailed": "Échec de add category",
"settings.toast.categoryAddFailed": "Impossible dajouter la catégorie",
"settings.toast.categoryExists": "La catégorie existe déjà",
"settings.toast.categoryProtected": "Impossible de supprimer la catégorie standard \"{category}\"",
"settings.toast.categoryAtLeastOne": "Au moins une catégorie est requise",
"settings.toast.categoryRemoved": "Catégorie \"{category}\" supprimée",
"settings.toast.categoryRemoveFailed": "Échec de remove category",
"settings.toast.categoryRemoveFailed": "Impossible de supprimer la catégorie",
"settings.toast.categoriesReset": "Catégories réinitialisées aux valeurs par défaut",
"settings.toast.categoriesResetFailed": "Échec de reset categories",
"settings.toast.categorySettingsUpdateFailed": "Échec de update category paramètres",
"settings.toast.categoriesResetFailed": "Impossible de réinitialiser les catégories",
"settings.toast.categorySettingsUpdateFailed": "Impossible de mettre à jour les paramètres de catégorie",
"settings.toast.systemPromptSaved": "Prompt système enregistré",
"settings.toast.systemPromptSaveFailed": "Échec de save system prompt",
"settings.toast.systemPromptSaveFailed": "Impossible denregistrer le prompt système",
"settings.toast.systemPromptReset": "Prompt système réinitialisé par défaut",
"settings.toast.systemPromptResetFailed": "Échec de reset system prompt",
"settings.toast.systemPromptResetFailed": "Impossible de réinitialiser le prompt système",
"settings.toast.apiKeySaved": "Clé API enregistrée et validée",
"settings.toast.apiKeyInvalid": "Clé API invalide",
"settings.toast.apiKeySaveFailed": "Échec de save API key",
"settings.toast.apiKeySaveFailed": "Impossible denregistrer la clé API",
"settings.toast.defaultModelUpdated": "Modèle par défaut mis à jour",
"settings.toast.defaultModelUpdateFailed": "Échec de set default model",
"settings.toast.rebuildPostsLoading": "Rebuilding articles database...",
"settings.toast.defaultModelUpdateFailed": "Impossible de définir le modèle par défaut",
"settings.toast.rebuildPostsLoading": "Reconstruction de la base des articles...",
"settings.toast.rebuildPostsSuccess": "Base des articles reconstruite",
"settings.toast.rebuildPostsFailed": "Échec de rebuild articles database",
"settings.toast.rebuildMediaLoading": "Rebuilding médias database...",
"settings.toast.rebuildPostsFailed": "Impossible de reconstruire la base des articles",
"settings.toast.rebuildMediaLoading": "Reconstruction de la base des médias...",
"settings.toast.rebuildMediaSuccess": "Base médias reconstruite",
"settings.toast.rebuildMediaFailed": "Échec de rebuild médias database",
"settings.toast.rebuildLinksLoading": "Rebuilding article links...",
"settings.toast.rebuildMediaFailed": "Impossible de reconstruire la base des médias",
"settings.toast.rebuildLinksLoading": "Reconstruction des liens darticles...",
"settings.toast.rebuildLinksSuccess": "Liens darticles reconstruits",
"settings.toast.rebuildLinksFailed": "Échec de rebuild article links",
"settings.toast.rebuildLinksFailed": "Impossible de reconstruire les liens darticles",
"settings.toast.thumbnailsLoading": "Génération des miniatures...",
"settings.toast.thumbnailsGenerated": "{count} miniatures générées",
"settings.toast.thumbnailsAlreadyExist": "Toutes les miniatures existent déjà",
"settings.toast.thumbnailsComplete": "Génération des miniatures terminée",
"settings.toast.thumbnailsFailed": "Échec de generate thumbnails",
"settings.toast.thumbnailsFailed": "Impossible de générer les miniatures",
"chat.setupTitle": "Configuration du chat IA",
"chat.apiKeyRequiredTitle": "Clé API OpenCode Zen requise",
"chat.apiKeyRequiredDescription": "Saisissez votre clé API OpenCode pour activer le chat IA.",
@@ -116,21 +116,21 @@
"chat.apiKeySave": "Enregistrer la clé",
"chat.apiKeyValidating": "Validation...",
"chat.apiKeyInvalid": "Clé API invalide. Veuillez vérifier et réessayer.",
"chat.apiKeyValidationFailed": "Échec de validate API key.",
"chat.apiKeyValidationFailed": "Impossible de valider la clé API.",
"chat.newChat": "Nouveau chat",
"chat.welcomeTitle": "Bienvenue dans lassistant IA",
"chat.welcomeDescription": "I can help you manage your articles and médias. Try asking me to:",
"chat.welcomeTipSearch": "Recherche for articles about a specific topic",
"chat.welcomeTipDetails": "Get details about a specific article",
"chat.welcomeDescription": "Je peux vous aider à gérer vos articles et médias. Essayez par exemple :",
"chat.welcomeTipSearch": "Rechercher des articles sur un sujet précis",
"chat.welcomeTipDetails": "Afficher les détails dun article précis",
"chat.welcomeTipTags": "Lister toutes les étiquettes ou catégories de votre blog",
"chat.welcomeTipMetadata": "Update metadata for articles or médias",
"chat.welcomeTipImages": "List all images in your médias library",
"chat.welcomeTipMetadata": "Mettre à jour les métadonnées des articles ou médias",
"chat.welcomeTipImages": "Lister toutes les images de votre bibliothèque média",
"chat.role.you": "Vous",
"chat.role.assistant": "Assistant IA",
"chat.stop": "Arrêter",
"chat.inputPlaceholder": "Saisissez un message...",
"chat.errorPrefix": "Erreur : {error}",
"chat.errorNoResponse": "Échec de get a response. Please try again.",
"chat.errorNoResponse": "Impossible dobtenir une réponse. Veuillez réessayer.",
"chat.errorEmptyResponse": "Le modèle a renvoyé une réponse vide. Essayez un autre modèle ou reformulez votre question.",
"chat.errorGeneric": "Désolé, une erreur est survenue lors du traitement de votre message.",
"chat.cancelledSuffix": "(annulé)",
@@ -152,8 +152,8 @@
"insert.tab.imageInternal": "Bibliothèque média",
"insert.tab.linkExternal": "URL externe",
"insert.tab.imageExternal": "Image externe",
"insert.searchPlaceholder.link": "Recherche articles by title or content...",
"insert.searchPlaceholder.image": "Recherche médias by name, title, or alt text...",
"insert.searchPlaceholder.link": "Rechercher des articles par titre ou contenu...",
"insert.searchPlaceholder.image": "Rechercher des médias par nom, titre ou texte alternatif...",
"insert.status.searching": "Recherche...",
"insert.status.typeMore": "Saisissez au moins 2 caractères pour rechercher",
"insert.status.noResults": "Aucun(e) {kind} trouvé(e) pour \"{query}\"",
@@ -169,7 +169,7 @@
"insert.hint.internal": "Utilisez ↑↓ pour naviguer, Entrée pour sélectionner, Esc pour fermer",
"insert.hint.external": "Entrez lURL et appuyez sur Entrée ou cliquez sur le bouton, Esc pour fermer",
"insert.hint.canonicalPost": "Canonique : /YYYY/MM/DD/slug",
"insert.hint.canonicalMedia": "Canonical: /médias/YYYY/MM/file.ext",
"insert.hint.canonicalMedia": "Canonique : /media/YYYY/MM/fichier.ext",
"postLinks.loading": "Chargement des liens...",
"postLinks.link": "lien",
"postLinks.links": "liens",
@@ -181,7 +181,7 @@
"gitDiff.header": "Diff : {target}",
"gitDiff.noProject": "Aucun projet actif sélectionné.",
"gitDiff.noProjectPath": "Impossible de résoudre le chemin du projet.",
"gitDiff.loadFailed": "Échec de load diff.",
"gitDiff.loadFailed": "Impossible de charger le diff.",
"gitDiff.loading": "Chargement du diff...",
"gitDiff.changedFiles": "Fichiers modifiés",
"gitDiff.previousFile": "Fichier précédent",
@@ -192,8 +192,8 @@
"errorModal.copy": "Copier",
"errorModal.noStack": "Aucune trace de pile disponible",
"confirmDelete.title": "Confirmer la suppression",
"confirmDelete.promptPost": "Are you sure you want to delete the article",
"confirmDelete.promptMedia": "Are you sure you want to delete the médias file",
"confirmDelete.promptPost": "Voulez-vous vraiment supprimer larticle",
"confirmDelete.promptMedia": "Voulez-vous vraiment supprimer le fichier média",
"confirmDelete.warning": "Avertissement :",
"confirmDelete.referencedBy": "Ce/cette {itemType} est référencé(e) par les éléments suivants :",
"confirmDelete.note": "La suppression de ce/cette {itemType} supprimera toutes ces références.",
@@ -205,12 +205,12 @@
"lightbox.close": "Fermer (Esc)",
"lightbox.previous": "Précédent (←)",
"lightbox.next": "Suivant (→)",
"credentials.error.load": "Échec de load credentials:",
"credentials.error.save": "Échec de save credentials:",
"credentials.error.load": "Impossible de charger les identifiants :",
"credentials.error.save": "Impossible denregistrer les identifiants :",
"credentials.toast.saved": "Identifiants enregistrés",
"credentials.toast.saveFailed": "Échec de save credentials",
"credentials.toast.saveFailed": "Impossible denregistrer les identifiants",
"credentials.toast.testing": "Test de la connexion {type}...",
"credentials.toast.connectionFailed": "Connection échoué - check credentials",
"credentials.toast.connectionFailed": "Échec de la connexion - vérifiez les identifiants",
"credentials.tab.ftp": "Accès FTP",
"credentials.tab.ssh": "Accès SSH",
"credentials.ftp.title": "Publication FTP",
@@ -230,14 +230,14 @@
"credentials.ssh.placeholder.keyPath": "~/.ssh/ma_cle",
"gitSidebar.header": "CONTRÔLE DE SOURCE",
"gitSidebar.loading": "Chargement...",
"gitSidebar.error.fetchRemoteUpdates": "Échec de fetch remote updates.",
"gitSidebar.error.fetchRemoteUpdates": "Impossible de récupérer les mises à jour distantes.",
"gitSidebar.error.refreshRemoteState": "Impossible dactualiser létat de suivi distant.",
"gitSidebar.error.gitMissing": "Exécutable Git introuvable. Veuillez installer Git et redémarrer lapplication.",
"gitSidebar.error.noActiveProject": "Aucun projet actif sélectionné.",
"gitSidebar.error.loadRepoStatus": "Impossible de charger létat du dépôt.",
"gitSidebar.error.initFailed": "Échec de initialize git repository.",
"gitSidebar.error.initFailed": "Impossible dinitialiser le dépôt Git.",
"gitSidebar.error.actionFailed": "Échec de {action}.",
"gitSidebar.error.commitFailed": "Échec de commit changes.",
"gitSidebar.error.commitFailed": "Impossible de valider les modifications.",
"gitSidebar.progress.preparingInit": "Préparation de linitialisation du dépôt...",
"gitSidebar.progress.pushingRemote": "Envoi des commits vers le distant... cela peut prendre un moment pour les gros envois.",
"gitSidebar.progress.fetching": "Récupération des mises à jour distantes...",
@@ -265,7 +265,7 @@
"gitSidebar.action.committing": "Commit en cours...",
"gitSidebar.action.initializeGit": "Initialiser Git",
"gitSidebar.action.initializing": "Initialisation...",
"gitSidebar.openChanges": "Ouvrir Changes ({count})",
"gitSidebar.openChanges": "Modifications ouvertes ({count})",
"gitSidebar.versionHistory": "Historique des versions ({count})",
"gitSidebar.loadingChanges": "Chargement des modifications...",
"gitSidebar.noChanges": "Aucune modification",
@@ -286,16 +286,16 @@
"tabBar.scrollLeft": "Faire défiler les onglets vers la gauche",
"tabBar.scrollRight": "Faire défiler les onglets vers la droite",
"tabBar.commitTitle": "Validation {hash}",
"tabBar.error.fetchPostTitle": "Échec de fetch article title:",
"tabBar.error.fetchChatTitle": "Échec de fetch chat title:",
"tabBar.error.fetchImportTitle": "Échec de fetch import definition title:",
"tabBar.error.fetchCommitTitle": "Échec de fetch commit titles:",
"tabBar.error.fetchPostTitle": "Impossible de charger le titre de larticle :",
"tabBar.error.fetchChatTitle": "Impossible de charger le titre du chat :",
"tabBar.error.fetchImportTitle": "Impossible de charger le titre de la définition dimport :",
"tabBar.error.fetchCommitTitle": "Impossible de charger les titres des commits :",
"metadataDiff.title": "Outil de diff des métadonnées",
"metadataDiff.description": "Compare article metadata between database and markdown files. Fix inconsistencies caused by bugs or manual edits.",
"metadataDiff.error.loadStats": "Échec de load database statistics",
"metadataDiff.error.scan": "Échec de scan for differences",
"metadataDiff.description": "Compare les métadonnées des articles entre la base de données et les fichiers Markdown. Corrige les incohérences causées par des bugs ou des modifications manuelles.",
"metadataDiff.error.loadStats": "Impossible de charger les statistiques de la base de données",
"metadataDiff.error.scan": "Impossible danalyser les différences",
"metadataDiff.progress.starting": "Démarrage de lanalyse...",
"metadataDiff.progress.scanningPublished": "Scanning published articles...",
"metadataDiff.progress.scanningPublished": "Analyse des articles publiés...",
"metadataDiff.progress.scanning": "Analyse en cours...",
"metadataDiff.action.scan": "Analyser les différences",
"metadataDiff.action.rescan": "Relancer lanalyse",
@@ -303,112 +303,238 @@
"metadataDiff.stats.published": "Publiés",
"metadataDiff.stats.drafts": "Brouillons",
"metadataDiff.stats.mediaFiles": "Fichiers média",
"metadataDiff.summary.noDiffs": "✅ No differences found! All {total} published articles are in sync.",
"metadataDiff.summary.withDiffs": "⚠️ Found {count} articles with differences out of {total} published articles.",
"metadataDiff.summary.noDiffs": "✅ Aucune différence trouvée ! Les {total} articles publiés sont synchronisés.",
"metadataDiff.summary.withDiffs": "⚠️ {count} articles présentent des différences sur {total} articles publiés.",
"metadataDiff.group.differences": "Différences de {label}",
"metadataDiff.group.postsCount": "{count} articles",
"metadataDiff.sync.failed": "échoué",
"metadataDiff.sync.dbToFile.title": "Mettre à jour les fichiers avec les valeurs de la base",
"metadataDiff.sync.dbToFile.success": "Synced {success} articles to files{échoué}",
"metadataDiff.sync.dbToFile.error": "Échec de sync to files",
"metadataDiff.sync.dbToFile.success": "{success} articles synchronisés vers les fichiers{échoué}",
"metadataDiff.sync.dbToFile.error": "Échec de la synchronisation vers les fichiers",
"metadataDiff.sync.fileToDb.title": "Mettre à jour la base avec les valeurs des fichiers",
"metadataDiff.sync.fileToDb.success": "Synced {success} files to database{échoué}",
"metadataDiff.sync.fileToDb.error": "Échec de sync to database",
"metadataDiff.sync.fileToDb.success": "{success} fichiers synchronisés vers la base de données{échoué}",
"metadataDiff.sync.fileToDb.error": "Échec de la synchronisation vers la base de données",
"metadataDiff.value.database": "Base de données",
"metadataDiff.value.file": "Fichier",
"metadataDiff.empty": "Cliquez sur « Rechercher les différences » pour comparer les métadonnées de la base et celles des fichiers.",
"sidebar.archive": "Archive",
"sidebar.clearFilter": "Clear filter",
"sidebar.tags": "Tags",
"sidebar.categories": "Categories",
"sidebar.clearTags": "Clear tags",
"sidebar.clearCategories": "Clear categories",
"sidebar.noPostsYet": "No posts yet",
"sidebar.noPagesYet": "No pages yet",
"sidebar.noMediaYet": "No media yet",
"sidebar.search": "Search",
"sidebar.searchPostsPlaceholder": "Search posts...",
"sidebar.searchPagesPlaceholder": "Search pages...",
"sidebar.searchMediaPlaceholder": "Search media...",
"sidebar.toggleFilters": "Toggle Filters",
"sidebar.newPost": "New Post",
"sidebar.importMedia": "Import media",
"sidebar.results": "{count} results",
"sidebar.resultsFor": "{count} results for \"{query}\"",
"sidebar.clearFilters": "Clear filters",
"sidebar.drafts": "Drafts",
"sidebar.published": "Published",
"sidebar.archived": "Archived",
"sidebar.untitled": "Untitled",
"sidebar.noMatchingPosts": "No matching posts",
"sidebar.createFirstPost": "Create your first post",
"sidebar.loadMore": "Load more ({loaded} of {total})",
"sidebar.loading": "Loading...",
"sidebar.noMediaFiles": "No media files",
"sidebar.settingsHeader": "Settings",
"sidebar.tagsHeader": "Tags",
"sidebar.nav.project": "Project",
"sidebar.nav.editor": "Editor",
"sidebar.nav.content": "Content",
"sidebar.nav.ai": "AI Assistant",
"sidebar.nav.publishing": "Publishing",
"sidebar.nav.data": "Data",
"sidebar.clearFilter": "Effacer le filtre",
"sidebar.tags": "Étiquettes",
"sidebar.categories": "Catégories",
"sidebar.clearTags": "Effacer les étiquettes",
"sidebar.clearCategories": "Effacer les catégories",
"sidebar.noPostsYet": "Aucun article pour le moment",
"sidebar.noPagesYet": "Aucune page pour le moment",
"sidebar.noMediaYet": "Aucun média pour le moment",
"sidebar.search": "Rechercher",
"sidebar.searchPostsPlaceholder": "Rechercher des articles...",
"sidebar.searchPagesPlaceholder": "Rechercher des pages...",
"sidebar.searchMediaPlaceholder": "Rechercher des médias...",
"sidebar.toggleFilters": "Afficher/masquer les filtres",
"sidebar.newPost": "Nouvel article",
"sidebar.importMedia": "Importer des médias",
"sidebar.results": "{count} résultats",
"sidebar.resultsFor": "{count} résultats pour \"{query}\"",
"sidebar.clearFilters": "Effacer les filtres",
"sidebar.drafts": "Brouillons",
"sidebar.published": "Publiés",
"sidebar.archived": "Archivés",
"sidebar.untitled": "Sans titre",
"sidebar.noMatchingPosts": "Aucun article correspondant",
"sidebar.createFirstPost": "Créer votre premier article",
"sidebar.loadMore": "Charger plus ({loaded} sur {total})",
"sidebar.loading": "Chargement...",
"sidebar.noMediaFiles": "Aucun fichier média",
"sidebar.settingsHeader": "Paramètres",
"sidebar.tagsHeader": "Étiquettes",
"sidebar.nav.project": "Projet",
"sidebar.nav.editor": "Éditeur",
"sidebar.nav.content": "Contenu",
"sidebar.nav.ai": "Assistant IA",
"sidebar.nav.publishing": "Publication",
"sidebar.nav.data": "Données",
"sidebar.nav.style": "Style",
"sidebar.tagCloud": "Tag Cloud",
"sidebar.createEdit": "Create & Edit",
"sidebar.mergeTags": "Merge Tags",
"settings.project.descriptionGeneral": "General settings for the active blog project.",
"settings.project.nameLabel": "Project Name",
"settings.project.nameDescription": "The display name of your blog project.",
"settings.project.namePlaceholder": "My Blog",
"sidebar.tagCloud": "Nuage détiquettes",
"sidebar.createEdit": "Créer & modifier",
"sidebar.mergeTags": "Fusionner les étiquettes",
"settings.project.descriptionGeneral": "Paramètres généraux du projet de blog actif.",
"settings.project.nameLabel": "Nom du projet",
"settings.project.nameDescription": "Nom daffichage de votre projet de blog.",
"settings.project.namePlaceholder": "Mon blog",
"settings.project.descriptionLabel": "Description",
"settings.project.descriptionDescription": "A short description of your blog. This can be used in templates and metadata.",
"settings.project.descriptionPlaceholder": "A blog about...",
"settings.project.dataPathLabel": "Project Data Path",
"settings.project.dataPathDescription": "Custom folder for storing posts, media, and metadata. Leave empty to use the default location: {path}",
"settings.project.defaultLocation": "Default location",
"settings.project.publicUrlLabel": "Public URL",
"settings.project.publicUrlDescription": "The public base URL of your published blog (used for sitemap generation).",
"settings.project.descriptionDescription": "Courte description de votre blog. Elle peut être utilisée dans les modèles et métadonnées.",
"settings.project.descriptionPlaceholder": "Un blog sur...",
"settings.project.dataPathLabel": "Chemin des données du projet",
"settings.project.dataPathDescription": "Dossier personnalisé pour stocker les articles, médias et métadonnées. Laissez vide pour utiliser lemplacement par défaut : {path}",
"settings.project.defaultLocation": "Emplacement par défaut",
"settings.project.publicUrlLabel": "URL publique",
"settings.project.publicUrlDescription": "URL de base publique de votre blog publié (utilisée pour générer le sitemap).",
"settings.project.publicUrlPlaceholder": "https://example.com",
"settings.project.mainLanguageLabel": "Main Language",
"settings.project.mainLanguageDescription": "The primary language for your blog content. AI-generated titles, alt text, and captions will use this language.",
"settings.project.defaultAuthorLabel": "Default Author",
"settings.project.defaultAuthorDescription": "The default author name for new posts and media. Can be overridden per item.",
"settings.project.defaultAuthorPlaceholder": "Author Name",
"settings.project.maxPostsPerPageLabel": "Max Posts Per Page",
"settings.project.maxPostsPerPageDescription": "Maximum number of posts shown per preview route page.",
"settings.project.saveButton": "Save Project Settings",
"editor.loadingPost": "Loading post...",
"editor.unsavedChanges": "Unsaved changes (auto-saves on switch)",
"editor.saving": "Saving...",
"editor.publish": "Publish",
"editor.publishTitle": "Save and make this post public",
"editor.discardChanges": "Discard Changes",
"editor.discardDraft": "Discard Draft",
"editor.discardChangesTitle": "Revert to last published version",
"editor.discardDraftTitle": "Delete this draft permanently",
"editor.delete": "Delete",
"editor.deleteTitle": "Delete this post permanently",
"editor.field.title": "Title",
"editor.field.tags": "Tags",
"editor.field.author": "Author",
"settings.project.mainLanguageLabel": "Langue principale",
"settings.project.mainLanguageDescription": "Langue principale de votre contenu. Les titres, textes alternatifs et légendes générés par lIA utiliseront cette langue.",
"settings.project.defaultAuthorLabel": "Auteur par défaut",
"settings.project.defaultAuthorDescription": "Nom dauteur par défaut pour les nouveaux articles et médias. Peut être remplacé par élément.",
"settings.project.defaultAuthorPlaceholder": "Nom de lauteur",
"settings.project.maxPostsPerPageLabel": "Nombre max darticles par page",
"settings.project.maxPostsPerPageDescription": "Nombre maximum darticles affichés par page de route daperçu.",
"settings.project.saveButton": "Enregistrer les paramètres du projet",
"editor.loadingPost": "Chargement de larticle...",
"editor.unsavedChanges": "Modifications non enregistrées (enregistrement auto au changement)",
"editor.saving": "Enregistrement...",
"editor.publish": "Publier",
"editor.publishTitle": "Enregistrer et publier cet article",
"editor.discardChanges": "Annuler les modifications",
"editor.discardDraft": "Supprimer le brouillon",
"editor.discardChangesTitle": "Revenir à la dernière version publiée",
"editor.discardDraftTitle": "Supprimer définitivement ce brouillon",
"editor.delete": "Supprimer",
"editor.deleteTitle": "Supprimer définitivement cet article",
"editor.field.title": "Titre",
"editor.field.tags": "Étiquettes",
"editor.field.author": "Auteur",
"editor.field.slug": "Slug",
"editor.field.categories": "Categories",
"editor.field.content": "Content",
"editor.placeholder.tags": "Add tags...",
"editor.placeholder.author": "Author name",
"editor.placeholder.categories": "Add categories...",
"editor.placeholder.startWriting": "Start writing...",
"editor.mode.visual": "Visual",
"editor.mode.visualTitle": "Visual editor",
"editor.mode.markdownTitle": "Markdown source",
"editor.mode.previewTitle": "Read-only preview",
"editor.galleryTitle": "View {count} image(s)",
"editor.insertPostLinkTitle": "Link to post (Ctrl+K)",
"editor.insertMediaTitle": "Insert image from media library",
"editor.previewFrameTitle": "Post preview",
"editor.previewLoading": "Loading preview...",
"editor.footer.created": "Created",
"editor.footer.updated": "Updated",
"editor.footer.published": "Published"
"editor.field.categories": "Catégories",
"editor.field.content": "Contenu",
"editor.placeholder.tags": "Ajouter des étiquettes...",
"editor.placeholder.author": "Nom de lauteur",
"editor.placeholder.categories": "Ajouter des catégories...",
"editor.placeholder.startWriting": "Commencez à écrire...",
"editor.mode.visual": "Visuel",
"editor.mode.visualTitle": "Éditeur visuel",
"editor.mode.markdownTitle": "Source Markdown",
"editor.mode.previewTitle": "Aperçu en lecture seule",
"editor.galleryTitle": "Voir {count} image(s)",
"editor.insertPostLinkTitle": "Lier à un article (Ctrl+K)",
"editor.insertMediaTitle": "Insérer une image depuis la bibliothèque média",
"editor.previewFrameTitle": "Aperçu de larticle",
"editor.previewLoading": "Chargement de laperçu...",
"editor.footer.created": "Créé",
"editor.footer.updated": "Mis à jour",
"editor.footer.published": "Publié",
"projectSelector.switchProject": "Changer de projet",
"projectSelector.selectProject": "Sélectionner un projet",
"projectSelector.projectsHeader": "Projets",
"projectSelector.noProjectsYet": "Aucun projet pour le moment",
"projectSelector.newProject": "Nouveau projet",
"projectSelector.createNewProject": "Créer un nouveau projet",
"projectSelector.projectName": "Nom du projet",
"projectSelector.projectNamePlaceholder": "Mon blog",
"projectSelector.descriptionOptional": "Description (facultative)",
"projectSelector.descriptionPlaceholder": "Brève description du projet...",
"projectSelector.projectLocation": "Emplacement du projet",
"projectSelector.useDefaultLocation": "Utiliser l'emplacement par défaut",
"projectSelector.defaultInternalStorage": "Par défaut (stockage interne)",
"projectSelector.chooseFolder": "Choisir un dossier...",
"projectSelector.projectLocationHint": "Choisissez un dossier personnalisé pour la sauvegarde cloud, ou utilisez l'emplacement interne par défaut.",
"projectSelector.createProject": "Créer le projet",
"projectSelector.deleteProject": "Supprimer le projet",
"projectSelector.deleteWarning": "Cela supprimera définitivement le projet \"{name}\" et toutes ses données, y compris :",
"projectSelector.deleteItemPosts": "Tous les articles",
"projectSelector.deleteItemMedia": "Tous les médias",
"projectSelector.deleteItemSettings": "Tous les paramètres du projet",
"projectSelector.typeToConfirm": "Saisissez {name} pour confirmer la suppression :",
"projectSelector.selectProjectLocation": "Sélectionner l'emplacement du projet",
"projectSelector.deleteProjectTitle": "Supprimer {name}",
"projectSelector.toast.switched": "Projet actif : {name}",
"projectSelector.toast.switchFailed": "Échec du changement de projet",
"projectSelector.toast.created": "Projet \"{name}\" créé",
"projectSelector.toast.createFailed": "Impossible de créer le projet",
"projectSelector.toast.existingSettingsFound": "Paramètres de projet existants détectés",
"projectSelector.toast.selectFolderFailed": "Échec de la sélection du dossier",
"projectSelector.toast.deletedWithData": "Projet \"{name}\" et toutes ses données supprimés",
"projectSelector.toast.deleteFailed": "Impossible de supprimer le projet",
"tagsView.title": "Gestion des tags",
"tagsView.subtitle": "Gérez les tags du blog, attribuez des couleurs et lancez des actions groupées.",
"tagsView.loadingTags": "Chargement des tags...",
"tagsView.noTagsFound": "Aucun tag trouvé",
"tagsView.discoverFromPosts": "Découvrir les tags à partir des articles",
"tagsView.selectedCount": "{count} tag(s) sélectionné(s)",
"tagsView.clearSelection": "Effacer la sélection",
"tagsView.cloud.title": "Nuage de tags",
"tagsView.cloud.description": "Cliquez sur les tags pour les sélectionner. Survolez-les pour voir le nombre d'articles.",
"tagsView.manage.title": "Créer et modifier des tags",
"tagsView.manage.description": "Créez de nouveaux tags ou modifiez les existants. Attribuez des couleurs pour mieux les distinguer.",
"tagsView.create.title": "Créer un tag",
"tagsView.create.action": "Créer",
"tagsView.tagNamePlaceholder": "Nom du tag",
"tagsView.chooseColor": "Choisir une couleur",
"tagsView.removeColor": "Supprimer la couleur",
"tagsView.edit.title": "Modifier le tag : {name}",
"tagsView.edit.action": "Modifier",
"tagsView.deleteAction": "Supprimer",
"tagsView.merge.title": "Fusionner des tags",
"tagsView.merge.description": "Sélectionnez plusieurs tags ci-dessus puis fusionnez-les en un seul. Tous les articles seront mis à jour.",
"tagsView.merge.selectAtLeastTwo": "Sélectionnez au moins 2 tags dans le nuage pour les fusionner.",
"tagsView.merge.countInto": "Fusionner {count} tags vers :",
"tagsView.merge.selectTarget": "Sélectionner le tag cible...",
"tagsView.merge.action": "Fusionner les tags",
"tagsView.merge.tagsToDelete": "Tags à supprimer : {tags}",
"tagsView.sync.title": "Synchroniser les tags",
"tagsView.sync.description": "Découvrir les tags présents dans les articles mais absents de la base de tags.",
"tagsView.sync.action": "Synchroniser les tags depuis les articles",
"tagsView.confirmDelete.title": "Supprimer le tag",
"tagsView.confirmDelete.message": "Voulez-vous vraiment supprimer le tag \"{tagName}\" ? Il sera retiré de tous les articles. Cette action s'exécute en tâche de fond.",
"tagsView.confirmDelete.action": "Supprimer le tag",
"tagsView.confirmMerge.title": "Fusionner des tags",
"tagsView.confirmMerge.message": "Voulez-vous vraiment fusionner {count} tag(s) vers \"{target}\" ? Les tags source seront supprimés et tous les articles seront mis à jour. Cette action s'exécute en tâche de fond.",
"tagsView.confirmMerge.action": "Fusionner les tags",
"tagsView.none": "(aucun)",
"tagsView.tagCountTitle": "{count} {item}",
"tagsView.postsSingular": "article",
"tagsView.postsPlural": "articles",
"tagsView.toast.tagNameRequired": "Le nom du tag est requis",
"tagsView.toast.tagCreated": "Tag créé",
"tagsView.toast.tagDeleted": "Tag supprimé. {postsUpdated} article(s) mis à jour.",
"tagsView.toast.tagUpdated": "Tag mis à jour",
"tagsView.toast.targetTagNotFound": "Tag cible introuvable",
"tagsView.toast.noSourceTagsToMerge": "Aucun tag source à fusionner",
"tagsView.toast.tagsMerged": "{tagsDeleted} tag(s) fusionné(s) vers \"{targetTag}\". {postsUpdated} article(s) mis à jour.",
"tagsView.toast.discoveredTags": "{count} nouveau(x) tag(s) découvert(s)",
"tagsView.toast.alreadySynced": "Tous les tags sont déjà synchronisés",
"tagsView.error.deleteFailedTitle": "Échec de la suppression",
"tagsView.error.mergeFailedTitle": "Échec de la fusion",
"linkedMediaPanel.title": "📷 Médias liés",
"linkedMediaPanel.collapsedTitle": "📷 Médias ({count})",
"linkedMediaPanel.importAndLink": "Importer et lier des médias",
"linkedMediaPanel.linkExisting": "Lier un média existant",
"linkedMediaPanel.selectMediaToLink": "Sélectionner les médias à lier",
"linkedMediaPanel.searchPlaceholder": "Rechercher des médias...",
"linkedMediaPanel.noUnlinkedMedia": "Aucun média non lié disponible",
"linkedMediaPanel.noMediaLinked": "Aucun média lié à cet article",
"linkedMediaPanel.importMedia": "Importer des médias",
"linkedMediaPanel.unlinkFromPost": "Délier de l'article",
"linkedMediaPanel.toast.importedLinked": "{count} fichier(s) importé(s) et lié(s)",
"linkedMediaPanel.toast.importFailed": "Échec de l'import des médias",
"linkedMediaPanel.toast.unlinked": "Média délié de l'article",
"linkedMediaPanel.toast.unlinkFailed": "Échec du déliage du média",
"linkedMediaPanel.toast.linked": "Média lié à l'article",
"linkedMediaPanel.toast.linkFailed": "Échec de la liaison du média",
"styleView.title": "Style",
"styleView.subtitle": "Sélectionnez un thème Pico CSS et prévisualisez les principaux articles avant application.",
"styleView.themePickerAria": "Sélecteur de thème Pico",
"styleView.previewMode": "Mode d'aperçu",
"styleView.mode.auto": "Auto",
"styleView.mode.light": "Clair",
"styleView.mode.dark": "Sombre",
"styleView.applyTheme": "Appliquer le thème",
"styleView.themePreviewTitle": "Aperçu du thème",
"styleView.toast.appliedTheme": "Thème appliqué : {theme}",
"styleView.toast.applyThemeFailed": "Échec de l'application du thème",
"panel.tabsAria": "Onglets du panneau",
"panel.output": "Sortie",
"panel.postLinks": "Liens d'articles",
"panel.gitLog": "Journal Git",
"panel.closeTitle": "Fermer le panneau",
"panel.noRecentTasks": "Aucune tâche récente",
"panel.noOutput": "Aucune sortie",
"panel.openPostEditor": "Ouvrez un éditeur d'article pour voir les liens",
"panel.loadingPostLinks": "Chargement des liens d'articles...",
"panel.noPostLinks": "Aucun lien pour cet article",
"panel.openPostOrMediaEditor": "Ouvrez un éditeur d'article ou de média pour voir le journal Git",
"panel.loadingGitLog": "Chargement du journal Git...",
"panel.noCommits": "Aucun commit trouvé pour cet élément",
"panel.error.loadPostLinks": "Impossible de charger les liens d'articles.",
"panel.error.loadGitLog": "Impossible de charger le journal Git.",
"panel.direction.from": "depuis",
"panel.direction.to": "vers"
}