diff --git a/packages/node_modules/@node-red/editor-client/locales/de/editor.json b/packages/node_modules/@node-red/editor-client/locales/de/editor.json
index 66ae09629..f2955c266 100644
--- a/packages/node_modules/@node-red/editor-client/locales/de/editor.json
+++ b/packages/node_modules/@node-red/editor-client/locales/de/editor.json
@@ -1175,6 +1175,7 @@
"languages": {
"de": "Deutsch",
"en-US": "Englisch",
+ "fr": "Französisch",
"ja": "Japanisch",
"ko": "Koreanisch",
"pt-BR":"Portugiesisch",
diff --git a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json
index 88862af31..a5fad8443 100644
--- a/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json
+++ b/packages/node_modules/@node-red/editor-client/locales/en-US/editor.json
@@ -1200,6 +1200,7 @@
"languages": {
"de": "German",
"en-US": "English",
+ "fr": "French",
"ja": "Japanese",
"ko": "Korean",
"pt-BR":"Portuguese",
diff --git a/packages/node_modules/@node-red/editor-client/locales/fr/editor.json b/packages/node_modules/@node-red/editor-client/locales/fr/editor.json
new file mode 100644
index 000000000..a80c9160e
--- /dev/null
+++ b/packages/node_modules/@node-red/editor-client/locales/fr/editor.json
@@ -0,0 +1,1238 @@
+{
+ "common": {
+ "label": {
+ "name": "Nom",
+ "ok": "Ok",
+ "done": "Terminer",
+ "cancel": "Annuler",
+ "delete": "Supprimer",
+ "close": "Fermer",
+ "load": "Ouvrir",
+ "save": "Sauver",
+ "import": "Importer",
+ "export": "Exporter",
+ "back": "Retour",
+ "next": "Suivant",
+ "clone": "Cloner",
+ "cont": "Continuer",
+ "style": "Style",
+ "line": "Bordure",
+ "fill": "Remplissage",
+ "label": "Etiquette",
+ "color": "Couleur",
+ "position": "Position",
+ "enable": "Activer",
+ "disable": "Désactiver",
+ "upload": "Charger",
+ "lock": "Verrouiller",
+ "unlock": "Déverrouiller",
+ "locked": "Verrouillé",
+ "unlocked": "Déverrouillé"
+ },
+ "type": {
+ "string": "chaîne de caractères",
+ "number": "nombre",
+ "boolean": "booléen",
+ "array": "tableau",
+ "buffer": "tampon",
+ "object": "objet",
+ "jsonString": "chaîne JSON",
+ "undefined": "indéfini",
+ "null": "nul"
+ }
+ },
+ "event": {
+ "loadPlugins": "Chargement des extensions",
+ "loadPalette": "Chargement de la palette",
+ "loadNodeCatalogs": "Chargement des catalogues de noeuds",
+ "loadNodes": "Chargement des noeuds __count__",
+ "loadFlows": "Chargement des flux",
+ "importFlows": "Ajout de flux à l'espace de travail",
+ "importError": "
Erreur lors de l'ajout du flux
__message__
",
+ "loadingProject": "Chargement du projet"
+ },
+ "workspace": {
+ "defaultName": "Flux __number__",
+ "editFlow": "Modifier le flux : __name__",
+ "confirmDelete": "Confirmation de la suppression",
+ "delete": "Etes-vous sûr de vouloir supprimer '__label__'?",
+ "dropFlowHere": "Déposer le flux ici",
+ "dropImageHere": "Déposer l'image ici",
+ "addFlow": "Ajouter un flux",
+ "addFlowToRight": "Ajouter un flux à droite",
+ "closeFlow": "Fermer le flux",
+ "hideFlow": "Masquer le flux",
+ "hideOtherFlows": "Masquer les autres flux",
+ "showAllFlows": "Afficher tous les flux",
+ "hideAllFlows": "Masquer tous les flux",
+ "hiddenFlows": "Répertorier le flux masqué __count__",
+ "hiddenFlows_plural": "Répertorier les flux masqués __count__",
+ "showLastHiddenFlow": "Afficher le dernier flux masqué",
+ "listFlows": "Répertorier les flux",
+ "listSubflows": "Répertorier les sous-flux",
+ "status": "Statut",
+ "enabled": "Activé",
+ "disabled": "Désactivé",
+ "info": "Description",
+ "selectNodes": "Cliquer sur les noeuds pour sélectionner",
+ "enableFlow": "Activer le flux",
+ "disableFlow": "Désactiver le flux",
+ "lockFlow": "Verrouiller le flux",
+ "unlockFlow": "Déverrouiller le flux",
+ "moveToStart": "Déplacer le flux au début",
+ "moveToEnd": "Déplacer le flux vers la fin"
+ },
+ "menu": {
+ "label": {
+ "view": {
+ "view": "Affichage",
+ "grid": "Grille",
+ "storeZoom": "Restaurer le niveau de zoom au chargement",
+ "storePosition": "Restaurer la position de défilement au chargement",
+ "showGrid": "Afficher la grille",
+ "snapGrid": "Aligner sur la grille",
+ "gridSize": "Taille de la grille",
+ "textDir": "Sens du texte",
+ "defaultDir": "Sens par défaut",
+ "ltr": "De gauche à droite",
+ "rtl": "De droite à gauche",
+ "auto": "Contextuel",
+ "language": "Langue",
+ "browserDefault": "Navigateur par défaut"
+ },
+ "sidebar": {
+ "show": "Afficher la barre latérale"
+ },
+ "palette": {
+ "show": "Afficher la palette"
+ },
+ "edit": "Éditer",
+ "settings": "Paramètres",
+ "userSettings": "Paramètres de l'utilisateur",
+ "nodes": "Noeuds",
+ "displayStatus": "Afficher l'état du noeud",
+ "displayConfig": "Noeuds de configuration",
+ "import": "Importer",
+ "importExample": "Importer un exemple de flux",
+ "export": "Exporter",
+ "search": "Rechercher les flux",
+ "searchInput": "Rechercher vos flux",
+ "subflows": "Sous-flux",
+ "createSubflow": "Créer un sous-flux",
+ "selectionToSubflow": "Selection d'un sous-flux",
+ "flows": "Flux",
+ "add": "Ajouter",
+ "rename": "Renommer",
+ "delete": "Supprimer",
+ "keyboardShortcuts": "Raccourcis clavier",
+ "login": "Se connecter",
+ "logout": "Se déconnecter",
+ "editPalette": "Gérer la palette",
+ "other": "Autre",
+ "showTips": "Afficher les astuces",
+ "showWelcomeTours": "Afficher les visites guidées pour les nouvelles versions",
+ "help": "Site web de Node-RED",
+ "projects": "Projets",
+ "projects-new": "Nouveau projet",
+ "projects-open": "Ouvrir le projet",
+ "projects-settings": "Paramètres du projet",
+ "showNodeLabelDefault": "Afficher l'étiquette des noeuds nouvellement ajoutés",
+ "codeEditor": "Éditeur de code",
+ "groups": "Groupes",
+ "groupSelection": "Grouper cette sélection",
+ "ungroupSelection": "Dégrouper la sélection",
+ "groupMergeSelection": "Fusionner la sélection",
+ "groupRemoveSelection": "Supprimer du groupe",
+ "arrange": "Organiser",
+ "alignLeft": "Aligner à gauche",
+ "alignCenter": "Aligner au centre",
+ "alignRight": "Aligner à droite",
+ "alignTop": "Aligner en haut",
+ "alignMiddle": "Aligner au milieu",
+ "alignBottom": "Aligner en bas",
+ "distributeHorizontally": "Répartir horizontalement",
+ "distributeVertically": "Distribuer verticalement",
+ "moveToBack": "Déplacer vers l'arrière",
+ "moveToFront": "Déplacer vers l'avant",
+ "moveBackwards": "Reculer",
+ "moveForwards": "Avancer"
+ }
+ },
+ "actions": {
+ "toggle-navigator": "Basculer de navigateur",
+ "zoom-out": "Dézoomer",
+ "zoom-reset": "Réinitialiser le zoom",
+ "zoom-in": "Agrandir",
+ "search-flows": "Rechercher le flux",
+ "search-prev": "Précédent",
+ "search-next": "Suivant",
+ "search-counter": "\"__term__\" __result__ de __count__"
+ },
+ "user": {
+ "loggedInAs": "Connecté en tant que __name__",
+ "username": "Nom d'utilisateur",
+ "password": "Mot de passe",
+ "login": "Connexion",
+ "loginFailed": "Échec de la connexion",
+ "notAuthorized": "Pas autorisé",
+ "errors": {
+ "settings": "Vous devez être connecté pour accéder aux paramètres",
+ "deploy": "Vous devez être connecté pour déployer les modifications",
+ "notAuthorized": "Vous devez être connecté pour effectuer cette action"
+ }
+ },
+ "notification": {
+ "state": {
+ "flowsStopped": "Flux arrêtés",
+ "flowsStarted": "Flux démarrés"
+ },
+ "warning": "Attention : __message__",
+ "warnings": {
+ "undeployedChanges": "Le noeud a des modifications non déployées",
+ "nodeActionDisabled": "Actions de noeud désactivées",
+ "nodeActionDisabledSubflow": "Actions de noeud désactivées dans le sous-flux",
+ "missing-types": "Flux arrêtés en raison de types de noeuds manquants.
",
+ "missing-modules": "Flux arrêtés en raison de modules manquants.
",
+ "safe-mode": "Flux arrêtés en mode sans échec.
Vous pouvez modifier vos flux et déployer les changements pour redémarrer.
",
+ "restartRequired": "Node-RED doit être redémarré pour mettre à jour les modules",
+ "credentials_load_failed": "Les flux se sont arrêtés car les informations d'identification n'ont pas pu être déchiffrées.
Le fichier d'informations d'identification du flux est chiffré, mais la clé de chiffrement du projet est manquante ou invalide.
",
+ "credentials_load_failed_reset": "Les informations d'identification n'ont pas pu être déchiffrées
Le fichier d'informations d'identification du flux est chiffré, mais la clé de chiffrement du projet est manquante ou invalide.
Le fichier d'informations d'identification du flux sera réinitialisé lors du prochain déploiement. Toutes les informations d'identification de flux existantes seront perdues.
",
+ "missing_flow_file": "Fichier contenant les flux introuvable.
Le projet n'est pas configuré avec un fichier de flux.
",
+ "missing_package_file": "Fichier de paquetage du projet introuvable.
Il manque au projet un fichier package.json.
",
+ "project_empty": "Le projet est vide.
Voulez-vous créer un ensemble de fichiers de projet par défaut ?
Sinon, vous devrez ajouter manuellement des fichiers au projet (en dehors de l'éditeur).
",
+ "project_not_found": "Le projet '__project__' est introuvable.
",
+ "git_merge_conflict": "La fusion automatique des modifications a échoué.
Corriger les conflits non fusionnés, puis valider le résultat.
"
+ },
+ "error": "Erreur : __message__",
+ "errors": {
+ "lostConnection": "Connexion avec le serveur perdue, reconnexion...",
+ "lostConnectionReconnect": "Connexion avec le serveur perdue, reconnexion dans __time__s.",
+ "lostConnectionTry": "Essayer maintenant",
+ "cannotAddSubflowToItself": "Impossible d'ajouter un sous-flux à lui-même",
+ "cannotAddCircularReference": "Impossible d'ajouter un sous-flux - référence circulaire détectée",
+ "unsupportedVersion": "Utilisation d'une version non prise en charge de Node.js
Vous devez effectuer une mise à jour vers la dernière version de Node.js LTS
",
+ "failedToAppendNode": "Échec du chargement du module '__module__'
__error__
"
+ },
+ "project": {
+ "change-branch": "Changer pour une branche locale '__project__'",
+ "merge-abort": "Git fusion abandonnée",
+ "loaded": "Projet '__project__' chargé",
+ "updated": "Projet '__project__' mis à jour",
+ "pull": "Projet '__project__' rechargé",
+ "revert": "Projet '__project__' annulé",
+ "merge-complete": "Fusion Git terminée",
+ "setupCredentials": "Configuration des identifiants",
+ "setupProjectFiles": "Configuration des fichiers du projet",
+ "no": "Non merci",
+ "createDefault": "Créer des fichiers de projet par défaut",
+ "mergeConflict": "Afficher les conflits de fusion"
+ },
+ "label": {
+ "manage-project-dep": "Gérer les dépendances du projet",
+ "setup-cred": "Configuration des identifiants",
+ "setup-project": "Configuration des fichiers du projet",
+ "create-default-package": "Créer un fichier de paquetage par défaut",
+ "no-thanks": "Non merci",
+ "create-default-project": "Créer des fichiers de projet par défaut",
+ "show-merge-conflicts": "Afficher les conflits de fusion",
+ "unknownNodesButton": "Rechercher les noeuds inconnus"
+ }
+ },
+ "clipboard": {
+ "clipboard": "Presse-papiers",
+ "nodes": "Noeuds",
+ "node": "__count__ noeud",
+ "node_plural": "__count__ noeuds",
+ "configNode": "__count__ noeud de configuration",
+ "configNode_plural": "__count__ noeuds de configuration",
+ "group": "__count__ groupe",
+ "group_plural": "__count__ groupes",
+ "flow": "__count__ flux",
+ "flow_plural": "__count__ flux",
+ "subflow": "__count__ sous-flux",
+ "subflow_plural": "__count__ sous-flux",
+ "replacedNodes": "__count__ noeud remplacé",
+ "replacedNodes_plural": "__count__ noeuds remplacés",
+ "pasteNodes": "Coller le flux JSON ou",
+ "selectFile": "Sélectionner un fichier à importer",
+ "importNodes": "Importer des noeuds",
+ "exportNodes": "Exporter des noeuds",
+ "download": "Télécharger",
+ "importUnrecognised": "Importation d'un type inconnu :",
+ "importUnrecognised_plural": "Importation de plusieurs types inconnus :",
+ "importDuplicate": "Noeud en double importé :",
+ "importDuplicate_plural": "Noeuds en double importés :",
+ "nodesExported": "Noeuds exportés vers le presse-papiers",
+ "nodesImported": "Noeuds importés :",
+ "nodeCopied": "__count__ noeud copié",
+ "nodeCopied_plural": "__count__ noeuds copiés",
+ "groupCopied": "__count__ groupe copié",
+ "groupCopied_plural": "__count__ groupes copiés",
+ "groupStyleCopied": "Style de groupe copié",
+ "invalidFlow": "Flux invalide : __message__",
+ "recoveredNodes": "Noeuds récupérés",
+ "recoveredNodesInfo": "Les noeuds importés sur ce flux contiennent un mauvais identifiant de flux. Ces noeuds ont été ajoutés à ce flux afin que vous puissiez les restaurer ou les supprimer.",
+ "recoveredNodesNotification": "Noeuds importés sans identifiant de flux valide
Ils ont été ajoutés à un nouveau flux appelé '__flowName__'.
",
+ "export": {
+ "selected": "noeuds sélectionnés",
+ "current": "flux actuel",
+ "all": "tous les flux",
+ "compact": "condensé",
+ "formatted": "formaté",
+ "copy": "Copier dans le presse-papier",
+ "export": "Exporter vers la bibliothèque",
+ "exportAs": "Exporter en tant que",
+ "overwrite": "Remplacer",
+ "exists": "\"__file__\" existe déjà.
Voulez-vous le remplacer ?
"
+ },
+ "import": {
+ "import": "Importer vers",
+ "importSelected": "Importation sélectionnée",
+ "importCopy": "Importer une copie",
+ "viewNodes": "Afficher les noeuds...",
+ "newFlow": "Nouveau flux",
+ "replace": "Remplacer",
+ "errors": {
+ "notArray": "L'entrée n'est pas un tableau JSON",
+ "itemNotObject": "L'entrée n'est pas un flux valide - l'élément '__index__' n'est pas un objet du noeud",
+ "missingId": "L'entrée n'est pas un flux valide - l'élément '__index__' n'a pas de propriété 'id'",
+ "missingType": "L'entrée n'est pas un flux valide - l'élément '__index__' n'a pas de propriété 'type'"
+ },
+ "conflictNotification1": "Certains des noeuds que vous avez importés existent déjà dans votre espace de travail.",
+ "conflictNotification2": "Sélectionner les noeuds à importer et choisir s'il faut remplacer les noeuds existants ou en importer une copie."
+ },
+ "copyMessagePath": "Chemin copié",
+ "copyMessageValue": "Valeur copiée",
+ "copyMessageValue_truncated": "Valeur tronquée (coupée) copiée"
+ },
+ "deploy": {
+ "deploy": "Déployer",
+ "full": "Tout",
+ "fullDesc": "Déploie tout l'espace de travail",
+ "modifiedFlows": "Flux modifiés",
+ "modifiedFlowsDesc": "Déploie uniquement les flux contenant des noeuds modifiés",
+ "modifiedNodes": "Noeuds modifiés",
+ "modifiedNodesDesc": "Déploie uniquement les noeuds qui ont changés",
+ "startFlows": "Démarrer",
+ "startFlowsDesc": "Démarrer les flux",
+ "stopFlows": "Arrêter",
+ "stopFlowsDesc": "Arrêter les flux",
+ "restartFlows": "Redémarrer les flux",
+ "restartFlowsDesc": "Redémarrer les flux actuellement déployés",
+ "successfulDeploy": "Déployé avec succès",
+ "successfulRestart": "Flux redémarrés avec succès",
+ "deployFailed": "Échec du déploiement : __message__",
+ "unusedConfigNodes": "Vous avez des noeuds de configuration inutilisés.",
+ "unusedConfigNodesButton": "Rechercher les noeuds de configuration inutilisés",
+ "unknownNodesButton": "Rechercher les noeuds inconnus",
+ "invalidNodesButton": "Rechercher les noeuds invalides",
+ "errors": {
+ "noResponse": "Pas de réponse du serveur"
+ },
+ "confirm": {
+ "button": {
+ "ignore": "Ignorer",
+ "confirm": "Confirmer",
+ "review": "Examiner les modifications",
+ "cancel": "Annuler",
+ "merge": "Fusionner",
+ "overwrite": "Ignorer et déployer"
+ },
+ "undeployedChanges": "Vous avez des modifications non déployées.\n\nSi vous quittez cette page, ces modifications seront perdues.",
+ "improperlyConfigured": "L'espace de travail contient des noeuds qui ne sont pas correctement configurés :",
+ "unknown": "L'espace de travail contient des types de noeuds inconnus :",
+ "confirm": "Êtes-vous sûr de vouloir déployer ?",
+ "doNotWarn": "Ne plus m'avertir à ce sujet",
+ "conflict": "Le serveur exécute un ensemble de flux plus récent.",
+ "backgroundUpdate": "Les flux sur le serveur ont été mis à jour.",
+ "conflictChecking": "Vérifier si les modifications peuvent être fusionnées automatiquement",
+ "conflictAutoMerge": "Les modifications n'incluent aucun conflit et peuvent être fusionnées automatiquement.",
+ "conflictManualMerge": "Les changements incluent des conflits qui doivent être résolus avant de pouvoir être déployés.",
+ "plusNMore": "+ __count__ en plus"
+ }
+ },
+ "eventLog": {
+ "title": "Journal des événements",
+ "view": "Afficher le journal"
+ },
+ "diff": {
+ "unresolvedCount": "__count__ conflit non résolu",
+ "unresolvedCount_plural": "__count__ conflits non résolus",
+ "globalNodes": "noeuds globaux",
+ "flowProperties": "Propriétés du flux",
+ "type": {
+ "added": "ajouté",
+ "changed": "modifié",
+ "unchanged": "inchangé",
+ "deleted": "supprimé",
+ "flowDeleted": "flux supprimé",
+ "flowAdded": "flux ajouté",
+ "movedTo": "déplacé vers __id__",
+ "movedFrom": "déplacé depuis __id__"
+ },
+ "nodeCount": "__count__ noeud",
+ "nodeCount_plural": "__count__ noeuds",
+ "local": "Changements locaux",
+ "remote": "Modifications à distance",
+ "reviewChanges": "Examiner les modifications",
+ "noBinaryFileShowed": "Impossible d'afficher le contenu du fichier binaire",
+ "viewCommitDiff": "Afficher les modifications de validation",
+ "compareChanges": "Comparer les modifications",
+ "saveConflict": "Enregistrer la résolution des conflits",
+ "conflictHeader": "__resolved__ sur __unresolved__ conflit(s) résolu(s)",
+ "commonVersionError": "La version commune ne contient pas de JSON valide :",
+ "oldVersionError": "L'ancienne version ne contient pas de JSON valide :",
+ "newVersionError": "La nouvelle version ne contient pas de JSON valide :"
+ },
+ "subflow": {
+ "editSubflowInstance": "Modifier l'instance du sous-flux : __name__",
+ "editSubflow": "Modifier le modèle du sous-flux : __name__",
+ "edit": "Modifier le modèle du sous-flux",
+ "subflowInstances": "Il existe __count__ instance de ce modèle de sous-flux",
+ "subflowInstances_plural": "Il existe __count__ instances de ce modèle de sous-flux",
+ "editSubflowProperties": "modifier les propriétés",
+ "input": "entrées:",
+ "output": "sorties:",
+ "status": "statut du noeud",
+ "deleteSubflow": "supprimer le sous-flux",
+ "confirmDelete": "Voulez-vous vraiment supprimer ce sous-flux ?",
+ "info": "Description",
+ "category": "Catégorie",
+ "module": "Module",
+ "license": "Licence",
+ "licenseNone": "Aucune",
+ "licenseOther": "Autre",
+ "type": "Type de noeud",
+ "version": "Version",
+ "versionPlaceholder": "x.y.z",
+ "keys": "Mots clés",
+ "keysPlaceholder": "Mots clés séparés par des virgules",
+ "author": "Auteur",
+ "authorPlaceholder": "Votre nom ",
+ "desc": "Description",
+ "env": {
+ "restore": "Restaurer le sous-flux par défaut",
+ "remove": "Supprimer la variable d'environnement"
+ },
+ "errors": {
+ "noNodesSelected": "Impossible de créer un sous-flux : aucun noeud sélectionné",
+ "multipleInputsToSelection": "Impossible de créer un sous-flux : plusieurs entrées pour la sélection"
+ }
+ },
+ "group": {
+ "editGroup": "Modifier le groupe : __name__",
+ "errors": {
+ "cannotCreateDiffGroups": "Impossible de créer un groupe de noeuds provenant de différents groupes",
+ "cannotAddSubflowPorts": "Impossible d'ajouter des ports à un groupe de sous-flux"
+ }
+ },
+ "editor": {
+ "configEdit": "Modifier",
+ "configAdd": "Ajouter",
+ "configUpdate": "Sauver",
+ "configDelete": "Supprimer",
+ "nodesUse": "__count__ noeud utilise cette configuration",
+ "nodesUse_plural": "__count__ noeuds utilisent cette configuration",
+ "addNewConfig": "Ajouter un nouveau noeud de configuration __type__",
+ "editNode": "Modifier le noeud __type__",
+ "editConfig": "Modifier le noeud de configuration __type__",
+ "addNewType": "Ajouter un nouveau __type__...",
+ "nodeProperties": "Propriétés du noeud",
+ "label": "Étiquette",
+ "color": "Couleur",
+ "portLabels": "Étiquettes des ports",
+ "labelInputs": "Entrées",
+ "labelOutputs": "Sorties",
+ "settingIcon": "Icône",
+ "default": "Par défaut",
+ "noDefaultLabel": "Aucune",
+ "defaultLabel": "Utiliser l'étiquette par défaut",
+ "searchIcons": "Icônes de recherche",
+ "useDefault": "Utilisation par défaut",
+ "description": "Description",
+ "show": "Afficher",
+ "hide": "Masquer",
+ "locale": "Sélectionner la langue",
+ "icon": "Icône",
+ "inputType": "Type d'entrée",
+ "selectType": "Sélectionner les types...",
+ "loadCredentials": "Chargement des identifiants du noeud",
+ "inputs": {
+ "input": "entrée",
+ "select": "sélection",
+ "checkbox": "case à cocher",
+ "spinner": "valeurs à défiler",
+ "none": "aucune",
+ "hidden": "masquer la propriété"
+ },
+ "types": {
+ "str": "chaîne de caractères",
+ "num": "nombre",
+ "bool": "booléen",
+ "json": "JSON",
+ "bin": "tampon",
+ "env": "variable d'environnement",
+ "cred": "identifiant"
+ },
+ "menu": {
+ "input": "entrée",
+ "select": "sélection",
+ "checkbox": "case à cocher",
+ "spinner": "valeurs à défiler",
+ "hidden": "étiquette seulement"
+ },
+ "select": {
+ "label": "Etiquette",
+ "value": "Valeur"
+ },
+ "spinner": {
+ "min": "Minimum",
+ "max": "Maximum"
+ },
+ "errors": {
+ "scopeChange": "La modification de la portée la rendra indisponible pour les noeuds d'autres flux qui l'utilisent",
+ "invalidProperties": "Propriétés invalides :",
+ "credentialLoadFailed": "Échec du chargement des identifiants du noeud"
+ }
+ },
+ "keyboard": {
+ "title": "Raccourcis clavier",
+ "keyboard": "Clavier",
+ "filterActions": "Actions de filtrage",
+ "shortcut": "raccourci",
+ "scope": "portée",
+ "unassigned": "Non attribué",
+ "global": "global",
+ "workspace": "espace de travail",
+ "selectAll": "Tout sélectionner",
+ "selectNone": "Ne rien sélectionner",
+ "selectAllConnected": "Sélectionner tous les éléments connectés",
+ "addRemoveNode": "Ajouter/supprimer un noeud de la sélection",
+ "editSelected": "Modifier le noeud sélectionné",
+ "deleteSelected": "Supprimer les noeuds ou le lien sélectionné(s)",
+ "deleteReconnect": "Supprimer et reconnecter",
+ "importNode": "Importer les noeuds",
+ "exportNode": "Exporter les noeuds",
+ "nudgeNode": "Déplacer les noeuds sélectionnés (1px)",
+ "moveNode": "Déplacer les noeuds sélectionnés (20px)",
+ "toggleSidebar": "Basculer la barre latérale",
+ "togglePalette": "Basculer la palette",
+ "copyNode": "Copier les noeuds sélectionnés",
+ "cutNode": "Couper les noeuds sélectionnés",
+ "pasteNode": "Coller les noeuds",
+ "copyGroupStyle": "Copier le style de groupe",
+ "pasteGroupStyle": "Coller le style de groupe",
+ "undoChange": "Annuler",
+ "redoChange": "Rétablir",
+ "searchBox": "Ouvrir le champ de recherche",
+ "managePalette": "Gérer la palette",
+ "actionList": "Liste d'action",
+ "splitWireWithLinks": "Ajouter des liens à la sélection"
+ },
+ "library": {
+ "library": "Bibliothèque",
+ "openLibrary": "Ouvrir la bibliothèque...",
+ "saveToLibrary": "Enregistrer dans la bibliothèque...",
+ "typeLibrary": "__type__ bibliothèque",
+ "unnamedType": "Innomé __type__",
+ "exportedToLibrary": "Noeuds exportés vers la bibliothèque",
+ "dialogSaveOverwrite": "Une __libraryType__ appelée __libraryName__ existe déjà. Écraser ?",
+ "invalidFilename": "Nom de fichier non valide",
+ "savedNodes": "Noeuds enregistrés",
+ "savedType": "__type__ enregistré",
+ "saveFailed": "Échec de la sauvegarde : __message__",
+ "newFolder": "Nouveau dossier",
+ "types": {
+ "local": "Local",
+ "examples": "Exemples"
+ }
+ },
+ "palette": {
+ "noInfo": "Pas d'information disponible",
+ "filter": "Filtrer les noeuds",
+ "search": "Rechercher les modules",
+ "addCategory": "Ajouter un nouveau...",
+ "label": {
+ "subflows": "sous-flux",
+ "network": "réseau",
+ "common": "commun",
+ "input": "entrée",
+ "output": "sortie",
+ "function": "fonction",
+ "sequence": "séquence",
+ "parser": "analyseur",
+ "social": "social",
+ "storage": "stockage",
+ "analysis": "analyse",
+ "advanced": "avancé"
+ },
+ "actions": {
+ "collapse-all": "Réduire toutes les catégories",
+ "expand-all": "Développer toutes les catégories"
+ },
+ "event": {
+ "nodeAdded": "Noeud ajouté à la palette :",
+ "nodeAdded_plural": "Noeuds ajoutés à la palette :",
+ "nodeRemoved": "Noeud supprimé de la palette :",
+ "nodeRemoved_plural": "Noeuds supprimés de la palette :",
+ "nodeEnabled": "Noeud activé :",
+ "nodeEnabled_plural": "Noeuds activés :",
+ "nodeDisabled": "Noeud désactivé :",
+ "nodeDisabled_plural": "Noeuds désactivés :",
+ "nodeUpgraded": "Les noeuds du module __module__ ont été mis à jour vers la version __version__",
+ "unknownNodeRegistered": "Erreur lors du chargement du noeud : "
+ },
+ "editor": {
+ "title": "Gérer la palette",
+ "palette": "Palette",
+ "times": {
+ "seconds": "il y a quelques secondes",
+ "minutes": "il y a quelques minutes",
+ "minutesV": "il y a __count__ minutes",
+ "hoursV": "il y a __count__ heure",
+ "hoursV_plural": "il y a __count__ heures",
+ "daysV": "il y a __count__ jour",
+ "daysV_plural": "il y a __count__ jours",
+ "weeksV": "il y a __count__ semaine",
+ "weeksV_plural": "il y a __count__ semaines",
+ "monthsV": "il y a __count__ mois",
+ "monthsV_plural": "il y a __count__ mois",
+ "yearsV": "il y a __count__ an",
+ "yearsV_plural": "il y a __count__ ans",
+ "yearMonthsV": "il y a __y__ an, __count__ mois",
+ "yearMonthsV_plural": "il y a __y__ an, __count__ mois",
+ "yearsMonthsV": "il y a __y__ ans, __count__ mois",
+ "yearsMonthsV_plural": "il y a __y__ ans, __count__ mois"
+ },
+ "nodeCount": "__label__ noeud",
+ "nodeCount_plural": "__label__ noeuds",
+ "moduleCount": "__count__ module disponible",
+ "moduleCount_plural": "__count__ modules disponibles",
+ "inuse": "en cours d'utilisation",
+ "enableall": "activer tout",
+ "disableall": "désactiver tout",
+ "enable": "activer",
+ "disable": "désactiver",
+ "remove": "supprimer",
+ "update": "mettre à jour vers __version__",
+ "updated": "mis à jour",
+ "install": "installer",
+ "installed": "installé",
+ "conflict": "conflit",
+ "conflictTip": "Ce module ne peut pas être installé car il inclut un
type de noeud qui a déjà été installé
Conflits avec __module__
",
+ "loading": "Chargement des catalogues...",
+ "tab-nodes": "Noeuds",
+ "tab-install": "Installer",
+ "sort": "trier:",
+ "sortAZ": "a-z",
+ "sortRecent": "récent",
+ "more": "+ __count__ en plus",
+ "upload": "Charger le fichier tgz du module",
+ "refresh": "Actualiser la liste des modules",
+ "errors": {
+ "catalogLoadFailed": "Échec du chargement du catalogue de noeuds.
Vérifier la console du navigateur pour plus d'informations
",
+ "installFailed": "Échec lors de l'installation : __module__
__message__
Consulter le journal pour plus d'informations
",
+ "removeFailed": "Échec lors de la suppression : __module__
__message__
Consulter le journal pour plus d'informations
",
+ "updateFailed": "Échec lors de la mise à jour : __module__
__message__
Consulter le journal pour plus d'informations
",
+ "enableFailed": "Échec lors de l'activation : __module__
__message__
Consulter le journal pour plus d'informations
",
+ "disableFailed": "Échec lors de la désactivation : __module__
__message__
Consulter le journal pour plus d'informations
"
+ },
+ "confirm": {
+ "install": {
+ "body": "Installation de '__module__'
Avant l'installation, veuiller lire la documentation du noeud. Certains noeuds ont des dépendances qui ne peuvent pas être résolues automatiquement et peuvent nécessiter un redémarrage de Node-RED.
",
+ "title": "Installer les noeuds"
+ },
+ "remove": {
+ "body": "Suppression de '__module__'
La suppression du noeud le désinstallera de Node-RED. Le noeud peut continuer à utiliser des ressources jusqu'au redémarrage de Node-RED.
",
+ "title": "Supprimer les noeuds"
+ },
+ "update": {
+ "body": "Mise à jour de '__module__'
La mise à jour du noeud nécessitera un redémarrage de Node-RED pour terminer la mise à jour. Cela doit être fait manuellement.
",
+ "title": "Mettre à jour les noeuds"
+ },
+ "cannotUpdate": {
+ "body": "Une mise à jour pour ce noeud est disponible, mais il n'est pas installé dans un emplacement que le gestionnaire de palette peut mettre à jour.
Veuiller vous référer à la documentation pour savoir comment mettre à jour ce noeud."
+ },
+ "button": {
+ "review": "Ouvrir la documentation",
+ "install": "Installer",
+ "remove": "Supprimer",
+ "update": "Mettre à jour"
+ }
+ }
+ }
+ },
+ "sidebar": {
+ "info": {
+ "name": "Information",
+ "tabName": "Nom",
+ "label": "info",
+ "node": "Noeud",
+ "type": "Type",
+ "group": "Groupe",
+ "module": "Module",
+ "id": "ID (identifiant)",
+ "status": "Statut",
+ "enabled": "Activé",
+ "disabled": "Désactivé",
+ "subflow": "Sous-flux",
+ "instances": "Instances",
+ "properties": "Propriétés",
+ "info": "Information",
+ "desc": "Description",
+ "blank": "vide",
+ "null": "nul",
+ "showMore": "afficher en plus",
+ "showLess": "afficher en moins",
+ "flow": "Flux",
+ "selection": "Sélection",
+ "nodes": "__count__ noeuds",
+ "flowDesc": "Description du flux",
+ "subflowDesc": "Description du sous-flux",
+ "nodeHelp": "Aide sur les noeuds",
+ "none": "Aucun",
+ "arrayItems": "__count__ éléments",
+ "showTips": "Vous pouvez ouvrir les astuces à partir du panneau des paramètres",
+ "outline": "Plan",
+ "empty": "vide",
+ "globalConfig": "Noeuds de configuration globale",
+ "triggerAction": "Déclencher une action",
+ "find": "Rechercher dans l'espace de travail",
+ "copyItemUrl": "Copier l'URL de l'élément",
+ "copyURL2Clipboard": "URL copiée dans le presse-papiers",
+ "showFlow": "Afficher",
+ "hideFlow": "Masquer"
+ },
+ "help": {
+ "name": "Aide",
+ "label": "aide",
+ "search": "Aide à la recherche",
+ "nodeHelp": "Aide sur les noeuds",
+ "showHelp": "Afficher l'aide",
+ "showInOutline": "Afficher dans les grandes lignes",
+ "showTopics": "Afficher les sujets",
+ "noHelp": "Aucune rubrique d'aide sélectionnée",
+ "changeLog": "Journal des modifications"
+ },
+ "config": {
+ "name": "Noeuds de configuration",
+ "label": "configuration",
+ "global": "Tous les flux",
+ "none": "aucun",
+ "subflows": "sous-flux",
+ "flows": "flux",
+ "filterAll": "tout",
+ "showAllConfigNodes": "Afficher tous les noeuds de configuration",
+ "filterUnused": "inutilisé",
+ "showAllUnusedConfigNodes": "Afficher tous les noeuds de configuration inutilisés",
+ "filtered": "__count__ caché(s)"
+ },
+ "context": {
+ "name": "Données contextuelles",
+ "label": "contexte",
+ "none": "aucune sélection",
+ "refresh": "actualiser pour charger",
+ "empty": "vide",
+ "node": "Noeud",
+ "flow": "Flux",
+ "global": "Global",
+ "deleteConfirm": "Êtes-vous sûr de vouloir supprimer cet élément ?",
+ "autoRefresh": "Rafraîchir si la sélection change",
+ "refrsh": "Rafraîchir",
+ "delete": "Supprimer"
+ },
+ "palette": {
+ "name": "Gestion des palettes",
+ "label": "palette"
+ },
+ "project": {
+ "label": "projet",
+ "name": "Projet",
+ "description": "Description",
+ "dependencies": "Dépendances",
+ "settings": "Paramètres",
+ "noSummaryAvailable": "Aucun résumé disponible",
+ "editDescription": "Modifier la description du projet",
+ "editDependencies": "Modifier les dépendances du projet",
+ "noDescriptionAvailable": "Pas de description disponible",
+ "editReadme": "Modifier le fichier README.md",
+ "showProjectSettings": "Afficher les paramètres du projet",
+ "projectSettings": {
+ "title": "Paramètres du projet",
+ "edit": "modifier",
+ "none": "Vide",
+ "install": "installer",
+ "removeFromProject": "supprimer du projet",
+ "addToProject": "ajouter au projet",
+ "files": "Fichiers",
+ "flow": "Flux",
+ "credentials": "Identifiants",
+ "package": "Paquets",
+ "packageCreate": "Le fichier sera créé lorsque les modifications seront enregistrées",
+ "fileNotExist": "Le fichier n'existe pas",
+ "selectFile": "Choisir le dossier",
+ "invalidEncryptionKey": "Clé de chiffrement invalide",
+ "encryptionEnabled": "Chiffrement activé",
+ "encryptionDisabled": "Chiffrement désactivé",
+ "setTheEncryptionKey": "Définir la clé de chiffrement",
+ "resetTheEncryptionKey": "Réinitialiser la clé de chiffrement",
+ "changeTheEncryptionKey": "Changer la clé de chiffrement",
+ "currentKey": "Clé actuelle",
+ "newKey": "Nouvelle clé",
+ "credentialsAlert": "Cela supprimera tous les identifiants existants",
+ "versionControl": "Contrôle de version",
+ "branches": "Branches",
+ "noBranches": "Pas de branche",
+ "deleteConfirm": "Êtes-vous sûr de vouloir supprimer la branche locale '__name__' ? Ça ne peut pas être annulé.",
+ "unmergedConfirm": "La branche locale '__name__' contient des modifications non fusionnées qui seront perdues. Etes-vous sûr de vouloir la supprimer?",
+ "deleteUnmergedBranch": "Supprimer la branche non fusionnée",
+ "gitRemotes": "Git distant",
+ "addRemote": "Ajout distant",
+ "addRemote2": "Ajout distant",
+ "remoteName": "Nom distant",
+ "nameRule": "Doit contenir uniquement A-Z 0-9 _ -",
+ "url": "URL",
+ "urlRule": "https://, ssh:// ou file://",
+ "urlRule2": "Ne pas inclure le nom d'utilisateur/mot de passe dans l'URL",
+ "noRemotes": "Pas distant",
+ "deleteRemoteConfrim": "Êtes-vous sûr de vouloir supprimer '__name__' distant ?",
+ "deleteRemote": "Supprimer distant"
+ },
+ "userSettings": {
+ "committerDetail": "Détails de l'auteur de la validation (commit)",
+ "committerTip": "Laisser vide pour utiliser la valeur par défaut du système",
+ "userName": "Nom d'utilisateur",
+ "email": "e-mail",
+ "workflow": "Flux de travail",
+ "workfowTip": "Choisisser votre flux de travail Git préféré",
+ "workflowManual": "Manuel",
+ "workflowManualTip": "Toutes les modifications doivent être validées manuellement dans la barre latérale 'historique'",
+ "workflowAuto": "Automatique",
+ "workflowAutoTip": "Les modifications sont validées automatiquement à chaque déploiement",
+ "sshKeys": "Clés SSH",
+ "sshKeysTip": "Vous permet de créer des connexions sécurisées aux référentiels Git distants.",
+ "add": "ajouter une clé",
+ "addSshKey": "Ajouter une clé SSH",
+ "addSshKeyTip": "Générer une nouvelle paire de clés publique/privée",
+ "name": "Nom",
+ "nameRule": "Doit contenir uniquement A-Z 0-9 _ -",
+ "passphrase": "Phrase de mot de passe",
+ "passphraseShort": "Phrase de mot de passe trop courte",
+ "optional": "Facultatif",
+ "cancel": "Annuler",
+ "generate": "Générer une clé",
+ "noSshKeys": "Pas de clé SSH",
+ "copyPublicKey": "Copier la clé publique dans le presse-papiers",
+ "delete": "Supprimer une clé",
+ "gitConfig": "Configuration Git",
+ "deleteConfirm": "Êtes-vous sûr de vouloir supprimer la clé SSH __nom__ ? Ça ne peut pas être annulé."
+ },
+ "versionControl": {
+ "unstagedChanges": "Abandon des changements",
+ "stagedChanges": "Changement mis en place",
+ "unstageChange": "Ne pas mettre en place le changement",
+ "stageChange": "Mettre en place le changement",
+ "unstageAllChange": "Ne pas mettre en place tous les changements",
+ "stageAllChange": "Mettre en place tous les changements",
+ "commitChanges": "Valider les changements",
+ "resolveConflicts": "Résoudre les conflits",
+ "head": "En-tête",
+ "staged": "Mis en place",
+ "unstaged": "Non mis en place",
+ "local": "Local",
+ "remote": "Distant",
+ "revert": "Voulez-vous vraiment annuler les modifications apportées à '__file__' ? Ça ne peut pas être annulé.",
+ "revertChanges": "Rétablir les changements",
+ "localChanges": "Modifications locales",
+ "none": "Vide",
+ "conflictResolve": "Tous les conflits ont été résolus. Valider les modifications pour terminer la fusion.",
+ "localFiles": "Fichiers locaux",
+ "all": "tout",
+ "unmergedChanges": "Modifications non fusionnées",
+ "abortMerge": "Abandonner la fusion",
+ "commit": "Valider",
+ "changeToCommit": "Modifications à valider",
+ "commitPlaceholder": "Entrer votre message de validation",
+ "cancelCapital": "Annuler",
+ "commitCapital": "Valider",
+ "commitHistory": "Historique des validations",
+ "branch": "Branche :",
+ "moreCommits": "Davantage de validations",
+ "changeLocalBranch": "Changer de branche locale",
+ "createBranchPlaceholder": "Trouver où créer une branche",
+ "upstream": "en amont",
+ "localOverwrite": "Vous avez des modifications locales qui seraient écrasées en changeant la branche. Vous devez d'abord valider ou annuler ces modifications.",
+ "manageRemoteBranch": "Gérer une branche distante",
+ "unableToAccess": "Impossible d'accéder au référentiel distant",
+ "retry": "Recommencer",
+ "setUpstreamBranch": "Définir comme branche en amont",
+ "createRemoteBranchPlaceholder": "Trouver ou créer une branche distante",
+ "trackedUpstreamBranch": "La branche créée sera définie comme la branche en amont suivie.",
+ "selectUpstreamBranch": "La branche sera créée. Sélectionner ci-dessous pour la définir comme branche en amont suivie.",
+ "pushFailed": "L'envoi a échoué car la branche a des validations plus récentes. Tirer et fusionner d'abord, puis envoyer à nouveau.",
+ "push": "Envoyer",
+ "pull": "Tirer",
+ "unablePull": "Impossible d'extraire les modifications à distance ; vos modifications locales non mises en place seraient écrasées.
Valider vos modifications et réessayer.
",
+ "showUnstagedChanges": "Afficher les modifications non mise en place",
+ "connectionFailed": "Impossible de se connecter au référentiel distant: ",
+ "pullUnrelatedHistory": "Le réferentiel distant a un historique de validations sans rapport.
Êtes-vous sûr de vouloir extraire les modifications dans votre référentiel local ?
",
+ "pullChanges": "Tirer les changements",
+ "history": "Historique",
+ "projectHistory": "Historique du projet",
+ "daysAgo": "il y a __count__ jour",
+ "daysAgo_plural": "il y a __count__ jours",
+ "hoursAgo": "il y a __count__ heure",
+ "hoursAgo_plural": "il y a __count__ heures",
+ "minsAgo": "il y a __count__ minute",
+ "minsAgo_plural": "il y a __count__ minutes",
+ "secondsAgo": "Il y a quelques instants",
+ "notTracking": "Votre branche locale ne suit pas actuellement une branche distante.",
+ "statusUnmergedChanged": "Votre référentiel contient des modifications non fusionnées. Vous devez résoudre les conflits et valider le résultat.",
+ "repositoryUpToDate": "Votre référentiel est à jour.",
+ "commitsAhead": "Votre référentiel a __count__ validation d'avance sur le référentiel distant. Vous pouvez pousser cette validation maintenant.",
+ "commitsAhead_plural": "Votre référentiel a __count__ validations d'avance sur le référentiel distant. Vous pouvez pousser ces validations maintenant.",
+ "commitsBehind": "Votre référentiel a __count__ validation de retard sur le référentiel distant. Vous pouvez pousser cette validation maintenant.",
+ "commitsBehind_plural": "Votre référentiel a __count__ validations de retard sur le référentiel distant. Vous pouvez pousser ces validations maintenant.",
+ "commitsAheadAndBehind1": "Votre référentiel a __count__ validation derrière et ",
+ "commitsAheadAndBehind1_plural": "Votre référentiel est __count__ validations derrière et ",
+ "commitsAheadAndBehind2": "__count__ validation avant le référentiel distant. ",
+ "validationsAheadAndBehind2_plural": "__count__ commits avant le référentiel distant. ",
+ "commitsAheadAndBehind3": "Vous devez retirer la validation à distance avant de pousser la modification.",
+ "commitsAheadAndBehind3_plural": "Vous devez retirer les validations à distance avant de pousser les modifications.",
+ "refreshCommitHistory": "Actualiser l'historique des validations",
+ "refreshChanges": "Actualiser les modifications"
+ }
+ }
+ },
+ "typedInput": {
+ "type": {
+ "str": "chaîne de caractères",
+ "num": "nombre",
+ "re": "expression régulière",
+ "bool": "booléen",
+ "json": "JSON",
+ "bin": "tampon",
+ "date": "horodatage",
+ "jsonata": "expression",
+ "env": "variable d'environnement",
+ "cred": "identifiant"
+ }
+ },
+ "editableList": {
+ "add": "Ajouter",
+ "addTitle": "Ajouter un élément"
+ },
+ "search": {
+ "history": "Historique des recherches",
+ "clear": "Tout effacer",
+ "empty": "Aucun résultat",
+ "addNode": "Ajouter un noeud...",
+ "options": {
+ "configNodes": "Noeuds de configuration",
+ "unusedConfigNodes": "Noeuds de configuration inutilisés",
+ "invalidNodes": "Noeuds invalides",
+ "uknownNodes": "Noeuds inconnus",
+ "unusedSubflows": "Sous-flux inutilisés",
+ "hiddenFlows": "Flux cachés",
+ "modifiedNodes": "Noeuds et flux modifiés",
+ "thisFlow": "Flux courant"
+ }
+ },
+ "expressionEditor": {
+ "functions": "Fonctions",
+ "functionReference": "Fonction de référence",
+ "insert": "Insérer",
+ "title": "Éditeur d'expressions JSONata",
+ "test": "Test",
+ "data": "Exemple de message",
+ "result": "Résultat",
+ "format": "Format",
+ "compatMode": "Mode de compatibilité activé",
+ "compatModeDesc": "Mode de compatibilité JSONata
L'expression actuelle semble toujours faire référence à msg
et sera donc évaluée en mode de compatibilité. Veuiller mettre à jour l'expression pour ne pas utiliser msg
car ce mode sera supprimé à l'avenir.
Lorsque la prise en charge de JSONata a été ajoutée pour la première fois à Node-RED, il fallait que l'expression référencie l'objet msg
. Par exemple, msg.payload
serait utilisé pour accéder à la charge utile.
Cela n'est plus nécessaire car l'expression sera évaluée directement par rapport au message. Pour accéder à la charge utile, l'expression doit être simplement charge utile
.
",
+ "noMatch": "Aucun résultat correspondant",
+ "errors": {
+ "invalid-expr": "Expression JSONata non valide :\n __message__",
+ "invalid-msg": "Exemple de message JSON non valide :\n __message__",
+ "context-unsupported": "Impossible de tester les fonctions de contexte\n $flowContext ou $globalContext",
+ "env-unsupported": "Impossible de tester la fonction $env",
+ "moment-unsupported": "Impossible de tester la fonction $moment",
+ "clone-unsupported": "Impossible de tester la fonction $clone",
+ "eval": "Erreur lors de l'évaluation de l'expression :\n __message__"
+ }
+ },
+ "monaco": {
+ "setTheme": "Définir le thème"
+ },
+ "jsEditor": {
+ "title": "Éditeur JavaScript"
+ },
+ "textEditor": {
+ "title": "Éditeur de texte"
+ },
+ "jsonEditor": {
+ "title": "Éditeur JSON",
+ "format": "Format JSON",
+ "rawMode": "Modifier JSON",
+ "uiMode": "Afficher l'éditeur",
+ "rawMode-readonly": "JSON",
+ "uiMode-readonly": "Visualiser",
+ "insertAbove": "Insérer ci-dessus",
+ "insertBelow": "Insérer ci-dessous",
+ "addItem": "Ajouter un élément",
+ "copyPath": "Copier le chemin vers l'élément",
+ "expandItems": "Développer les éléments",
+ "collapseItems": "Réduire les éléments",
+ "duplicate": "Dupliquer",
+ "error": {
+ "invalidJSON": "JSON invalide : "
+ }
+ },
+ "markdownEditor": {
+ "title": "Éditeur Markdown",
+ "expand": "Développer",
+ "format": "Formaté avec Markdown",
+ "heading1": "Rubrique 1",
+ "heading2": "Rubrique 2",
+ "heading3": "Rubrique 3",
+ "bold": "Gras",
+ "italic": "Italic",
+ "code": "Code",
+ "ordered-list": "Liste ordonnée",
+ "unordered-list": "Liste non ordonnée",
+ "quote": "Citation",
+ "link": "Lien",
+ "horizontal-rule": "Règle horizontale",
+ "toggle-preview": "Basculer l'aperçu",
+ "mermaid": {
+ "summary": "Diagramme Mermaid"
+ }
+ },
+ "bufferEditor": {
+ "title": "Éditeur de tampon",
+ "modeString": "Gérer comme une chaîne UTF-8",
+ "modeArray": "Gérer en tant que tableau JSON",
+ "modeDesc": "Éditeur de tampon
Le type de tampon est stocké sous la forme d'un tableau JSON de valeurs d'octets. L'éditeur tentera d'analyser la valeur saisie en tant que tableau JSON. S'il ne s'agit pas d'un JSON valide, il sera traité comme une chaîne UTF-8 et converti en un tableau de points de code de caractères individuels.
Par exemple, une valeur de Hello World
sera converti en tableau JSON :
[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
"
+ },
+ "projects": {
+ "config-git": "Configurer le client Git",
+ "welcome": {
+ "hello": "Bonjour! Nous avons introduit des 'projets' dans Node-RED.",
+ "desc0": "Il s'agit d'une nouvelle façon pour vous de gérer vos fichiers de flux, cela inclut le contrôle de version de vos flux.",
+ "desc1": "Pour commencer, vous pouvez créer votre premier projet ou cloner un projet existant à partir d'un référentiel git.",
+ "desc2": "Si vous n'êtes pas sûr, vous pouvez ignorer ceci pour le moment. Vous pourrez toujours créer votre premier projet à partir du menu 'Projets' à tout moment.",
+ "create": "Créer un projet",
+ "clone": "Cloner un référentiel",
+ "openExistingProject": "Ouvrir un projet existant",
+ "not-right-now": "Pas maintenant"
+ },
+ "git-config": {
+ "setup": "Configurer votre version du client Git",
+ "desc0": "Node-RED utilise l'outil open source Git pour le contrôle de version. Il suit les modifications apportées à vos fichiers de projet et vous permet de les transférer vers des référentiels distants.",
+ "desc1": "Lorsque vous validez un ensemble de modifications, Git enregistre l'auteur qui a effectué les modifications avec un nom d'utilisateur et une adresse e-mail. Le nom d'utilisateur peut être ce que vous voulez - il n'est pas nécessaire que ce soit votre vrai nom.",
+ "desc2": "Votre client Git est déjà configuré avec les détails ci-dessous.",
+ "desc3": "Vous pouvez modifier ces paramètres ultérieurement sous l'onglet 'Configuration Git' de la boîte de dialogue des paramètres.",
+ "username": "Nom d'utilisateur",
+ "email": "e-mail"
+ },
+ "project-details": {
+ "create": "Créer votre projet",
+ "desc0": "Un projet est maintenu en tant que référentiel Git. Il est beaucoup plus facile de partager vos flux et de collaborer avec les autres grâce à ce référentiel.",
+ "desc1": "Vous pouvez créer plusieurs projets et basculer rapidement entre eux depuis l'éditeur.",
+ "desc2": "Pour commencer, votre projet a besoin d'un nom et facultativement d'une description.",
+ "already-exists": "Le projet existe déjà",
+ "must-contain": "Doit contenir uniquement A-Z 0-9 _ -",
+ "project-name": "Nom du projet",
+ "desc": "Description",
+ "opt": "Facultatif"
+ },
+ "clone-project": {
+ "clone": "Cloner un projet",
+ "desc0": "Si vous avez déjà un dépôt Git contenant un projet, vous pouvez le cloner pour commencer.",
+ "already-exists": "Le projet existe déjà",
+ "must-contain": "Doit contenir uniquement A-Z 0-9 _ -",
+ "project-name": "Nom du projet",
+ "no-info-in-url": "Ne pas inclure le nom d'utilisateur/mot de passe dans l'URL",
+ "git-url": "URL du dépôt Git",
+ "protocols": "https://, ssh:// ou file://",
+ "auth-failed": "L'authentification a échoué",
+ "username": "Nom d'utilisateur",
+ "passwd": "Mot de passe",
+ "ssh-key": "Clé SSH",
+ "passphrase": "Phrase de mot de passe",
+ "ssh-key-desc": "Avant de pouvoir cloner un référentiel avec ssh, vous devez ajouter une clé SSH pour y accéder.",
+ "ssh-key-add": "Ajouter une clé ssh",
+ "credential-key": "Clé de chiffrement des identifiants",
+ "cant-get-ssh-key": "Erreur! Impossible d'obtenir le chemin de la clé SSH sélectionnée.",
+ "already-exists2": "Existe déjà",
+ "git-error": "Erreur git",
+ "connection-failed": "La connexion a échoué",
+ "not-git-repo": "Ce n'est pas un dépôt Git",
+ "repo-not-found": "Référentiel introuvable"
+ },
+ "default-files": {
+ "create": "Créer vos fichiers de projet",
+ "desc0": "Un projet contient vos fichiers de flux, un fichier README et un fichier package.json.",
+ "desc1": "Il peut contenir tous les autres fichiers que vous souhaitez conserver dans le référentiel Git.",
+ "desc2": "Vos fichiers de flux et identifiants existants seront copiés dans le projet.",
+ "flow-file": "Fichier de flux",
+ "credentials-file": "Fichier d'identifiants"
+ },
+ "encryption-config": {
+ "setup": "Configuration du chiffrage de votre fichier d'informations d'identification",
+ "desc0": "Votre fichier d'informations d'identification de flux peut être chiffré pour sécuriser son contenu.",
+ "desc1": "Si vous souhaitez stocker ces identifiants dans un référentiel Git public, vous devez les chiffrer en fournissant une phrase clé secrète.",
+ "desc2": "Votre fichier d'identifiants de flux n'est actuellement pas chiffré.",
+ "desc3": "Cela signifie que son contenu, tel que les mots de passe et les jetons d'accès, peut être lu par toute personne ayant accès au fichier.",
+ "desc4": "Si vous souhaitez stocker ces identifiants dans un référentiel Git public, vous devez les chiffrer en fournissant une phrase clé secrète.",
+ "desc5": "Votre fichier contenant les identifiants de flux est actuellement chiffré à l'aide de la propriété credentialSecret de votre fichier de paramètres comme clé.",
+ "desc6": "Votre fichier contenant les identifiants de flux est actuellement chiffré à l'aide d'une clé générée par le système. Vous devez fournir une nouvelle clé secrète pour ce projet.",
+ "desc7": "La clé sera stockée séparément de vos fichiers de projet. Vous devrez fournir la clé pour utiliser ce projet dans une autre instance de Node-RED.",
+ "credentials": "Identifiants",
+ "enable": "Activer le chiffrement",
+ "disable": "Désactiver le chiffrement",
+ "disabled": "Désactivé",
+ "copy": "Remplacer la clé existante",
+ "use-custom": "Utiliser la clé personnalisée",
+ "desc8": "Le fichier contenant les identifiants ne sera pas crypté et son contenu sera facilement lisible",
+ "create-project-files": "Créer des fichiers de projet",
+ "create-project": "Créer un projet",
+ "already-exists": "existe déjà",
+ "git-error": "Erreur Git",
+ "git-auth-error": "erreur d'authentification Git"
+ },
+ "create-success": {
+ "success": "Vous avez créé avec succès votre premier projet !",
+ "desc0": "Vous pouvez maintenant continuer à utiliser Node-RED comme vous l'avez toujours fait.",
+ "desc1": "L'onglet 'info' dans la barre latérale vous montre quel est votre projet actif actuel. Le bouton à côté du nom peut être utilisé pour accéder à la vue des paramètres du projet.",
+ "desc2": "L'onglet 'historique' dans la barre latérale peut être utilisé pour afficher les fichiers qui ont changé dans votre projet et pour les valider. Il vous montre un historique complet de vos validations (commits) et vous permet de pousser vos modifications vers un référentiel distant."
+ },
+ "create": {
+ "projects": "Projets",
+ "already-exists": "Le projet existe déjà",
+ "must-contain": "Doit contenir uniquement A-Z 0-9 _ -",
+ "no-info-in-url": "Ne pas inclure le nom d'utilisateur/mot de passe dans l'URL",
+ "open": "Projet ouvert",
+ "create": "Créer un projet",
+ "clone": "Cloner un référentiel",
+ "project-name": "Nom du projet",
+ "desc": "Description",
+ "opt": "Facultatif",
+ "flow-file": "Fichier de flux",
+ "credentials": "Identifiants",
+ "enable-encryption": "Activer le chiffrement",
+ "disable-encryption": "Désactiver le chiffrement",
+ "encryption-key": "Clé de chiffrement",
+ "desc0": "Une phrase pour sécuriser vos identifiants",
+ "desc1": "Le fichier contenant les identifiants ne sera pas crypté et son contenu sera facilement lisible",
+ "git-url": "URL du dépôt Git",
+ "protocols": "https://, ssh:// ou file://",
+ "auth-failed": "L'authentification a échoué",
+ "username": "Nom d'utilisateur",
+ "password": "Mot de passe",
+ "ssh-key": "Clé SSH",
+ "passphrase": "Phrase de mot de passe",
+ "desc2": "Avant de pouvoir cloner un référentiel sur ssh, vous devez ajouter une clé SSH pour y accéder.",
+ "add-ssh-key": "Ajouter une clé ssh",
+ "credentials-encryption-key": "Clé de chiffrement des identifiants",
+ "already-exists-2": "existe déjà",
+ "git-error": "erreur git",
+ "con-failed": "La connexion a échoué",
+ "not-git": "Ce n'est pas un dépôt git",
+ "no-resource": "Référentiel introuvable",
+ "cant-get-ssh-key-path": "Erreur! Impossible d'obtenir le chemin de la clé SSH sélectionnée.",
+ "unexpected_error": "Erreur inattendue",
+ "clearContext": "Effacer le contexte lors du changement de projet"
+ },
+ "delete": {
+ "confirm": "Voulez-vous vraiment supprimer ce projet ?"
+ },
+ "create-project-list": {
+ "search": "rechercher vos projets",
+ "current": "actuel"
+ },
+ "require-clean": {
+ "confirm": "Vous avez des modifications non déployées qui seront perdues.
Voulez-vous continuer ?
"
+ },
+ "send-req": {
+ "auth-req": "Authentification requise pour le référentiel",
+ "username": "Nom d'utilisateur",
+ "password": "Mot de passe",
+ "passphrase": "Phrase de mot de passe",
+ "retry": "Recommencer",
+ "update-failed": "La mise à jour a échoué",
+ "unhandled": "Code d'erreur non géré",
+ "host-key-verify-failed": "La vérification de la clé d'hôte a échoué.
La clé d'hôte du référentiel n'a pas pu être vérifiée. Veuillez mettre à jour votre fichier known_hosts
et réessayer.
"
+ },
+ "create-branch-list": {
+ "invalid": "Branche invalide",
+ "create": "Créer une branche",
+ "current": "Actuelle"
+ },
+ "create-default-file-set": {
+ "no-active": "Impossible de créer un ensemble de fichiers par défaut sans projet actif",
+ "no-empty": "Impossible de créer un ensemble de fichiers par défaut sur un projet non vide",
+ "git-error": "Erreur Git"
+ },
+ "errors": {
+ "no-username-email": "Votre client Git n'est pas configuré avec un nom d'utilisateur/e-mail.",
+ "unexpected": "Une erreur inattendue est apparue",
+ "code": "Code"
+ }
+ },
+ "editor-tab": {
+ "properties": "Propriétés",
+ "envProperties": "Variables d'environnement",
+ "module": "Propriétés des modules",
+ "description": "Description",
+ "appearance": "Apparence",
+ "preview": "Aperçu de l'interface utilisateur",
+ "defaultValue": "Valeur par défaut"
+ },
+ "tourGuide": {
+ "takeATour": "Aperçu",
+ "start": "Commencer",
+ "next": "Suivant",
+ "welcomeTours": "Visite de bienvenue"
+ },
+ "diagnostics": {
+ "title": "Information système"
+ },
+ "languages": {
+ "de": "Allemand",
+ "en-US": "Anglais",
+ "fr": "Français",
+ "ja": "Japonais",
+ "ko": "Coréen",
+ "pt-BR": "Portugais brésilien",
+ "ru": "Russe",
+ "zh-CN": "Chinois (Simplifié)",
+ "zh-TW": "Chinois (Traditionnel)"
+ },
+ "validator": {
+ "errors": {
+ "invalid-json": "Données JSON invalides : __error__",
+ "invalid-json-prop": "__prop__: données JSON invalides : __error__",
+ "invalid-prop": "Expression de propriété non valide",
+ "invalid-prop-prop": "__prop__: expression de propriété invalide",
+ "invalid-num": "Numéro invalide",
+ "invalid-num-prop": "__prop__: numéro invalide",
+ "invalid-regexp": "Modèle d'entrée non valide",
+ "invalid-regex-prop": "__prop__: modèle d'entrée non valide",
+ "missing-required-prop": "__prop__: valeur de la propriété manquante",
+ "invalid-config": "__prop__: noeud de configuration invalide",
+ "missing-config": "__prop__: noeud de configuration manquant",
+ "validation-error": "__prop__: erreur de validation: __node__, __id__: __error__"
+ }
+ },
+ "contextMenu": {
+ "insert": "Insérer",
+ "node": "Noeud",
+ "junction": "Jonction",
+ "linkNodes": "Liens entre les noeuds"
+ },
+ "env-var": {
+ "environment": "Environment",
+ "header": "Variables d'environnement globales",
+ "revert": "Rétablir"
+ }
+}
diff --git a/packages/node_modules/@node-red/editor-client/locales/fr/infotips.json b/packages/node_modules/@node-red/editor-client/locales/fr/infotips.json
new file mode 100755
index 000000000..449be751b
--- /dev/null
+++ b/packages/node_modules/@node-red/editor-client/locales/fr/infotips.json
@@ -0,0 +1,23 @@
+{
+ "info": {
+ "tip0": "Vous pouvez supprimer les noeuds ou les liens sélectionnés avec {{core:delete-selection}}",
+ "tip1": "Rechercher des noeuds à l'aide de {{core:search}}",
+ "tip2": "{{core:toggle-sidebar}} basculera l'affichage de cette barre latérale",
+ "tip3": "Vous pouvez gérer votre palette de noeuds avec {{core:manage-palette}}",
+ "tip4": "Vos noeuds de configuration de flux sont répertoriés dans le panneau de la barre latérale. Ils sont accessibles depuis le menu ou avec {{core:show-config-tab}}",
+ "tip5": "Activer ou désactiver ces conseils à partir de l'option dans les paramètres",
+ "tip6": "Déplacer les noeuds sélectionnés à l'aide des touches [gauche] [haut] [bas] et [droite]. Maintenir la touche [shift] enfoncée pour les pousser plus loin",
+ "tip7": "Faire glisser un noeud sur un fil le raccordera au lien",
+ "tip8": "Exporter les noeuds sélectionnés, ou l'onglet actuel avec {{core:show-export-dialog}}",
+ "tip9": "Importer un flux en faisant glisser son JSON dans l'éditeur, ou avec {{core:show-import-dialog}}",
+ "tip10": "[majuscule] [clic] et faites glisser sur un port de noeud pour déplacer tous les fils attachés ou seulement celui sélectionné",
+ "tip11": "Afficher l'onglet Infos avec {{core:show-info-tab}} ou l'onglet Débogage avec {{core:show-debug-tab}}",
+ "tip12": "[ctrl] [clic] dans l'espace de travail pour ouvrir la boîte de dialogue d'ajout rapide",
+ "tip13": "Maintenir la touche [ctrl] enfoncée lorsque vous [cliquez] sur un port de noeud pour activer le câblage rapide",
+ "tip14": "Maintenir la touche [shift] enfoncée lorsque vous [cliquez] sur un noeud pour sélectionner également tous ses noeuds connectés",
+ "tip15": "Maintenir la touche [ctrl] enfoncée lorsque vous [cliquez] sur un noeud pour l'ajouter ou le supprimer de la sélection actuelle",
+ "tip16": "Changer d'onglet de flux avec {{core:show-previous-tab}} et {{core:show-next-tab}}",
+ "tip17": "Vous pouvez confirmer vos modifications dans le panneau d'édition du noeud avec {{core:confirm-edit-tray}} ou les annuler avec {{core:cancel-edit-tray}}",
+ "tip18": "Appuyer sur {{core:edit-selected-node}} modifiera le premier noeud de la sélection actuelle"
+ }
+}
\ No newline at end of file
diff --git a/packages/node_modules/@node-red/editor-client/locales/fr/jsonata.json b/packages/node_modules/@node-red/editor-client/locales/fr/jsonata.json
new file mode 100755
index 000000000..8fd65bf72
--- /dev/null
+++ b/packages/node_modules/@node-red/editor-client/locales/fr/jsonata.json
@@ -0,0 +1,274 @@
+{
+ "$string": {
+ "args": "arg[, prettify]",
+ "desc": "Convertit le paramètre `arg` en une chaîne de caractères en utilisant les règles de typage suivantes :\n\n - Les chaînes de caractères sont inchangées\n - Les fonctions sont converties en une chaîne vide\n - L'infini numérique et NaN renvoient une erreur car ils ne peuvent pas être représentés comme un Numéro JSON\n - Toutes les autres valeurs sont converties en une chaîne JSON à l'aide de la fonction `JSON.stringify`. Si `prettify` est vrai, alors le JSON \"prettified\" est produit. c'est-à-dire une ligne par champ et les lignes seront en retrait en fonction de la profondeur du champ."
+ },
+ "$length": {
+ "args": "str",
+ "desc": "Renvoie le nombre de caractères dans la chaîne `str`. Une erreur est renvoyée si `str` n'est pas une chaîne de caractères."
+ },
+ "$substring": {
+ "args": "str, start[, length]",
+ "desc": "Renvoie une chaîne contenant les caractères du premier paramètre `str` commençant à la position `start` (pas de décalage). Si `length` est spécifié, alors la sous-chaîne contiendra un maximum de caractères `length`. Si `start` est négatif alors il indique le nombre de caractères à partir de la fin de `str`."
+ },
+ "$substringBefore": {
+ "args": "str, chars",
+ "desc": "Renvoie la sous-chaîne avant la première occurrence de la séquence de caractères `chars` dans `str`. Si `str` ne contient pas `chars`, alors il renvoie `str`."
+ },
+ "$substringAfter": {
+ "args": "str, chars",
+ "desc": "Renvoie la sous-chaîne après la première occurrence de la séquence de caractères `chars` dans `str`. Si `str` ne contient pas `chars`, alors il renvoie `str`."
+ },
+ "$uppercase": {
+ "args": "str",
+ "desc": "Renvoie une chaîne avec tous les caractères de `str` convertis en majuscules."
+ },
+ "$lowercase": {
+ "args": "str",
+ "desc": "Renvoie une chaîne avec tous les caractères de `str` convertis en minuscules."
+ },
+ "$trim": {
+ "args": "str",
+ "desc": "Normalise et supprime tous les caractères d'espacement dans `str` en appliquant les étapes suivantes :\n\n - Toutes les tabulations, retours à la ligne et sauts de ligne sont remplacés par des espaces.\n- Les séquences contiguës d'espaces sont réduites à un seul espace.\n- Les espaces de fin et de début sont supprimés.\n\n Si `str` n'est pas spécifié (c'est-à-dire que cette fonction est invoquée sans argument), alors la valeur de contexte est utilisée comme valeur de `str`. Une erreur est renvoyée si `str` n'est pas une chaîne."
+ },
+ "$contains": {
+ "args": "str, pattern",
+ "desc": "Renvoie `true` si `str` correspond à `pattern`, sinon il renvoie `false`. Si `str` n'est pas spécifié (c'est-à-dire que cette fonction est invoquée avec un argument), alors la valeur de contexte est utilisée comme valeur de `str`. Le paramètre `pattern` peut être une chaîne ou une expression régulière."
+ },
+ "$split": {
+ "args": "str[, separator][, limit]",
+ "desc": "Divise le paramètre `str` en un tableau de sous-chaînes. C'est une erreur si `str` n'est pas une chaîne. Le paramètre facultatif `separator` spécifie les caractères à l'intérieur de `str` à propos desquels il doit être divisé en chaîne ou en expression régulière. Si `separator` n'est pas spécifié, la chaîne vide est supposée et `str` sera divisé en un tableau de caractères uniques. C'est une erreur si `separator` n'est pas une chaîne. Le paramètre facultatif `limit` est un nombre qui spécifie le nombre maximum de sous-chaînes à inclure dans le tableau résultant. Toutes les sous-chaînes supplémentaires sont ignorées. Si `limit` n'est pas spécifié, alors `str` est entièrement divisé sans limite à la taille du tableau résultant. C'est une erreur si `limit` n'est pas un nombre non négatif."
+ },
+ "$join": {
+ "args": "array[, separator]",
+ "desc": "Joint un tableau de chaînes de composants en une seule chaîne concaténée, chaque chaîne de composants étant séparée par le paramètre facultatif `separator`. C'est une erreur si l'entrée `array` contient un élément qui n'est pas une chaîne. Si `séparateur` n'est pas spécifié, il est supposé être la chaîne vide, c'est-à-dire qu'il n'y a pas de `séparateur` entre les chaînes de composants. C'est une erreur si `separator` n'est pas une chaîne."
+ },
+ "$match": {
+ "args": "str, pattern [, limit]",
+ "desc": "Applique la chaîne `str` à l'expression régulière `pattern` et renvoie un tableau d'objets, chaque objet contenant des informations sur chaque occurrence d'une correspondance dans `str`."
+ },
+ "$replace": {
+ "args": "str, pattern, replacement [, limit]",
+ "desc": "Trouve les occurrences de `pattern` dans `str` et les remplace par `replacement`.\n\nLe paramètre facultatif `limit` est le nombre maximum de remplacements."
+ },
+ "$now": {
+ "args": "$[picture [, timezone]]",
+ "desc": "Génère un horodatage au format compatible ISO 8601 et le renvoie sous forme de chaîne. Si les paramètres optionnels d'image et de fuseau horaire sont fournis, alors l'horodatage actuel est formaté comme décrit par la fonction `$fromMillis()`"
+ },
+ "$base64encode": {
+ "args": "string",
+ "desc": "Convertit une chaîne ASCII en une représentation en base 64. Chaque caractère de la chaîne est traité comme un octet de données binaires. Cela nécessite que tous les caractères de la chaîne se trouvent dans la plage 0x00 à 0xFF, qui inclut tous les caractères des chaînes encodées en URI. Les caractères Unicode en dehors de cette plage ne sont pas pris en charge."
+ },
+ "$base64decode": {
+ "args": "string",
+ "desc": "Convertit les octets encodés en base 64 en une chaîne, à l'aide d'une page de codes Unicode UTF-8."
+ },
+ "$number": {
+ "args": "arg",
+ "desc": "Convertit le paramètre `arg` en un nombre en utilisant les règles de conversion suivantes :\n\n - Les nombres sont inchangés\n - Les chaînes qui contiennent une séquence de caractères représentant un nombre JSON légal sont converties en ce nombre\n - Toutes les autres valeurs provoquer l'envoi d'une erreur."
+ },
+ "$abs": {
+ "args": "number",
+ "desc": "Renvoie la valeur absolue du paramètre `nombre`."
+ },
+ "$floor": {
+ "args": "number",
+ "desc": "Renvoie la valeur de `number` arrondie à l'entier le plus proche inférieur ou égal à `number`."
+ },
+ "$ceil": {
+ "args": "number",
+ "desc": "Renvoie la valeur de `number` arrondie à l'entier le plus proche supérieur ou égal à `number`."
+ },
+ "$round": {
+ "args": "number [, precision]",
+ "desc": "Renvoie la valeur du paramètre `number` arrondie au nombre de décimales spécifié par le paramètre facultatif `precision`."
+ },
+ "$power": {
+ "args": "base, exponent",
+ "desc": "Renvoie la valeur de `base` élevée à la puissance de `exponent`."
+ },
+ "$sqrt": {
+ "args": "number",
+ "desc": "Renvoie la racine carrée de la valeur du paramètre `number`."
+ },
+ "$random": {
+ "args": "",
+ "desc": "Renvoie un nombre pseudo-aléatoire supérieur ou égal à zéro et inférieur à un."
+ },
+ "$millis": {
+ "args": "",
+ "desc": "Renvoie le nombre de millisecondes depuis l'époque Unix (1er janvier 1970 UTC) sous forme de nombre. Tous les appels de `$millis()` dans une évaluation d'une expression renverront toutes la même valeur."
+ },
+ "$sum": {
+ "args": "array",
+ "desc": "Renvoie la somme arithmétique d'un `tableau` de nombres. C'est une erreur si l'entrée `array` contient un élément qui n'est pas un nombre."
+ },
+ "$max": {
+ "args": "array",
+ "desc": "Renvoie le nombre maximal dans un `tableau` de nombres. C'est une erreur si l'entrée `array` contient un élément qui n'est pas un nombre."
+ },
+ "$min": {
+ "args": "array",
+ "desc": "Renvoie le nombre minimum dans un `tableau` de nombres. C'est une erreur si l'entrée `array` contient un élément qui n'est pas un nombre."
+ },
+ "$average": {
+ "args": "array",
+ "desc": "Renvoie la valeur moyenne d'un `tableau` de nombres. C'est une erreur si l'entrée `array` contient un élément qui n'est pas un nombre."
+ },
+ "$boolean": {
+ "args": "arg",
+ "desc": "Transforme l'argument en booléen en utilisant les règles suivantes :\n\n - `Boolean` : inchangé\n - `string` : vide : `false`\n - `string` : non vide : `true`\n - `number` : `0` : `false`\n - `number` : non nul : `true`\n - `null` : `false`\n - `array` : vide : `false`\n - `array` : contient un membre qui convertit en `true` : `true`\n - `array` : tous les membres sont transformés en `false` : `false`\n - `object` : vide : `false`\n - `object` : non vide : `true`\n - `function` : `false`"
+ },
+ "$not": {
+ "args": "arg",
+ "desc": "Renvoie un booléen résultat de la négation logique de l'argument"
+ },
+ "$exists": {
+ "args": "arg",
+ "desc": "Renvoie la valeur booléenne `true` si l'expression `arg` est évaluée à une valeur, ou `false` si l'expression ne correspond à rien (par exemple, un chemin vers une référence de champ inexistante)."
+ },
+ "$count": {
+ "args": "array",
+ "desc": "Renvoie le nombre d'éléments du tableau"
+ },
+ "$append": {
+ "args": "array, array",
+ "desc": "Combine deux tableaux"
+ },
+ "$sort": {
+ "args": "array [, function]",
+ "desc": "Renvoie un tableau contenant toutes les valeurs du paramètre `array`, mais triées dans l'ordre.\n\nSi un comparateur `function` est fourni, alors il doit s'agir d'une fonction qui prend deux paramètres :\n\n`function(left , droite)`\n\nCette fonction est invoquée par l'algorithme de tri pour comparer deux valeurs à gauche et à droite. Si la valeur de left doit être placée après la valeur de right dans l'ordre de tri souhaité, la fonction doit renvoyer un booléen `true` pour indiquer un échange. Sinon, il doit renvoyer `false`."
+ },
+ "$reverse": {
+ "args": "array",
+ "desc": "Renvoie un tableau contenant toutes les valeurs du paramètre `array`, mais dans l'ordre inverse."
+ },
+ "$shuffle": {
+ "args": "array",
+ "desc": "Renvoie un tableau contenant toutes les valeurs du paramètre `array`, mais mélangées dans un ordre aléatoire."
+ },
+ "$zip": {
+ "args": "array, ...",
+ "desc": "Renvoie un tableau convolué (zippé) contenant des tableaux groupés de valeurs des arguments `array1`...`arrayN` d'index 0, 1, 2...."
+ },
+ "$keys": {
+ "args": "object",
+ "desc": "Renvoie un tableau contenant les clés de l'objet. Si l'argument est un tableau d'objets, le tableau renvoyé contient une liste dédupliquée de toutes les clés de tous les objets."
+ },
+ "$lookup": {
+ "args": "object, key",
+ "desc": "Renvoie la valeur associée à la clé dans l'objet. Si le premier argument est un tableau d'objets, tous les objets du tableau sont recherchés et les valeurs associées à toutes les occurrences de key sont renvoyées."
+ },
+ "$spread": {
+ "args": "object",
+ "desc": "Divise un objet contenant des paires clé/valeur en un tableau d'objets, chacun ayant une seule paire clé/valeur de l'objet d'entrée. Si le paramètre est un tableau d'objets, alors le tableau résultant contient un objet pour chaque paire clé/valeur dans chaque objet du tableau fourni."
+ },
+ "$merge": {
+ "args": "array<object>",
+ "desc": "Fusionne un tableau d'`objets` en un seul `objet` contenant toutes les paires clé/valeur de chacun des objets du tableau d'entrée. Si l'un des objets d'entrée contient la même clé, alors l'`objet` renvoyé contiendra la valeur du dernier dans le tableau. C'est une erreur si le tableau d'entrée contient un élément qui n'est pas un objet."
+ },
+ "$sift": {
+ "args": "object, function",
+ "desc": "Renvoie un objet qui contient uniquement les paires clé/valeur du paramètre `object` qui satisfont le prédicat `function` transmis comme second paramètre.\n\nLa `function` qui est fournie comme second paramètre doit avoir la signature suivante :\n\n`fonction(valeur [, clé [, objet]])`"
+ },
+ "$each": {
+ "args": "object, function",
+ "desc": "Renvoie un tableau contenant les valeurs renvoyées par la `fonction` lorsqu'elle est appliquée à chaque paire clé/valeur dans l'`objet`."
+ },
+ "$map": {
+ "args": "array, function",
+ "desc": "Renvoie un tableau contenant les résultats de l'application du paramètre `function` à chaque valeur du paramètre `array`.\n\nLa `function` fournie comme second paramètre doit avoir la signature suivante :\n\n`function( valeur [, indice [, tableau]])`"
+ },
+ "$filter": {
+ "args": "array, function",
+ "desc": "Renvoie un tableau contenant uniquement les valeurs du paramètre `array` qui satisfont le prédicat `function`.\n\nLa `function` fournie comme second paramètre doit avoir la signature suivante :\n\n`function(value [ , indice [, tableau]])`"
+ },
+ "$reduce": {
+ "args": "array, function [, init]",
+ "desc": "Renvoie une valeur agrégée dérivée de l'application successive du paramètre `function` à chaque valeur de `array` en combinaison avec le résultat de l'application précédente de la fonction.\n\nLa fonction doit accepter deux arguments et se comporte comme un opérateur infixe entre chaque valeur dans le `tableau`. La signature de `function` doit être de la forme : `myfunc($accumulator, $value[, $index[, $array]])`\n\nLe paramètre facultatif `init` est utilisé comme valeur initiale dans l'agrégation ."
+ },
+ "$flowContext": {
+ "args": "string[, string]",
+ "desc": "Récupère une propriété de contexte de flux.\n\nCeci est une fonction définie par Node-RED."
+ },
+ "$globalContext": {
+ "args": "string[, string]",
+ "desc": "Récupère une propriété de contexte globale.\n\nCeci est une fonction définie par Node-RED."
+ },
+ "$pad": {
+ "args": "string, width [, char]",
+ "desc": "Renvoie une copie de la `chaîne` avec un rembourrage supplémentaire, si nécessaire, de sorte que son nombre total de caractères corresponde au moins à la valeur absolue du paramètre `width`.\n\nSi `width` est un nombre positif, alors la chaîne est rembourré à droite; s'il est négatif, il est rempli vers la gauche.\n\nL'argument optionnel `char` spécifie le(s) caractère(s) de remplissage à utiliser. S'il n'est pas spécifié, la valeur par défaut est le caractère espace."
+ },
+ "$fromMillis": {
+ "args": "number, [, picture [, timezone]]",
+ "desc": "Convertisser le « nombre » représentant les millisecondes depuis l'époque Unix (1er janvier 1970 UTC) en une représentation sous forme de chaîne formatée de l'horodatage tel que spécifié par la chaîne d'image.\n\nSi le paramètre facultatif « image » est omis, l'horodatage est formaté au format ISO 8601.\n\nSi la chaîne facultative `image` est fournie, l'horodatage est formaté selon la représentation spécifiée dans cette chaîne. Le comportement de cette fonction est cohérent avec la version à deux arguments de la fonction XPath/XQuery `format-dateTime` telle que définie dans la spécification XPath F&O 3.1. Le paramètre de chaîne d'image définit la façon dont l'horodatage est formaté et a la même syntaxe que `format-dateTime`.\n\nSi la chaîne facultative `timezone` est fournie, alors l'horodatage formaté sera dans ce fuseau horaire. La chaîne `timezone` doit être au format '±HHMM', où ± est le signe plus ou moins et HHMM est le décalage en heures et minutes par rapport à UTC. Décalage positif pour les fuseaux horaires à l'est de UTC, décalage négatif pour les fuseaux horaires à l'ouest de UTC."
+ },
+ "$formatNumber": {
+ "args": "number, picture [, options]",
+ "desc": "Convertit le `number` en une chaîne et le formate en une représentation décimale comme spécifié par la chaîne `picture`.\n\n Le comportement de cette fonction est cohérent avec la fonction XPath/XQuery fn:format-number telle que définie dans le Spécification XPath F&O 3.1. Le paramètre de chaîne d'image définit la façon dont le nombre est formaté et a la même syntaxe que fn:format-number.\n\nLe troisième argument facultatif `options` est utilisé pour remplacer les caractères de formatage spécifiques aux paramètres régionaux par défaut, tels que le séparateur décimal. S'il est fourni, cet argument doit être un objet contenant des paires nom/valeur spécifiées dans la section de format décimal de la spécification XPath F&O 3.1."
+ },
+ "$formatBase": {
+ "args": "number [, radix]",
+ "desc": "Convertit le `number` en une chaîne et le formate en un entier représenté dans la base numérique spécifiée par l'argument `radix`. Si `radix` n'est pas spécifié, la valeur par défaut est la base 10. `radix` peut être compris entre 2 et 36, sinon une erreur est renvoyée."
+ },
+ "$toMillis": {
+ "args": "timestamp",
+ "desc": "Convertit une chaîne `timestamp` au format ISO 8601 en nombre de millisecondes depuis l'époque Unix (1er janvier 1970 UTC) sous forme de nombre. Une erreur est renvoyée si la chaîne n'est pas au format correct."
+ },
+ "$env": {
+ "args": "arg",
+ "desc": "Renvoie la valeur d'une variable d'environnement.\n\nCeci est une fonction définie par Node-RED."
+ },
+ "$eval": {
+ "args": "expr [, context]",
+ "desc": "Analyse et évalue la chaîne `expr` qui contient un JSON littéral ou une expression JSONata en utilisant le contexte actuel comme contexte d'évaluation."
+ },
+ "$formatInteger": {
+ "args": "number, picture",
+ "desc": "Transforme le `nombre` en une chaîne et le formate en une représentation entière comme spécifié par la chaîne `image`. Le paramètre de chaîne d'image définit la façon dont le nombre est formaté et a la même syntaxe que `fn:format-integer` de la spécification XPath F&O 3.1."
+ },
+ "$parseInteger": {
+ "args": "string, picture",
+ "desc": "Analyse le contenu du paramètre `string` en un entier (comme un nombre JSON) en utilisant le format spécifié par la chaîne `picture`. Le paramètre de chaîne `picture` a le même format que `$formatInteger`."
+ },
+ "$error": {
+ "args": "[str]",
+ "desc": "Génère une erreur avec un message. Le `str` facultatif remplacera le message par défaut de la fonction `$error() évaluée`"
+ },
+ "$assert": {
+ "args": "arg, str",
+ "desc": "Si `arg` est vrai, la fonction renvoie undefined. Si `arg` est faux, une exception est lancée avec `str` comme message de l'exception."
+ },
+ "$single": {
+ "args": "array, function",
+ "desc": "Renvoie la seule et unique valeur du paramètre `array` qui satisfait le prédicat `function` (c'est-à-dire que la `function` renvoie la valeur booléenne `true` lorsqu'elle est transmise à la valeur). Lève une exception si le nombre de valeurs correspondantes n'est pas exactement un.\n\nLa fonction doit être fournie dans la signature suivante : `function(value [, index [, array]])` où value est chaque entrée du tableau, index est la position de cette valeur et le tableau entier est passé comme troisième argument"
+ },
+ "$encodeUrlComponent": {
+ "args": "str",
+ "desc": "Encode un composant URL (Uniform Resource Locator) en remplaçant chaque instance de certains caractères par une, deux, trois ou quatre séquences d'échappement représentant l'encodage UTF-8 du caractère.\n\nExemple : `$encodeUrlComponent(\"?x =test\")` => `\"%3Fx%3Dtest\"`"
+ },
+ "$encodeUrl": {
+ "args": "str",
+ "desc": "Encode une URL (Uniform Resource Locator) en remplaçant chaque instance de certains caractères par une, deux, trois ou quatre séquences d'échappement représentant l'encodage UTF-8 du caractère. \n\nExemple : `$encodeUrl(\"https://mozilla.org/?x=шеллы\")` => `\"https://mozilla.org/?x=%D1%88%D0% B5%D0%BB%D0%BB%D1%8B\"`"
+ },
+ "$decodeUrlComponent": {
+ "args": "str",
+ "desc": "Décode un composant URL (Uniform Resource Locator) précédemment créé par encodeUrlComponent. \n\nExemple : `$decodeUrlComponent(\"%3Fx%3Dtest\")` => `\"?x=test\"`"
+ },
+ "$decodeUrl": {
+ "args": "str",
+ "desc": "Décode une URL (Uniform Resource Locator) précédemment créée par encodeUrl. \n\nExemple : `$decodeUrl(\"https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B\")` => `\"https://mozilla.org/?x=шеллы\"`"
+ },
+ "$distinct": {
+ "args": "array",
+ "desc": "Renvoie un tableau avec les valeurs en double supprimées de `array`"
+ },
+ "$type": {
+ "args": "value",
+ "desc": "Renvoie le type de `value` sous forme de chaîne. Si `value` n'est pas défini, cela renverra `undefined`"
+ },
+ "$moment": {
+ "args": "[str]",
+ "desc": "Obtient un objet de date à l'aide de la bibliothèque Moment."
+ }
+}
diff --git a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json
index 48b83f360..84a1f4dad 100644
--- a/packages/node_modules/@node-red/editor-client/locales/ja/editor.json
+++ b/packages/node_modules/@node-red/editor-client/locales/ja/editor.json
@@ -1200,6 +1200,7 @@
"languages": {
"de": "ドイツ語",
"en-US": "英語",
+ "fr": "フランス語",
"ja": "日本語",
"ko": "韓国語",
"pt-BR":"ポルトガル語",
diff --git a/packages/node_modules/@node-red/editor-client/locales/ru/editor.json b/packages/node_modules/@node-red/editor-client/locales/ru/editor.json
index abc6e5219..8cfea1bde 100644
--- a/packages/node_modules/@node-red/editor-client/locales/ru/editor.json
+++ b/packages/node_modules/@node-red/editor-client/locales/ru/editor.json
@@ -1133,6 +1133,7 @@
"languages" : {
"de": "Немецкий",
"en-US": "Английский",
+ "fr": "Французский",
"ja": "Японский",
"ko": "Корейский",
"pt-BR":"португальский",
diff --git a/packages/node_modules/@node-red/editor-client/locales/zh-CN/editor.json b/packages/node_modules/@node-red/editor-client/locales/zh-CN/editor.json
index 0cb3b471d..f8dcdb321 100644
--- a/packages/node_modules/@node-red/editor-client/locales/zh-CN/editor.json
+++ b/packages/node_modules/@node-red/editor-client/locales/zh-CN/editor.json
@@ -1087,6 +1087,7 @@
"languages": {
"de": "德语",
"en-US": "英文",
+ "fr": "法语",
"ja": "日语",
"ko": "韩文",
"pt-BR":"葡萄牙语",
diff --git a/packages/node_modules/@node-red/editor-client/locales/zh-TW/editor.json b/packages/node_modules/@node-red/editor-client/locales/zh-TW/editor.json
index c8e4cf49f..3646f0c9e 100644
--- a/packages/node_modules/@node-red/editor-client/locales/zh-TW/editor.json
+++ b/packages/node_modules/@node-red/editor-client/locales/zh-TW/editor.json
@@ -1088,6 +1088,7 @@
"languages": {
"de": "德語",
"en-US": "英語",
+ "fr": "法語",
"ja": "日語",
"ko": "韓語",
"pt-BR":"葡萄牙语",
diff --git a/packages/node_modules/@node-red/runtime/locales/fr/runtime.json b/packages/node_modules/@node-red/runtime/locales/fr/runtime.json
new file mode 100644
index 000000000..dc91e7b4d
--- /dev/null
+++ b/packages/node_modules/@node-red/runtime/locales/fr/runtime.json
@@ -0,0 +1,193 @@
+{
+ "runtime": {
+ "welcome": "Bienvenue sur Node-RED",
+ "version": "__component__ version: __version__",
+ "unsupported_version": "Version non prise en charge de __component__. Requiert : __requires__ Trouvé : __version__",
+ "paths": {
+ "settings": "Fichier de paramètres : __path__",
+ "httpStatic": "HTTP Statique : __path__"
+ }
+ },
+ "server": {
+ "loading": "Chargement des noeuds de la palette",
+ "palette-editor": {
+ "disabled": "Éditeur de la palette désactivé : paramètres utilisateur",
+ "npm-not-found": "Éditeur de la palette désactivé : commande npm introuvable",
+ "npm-too-old": "Éditeur de la palette désactivé : version npm trop ancienne. Nécessite npm >= 3.x"
+ },
+ "errors": "Échec de l'enregistrement de __count__ type de noeud",
+ "errors_plural": "Échec de l'enregistrement de __count__ types de noeud",
+ "errors-help": "Exécuter avec -v pour plus de détails",
+ "missing-modules": "Modules de noeud manquants :",
+ "node-version-mismatch": "Le module de noeud ne peut pas être chargé sur cette version. Nécessite : __version__ ",
+ "type-already-registered": "'__type__' déjà enregistré par le module __module__",
+ "removing-modules": "Suppression de modules de la configuration",
+ "added-types": "Types de noeuds ajoutés :",
+ "removed-types": "Types de noeuds supprimés :",
+ "install": {
+ "invalid": "Nom de module invalide",
+ "installing": "Installation du module : __nom__, version : __version__",
+ "installed": "Module installé : __nom__",
+ "install-failed": "L'installation a échoué",
+ "install-failed-long": "L'installation du module __name__ a échoué :",
+ "install-failed-not-found": "Module $t(server.install.install-failed-long) introuvable",
+ "install-failed-name": "$t(server.install.install-failed-long) nom de module invalide : __name__",
+ "install-failed-url": "URL invalide $t(server.install.install-failed-long) : __url__",
+ "post-install-error": "Erreur lors de l'exécution du hook 'postInstall' :",
+ "upgrading": "Mettre à jour le module : __name__ vers la version : __version__",
+ "upgraded": "Module mis à jour : __name__. Redémarrer Node-RED pour utiliser la nouvelle version",
+ "upgrade-failed-not-found": "Version $t(server.install.install-failed-long) introuvable",
+ "uninstalling": "Désinstallation du module : __name__",
+ "uninstall-failed": "La désinstallation a échoué",
+ "uninstall-failed-long": "La désinstallation du module __name__ a échoué :",
+ "uninstalled": "Module désinstallé : __name__",
+ "old-ext-mod-dir-warning": "\n\n---------------------------------------------------------------------\nRépertoire des modules externes Node-RED 1.3 détecté :\n __oldDir__\nCe répertoire n'est plus utilisé. Les modules externes seront\nréinstallés dans votre répertoire utilisateur Node-RED :\n __newDir__\nSupprimer l'ancien répertoire externalModules pour arrêter ce message.\n---------------------------------------------------------------------\n"
+ },
+ "deprecatedOption": "L'utilisation de l'option __old__ est DÉCONSEILLÉE. Utiliser __new__ à la place",
+ "unable-to-listen": "Impossible d'écouter sur __listenpath__",
+ "port-in-use": "Erreur : port utilisé",
+ "uncaught-exception": "Exception non reconnue :",
+ "admin-ui-disabled": "Interface d'administration désactivée",
+ "now-running": "Le serveur tourne maintenant sur __listenpath__",
+ "failed-to-start": "Échec lors du démarrage du serveur :",
+ "headless-mode": "Fonctionne en mode sans interface graphique (headless)",
+ "httpadminauth-deprecated": "L'utilisation de httpAdminAuth est DÉCONSEILLÉE. Utiliser adminAuth à la place",
+ "https": {
+ "refresh-interval": "Actualisation des paramètres https toutes les __interval__ heures",
+ "settings-refreshed": "Les paramètres https du serveur ont été actualisés",
+ "refresh-failed": "Échec de l'actualisation des paramètres https : __message__",
+ "nodejs-version": "httpsRefreshInterval nécessite Node.js 11 ou version ultérieure",
+ "function-required": "httpsRefreshInterval nécessite que la propriété https soit une fonction"
+ }
+ },
+ "api": {
+ "flows": {
+ "error-save": "Erreur lors de l'enregistrement des flux : __message__",
+ "error-reload": "Erreur lors du rechargement des flux : __message__"
+ },
+ "library": {
+ "error-load-entry": "Erreur lors du chargement de l'entrée de la bibliothèque '__path__' : __message__",
+ "error-save-entry": "Erreur lors de l'enregistrement de l'entrée de la bibliothèque '__path__' : __message__",
+ "error-load-flow": "Erreur lors du chargement du flux '__path__' : __message__",
+ "error-save-flow": "Erreur lors de l'enregistrement du flux '__path__' : __message__"
+ },
+ "nodes": {
+ "enabled": "Types de noeuds activés :",
+ "disabled": "Types de noeuds désactivés :",
+ "error-enable": "Échec de l'activation du noeud :"
+ }
+ },
+ "comms": {
+ "error": "Erreur de canal de communication: __message__",
+ "error-server": "Erreur de communication avec le serveur : __message__",
+ "error-send": "Erreur d'envoi de communication : __message__"
+ },
+ "settings": {
+ "user-not-available": "Impossible d'enregistrer les paramètres utilisateur : __message__",
+ "not-available": "Paramètres non disponibles",
+ "property-read-only": "La propriété '__prop__' est en lecture seule",
+ "readonly-mode": "Exécution en mode lecture seule. Les modifications ne seront pas enregistrées."
+ },
+ "library": {
+ "unknownLibrary": "Bibliothèque inconnue : __library__",
+ "unknownType": "Type de bibliothèque inconnu : __type__",
+ "readOnly": "La bibliothèque __library__ est en lecture seule",
+ "failedToInit": "Échec de l'initialisation de la bibliothèque __library__ : __error__",
+ "invalidProperty": "Propriété invalide __prop__ : '__value__'"
+ },
+ "nodes": {
+ "credentials": {
+ "error": "Erreur lors du chargement des identifiants : __message__",
+ "error-saving": "Erreur lors de l'enregistrement des identifiants : __message__",
+ "not-registered": "Le type d'identifiant '__type__' n'a pas été enregistré",
+ "system-key-warning": "\n\n---------------------------------------------------------------------\nVotre fichier contenant les identifiants de flux est chiffré à l'aide d'une clé générée par le système.\n\nSi la clé générée par le système est perdue pour une raison quelconque, votre fichier contenant\nles identifiants ne sera pas récupérable, vous devrez le supprimer et ressaisir vos identifiants.\n\nVous pouvez définir votre propre clé en utilisant l'option 'credentialSecret' dans\nvotre fichier de paramètres. Node-RED rechiffrera alors votre fichier contenant les identifiants\nà l'aide de la clé que vous avez choisie la prochaine fois que vous déploierez une modification.\n---------------------------------------------------------------------\n",
+ "unencrypted": "Utilisation d'identifiants non chiffrés",
+ "encryptedNotFound": "Identifiants chiffrés introuvables"
+ },
+ "flows": {
+ "safe-mode": "Les flux se sont arrêtés en mode sans échec. Déployer les pour commencer.",
+ "registered-missing": "Type manquant enregistré : __type__",
+ "error": "Erreur lors du chargement des flux : __message__",
+ "starting-modified-nodes": "Démarrage des noeuds modifiés",
+ "starting-modified-flows": "Démarrage des flux modifiés",
+ "starting-flows": "Démarrage des flux",
+ "started-modified-nodes": "Noeuds modifiés démarrés",
+ "started-modified-flows": "Flux modifiés démarrés",
+ "started-flows": "Flux démarrés",
+ "stopping-modified-nodes": "Arrêt des noeuds modifiés",
+ "stopping-modified-flows": "Arrêt des flux modifiés",
+ "stopping-flows": "Arrêt des flux",
+ "stopped-modified-nodes": "Noeuds modifiés arrêtés",
+ "stopped-modified-flows": "Flux modifiés arrêtés",
+ "stopped-flows": "Flux arrêtés",
+ "stopped": "Arrêté",
+ "stopping-error": "Erreur lors de l'arrêt du noeud : __message__",
+ "updated-flows": "Flux mis à jour",
+ "added-flow": "Ajout du flux : __label__",
+ "updated-flow": "Flux mis à jour : __label__",
+ "removed-flow": "Flux supprimé : __label__",
+ "missing-types": "En attente d'enregistrement des types manquants :",
+ "missing-type-provided": " - __type__ (fourni par le module npm __module__)",
+ "missing-type-install-1": "Pour installer l'un des modules manquants, exécuter :",
+ "missing-type-install-2": "dans le répertoire :"
+ },
+ "flow": {
+ "unknown-type": "Type inconnu : __type__",
+ "missing-types": "Types manquants",
+ "error-loop": "Le message a dépassé le nombre maximum de captures (catches)"
+ },
+ "index": {
+ "unrecognised-id": "Identifiant non reconnu : __id__",
+ "type-in-use": "Type en cours d'utilisation : __msg__",
+ "unrecognised-module": "Module non reconnu : __module__"
+ },
+ "registry": {
+ "localfilesystem": {
+ "module-not-found": "Impossible de trouver le module '__module__'"
+ }
+ }
+ },
+ "storage": {
+ "index": {
+ "forbidden-flow-name": "Nom du flux interdit"
+ },
+ "localfilesystem": {
+ "user-dir": "Répertoire utilisateur : __path__",
+ "flows-file": "Fichier des flux : __path__",
+ "create": "Création d'un nouveau fichier __type__",
+ "empty": "Le fichier __type__ existant est vide",
+ "invalid": "Le fichier __type__ existant n'est pas un JSON valide",
+ "restore": "Restauration de la sauvegarde du fichier __type__ : __path__",
+ "restore-fail": "La restauration de la sauvegarde du fichier __type__ a échoué : __message__",
+ "fsync-fail": "Échec du vidage du fichier __path__ sur le disque : __message__",
+ "warn_name": "Le nom du fichier de flux n'est pas défini. Génération du nom à l'aide du nom d'hôte.",
+ "projects": {
+ "changing-project": "Définition du projet actif : __project__",
+ "active-project": "Projet actif : __project__",
+ "projects-directory": "Répertoire des projets : __projectsDirectory__",
+ "project-not-found": "Projet introuvable : __project__",
+ "no-active-project": "Aucun projet actif : utilisation du fichier de flux par défaut",
+ "disabled": "Projets désactivés : editorTheme.projects.enabled=false",
+ "disabledNoFlag": "Projets désactivés : définir editorTheme.projects.enabled=true pour activer",
+ "git-not-found": "Projets désactivés : commande git introuvable",
+ "git-version-old": "Projets désactivés : git __version__ non pris en charge. Nécessite 2.x",
+ "summary": "Un projet Node-RED",
+ "readme": "### À propos\n\nCeci est le fichier README.md de votre projet. Il aide les utilisateurs à comprendre ce que fait votre\nprojet, comment l'utiliser et tout ce qu'il est utile de savoir."
+ }
+ }
+ },
+ "context": {
+ "log-store-init": "Stockage contextuel : '__name__' [__info__]",
+ "error-loading-module": "Erreur lors du chargement du stockage contextuel : __message__",
+ "error-loading-module2": "Erreur lors du chargement du stockage contextuel '__module__' : __message__",
+ "error-module-not-defined": "Option 'module' manquante dans le stockage contextuel '__storage__'",
+ "error-invalid-module-name": "Nom du stockage contextuel invalide : '__name__'",
+ "error-invalid-default-module": "Stockage contextuel par défaut inconnu : '__storage__'",
+ "unknown-store": "Stockage contextuel inconnu '__name__' spécifié. Utilisation du stockage par défaut.",
+ "localfilesystem": {
+ "invalid-json": "JSON non valide dans le fichier de contexte '__file__'",
+ "error-circular": "Le contexte __scope__ contient une référence circulaire qui ne peut pas être persistante",
+ "error-write": "Erreur d'écriture du contexte : __message__"
+ }
+ }
+}