Files
Rdmclin2 913ee4210d feat: page/agent/agentGroup/task edit lock (#15786)
* feat: support page editor lock

Squashed page-lock feature work:
- support page editor lock
- support agent group / agent / task edit
- add edit lock to agent/agentgroup/task
- refactor page lock
- fix workspaceId for edit objects
- align with agent/group/task

* fix: collaborative edit lock

* chore: update i18n

* fix: redis acquire

* fix: release lock

* fix: test case

* chore: complement page lock test cases
2026-06-14 01:40:36 +08:00

232 lines
15 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"addFolder": "Créer un dossier",
"addLibrary": "Ajouter",
"addPage": "Créer une page",
"detail.basic.createdAt": "Date de création",
"detail.basic.filename": "Nom du fichier",
"detail.basic.size": "Taille du fichier",
"detail.basic.title": "Informations de base",
"detail.basic.type": "Format",
"detail.basic.updatedAt": "Date de mise à jour",
"detail.data.chunkCount": "Segments",
"detail.data.embedding.default": "Non vectorisé",
"detail.data.embedding.error": "Échec",
"detail.data.embedding.pending": "En attente de démarrage",
"detail.data.embedding.processing": "En cours",
"detail.data.embedding.success": "Terminé",
"detail.data.embeddingStatus": "vectorisation",
"detail.data.noChunk": "Aucun fragment",
"empty": "Aucun fichier ou dossier na encore été importé.",
"header.actions.builtInBlockList.filtered": "{{ignored}} fichiers filtrés (sur {{total}} au total)",
"header.actions.connect": "Se connecter...",
"header.actions.createFolderError": "Échec de la création du dossier",
"header.actions.creatingFolder": "Création du dossier...",
"header.actions.deleteLibrary": "Supprimer la bibliothèque",
"header.actions.gitignore.apply": "Appliquer les règles",
"header.actions.gitignore.cancel": "Ignorer les règles",
"header.actions.gitignore.content": "Fichier .gitignore détecté ({{count}} fichiers au total). Souhaitez-vous appliquer les règles dexclusion ?",
"header.actions.gitignore.filtered": "{{ignored}} fichiers filtrés ({{total}} fichiers au total)",
"header.actions.gitignore.title": ".gitignore détecté",
"header.actions.newFolder": "Nouveau dossier",
"header.actions.newPage": "Nouvelle page",
"header.actions.notion.error": "Échec de limportation des fichiers Notion",
"header.actions.notion.foundFiles": "{{count}} fichiers trouvés",
"header.actions.notion.importing": "Importation du contenu Notion...",
"header.actions.notion.noMarkdownFiles": "Aucun fichier Markdown trouvé dans larchive ZIP",
"header.actions.notion.partial": "{{success}} fichiers importés avec succès, {{failed}} échecs",
"header.actions.notion.success": "{{count}} fichiers importés avec succès",
"header.actions.notionGuide.cancel": "Plus tard",
"header.actions.notionGuide.desc": "Commencez par exporter votre contenu depuis Notion au format Markdown (ZIP). Cliquez ensuite sur Continuer pour sélectionner le fichier ZIP et importer toutes les pages.",
"header.actions.notionGuide.ok": "Sélectionner le ZIP Notion",
"header.actions.notionGuide.title": "Importer depuis Notion",
"header.actions.uploadFile": "Importer un fichier",
"header.actions.uploadFolder": "Importer un dossier",
"header.actions.uploadFolder.creatingFolders": "Création de la structure des dossiers...",
"header.newPageButton": "Nouvelle page",
"header.uploadButton": "Importer",
"home.getStarted": "Commencer",
"home.greeting": "Commencer",
"home.quickActions": "Actions rapides",
"home.recentFiles": "Fichiers récents",
"home.recentPages": "Pages récentes",
"home.uploadEntries.files.title": "Importer des fichiers",
"home.uploadEntries.folder.title": "Importer un dossier",
"home.uploadEntries.library.title": "Créer une nouvelle bibliothèque",
"home.uploadEntries.newPage.title": "Nouvelle page",
"library.hierarchy.empty.desc": "Ajoutez des fichiers ou créez un dossier pour commencer",
"library.hierarchy.empty.title": "Rien ici pour le moment",
"library.import.action": "Importer dans l'espace de travail…",
"library.import.failed": "Échec de l'importation de la base de connaissances.",
"library.import.success": "Base de connaissances importée dans {{name}}.",
"library.import.tooltip": "Dupliquez cette base de connaissances dans un espace de travail. Les fichiers sont partagés par référence ; l'original reste dans votre espace personnel.",
"library.list.confirmRemoveLibrary": "Vous êtes sur le point de supprimer cette bibliothèque. Les fichiers quelle contient ne seront pas supprimés mais déplacés vers Tous les fichiers. Cette action est irréversible, veuillez procéder avec prudence.",
"library.list.copyDescription": "Cloner cette bibliothèque et tout son contenu dans un autre espace de travail.",
"library.list.copyFailed": "Échec de la copie de la bibliothèque",
"library.list.copySuccess": "Bibliothèque copiée",
"library.list.copyTitle": "Copier la bibliothèque",
"library.list.copyTo": "Copier vers…",
"library.list.empty": "Cliquez sur <1>+</1> pour créer une nouvelle bibliothèque",
"library.list.transferDescription": "Déplacer cette bibliothèque et tout son contenu vers un autre espace de travail.",
"library.list.transferFailed": "Échec du transfert de la bibliothèque",
"library.list.transferSuccess": "Bibliothèque transférée",
"library.list.transferTitle": "Transférer la bibliothèque",
"library.list.transferTo": "Transférer vers…",
"library.new": "Nouvelle bibliothèque",
"library.title": "Bibliothèque",
"loadMore": "Charger plus",
"menu.allFiles": "Tous les fichiers",
"menu.allPages": "Toutes les pages",
"networkError": "Échec de la récupération des bibliothèques. Veuillez vérifier votre connexion réseau et réessayer.",
"notSupportGuide.desc": "Le mode de déploiement actuel ne prend pas en charge la gestion des fichiers. Passez en <1>mode de déploiement avec base de données serveur</1>, ou utilisez <3>LobeHub Cloud</3>.",
"notSupportGuide.features.allKind.desc": "Prend en charge les types de fichiers courants, y compris les formats de page comme Word, PPT, Excel, PDF, TXT, ainsi que les fichiers de code populaires comme JS et Python.",
"notSupportGuide.features.allKind.title": "Prise en charge de plusieurs types de fichiers",
"notSupportGuide.features.embeddings.desc": "Utilise des modèles vectoriels haute performance pour vectoriser les segments de texte, permettant une recherche sémantique du contenu.",
"notSupportGuide.features.embeddings.title": "Sémantique vectorielle",
"notSupportGuide.features.libraries.desc": "Créez des bibliothèques et ajoutez-y des fichiers pour constituer votre propre collection.",
"notSupportGuide.features.libraries.title": "Bibliothèque",
"notSupportGuide.title": "Le mode de déploiement actuel ne prend pas en charge la gestion des fichiers",
"pageEditor.addIcon": "Ajouter une icône",
"pageEditor.autoSaveMessage": "Votre page est enregistrée automatiquement. Aucun enregistrement manuel nécessaire.",
"pageEditor.chooseIcon": "Choisir une icône",
"pageEditor.deleteConfirm.content": "Cette page sera supprimée de façon définitive. Veuillez confirmer.",
"pageEditor.deleteConfirm.title": "Supprimer la page",
"pageEditor.deleteError": "Échec de la suppression de la page",
"pageEditor.deleteSuccess": "Page supprimée avec succès",
"pageEditor.duplicateError": "Échec de la duplication de la page",
"pageEditor.duplicateSuccess": "Page dupliquée avec succès",
"pageEditor.editMode.checking": "Vérification de la disponibilité de l'édition…",
"pageEditor.editMode.lockedByOther": "{{name}} est en train de modifier ce document",
"pageEditor.editMode.lockedBySomeone": "Quelqu'un d'autre est en train de modifier ce document",
"pageEditor.editedAt": "Dernière modification le {{time}}",
"pageEditor.editedBy": "Dernière modification par {{name}}",
"pageEditor.editorPlaceholder": "Appuyez sur \"/\" pour l'IA et les commandes",
"pageEditor.empty.createNewDocument": "Créer une nouvelle page",
"pageEditor.empty.importNotion": "Importer depuis Notion",
"pageEditor.empty.title": "Sélectionnez une page pour commencer",
"pageEditor.empty.uploadFiles": "Importer des fichiers",
"pageEditor.exportActions.openFile": "Ouvrir",
"pageEditor.exportActions.showInFolder": "Afficher dans le dossier",
"pageEditor.exportDialogTitle": "Exporter la page",
"pageEditor.exportError": "Échec de lexportation de la page",
"pageEditor.exportSuccess": "Page exportée avec succès",
"pageEditor.history.backToCopilot": "Copilot",
"pageEditor.history.compare": "Comparer",
"pageEditor.history.compareCurrentLabel": "Actuel",
"pageEditor.history.compareDescription": "Comparaison du contenu actuel avec l’état historique sélectionné",
"pageEditor.history.compareError": "Échec du chargement de laperçu des différences",
"pageEditor.history.compareModalTitle": "Comparer",
"pageEditor.history.compareOldLabel": "Restaurer vers",
"pageEditor.history.compareTitle": "Différences de version",
"pageEditor.history.current": "Actuel",
"pageEditor.history.dayLabel.today": "Aujourdhui",
"pageEditor.history.dayLabel.yesterday": "Hier",
"pageEditor.history.empty": "Aucun historique de version pour linstant",
"pageEditor.history.restore": "Restaurer",
"pageEditor.history.restoreConfirm.content": "Restaurer la page telle quelle était à {{savedAt}} ? Votre contenu actuel sera remplacé et enregistré.",
"pageEditor.history.restoreConfirm.title": "Restaurer depuis lhistorique",
"pageEditor.history.restoreError": "Échec de la restauration depuis lhistorique",
"pageEditor.history.saveSource.autosave": "Enregistrement automatique",
"pageEditor.history.saveSource.llm_call": "Modification par IA",
"pageEditor.history.saveSource.manual": "Enregistrement manuel",
"pageEditor.history.saveSource.restore": "Restauration",
"pageEditor.history.saveSource.system": "Système",
"pageEditor.history.title": "Historique des versions",
"pageEditor.history.versionCount_one": "{{count}} version",
"pageEditor.history.versionCount_other": "{{count}} versions",
"pageEditor.linkCopied": "Lien copié",
"pageEditor.lock.editingByOther": "{{name}} est en train de modifier cette page. Vos modifications ne peuvent pas être enregistrées pour le moment.",
"pageEditor.lock.editingBySomeone": "Quelqu'un d'autre est en train de modifier cette page. Vos modifications ne peuvent pas être enregistrées pour le moment.",
"pageEditor.menu.copyLink": "Copier le lien",
"pageEditor.menu.export": "Exporter",
"pageEditor.menu.export.markdown": "Markdown",
"pageEditor.menu.exportDocument": "Exporter la page",
"pageEditor.menu.importDocument": "Importer une page",
"pageEditor.menu.pin": "Épingler la page",
"pageEditor.saving": "Enregistrement...",
"pageEditor.titlePlaceholder": "Sans titre",
"pageEditor.wordCount": "{{wordCount}} mots",
"pageList.actions.openInNewTab": "Ouvrir dans un nouvel onglet",
"pageList.copyConfirm": "Copier",
"pageList.copyContent": "Copier le texte complet",
"pageList.copyDescription": "Créer une copie de cette page dans un autre espace de travail.",
"pageList.copyFailed": "Échec de la copie de la page",
"pageList.copySuccess": "Page copiée",
"pageList.copyTitle": "Copier la page",
"pageList.copyTo": "Copier vers…",
"pageList.duplicate": "Dupliquer",
"pageList.empty": "Aucune page pour le moment. Cliquez sur le bouton ci-dessus pour en créer une.",
"pageList.filter.all": "Toutes",
"pageList.filter.onlyInPages": "Uniquement dans les pages",
"pageList.noResults": "Aucune page correspondante trouvée",
"pageList.pageCount": "{{count}} pages au total",
"pageList.pageSizeItem": "{{count}} éléments",
"pageList.title": "Pages",
"pageList.transferConfirm": "Transférer",
"pageList.transferDescription": "Déplacer cette page (et tous les dossiers qu'elle contient) vers un autre espace de travail.",
"pageList.transferFailed": "Échec du transfert de la page",
"pageList.transferSuccess": "Page transférée",
"pageList.transferTitle": "Transférer la page",
"pageList.transferTo": "Transférer vers…",
"pageList.transferWarning": "Ceci est un déplacement définitif ; revenir en arrière nécessitera un autre transfert.",
"pageList.untitled": "Sans titre",
"portal.openInPageEditor": "Modifier dans la page",
"preview.downloadFile": "Télécharger le fichier",
"preview.unsupportedFileAndContact": "Ce format de fichier nest pas encore pris en charge pour laperçu en ligne. Si vous souhaitez en faire la demande, nhésitez pas à <1>nous contacter</1>.",
"resource": "Ressource",
"resourceList.batchCopyDescription": "Cloner les ressources sélectionnées dans un autre espace de travail.",
"resourceList.batchCopyTitle": "Copier les ressources",
"resourceList.batchTransferDescription": "Déplacer les ressources sélectionnées vers un autre espace de travail.",
"resourceList.batchTransferTitle": "Transférer les ressources",
"resourceList.copyConfirm": "Copier",
"resourceList.copyDocumentDescription": "Cloner ce document dans un autre espace de travail.",
"resourceList.copyDocumentTitle": "Copier le document",
"resourceList.copyFailed": "Échec de la copie de la ressource",
"resourceList.copyFileDescription": "Cloner ce fichier dans un autre espace de travail.",
"resourceList.copyFileTitle": "Copier le fichier",
"resourceList.copyFolderDescription": "Cloner ce dossier (et son contenu) dans un autre espace de travail.",
"resourceList.copyFolderTitle": "Copier le dossier",
"resourceList.copySuccess": "Ressource copiée",
"resourceList.copyTo": "Copier vers…",
"resourceList.transferConfirm": "Transférer",
"resourceList.transferDocumentDescription": "Déplacer ce document vers un autre espace de travail.",
"resourceList.transferDocumentTitle": "Transférer le document",
"resourceList.transferFailed": "Échec du transfert de la ressource",
"resourceList.transferFileDescription": "Déplacer ce fichier vers un autre espace de travail.",
"resourceList.transferFileTitle": "Transférer le fichier",
"resourceList.transferFolderDescription": "Déplacer ce dossier (et son contenu) vers un autre espace de travail.",
"resourceList.transferFolderTitle": "Transférer le dossier",
"resourceList.transferSuccess": "Ressource transférée",
"resourceList.transferTo": "Transférer vers…",
"resourceList.viewTransferred": "Voir",
"searchFilePlaceholder": "Rechercher des fichiers",
"searchPagePlaceholder": "Rechercher des pages",
"tab.all": "Tous",
"tab.audios": "Audios",
"tab.documents": "Documents",
"tab.home": "Accueil",
"tab.images": "Images",
"tab.moreTypes": "Autres types",
"tab.pages": "Pages",
"tab.videos": "Vidéos",
"tab.websites": "Sites web",
"title": "Ressources",
"toggleLeftPanel": "Afficher/Masquer le panneau gauche",
"uploadDock.body.collapse": "Réduire",
"uploadDock.body.item.cancel": "Annuler",
"uploadDock.body.item.cancelled": "Annulé",
"uploadDock.body.item.done": "Importé",
"uploadDock.body.item.error": "Échec de limportation, veuillez réessayer",
"uploadDock.body.item.pending": "Préparation à limportation...",
"uploadDock.body.item.processing": "Traitement du fichier...",
"uploadDock.body.item.restTime": "Temps restant : {{time}}",
"uploadDock.fileQueueInfo": "Importation des {{count}} premiers fichiers, {{remaining}} en attente",
"uploadDock.header.cancelAll": "Tout annuler",
"uploadDock.totalCount": "Total : {{count}} éléments",
"uploadDock.uploadStatus.cancelled": "Téléversement annulé",
"uploadDock.uploadStatus.error": "Erreur dimportation",
"uploadDock.uploadStatus.pending": "En attente dimportation",
"uploadDock.uploadStatus.processing": "Importation en cours",
"uploadDock.uploadStatus.success": "Importation terminée",
"uploadDock.uploadStatus.uploading": "Importation en cours"
}