ميزة: إضافة مكوني ProcedureSelection و StepProgress لأداة مخططات التدفق بصيغة PDF
- تنفيذ مكون ProcedureSelection لتمكين المستخدمين من اختيار الإجراءات من قائمة، وإدارة الاختيارات، ومعالجة الإجراءات المرفوضة. - إنشاء مكون StepProgress لعرض تقدم معالج متعدد الخطوات بشكل مرئي. - تعريف أنواع مشتركة للإجراءات، وخطوات التدفق، ورسائل الدردشة في ملف types.ts. - إضافة اختبارات وحدة لخطافات useFileUpload و useTaskPolling لضمان الأداء السليم ومعالجة الأخطاء. - تنفيذ اختبارات واجهة برمجة التطبيقات (API) للتحقق من تنسيقات نقاط النهاية وضمان اتساق ربط الواجهة الأمامية بالخلفية.
This commit is contained in:
@@ -22,16 +22,20 @@
|
||||
"lightMode": "Mode clair"
|
||||
},
|
||||
"home": {
|
||||
"hero": "Transformez vos fichiers instantanément",
|
||||
"heroSub": "Outils en ligne gratuits pour le traitement de PDF, images, vidéos et textes. Aucune inscription requise.",
|
||||
"hero": "Tout ce dont vous avez besoin pour vos fichiers PDF — instantanément",
|
||||
"heroSub": "Déposez votre fichier ici, nous détecterons automatiquement son type et proposerons les outils adaptés — édition, conversion, compression et plus. Aucune inscription requise.",
|
||||
"popularTools": "Outils populaires",
|
||||
"pdfTools": "Outils PDF",
|
||||
"imageTools": "Outils d'images",
|
||||
"videoTools": "Outils vidéo",
|
||||
"textTools": "Outils de texte",
|
||||
"uploadCta": "Téléchargez votre fichier",
|
||||
"uploadOr": "ou glissez-déposez votre fichier ici",
|
||||
"uploadSubtitle": "Nous détectons automatiquement le type de fichier et affichons les outils adaptés",
|
||||
"uploadCta": "Glissez votre fichier ici ou cliquez pour parcourir",
|
||||
"uploadOr": "Formats supportés : PDF, Word, JPG, PNG, WebP, MP4 — Taille max : 200 Mo.",
|
||||
"uploadSubtitle": "Nous générons un aperçu rapide et affichons les outils adaptés instantanément.",
|
||||
"editNow": "Modifier votre fichier maintenant",
|
||||
"editNowTooltip": "Ouvrir l'éditeur de fichiers — modifier le texte, ajouter des commentaires et modifier les pages",
|
||||
"suggestedTools": "Outils suggérés pour votre fichier",
|
||||
"suggestedToolsDesc": "Après le téléchargement, nous affichons automatiquement les outils compatibles : édition de texte, surlignage, fusion/division, compression, conversion en Word/image, vidéo en GIF, et plus.",
|
||||
"selectTool": "Choisir un outil",
|
||||
"fileDetected": "Nous avons détecté un fichier {{type}}",
|
||||
"unsupportedFile": "Ce type de fichier n'est pas pris en charge. Essayez PDF, Word, images ou vidéo.",
|
||||
@@ -39,7 +43,14 @@
|
||||
"image": "Image",
|
||||
"video": "Vidéo",
|
||||
"unknown": "Inconnu"
|
||||
}
|
||||
},
|
||||
"featuresTitle": "Une façon plus intelligente de convertir et d'éditer en ligne",
|
||||
"feature1Title": "Un espace de travail complet",
|
||||
"feature1Desc": "Éditez, convertissez, compressez, fusionnez, divisez sans changer d'onglets.",
|
||||
"feature2Title": "Une précision de confiance",
|
||||
"feature2Desc": "Obtenez des fichiers parfaits et modifiables en quelques secondes sans perte de qualité.",
|
||||
"feature3Title": "Sécurité intégrée",
|
||||
"feature3Desc": "Accédez aux fichiers en toute sécurité, protégés par un cryptage automatique."
|
||||
},
|
||||
"tools": {
|
||||
"pdfToWord": {
|
||||
@@ -110,9 +121,18 @@
|
||||
"description": "Divisez un PDF en pages individuelles ou extrayez des plages de pages spécifiques.",
|
||||
"shortDesc": "Diviser PDF",
|
||||
"allPages": "Toutes les pages",
|
||||
"allPagesDesc": "Extraire chaque page dans un fichier PDF séparé",
|
||||
"selectPages": "Sélectionner des pages",
|
||||
"selectPagesDesc": "Extraire uniquement des pages ou plages spécifiques",
|
||||
"pageRange": "Plage de pages",
|
||||
"rangeHint": "ex. 1,3,5-8",
|
||||
"rangePlaceholder": "Entrez les pages : 1,3,5-8"
|
||||
"rangePlaceholder": "Entrez les pages : 1,3,5-8",
|
||||
"errors": {
|
||||
"requiredPages": "Veuillez saisir des numéros de pages ou des plages (ex. 1,3,5-8).",
|
||||
"outOfRange": "Les pages sélectionnées ({{selected}}) sont hors limites. Ce PDF contient seulement {{total}} page(s).",
|
||||
"invalidFormat": "Format de pages invalide : {{tokens}}. Utilisez un format comme 1,3,5-8.",
|
||||
"noPagesSelected": "Aucune page sélectionnée. Ce PDF contient {{total}} page(s)."
|
||||
}
|
||||
},
|
||||
"rotatePdf": {
|
||||
"title": "Pivoter PDF",
|
||||
@@ -181,6 +201,135 @@
|
||||
"topCenter": "Haut centre",
|
||||
"topRight": "Haut droite",
|
||||
"topLeft": "Haut gauche"
|
||||
},
|
||||
"pdfEditor": {
|
||||
"title": "Éditeur PDF avancé",
|
||||
"description": "Modifiez le texte PDF, ajoutez des commentaires, réorganisez les pages et enregistrez une copie finale. Rapide, simple et directement dans votre navigateur.",
|
||||
"shortDesc": "Modifier PDF",
|
||||
"intro": "Ici vous pouvez modifier votre PDF directement dans le navigateur : ajouter du texte, des commentaires, du surlignage, du dessin libre, supprimer/ajouter des pages, et exporter une nouvelle copie sans altérer l'original.",
|
||||
"steps": {
|
||||
"step1": "Ajoutez des éléments (texte, surlignage, dessin, note) à l'aide de la barre d'outils en haut.",
|
||||
"step2": "Cliquez sur Enregistrer pour sauvegarder une nouvelle copie (une nouvelle version est créée — le fichier original n'est pas remplacé).",
|
||||
"step3": "Cliquez sur Télécharger pour obtenir la copie finale, ou choisissez Partager pour copier le lien de téléchargement."
|
||||
},
|
||||
"save": "Enregistrer les modifications",
|
||||
"saveTooltip": "Enregistrer une nouvelle copie du fichier",
|
||||
"downloadFile": "Télécharger le fichier",
|
||||
"downloadTooltip": "Télécharger le PDF final",
|
||||
"undo": "Annuler",
|
||||
"redo": "Rétablir",
|
||||
"addPage": "Ajouter une page",
|
||||
"deletePage": "Supprimer la page",
|
||||
"rotate": "Pivoter",
|
||||
"extractPage": "Extraire comme nouveau fichier",
|
||||
"thumbnails": "Voir les pages",
|
||||
"share": "Partager",
|
||||
"versionNote": "Nous sauvegardons une nouvelle copie à chaque enregistrement — le fichier original n'est jamais modifié. Vous pouvez revenir aux versions précédentes depuis la page du fichier. Les fichiers temporaires sont automatiquement supprimés après 30 minutes si le processus n'est pas terminé.",
|
||||
"privacyNote": "Vos fichiers sont protégés — nous effectuons des vérifications de sécurité avant le traitement et utilisons des connexions chiffrées (HTTPS). Consultez notre politique de confidentialité pour plus de détails.",
|
||||
"preparingPreview": "Préparation de l'aperçu…",
|
||||
"preparingPreviewSub": "Cela peut prendre quelques secondes selon la taille du fichier.",
|
||||
"applyingChanges": "Application des modifications…",
|
||||
"applyingChangesSub": "Ne fermez pas la fenêtre — un nouveau fichier sera créé une fois terminé.",
|
||||
"savedSuccess": "Modifications enregistrées avec succès — vous pouvez maintenant télécharger le fichier.",
|
||||
"processingFailed": "Échec du traitement du fichier. Essayez de le re-télécharger ou réessayez plus tard.",
|
||||
"retry": "Réessayer",
|
||||
"fileTooLarge": "La taille du fichier dépasse la limite (200 Mo). Veuillez réduire la taille du fichier et réessayer."
|
||||
},
|
||||
"pdfFlowchart": {
|
||||
"title": "PDF vers Organigramme",
|
||||
"description": "Extrayez les procédures des documents PDF et convertissez-les automatiquement en organigrammes interactifs.",
|
||||
"shortDesc": "PDF → Organigramme",
|
||||
"uploadStep": "Télécharger le PDF",
|
||||
"uploadDesc": "Téléchargez votre document PDF pour extraire les procédures",
|
||||
"dragDropHint": "ou glissez-déposez votre fichier PDF ici",
|
||||
"trySampleTitle": "Pas de PDF sous la main ?",
|
||||
"trySampleDesc": "Essayez notre document exemple pour voir l'outil en action",
|
||||
"trySample": "Essayer un exemple",
|
||||
"extracting": "Analyse du document...",
|
||||
"extractingDesc": "Nous analysons votre PDF et identifions les procédures",
|
||||
"proceduresFound": "{{count}} procédures trouvées",
|
||||
"noProcedures": "Aucune procédure détectée dans ce document. Essayez un autre PDF.",
|
||||
"selectProcedures": "Sélectionner les procédures",
|
||||
"selectProceduresDesc": "Choisissez les procédures à convertir en organigrammes",
|
||||
"selectAll": "Tout sélectionner",
|
||||
"deselectAll": "Tout désélectionner",
|
||||
"addManual": "Ajouter manuellement",
|
||||
"pages": "Pages",
|
||||
"generateFlows": "Générer les organigrammes",
|
||||
"generating": "Génération en cours...",
|
||||
"generatingDesc": "Création des organigrammes à partir des procédures sélectionnées",
|
||||
"generatingFor": "Génération des organigrammes pour {{count}} procédures...",
|
||||
"flowReady": "Organigrammes prêts !",
|
||||
"flowReadyDesc": "Vos organigrammes ont été générés avec succès",
|
||||
"flowReadyCount": "{{count}} organigramme(s) généré(s) avec succès",
|
||||
"steps": "{{count}} étapes",
|
||||
"viewFlow": "Voir l'organigramme",
|
||||
"viewResults": "Voir les résultats",
|
||||
"exportPng": "Exporter en PNG",
|
||||
"exportSvg": "Exporter en SVG",
|
||||
"exportPdf": "Exporter en PDF",
|
||||
"startNode": "Début",
|
||||
"endNode": "Fin",
|
||||
"processNode": "Processus",
|
||||
"decisionNode": "Décision",
|
||||
"backToList": "Retour à la liste",
|
||||
"back": "Retour",
|
||||
"reject": "Rejeter",
|
||||
"restore": "Restaurer",
|
||||
"viewSection": "Voir la section du document",
|
||||
"rejectedTitle": "Procédures rejetées",
|
||||
"rejectedCount": "{{count}} rejetée(s)",
|
||||
"estimatedTime": "~{{time}} min",
|
||||
"complexity": {
|
||||
"simple": "Simple",
|
||||
"medium": "Moyen",
|
||||
"complex": "Complexe"
|
||||
},
|
||||
"wizard": {
|
||||
"upload": "Télécharger",
|
||||
"select": "Sélectionner",
|
||||
"create": "Créer",
|
||||
"results": "Résultats"
|
||||
},
|
||||
"manualTitle": "Ajouter une procédure manuelle",
|
||||
"manualDesc": "Spécifiez une plage de pages et créez une procédure personnalisée",
|
||||
"procTitleLabel": "Titre de la procédure",
|
||||
"procTitlePlaceholder": "Entrez le titre de la procédure...",
|
||||
"procDescriptionLabel": "Description",
|
||||
"procDescriptionPlaceholder": "Décrivez la procédure...",
|
||||
"selectPageRange": "Sélectionner la plage de pages",
|
||||
"startPage": "Page de début",
|
||||
"endPage": "Page de fin",
|
||||
"invalidRange": "Plage de pages invalide",
|
||||
"pagesSelected": "{{count}} page(s) sélectionnée(s)",
|
||||
"createProcedure": "Créer la procédure",
|
||||
"pagePreview": "Aperçu de la page",
|
||||
"selectPagesToPreview": "Sélectionnez des pages pour prévisualiser le contenu",
|
||||
"pageLabel": "Page {{num}}",
|
||||
"noPageContent": "Aucun contenu disponible pour cette page",
|
||||
"documentViewer": "Visionneuse de document",
|
||||
"backToProcedures": "Retour aux procédures",
|
||||
"totalPagesLabel": "Total des pages",
|
||||
"documentContent": "Contenu du document",
|
||||
"pagesWord": "pages",
|
||||
"aiAnalysis": "Analyse IA",
|
||||
"keyActions": "Actions clés",
|
||||
"stepsIdentified": "{{count}} étapes identifiées",
|
||||
"decisionPoints": "Points de décision",
|
||||
"flowComplexity": "Complexité du flux",
|
||||
"flowStepsEstimate": "~{{count}} étapes estimées",
|
||||
"totalSteps": "Total des étapes",
|
||||
"processSteps": "Étapes de processus",
|
||||
"aiAssistant": "Assistant IA",
|
||||
"chatWelcome": "Bonjour ! Je peux vous aider à améliorer l'organigramme \"{{title}}\". Posez-moi des questions sur la structure du flux, suggérez des améliorations ou demandez des simplifications.",
|
||||
"chatPlaceholder": "Posez une question sur cet organigramme...",
|
||||
"chatTyping": "L'IA réfléchit...",
|
||||
"chatError": "Une erreur s'est produite. Veuillez réessayer.",
|
||||
"chatSuggestion1": "Comment simplifier ce flux ?",
|
||||
"chatSuggestion2": "Y a-t-il des étapes manquantes ?",
|
||||
"chatSuggestion3": "Suggérer de meilleurs titres",
|
||||
"chatSuggestion4": "Ajouter la gestion des erreurs",
|
||||
"sendMessage": "Envoyer"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
|
||||
Reference in New Issue
Block a user