diff --git a/assets/i18n/fr/AppMenu.json b/assets/i18n/fr/AppMenu.json
new file mode 100644
index 000000000..6db3da938
--- /dev/null
+++ b/assets/i18n/fr/AppMenu.json
@@ -0,0 +1,44 @@
+{
+ "File": "&Fichier",
+ "NewProject": "&Nouveau projet",
+ "ImportProject": "&Importer un projet",
+ "ImportProjectWithSource": "&Importer un projet avec les sources",
+ "Settings": "&Paramètres",
+ "Close": "&Fermer",
+ "ManageSearchIndexGroups": "&Gérer les groupes d'index de recherche",
+ "Edit": "&Édition",
+ "View": "&Affichage",
+ "Reload": "&Recharger",
+ "ToggleFullScreen": "Basculer en &plein écran",
+ "ToggleDeveloperTools": "Activer &les outils de développement",
+ "Help": "Aide",
+ "About": "À propos",
+ "Quit": "Quitter",
+ "AcceptAllDependencies": "Accepter toutes les dépendances",
+ "DismissAllDependencies": "Rejeter toutes les dépendances",
+ "RestoreAllDependencies": "Restaurer toutes les dépendances",
+ "MarkFileAsOriginal": "Marquer ce fichier comme développé en interne",
+ "RestoreFile": "Restaurer le fichier",
+ "AcceptAll_nofilter": "Tout accepter",
+ "AcceptAll_filter": "Accepter tous les fichiers filtrés",
+ "IdentifyAllAs_nofilter": "Identifier tous les fichiers comme...",
+ "IdentifyAllAs_filter": "Identifier tous les fichiers filtrés comme...",
+ "IdentifyDetected": "Identifier les fichiers correspondants comme...",
+ "IdentifyNoMatch": "Identifier les fichiers sans correspondance comme...",
+ "IdentifyIgnored": "Identifier les fichiers ignorés comme...",
+ "MarkAllAsOriginal_nofilter": "Marquer tous les fichiers comme développés en interne",
+ "MarkDetectedAsOriginal": "Marquer les fichiers correspondants comme développés en interne",
+ "MarkNoMatchAsOriginal": "Marquer les fichiers sans correspondance comme développés en interne",
+ "MarkIgnoredAsOriginal": "Marquer les fichiers ignorés comme développés en interne",
+ "MarkAllAsOriginal_filter": "Marquer tous les fichiers filtrés comme développés en interne",
+ "RestoreAll_nofilter": "Restaurer tous les fichiers",
+ "RestoreAll_filter": "Restaurer tous les fichiers filtrés",
+ "ExpandCollapse": "Développer / Réduire",
+ "ExpandAll": "Développer tout",
+ "ExpandToMatches": "Développer jusqu'aux correspondances",
+ "CollapseAll": "Réduire tout",
+ "IdentifySelectedAs": "Marquer les fichiers sélectionnés comme...",
+ "MarkSelectedAsOriginal": "Marquer les fichiers sélectionnés comme développés en interne",
+ "OpenTranslationManagement": "Ouvrir le gestionnaire de traductions",
+ "ImportFrom": "Importer des identifications depuis..."
+}
diff --git a/assets/i18n/fr/Button.json b/assets/i18n/fr/Button.json
new file mode 100644
index 000000000..a52307d8d
--- /dev/null
+++ b/assets/i18n/fr/Button.json
@@ -0,0 +1,47 @@
+{
+ "NewProject": "Nouveau projet",
+ "ImportProject": "Importer un projet Workbench",
+ "ImportProjectWithSource": "Importer un projet avec les sources",
+ "Continue": "Continuer",
+ "Save": "Sauvegarder",
+ "Cancel": "Annuler",
+ "Close": "Fermer",
+ "Accept": "Accepter",
+ "Open": "Ouvrir",
+ "OK": "OK",
+ "Identify": "Identifier",
+ "IdentifyAllWithCount": "Tout identifier ({{count}})",
+ "MarkAllAsOriginalWithCount": "Tout marquer comme développé en interne ({{count}})",
+ "RestoreAllWithCount": "Tout restaurer ({{count}})",
+ "AcceptAllWithCount": "Tout accepter ({{count}})",
+ "DismissAllPendingWithCount": "Rejeter tous les éléments en attente ({{count}})",
+ "ClearFilters": "Effacer les filtres",
+ "ShowMore": "Voir plus",
+ "MoreDetails": "Plus de détails",
+ "PostToSbomLedger": "Publier dans le registre SBOM",
+ "StartIdentification": "Démarrer l'identification",
+ "Detected": "Détecté",
+ "Identified": "Identifié",
+ "Export": "Exporter",
+ "ExportWithLabel": "Exporter {{label}}",
+ "PAUSE": "PAUSE",
+ "Create": "Créer",
+ "StandarSearch": "Recherche standard",
+ "AdvancedSearch": "Recherche avancée",
+ "AddToTheCatalog": "Ajouter au catalogue",
+ "Add": "Ajouter",
+ "AcceptAll": "Tout accepter",
+ "DismissAll": "Tout rejeter",
+ "RestoreAll": "Tout restaurer",
+ "Delete&Scan": "Supprimer & Scanner",
+ "Delete": "Supprimer",
+ "Keep": "Conserver",
+ "Overwrite": "Écraser",
+ "Yes": "Oui",
+ "RestartLater": "Redémarrer plus tard",
+ "RestartNow": "Redémarrer maintenant",
+ "AddNewWorkspace": "Ajouter un nouvel espace de travail",
+ "ImportFromResultFile": "Importer un fichier de résultats bruts",
+ "ImportFromWFPFile": "Importer un fichier WFP",
+ "Browse": "Naviguer"
+}
diff --git a/assets/i18n/fr/Common.json b/assets/i18n/fr/Common.json
new file mode 100644
index 000000000..1d9c77715
--- /dev/null
+++ b/assets/i18n/fr/Common.json
@@ -0,0 +1,133 @@
+{
+ "Search": "Rechercher...",
+ "IMPORTED": "IMPORTÉ",
+ "NoProjectsFound": "Aucun projet trouvé",
+ "NoProjectsFoundWith": "Aucun projet trouvé contenant {{searchQuery}}",
+ "StartNewProject": "Vous pouvez commencer par scanner un nouveau projet
ou importer un projet.",
+ "LoadingProjects": "Chargement des projets...",
+ "ProjectNameAlreadyExists": "Le nom du projet existe déjà",
+ "ProjectNameInvalid": "Le nom du projet est invalide",
+ "ProjectNameReserved": "Le nom du projet est réservé et ne peut pas être utilisé",
+ "Optional": "Facultatif",
+ "UseDefaultSettings": "Utiliser les paramètres par défaut",
+ "NotResultsFoundWith": "Aucun résultat contenant \"{{searchQuery}}\"",
+ "NoComponentsFoundMatching": "Aucun composant correspondant aux filtres actuels",
+ "NoComponentsWereDetected": "Aucun composant n'a été détecté",
+ "ShowingLimitOfTotalComponents": "Affichage de {{limit}} sur {{total}} composants.",
+ "CountVersions": "{{count}} versions",
+ "NoPendingFiles": "Aucun fichier en attente",
+ "NoPendingFilesWith": "Aucun fichier en attente contenant \"{{searchQuery}}\"",
+ "NoIdentifiedFiles": "Aucun fichier identifié",
+ "NoIdentifiedFilesWith": "Aucun fichier identifié trouvé contenant \"{{searchQuery}}\"",
+ "NoOriginalFiles": "Aucun fichier développé en interne",
+ "NoOriginalFilesWith": "Aucun fichier développé en interne trouvé contenant \"{{searchQuery}}\"",
+ "LoadingLocalFile": "Chargement du fichier local",
+ "LoadingRemoteFile": "Chargement du fichier distant",
+ "ProjectImportedCantDisplay": "Projet importé ! Le fichier source local n'est pas disponible.",
+ "ProjectWFPCantDisplay": "Projet créé depuis WFP. Le fichier source local ne peut pas être affiché",
+ "AllValidDependenciesAccepted": "Toutes les dépendances valides en attente seront acceptées.",
+ "AllValidDependenciesAcceptedSubtitle": "Les dépendances sans informations de version ou de licence ne seront pas acceptées.",
+ "AllPendingDependenciesDismissed": "Toutes les dépendances en attente seront rejetées.",
+ "AllAcceptedOrDimissedRestored": "Toutes les dépendances acceptées ou rejetées seront restorées.",
+ "ShowingDependenciesWithCount_one": "Affichage de {{items}} sur {{count}} dépendance trouvée dans {{- file}}",
+ "ShowingDependenciesWithCount_other": "Affichage de {{items}} sur {{count}} dépendances trouvées dans {{- file}}",
+ "NGroups_one": "{{count}} groupe",
+ "NGroups_other": "{{count}} groupes",
+ "SearchByKeywords": "Rechercher par mots-clés",
+ "NFilesSelected_one": "{{count}} fichier sélectionné",
+ "NFilesSelected_other": "{{count}} fichiers sélectionnés",
+ "NProjectsSelected_one": "{{count}} projet sélectionné",
+ "NProjectsSelected_other": "{{count}} projet sélectionnés",
+ "of": "sur",
+ "file": "fichier",
+ "snippet": "snippet",
+ "dependency": "dépendance",
+ "status": "Statut",
+ "pending": "en attente",
+ "original": "développé en interne",
+ "identified": "identifié",
+ "filtered": "filtré",
+ "NoMatch": "Inconnu",
+ "Match": "Reconnu",
+ "Ignored": "Ignoré",
+ "ShowOnlyFilteredMatches": "Afficher uniquement les résultats filtrés dans l'arborescence",
+ "FilterByPathEG": "Filtrer par chemin (par exemple *.js)",
+ "ProjectImportedHint": "Ce projet a été importé.
Le fichier source ne peut pas être affiché.",
+ "NoGroupComponent": "Aucun groupe identifié pour ce composant.",
+ "NFilesMore_one": "{{count}} fichier supplémentaire...",
+ "NFilesMore_other": "{{count}} fichiers supplémentaires...",
+ "NoComponentsIdentified": "Aucun composant identifié",
+ "UseLeftPanelForSearch": "Utilisez le panneau de gauche pour rechercher des mots-clés dans les fichiers.",
+ "NothingIdentifiedYet": "Rien n'a encore été identifié",
+ "NothingIdentifiedYetSubtitle": "Vérifiez les résultats du scan avant de les ajouter à votre SBOM afin de confirmer les détections ou pour ajouter vos propres identifications manuelles.",
+ "NoLicensesFound": "Aucune licence trouvée",
+ "LoadingObligationsInfo": "Chargement des informations d'obligations...",
+ "NScannedFiles": "{{countScanned}} sur {{totalFiles}} fichiers scannés",
+ "NTotalFiles": "{{count}} fichiers au total",
+ "NDetectedFiles": "{{count}} fichiers détectés",
+ "NeedApiKeyVulnerability": "Vous avez besoin d'une clef API pour passer en revue vos vulnérabilités. <1>Obtenez la vôtre maintenant.1>",
+ "NeedApiKeyComponents": "Vous avez besoin d'une clef API pour chercher des composants en ligne. <1>Obtenez la vôtre maintenant.1>",
+ "ImportingComponent": "Import du composant",
+ "SearchingDots": "Recherche en cours...",
+ "NoResultsFound": "Aucun résultat trouvé",
+ "AddVersion": "Ajouter une version",
+ "ActionCurrentFilterCriteria": "Cette action sera appliquée selon vos filtres actuels.",
+ "SearchValueOnline": "Rechercher \"´{{value}}\" en ligne",
+ "File": "Fichier",
+ "Snippet": "Snippet",
+ "PreRequisite": "Prérequis",
+ "NComponentWillNotIdentified_one": "{{count}} composant ne sera pas identifié car il ne dispose pas de licence déclarée avec le composant. Veuillez l'identifier manuellement.",
+ "NComponentWillNotIdentified_other": "{{count}} composants ne seront pas identifiés car ils ne disposent pas de licence déclarée avec le composant. Veuillez les identifier manuellement.",
+ "DependenciesDeclaredIdentifyManual": "Les dépendances déclarées dans les fichiers du gestionnaire de paquets ne seront pas acceptées. Veuillez les identifier manuellement.",
+ "ClickOrEnterToAddValue": "Cliquer ou appuyer sur Entrée pour ajouter",
+ "SettingsApiKeyHint": "Cette valeur est facultative pour des instances dédiées de serveur SCANOSS. Lorsqu'elle est vide, les scans seront lancés par notre instance publique gratuite. Si vous êtes intéressé par une instance dédiée avec une disponibilité et un débit garantis, veuillez nous contacter à sales@scanoss.com.",
+ "WorkspaceIsReduced": "Le contexte de l'espace de travail est réduit car des filtres sont actifs.",
+ "DecompressArchivesLabel": "Décompresser les archives et analyser les fichiers à l'intérieur",
+ "DecompressArchivesHint": "Cette option va décompresser les archives dans le dossier du projet",
+ "FileNotLoad": "Le fichier n'a pas pu être chargé",
+ "RemoteFileNotLoad": "Le fichier source distant n'a pas pu être chargé",
+ "FileTypeNotSupported": "Ce type de fichier n'est pas pris en charge pour être affiché",
+ "OverridePreviousWork": "Écraser le travail précédent",
+ "ChooseProjectToImport": "Choisissez un projet pour importer les identifications",
+ "KeepOriginalUsage": "Garder l'utilisation détectée",
+ "ObfuscateFilePaths": "Obfusquer les chemins de fichiers",
+ "ObfuscateFilePathsHint": "Vos chemins de fichiers seront obfusqués pour garantir une meilleure confidentialité",
+ "EnableHPSM": "Activer l'HPSM (identification de snippets à haute précision)",
+ "HPSMHint": "HPSM nécessite un abonnement",
+ "NoDependenciesScanned": "Aucune dépendance n'a été scannée",
+ "NoVulnerabilitiesScanned": "Aucune vulnérabilité n'a été scannée",
+ "NoDataFound": "Aucune donnée trouvée",
+ "Current": "Actuel",
+ "Default": "Défaut",
+ "NotScanned": "Pas scanné",
+ "NewGroup": "Nouveau groupe",
+ "NoDependenciesFoundMatching": "Aucune dépendance trouvée correspondant aux filtres actuels",
+ "NoDependenciesWereDetected": "Aucune dépendance n'a été détectée",
+ "InvalidUrl": "L'URL n'est pas valide",
+ "InvalidPortNumber": "Numéro de port invalide",
+ "InvalidPortNumberRange": "Le numéro de port doit être compris entre 1 et 65535",
+ "ProxyPacUrlRequired": "Vous devez fournir une URL valide pour votre fichier PAC",
+ "ProxyHostUrlRequired": "Vous devez fournir une URL valide pour votre serveur proxy",
+ "PortRequired": "Vous devez fournir un numéro de port valide",
+ "NoConfigFileFoundOptional": "Facultatif : aucun fichier de configuration n'a été trouvé. <1>Ouvrez le dossier du projet1> pour créer un fichier <2>scanoss.json2> afin de régler le comportement du scan. <3>En savoir plus3>",
+ "LegacyConfigFileDetected": "Fichier de configuration obsolète détecté : <1>{{fileName}}1>. Envisagez de migrer vers le nouveau format <2>scanoss.json2> pour de meilleures fonctionnalités. <3>Voir la documentation3>",
+ "ScanossSettingsFileFound": "Un fichier de paramètres SCANOSS a été trouvé (<1>{{fileName}}1>). Il sera utilisé pour améliorer les résultats du scan.",
+ "UseLeftPanelForSearchCryptography": "Utilisez le panneau de gauche la recherche de cryptographie dans les fichiers",
+ "LoadingComponents": "Chargement des composants...",
+ "SearchByFileNameOrPurl": "Rechercher par nom de fichier ou par PURL...",
+ "Types": "Types",
+ "Detections": "Détections",
+ "PipelineStageCode": "Scan de fichiers/snippets",
+ "PipelineStageCodeHint": "Scannez les fichiers de code source et les snippets afin de détecter des composants open source",
+ "PipelineStageCodeWarning": "Durant cette étape, les projets avec plus de 100 000 fichiers peuvent subir des limitations de mémoire en fonction de l'environnement local et des ressources disponibles du système.",
+ "PipelineStageMinWarning": "Au moins une étape du pipeline doit être sélectionnée",
+ "PipelineStageVulnerabilityAloneWarning": "Le scan des fichiers/snippets ou des dépendances doit être activée pour pouvoir analyser les vulnérabilités.",
+ "PipelineStageDependencies": "Dépendances",
+ "PipelineStageVulnerabilities": "Vulnérabilités",
+ "PipelineStageCryptography": "Cryptographie",
+ "PipelineStageSearchIndex": "Index de recherche",
+ "PipelineStageDependenciesHint": "Analyser et détecter les dépendances déclarées dans les fichiers du gestionnaire de paquet",
+ "PipelineStageVulnerabilitiesHint": "Rechercher les vulnerabilités connues dans les composants détectés",
+ "PipelineStageCryptographyHint": "Rechercher des algorithmes cryptographiques et leur implémentation dans le code source",
+ "PipelineStageSearchIndexHint": "Créer un index de recherche pour la recherche par mots-clés dans les fichiers du projet"
+}
diff --git a/assets/i18n/fr/Dialog.json b/assets/i18n/fr/Dialog.json
new file mode 100644
index 000000000..5b240367a
--- /dev/null
+++ b/assets/i18n/fr/Dialog.json
@@ -0,0 +1,51 @@
+{
+ "MarkOriginalFiles_one": "Êtes-vous sûr de vouloir marquer {{count}} fichier comme développé en interne ?",
+ "MarkOriginalFiles_other": "Êtes-vous sûr de vouloir marquer {{count}} fichiers comme développés en interne ?",
+ "RestoreFiles_one": "Êtes-vous sûr de vouloir restaurer {{count}} fichier ?",
+ "RestoreFiles_other": "Êtes-vous sûr de vouloir restaurer {{count}} fichiers ?",
+ "AddComponentToCatalog": "Souhaitez-vous ajouter {{component}} à votre catalogue ?",
+ "AcceptDependency": "Accepter {{dependency}}",
+ "PauseScannerQuestion": "Êtes-vous sûr de vouloir mettre en pause le scanner ?",
+ "ScanPaused": "Scan en pause",
+ "ScanCompletedWithWarnings": "Scan terminé avec des avertissements",
+ "Warnings": "Avertissements d'analyse",
+ "WarningsFound": "avertissements détectés",
+ "PleaseTryAgainLater": "Veuillez réessayer plus tard.",
+ "ProjectSannedPreviousVersionQuestion": "'Ce projet a été analysé avec une version précédente qui n'est plus prise en charge. Souhaitez-vous le supprimer et le réanalyser ?",
+ "AlreadyIdentifyFilesInFolder": "Vous avez déjà identifié des fichiers dans ce dossier. Souhaitez-vous les remplacer ou les conserver ?",
+ "ActionWillBeExecutedOnAllFiles": "Cette action sera exécutée sur tous les fichiers de ce dossier. Êtes-vous sûr ?",
+ "ActionWillBeExecutedOnAllFilteredFiles": "Cette action sera exécutée sur tous les fichiers filtrés de ce dossier. Êtes-vous sûr ?",
+ "AllValidDependenciesWillBeAccepted": "Toutes les dépendances valides en attente seront acceptées.",
+ "AllValidDependenciesWillBeAcceptedSubtitle": "Les dépendances ne disposant pas d'informations de version ou de licence ne seront pas acceptées.",
+ "AllPendingDependenciesWillBeDismissed": "Toutes les dépendances en attente seront rejetées.",
+ "AllAcceptedOrDismissedDependenciesWillBeRestored": "Toutes les dépendances acceptées ou rejetées seront restaurées.",
+ "YouHaveAlreadyWorkQuestion": "Vous avez déjà travaillé avec certains de ces fichiers. Souhaitez-vous les remplacer ou les conserver ?",
+ "ActionWillBeExecutedOnAllSelectedQuestion": "Cette action sera exécutée sur tous les fichiers sélectionnés. Êtes-vous sûr ?",
+ "DeleteQuestion": "Êtes-vous sûr de vouloir supprimer ce projet ?",
+ "RescanQuestion": "Êtes-vous sûr de vouloir analyser à nouveau ce projet ?",
+ "YouNeedRestartQuestionLanguage": "Vous devez redémarrer l'application pour changer la langue. Voulez-vous continuer ?",
+ "ExportingProject": "Export du projet en cours",
+ "SuccessfulImport": "Import réussi",
+ "ImportingProject": "Import du projet en cours",
+ "UpdatingReport": "Mise à jour du rapport en cours",
+ "UpdateFinished": "Mise à jour du rapport terminée",
+ "ErrorUpdatingReport": "Erreur lors de la mise à jour du rapport",
+ "WorkspaceName": "Nom de l'espace de travail",
+ "WorkspaceLocation": "Emplacement de l'espace de travail",
+ "YouNeedRestartQuestionWorkspace": "Vous devez redémarrer l'application pour changer l'espace de travail. Voulez-vous continuer ?",
+ "NoGroupKeywordsAvailable": "Aucun groupe disponible",
+ "GroupNameLabel": "Nom du groupe",
+ "GroupKeywordLabel": "Mots-clés",
+ "GroupAlreadyExists": "Ce groupe existe déjà !",
+ "CreateComponentPurlError": "URL du paquet invalide",
+ "ImportProjectFromRawTitle": "Importer un projet depuis un fichier de résultats bruts",
+ "ImportProjectFromRawPlaceHolder":"Chemin du fichier de résultats bruts",
+ "ImportProjectFromWFPTitle": "Importer un projet depuis un fichier WFP",
+ "ImportProjectFromWFPPlaceHolder": "Chemin du fichier WFP",
+ "ImportWorkbenchProjectTitle": "Importer un projet Workbench",
+ "ImportWorkbenchProjectPlaceHolder":"Chemin du fichier ZIP du projet Workbench",
+ "SelectSourceCodePath": "Sélectionner le chemin du code source (facultatif)",
+ "ScanSourceLocation": "Emplacement du code source à scanner",
+ "ScanSourceCannotBeSameAsWorkspace": "Le dossier source du scan ne peut pas être identique au dossier de l'espace de travail",
+ "WorkspacePathAlreadyExists": "Ce chemin d'espace de travail est déjà enregistré"
+}
diff --git a/assets/i18n/fr/Table.json b/assets/i18n/fr/Table.json
new file mode 100644
index 000000000..a6e837c3e
--- /dev/null
+++ b/assets/i18n/fr/Table.json
@@ -0,0 +1,31 @@
+{
+ "Header": {
+ "Name": "Nom",
+ "Date": "Date",
+ "TotalFiles": "Fichiers totaux",
+ "Component": "Composant",
+ "Severity": "Sévérité",
+ "CVE": "CVE",
+ "Source": "Source",
+ "Published": "Publié",
+ "Modified": "Modifié",
+ "Vendor": "Vendeur",
+ "Version": "Version",
+ "License": "Licence",
+ "Copyleft": "Copyleft",
+ "IncompatibleLicenses": "Licences incompatibles",
+ "PURL": "PURL",
+ "URL": "URL",
+ "LocalFile": "Fichier local",
+ "Algorithm": "Algorithme",
+ "Strength": "Force",
+ "File": "Fichier",
+ "Dependencies": "Dépendances",
+ "Cryptography": "Cryptographie",
+ "Type": "Type",
+ "Detected": "Détecté",
+ "CVSSSeverity": "Sévérité CVSS"
+ },
+ "Version": "Version",
+ "License": "Licence"
+}
diff --git a/assets/i18n/fr/Title.json b/assets/i18n/fr/Title.json
new file mode 100644
index 000000000..8bd896301
--- /dev/null
+++ b/assets/i18n/fr/Title.json
@@ -0,0 +1,101 @@
+{
+ "Projects": "Projets",
+ "ProjectSettings": "Paramètres du projet",
+ "ProjectName": "Nom du projet",
+ "License": "Licence",
+ "APIConnections": "Connexions API",
+ "SBOMLedgerToken": "Token SBOM Ledger",
+ "KnowledgebaseAPI": "API de la base de connaissances",
+ "version": "version",
+ "Version": "Version",
+ "AllVersions": "Toutes les versions",
+ "PURL": "PURL",
+ "URL": "URL",
+ "All": "Tout",
+ "Pending": "En cours",
+ "Identified": "Identifié",
+ "Originals": "Développés en interne",
+ "Detected": "Détecté",
+ "Dismissed": "Rejeté",
+ "Usage": "Utilisation",
+ "SourceFile": "Fichier source",
+ "ComponentFile": "Fichier du composant",
+ "DeclaredDependencies": "Dépendances déclarées",
+ "Matches": "Correspondances",
+ "DetectedComponents": "Composants détectés",
+ "IdentifiedComponents": "Composants identifiés",
+ "Reports": "Rapports",
+ "IdentifiedGroup": "Groupes identifiés",
+ "ViewFiles": "Voir les fichiers",
+ "NoMatchFound": "Aucune correspondance trouvée",
+ "NoMatchesFound": "Aucune correspondance trouvée",
+ "KeywordSearch": "Recherche par mots-clés",
+ "Filters": "Filtres",
+ "Component": "Composant",
+ "Notes": "Notes",
+ "IdentificationProgress": "Progression de l’identification",
+ "OSSvsOriginal": "OSS vs original",
+ "Licenses": "Licences",
+ "MatchesForLabel": "Correspondances pour {{label}} ({{count}})",
+ "Vulnerabilities": "Vulnérabilités",
+ "DetectedVulnerabilities": "Vulnérabilités détectées (CVEs)",
+ "IdentifiedVulnerabilities": "Vulnérabilités identifiées (CVEs)",
+ "Severity": "Sévérité",
+ "OSS": "OSS",
+ "NoResultsFound": "Aucun résultat trouvé",
+ "Name": "Nom",
+ "Package": "Paquet",
+ "IdentifyComponent": "Identifier le composant",
+ "EditIdentification": "Modifier l'identification",
+ "AcceptAll": "Tout accepter",
+ "Settings": "Paramètres",
+ "CreateLicense": "Créer une licence",
+ "FullText": "Texte intégral",
+ "Stage": "Étape",
+ "Scanning": "Scan en cours",
+ "Original": "Original",
+ "Rescanning": "Nouveau scan en cours",
+ "AnalyzingDependencies": "Analyse des dépendances",
+ "AnalyzingCryptography": "Analyse de la cryptographie",
+ "SearchingVulnerabilities": "Recherche de vulnérabilités",
+ "CreatingSearchIndex": "Création de l'index de recherche",
+ "Indexing": "Indexation",
+ "Language": "Langue",
+ "ScannerSettings": "Paramètres du scanner",
+ "Status": "Statut",
+ "OnlineComponentSearch": "Recherche de composants en ligne",
+ "CreateComponent": "Créer un composant",
+ "SelectProjects": "Sélectionner des projets",
+ "SelectProject": "Sélectionner un projet",
+ "PreviewIdentifications": "Aperçu des identifications",
+ "ImportingIdentifications": "Importation des identifications",
+ "ImportFromProjects": "Importer depuis des projets",
+ "MatchesForProject": "Correspondances ({{count}})",
+ "IdentifiedDependencies": "Dépendances identifiées",
+ "MatchedTab": "Composants correspondants",
+ "ObligationsTab": "Obligations des licences",
+ "CryptographyTab": "Cryptographie",
+ "DeclaredDependenciesTab": "Dépendances déclarées",
+ "IdentifiedDependenciesTab": "Dépendances identifiées",
+ "DeclaredMatchedTab": "Composants correspondants ",
+ "IdentifiedMatchedTab": "Composants identifiés",
+ "AddWorkspace": "Ajouter un nouvel espace de travail",
+ "DetectedCryptography": "Cryptographie détectée",
+ "IdentifiedCryptography": "Cryptographie identifiée",
+ "GroupKeywordTitle": "Regrouper les mots-clés",
+ "ProxySettings": "Configuration proxy pour accéder à internet",
+ "ProxyManualConfiguration": "Configuration proxy manuelle",
+ "ProxyAutoConfiguration": "URL de configuration automatique du proxy",
+ "ProxyHttp": "Proxy HTTP",
+ "ProxyHttps": "Proxy HTTPS",
+ "ProxyUseSameForHttps": "Utiliser également ce proxy pour HTTPS",
+ "ProxyWhitelist": "Pas de proxy pour",
+ "ProxyWhitelistExample_one": "Exemples : .mozilla.org, .asso.fr, 192.168.1.0/24",
+ "ProxyWhitelistExample_other": "Les connexions à localhost, 127.0.0.1/8 ou ::1 ne passent jamais par un proxy.",
+ "Port": "Port",
+ "NoProxy": "Pas de proxy",
+ "IgnoreCertificateErrors": "Ignorer les erreurs de l'autorité de certification",
+ "Local": "Local",
+ "Components": "Composants",
+ "PipelineStages": "Étapes du pipeline"
+}
diff --git a/assets/i18n/fr/Tooltip.json b/assets/i18n/fr/Tooltip.json
new file mode 100644
index 000000000..830a8ae62
--- /dev/null
+++ b/assets/i18n/fr/Tooltip.json
@@ -0,0 +1,60 @@
+{
+ "ProjectDeprecated": "Ce projet a été scanné avec une version précédente qui n'est plus prise en charge.",
+ "ProjectImported": "Ce projet a été importé. Vous ne pourrez pas voir le code source d'origine.",
+ "ResumeScan": "Reprendre le scan",
+ "ExportProject": "Exporter le project",
+ "Rescan": "Rescanner",
+ "RemoveProject": "Supprimer le projet",
+ "AddNewLicense": "Ajouter une nouvelle licence",
+ "DetectedComponents": "Composants détectés",
+ "SearchKeywords": "Rechercher des mots-clés",
+ "IdentifiedComponents": "Composants identifiés",
+ "Reports": "Rapports",
+ "DetectedFiles":"Fichiers détectés",
+ "BackToProjects": "Retour aux projets",
+ "Identify": "Identifier",
+ "MarkAsOriginal": "Marquer comme développé en interne",
+ "Restore": "Restaurer",
+ "RemoveIdentification": "Supprimer l'identification",
+ "ViewIdentification": "Voir l'identification",
+ "FilterUsageHelp": "<0>Utilisez les filtres pour modifier les résultats.0><1><2>UTILISATION
Filtrer par type de correspondance : fichier ou snippet.2>1><1><2>STATUT
Filtrer par le statut de chaque fichier.2>1><1><2>CHEMIN
Filtrer par le chemin de chaque fichier.2>1>",
+ "ClearFilters": "Effacer les filtres",
+ "ShowOnlyFilteredMatches": "Afficher uniquement les correspondances filtrées dans l'arborescence des fichiers",
+ "RawView": "Vue brute",
+ "DependencyView": "Vue des dépendances",
+ "IdentificationProgressIsNot100": "La progression de l'identification n'est pas à 100 % ou votre token n'est pas défini",
+ "SBOMDetectedHelp": "Nomenclature logicielle (SBOM) potentielle basée sur une détection automatique",
+ "SBOMIdentifiedHelp": "Nomenclature logicielle (SBOM) réelle basée sur des identifications confirmées",
+ "AddNewEndpoint": "Ajouter un nouvel endpoint",
+ "NoVersionFound": "Aucune version trouvée",
+ "NoLicenseFound": "Aucune licence trouvée",
+ "Accept": "Accepter",
+ "Dismiss": "Rejeter",
+ "SeeDescription": "Voir la description",
+ "SearchForComponentsOnline": "Rechercher des composants en ligne",
+ "AddNewCustomComponent": "Ajouter un nouveau composant personnalisé",
+ "AddNewVersion": "Ajouter une nouvelle version",
+ "FindInFile": "Rechercher dans le fichier",
+ "CopyFilePath": "Copier le chemin du fichier",
+ "OpenFileInFolder": "Ouvrir le fichier dans le dossier",
+ "OpenFileInBrowser": "Ouvrir le fichier dans le navigateur",
+ "ExportHintWFP": "Exporter le fingerprint Winnowing du projet analysé",
+ "ExportHintRAW": "Exporter les réponses JSON brutes de la plateforme SCANOSS",
+ "ExportHintCSV": "Exporter un rapport au format CSV",
+ "ExportHintSPDXLite": "Exporter un rapport SBOM conforme SPDX",
+ "ExportHintCycloneDX": "Exporter un SBOM JSON conforme CycloneDX",
+ "ExportHintHTML": "Exporter un résumé du rapport au format HTML",
+ "TotalFiles": "Nombre total de fichiers",
+ "Detected": "Détecté",
+ "NotDetected": "Pas détecté",
+ "Ignored": "Ignoré",
+ "Progress": "Progression",
+ "RefreshReportButtonLabel": "Mettre à jour le rapport avec les dernières vulnérabilités et données cryptographiques",
+ "OpenInReadMode": "Ouvrir en lecture seule",
+ "ExportHintCSVSBOM": "Exporter un rapport SBOM",
+ "ExportHintCSVCryptography": "Exporter un rapport de cryptographie",
+ "ExportHintSettings": "Exporter un fichier de configuration",
+ "ExportCSVVulnerability": "Exporter un rapport de vulnérabilités",
+ "ExportHintCycloneDXVulnerabilities": "Exporter un SBOM JSON conforme CycloneDX incluant les vulnérabilités",
+ "ExportHintBOM": "Exporter une nomenclature (BOM)"
+}
diff --git a/src/shared/i18n/index.ts b/src/shared/i18n/index.ts
index d5e2d85ed..29d07e6c2 100644
--- a/src/shared/i18n/index.ts
+++ b/src/shared/i18n/index.ts
@@ -25,8 +25,9 @@ export class AppI18n {
private static languages: Record = {
en: 'English',
es: 'Español',
+ fr: 'Français',
zh: '简体中文',
- jp: '日本語',
+ jp: '日本語',
};
private static lng: string;