@node-red/editor-client 4.0.0 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -27,7 +27,8 @@
27
27
  "lock": "Verrouiller",
28
28
  "unlock": "Déverrouiller",
29
29
  "locked": "Verrouillé",
30
- "unlocked": "Déverrouillé"
30
+ "unlocked": "Déverrouillé",
31
+ "format": "Format"
31
32
  },
32
33
  "type": {
33
34
  "string": "chaîne de caractères",
@@ -54,10 +55,10 @@
54
55
  "workspace": {
55
56
  "defaultName": "Flux __number__",
56
57
  "editFlow": "Modifier le flux : __name__",
57
- "confirmDelete": "Confirmation de la suppression",
58
- "delete": "Etes-vous sûr de vouloir supprimer '__label__'?",
59
- "dropFlowHere": "Déposer le flux ici",
60
- "dropImageHere": "Déposer l'image ici",
58
+ "confirmDelete": "Confirmer la suppression",
59
+ "delete": "Êtes-vous sûr de vouloir supprimer '__label__' ?",
60
+ "dropFlowHere": "Lâchez le flux ici",
61
+ "dropImageHere": "Lâchez l'image ici",
61
62
  "addFlow": "Ajouter un flux",
62
63
  "addFlowToRight": "Ajouter un flux à droite",
63
64
  "closeFlow": "Fermer le flux",
@@ -74,7 +75,7 @@
74
75
  "enabled": "Activé",
75
76
  "disabled": "Désactivé",
76
77
  "info": "Description",
77
- "selectNodes": "Cliquer sur les noeuds pour sélectionner",
78
+ "selectNodes": "Cliquer pour sélectionner",
78
79
  "enableFlow": "Activer le flux",
79
80
  "disableFlow": "Désactiver le flux",
80
81
  "lockFlow": "Verrouiller le flux",
@@ -98,7 +99,7 @@
98
99
  "rtl": "De droite à gauche",
99
100
  "auto": "Contextuel",
100
101
  "language": "Langue",
101
- "browserDefault": "Navigateur par défaut"
102
+ "browserDefault": "Par défaut du Navigateur"
102
103
  },
103
104
  "sidebar": {
104
105
  "show": "Afficher la barre latérale"
@@ -134,7 +135,7 @@
134
135
  "disableSelectedNodes": "Désactiver les noeuds sélectionnés",
135
136
  "showSelectedNodeLabels": "Afficher les étiquettes des noeuds sélectionnés",
136
137
  "hideSelectedNodeLabels": "Masquer les étiquettes des noeuds sélectionnés",
137
- "showWelcomeTours": "Afficher les visites guidées pour les nouvelles versions",
138
+ "showWelcomeTours": "Afficher les visites guidées des nouvelles versions",
138
139
  "help": "Site web de Node-RED",
139
140
  "projects": "Projets",
140
141
  "projects-new": "Nouveau projet",
@@ -143,7 +144,7 @@
143
144
  "showNodeLabelDefault": "Afficher l'étiquette des noeuds nouvellement ajoutés",
144
145
  "codeEditor": "Éditeur de code",
145
146
  "groups": "Groupes",
146
- "groupSelection": "Grouper cette sélection",
147
+ "groupSelection": "Grouper la sélection",
147
148
  "ungroupSelection": "Dégrouper la sélection",
148
149
  "groupMergeSelection": "Fusionner la sélection",
149
150
  "groupRemoveSelection": "Supprimer du groupe",
@@ -155,7 +156,7 @@
155
156
  "alignMiddle": "Aligner au milieu",
156
157
  "alignBottom": "Aligner en bas",
157
158
  "distributeHorizontally": "Répartir horizontalement",
158
- "distributeVertically": "Distribuer verticalement",
159
+ "distributeVertically": "Répartir verticalement",
159
160
  "moveToBack": "Déplacer vers l'arrière",
160
161
  "moveToFront": "Déplacer vers l'avant",
161
162
  "moveBackwards": "Reculer",
@@ -163,21 +164,21 @@
163
164
  }
164
165
  },
165
166
  "actions": {
166
- "toggle-navigator": "Basculer de navigateur",
167
- "zoom-out": "Dézoomer",
168
- "zoom-reset": "Réinitialiser le zoom",
167
+ "toggle-navigator": "Basculer l'affichage du navigateur",
168
+ "zoom-out": "Réduire",
169
+ "zoom-reset": "Réinitialiser",
169
170
  "zoom-in": "Agrandir",
170
171
  "search-flows": "Rechercher le flux",
171
172
  "search-prev": "Précédent",
172
173
  "search-next": "Suivant",
173
- "search-counter": "\"__term__\" __result__ de __count__"
174
+ "search-counter": "\"__term__\" __result__ sur __count__"
174
175
  },
175
176
  "user": {
176
177
  "loggedInAs": "Connecté en tant que __name__",
177
178
  "username": "Nom d'utilisateur",
178
179
  "password": "Mot de passe",
179
- "login": "Connexion",
180
- "loginFailed": "Échec de la connexion",
180
+ "login": "Se connecter",
181
+ "loginFailed": "Échec de connexion",
181
182
  "notAuthorized": "Pas autorisé",
182
183
  "errors": {
183
184
  "settings": "Vous devez être connecté pour accéder aux paramètres",
@@ -193,16 +194,16 @@
193
194
  "warning": "<strong>Attention</strong> : __message__",
194
195
  "warnings": {
195
196
  "undeployedChanges": "Le noeud a des modifications non déployées",
196
- "nodeActionDisabled": "Actions de noeud désactivées",
197
- "nodeActionDisabledSubflow": "Actions de noeud désactivées dans le sous-flux",
197
+ "nodeActionDisabled": "Les actions du noeud sont désactivées",
198
+ "nodeActionDisabledSubflow": "Les actions de noeud sont désactivées à l'intérieur du sous-flux",
198
199
  "missing-types": "<p>Flux arrêtés en raison de types de noeuds manquants.</p>",
199
200
  "missing-modules": "<p>Flux arrêtés en raison de modules manquants.</p>",
200
- "safe-mode": "<p>Flux arrêtés en mode sans échec.</p><p>Vous pouvez modifier vos flux et déployer les changements pour redémarrer.</p>",
201
+ "safe-mode": "<p>Flux arrêtés en mode sans échec.</p><p>Vous pouvez modifier vos flux et déployer ensuite les changements afin de démarrer vos flux.</p>",
201
202
  "restartRequired": "Node-RED doit être redémarré pour mettre à jour les modules",
202
- "credentials_load_failed": "<p>Les flux se sont arrêtés car les informations d'identification n'ont pas pu être déchiffrées.</p><p>Le fichier d'informations d'identification du flux est chiffré, mais la clé de chiffrement du projet est manquante ou invalide.</p>",
203
- "credentials_load_failed_reset": "<p>Les informations d'identification n'ont pas pu être déchiffrées</p><p>Le fichier d'informations d'identification du flux est chiffré, mais la clé de chiffrement du projet est manquante ou invalide.</p><p>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.</p>",
203
+ "credentials_load_failed": "<p>Les flux se sont arrêtés car les informations d'identification n'ont pas pu être déchiffrées.</p><p>Le fichier d'informations d'identification du flux est chiffré mais la clé de chiffrement du projet est manquante ou invalide.</p>",
204
+ "credentials_load_failed_reset": "<p>Les informations d'identification n'ont pas pu être déchiffrées</p><p>Le fichier d'informations d'identification du flux est chiffré mais la clé de chiffrement du projet est manquante ou invalide.</p><p>Le fichier d'informations d'identification du flux sera réinitialisé lors du prochain déploiement. Toutes les informations d'identification des flux existants seront perdues.</p>",
204
205
  "missing_flow_file": "<p>Fichier contenant les flux introuvable.</p><p>Le projet n'est pas configuré avec un fichier de flux.</p>",
205
- "missing_package_file": "<p>Fichier de paquetage du projet introuvable.</p><p>Il manque au projet un fichier package.json.</p>",
206
+ "missing_package_file": "<p>Fichier de paquetage du projet introuvable.</p><p>Il manque au projet le fichier <code>package.json</code>.</p>",
206
207
  "project_empty": "<p>Le projet est vide.</p><p>Voulez-vous créer un ensemble de fichiers de projet par défaut ?<br/>Sinon, vous devrez ajouter manuellement des fichiers au projet (en dehors de l'éditeur).</p>",
207
208
  "project_not_found": "<p>Le projet '__project__' est introuvable.</p>",
208
209
  "git_merge_conflict": "<p>La fusion automatique des modifications a échoué.</p><p>Corriger les conflits non fusionnés, puis valider le résultat.</p>"
@@ -219,7 +220,7 @@
219
220
  },
220
221
  "project": {
221
222
  "change-branch": "Changer pour une branche locale '__project__'",
222
- "merge-abort": "Git fusion abandonnée",
223
+ "merge-abort": "Fusion Git abandonnée",
223
224
  "loaded": "Projet '__project__' chargé",
224
225
  "updated": "Projet '__project__' mis à jour",
225
226
  "pull": "Projet '__project__' rechargé",
@@ -352,7 +353,7 @@
352
353
  "backgroundUpdate": "Les flux sur le serveur ont été mis à jour.",
353
354
  "conflictChecking": "Vérifier si les modifications peuvent être fusionnées automatiquement",
354
355
  "conflictAutoMerge": "Les modifications n'incluent aucun conflit et peuvent être fusionnées automatiquement.",
355
- "conflictManualMerge": "Les changements incluent des conflits qui doivent être résolus avant de pouvoir être déployés.",
356
+ "conflictManualMerge": "Les modifications incluent des conflits qui doivent être résolus avant de pouvoir être déployées.",
356
357
  "plusNMore": "+ __count__ en plus"
357
358
  }
358
359
  },
@@ -372,16 +373,17 @@
372
373
  "deleted": "supprimé",
373
374
  "flowDeleted": "flux supprimé",
374
375
  "flowAdded": "flux ajouté",
376
+ "moved": "déplacé",
375
377
  "movedTo": "déplacé vers __id__",
376
378
  "movedFrom": "déplacé depuis __id__"
377
379
  },
378
380
  "nodeCount": "__count__ noeud",
379
381
  "nodeCount_plural": "__count__ noeuds",
380
382
  "local": "Changements locaux",
381
- "remote": "Modifications à distance",
383
+ "remote": "Changements distants",
382
384
  "reviewChanges": "Examiner les modifications",
383
385
  "noBinaryFileShowed": "Impossible d'afficher le contenu du fichier binaire",
384
- "viewCommitDiff": "Afficher les modifications de validation",
386
+ "viewCommitDiff": "Afficher les modifications de la validation",
385
387
  "compareChanges": "Comparer les modifications",
386
388
  "saveConflict": "Enregistrer la résolution des conflits",
387
389
  "conflictHeader": "<span>__resolved__</span> sur <span>__unresolved__</span> conflit(s) résolu(s)",
@@ -395,9 +397,9 @@
395
397
  "edit": "Modifier le modèle du sous-flux",
396
398
  "subflowInstances": "Il existe __count__ instance de ce modèle de sous-flux",
397
399
  "subflowInstances_plural": "Il existe __count__ instances de ce modèle de sous-flux",
398
- "editSubflowProperties": "modifier les propriétés",
399
- "input": "Entrées:",
400
- "output": "Sorties:",
400
+ "editSubflowProperties": "Modifier les propriétés",
401
+ "input": "Entrées :",
402
+ "output": "Sorties :",
401
403
  "status": "Statut du noeud",
402
404
  "deleteSubflow": "Supprimer le sous-flux",
403
405
  "confirmDelete": "Voulez-vous vraiment supprimer ce sous-flux ?",
@@ -411,7 +413,7 @@
411
413
  "version": "Version",
412
414
  "versionPlaceholder": "x.y.z",
413
415
  "keys": "Mots clés",
414
- "keysPlaceholder": "Mots clés séparés par des virgules",
416
+ "keysPlaceholder": "Mots clés séparés par une virgule",
415
417
  "author": "Auteur",
416
418
  "authorPlaceholder": "Votre nom <email@exemple.com>",
417
419
  "desc": "Description",
@@ -468,7 +470,7 @@
468
470
  "select": "sélection",
469
471
  "checkbox": "case à cocher",
470
472
  "spinner": "valeurs à défiler",
471
- "none": "aucune",
473
+ "none": "aucun",
472
474
  "hidden": "masquer la propriété"
473
475
  },
474
476
  "types": {
@@ -496,7 +498,7 @@
496
498
  "max": "Maximum"
497
499
  },
498
500
  "errors": {
499
- "scopeChange": "La modification de la portée la rendra indisponible pour les noeuds d'autres flux qui l'utilisent",
501
+ "scopeChange": "La modification de la portée rendra indisponible ce noeud de configuration aux noeuds d'autres flux qui l'utilisent",
500
502
  "invalidProperties": "Propriétés invalides :",
501
503
  "credentialLoadFailed": "Échec du chargement des identifiants du noeud"
502
504
  }
@@ -510,7 +512,7 @@
510
512
  "unassigned": "Non attribué",
511
513
  "global": "Global",
512
514
  "workspace": "Espace de travail",
513
- "editor": "Boîte de dialogue d'édition",
515
+ "editor": "Boîte d'édition",
514
516
  "selectAll": "Tout sélectionner",
515
517
  "selectNone": "Ne rien sélectionner",
516
518
  "selectAllConnected": "Sélectionner tous les éléments connectés",
@@ -541,7 +543,7 @@
541
543
  "openLibrary": "Ouvrir la bibliothèque...",
542
544
  "saveToLibrary": "Enregistrer dans la bibliothèque...",
543
545
  "typeLibrary": "__type__ bibliothèque",
544
- "unnamedType": "Innomé __type__",
546
+ "unnamedType": "Sans nom __type__",
545
547
  "exportedToLibrary": "Noeuds exportés vers la bibliothèque",
546
548
  "dialogSaveOverwrite": "Une __libraryType__ appelée __libraryName__ existe déjà. Écraser ?",
547
549
  "invalidFilename": "Nom de fichier non valide",
@@ -558,7 +560,7 @@
558
560
  "noInfo": "Pas d'information disponible",
559
561
  "filter": "Rechercher le noeud",
560
562
  "search": "Rechercher les modules",
561
- "addCategory": "Ajouter un nouveau...",
563
+ "addCategory": "Ajouter une nouvelle...",
562
564
  "label": {
563
565
  "subflows": "Sous-flux",
564
566
  "network": "Réseau",
@@ -638,7 +640,7 @@
638
640
  "sortAZ": "A-Z",
639
641
  "sortRecent": "Récent",
640
642
  "more": "+ __count__ en plus",
641
- "upload": "Charger le fichier tgz du module",
643
+ "upload": "Charger le fichier .tgz du module",
642
644
  "refresh": "Actualiser la liste des modules",
643
645
  "errors": {
644
646
  "catalogLoadFailed": "<p>Échec du chargement du catalogue de noeuds.</p><p>Vérifier la console du navigateur pour plus d'informations</p>",
@@ -651,7 +653,7 @@
651
653
  },
652
654
  "confirm": {
653
655
  "install": {
654
- "body": "<p>Installation de '__module__'</p><p>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.</p>",
656
+ "body": "<p>Installation de '__module__'</p><p>Avant l'installation, veuillez 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.</p>",
655
657
  "title": "Installer les noeuds"
656
658
  },
657
659
  "remove": {
@@ -666,7 +668,7 @@
666
668
  "title": "Mettre à jour les noeuds"
667
669
  },
668
670
  "cannotUpdate": {
669
- "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.<br/><br/>Veuiller vous référer à la documentation pour savoir comment mettre à jour ce noeud."
671
+ "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.<br/><br/>Veuillez vous référer à la documentation pour savoir comment mettre à jour ce noeud."
670
672
  },
671
673
  "button": {
672
674
  "review": "Ouvrir la documentation",
@@ -708,8 +710,8 @@
708
710
  "nodeHelp": "Aide sur les noeuds",
709
711
  "none": "Aucun",
710
712
  "arrayItems": "__count__ éléments",
711
- "showTips": "Vous pouvez ouvrir les astuces à partir du panneau des paramètres",
712
- "outline": "Plan",
713
+ "showTips": "Vous pouvez afficher les astuces à partir du panneau des paramètres",
714
+ "outline": "Contour",
713
715
  "empty": "Vide",
714
716
  "globalConfig": "Noeuds de configuration globale",
715
717
  "triggerAction": "Déclencher une action",
@@ -722,7 +724,7 @@
722
724
  "help": {
723
725
  "name": "Aide",
724
726
  "label": "Aide",
725
- "search": "Aide à la recherche",
727
+ "search": "Rechercher l'aide",
726
728
  "nodeHelp": "Aide sur les noeuds",
727
729
  "showHelp": "Afficher l'aide",
728
730
  "showInOutline": "Afficher dans les grandes lignes",
@@ -801,7 +803,7 @@
801
803
  "branches": "Branches",
802
804
  "noBranches": "Pas de branche",
803
805
  "deleteConfirm": "Êtes-vous sûr de vouloir supprimer la branche locale '__name__' ? Ça ne peut pas être annulé.",
804
- "unmergedConfirm": "La branche locale '__name__' contient des modifications non fusionnées qui seront perdues. Etes-vous sûr de vouloir la supprimer?",
806
+ "unmergedConfirm": "La branche locale '__name__' contient des modifications non fusionnées qui seront perdues. Êtes-vous sûr de vouloir la supprimer?",
805
807
  "deleteUnmergedBranch": "Supprimer la branche non fusionnée",
806
808
  "gitRemotes": "Git distant",
807
809
  "addRemote": "Ajout distant",
@@ -845,17 +847,17 @@
845
847
  "deleteConfirm": "Êtes-vous sûr de vouloir supprimer la clé SSH __name__ ? Ça ne peut pas être annulé."
846
848
  },
847
849
  "versionControl": {
848
- "unstagedChanges": "Abandon des changements",
849
- "stagedChanges": "Changement mis en place",
850
- "unstageChange": "Ne pas mettre en place le changement",
851
- "stageChange": "Mettre en place le changement",
852
- "unstageAllChange": "Ne pas mettre en place tous les changements",
853
- "stageAllChange": "Mettre en place tous les changements",
850
+ "unstagedChanges": "Changements non indexés",
851
+ "stagedChanges": "Changements indexés",
852
+ "unstageChange": "Annuler l'indexation des changements",
853
+ "stageChange": "Indexer les changements",
854
+ "unstageAllChange": "Annuler l'indexation de tous les changements",
855
+ "stageAllChange": "Indexer tous les changements",
854
856
  "commitChanges": "Valider les changements",
855
857
  "resolveConflicts": "Résoudre les conflits",
856
858
  "head": "En-tête",
857
- "staged": "Mis en place",
858
- "unstaged": "Non mis en place",
859
+ "staged": "Indexé",
860
+ "unstaged": "Non indexé",
859
861
  "local": "Local",
860
862
  "remote": "Distant",
861
863
  "revert": "Voulez-vous vraiment annuler les modifications apportées à '__file__' ? Ça ne peut pas être annulé.",
@@ -889,11 +891,11 @@
889
891
  "pushFailed": "L'envoi a échoué car la branche a des validations plus récentes. Tirer et fusionner d'abord, puis envoyer à nouveau.",
890
892
  "push": "Envoyer",
891
893
  "pull": "Tirer",
892
- "unablePull": "<p>Impossible d'extraire les modifications à distance ; vos modifications locales non mises en place seraient écrasées.</p><p>Valider vos modifications et réessayer.</p>",
893
- "showUnstagedChanges": "Afficher les modifications non mise en place",
894
+ "unablePull": "<p>Impossible d'extraire les modifications à distance; vos modifications locales non mises en place seraient écrasées.</p><p>Valider vos modifications et réessayer.</p>",
895
+ "showUnstagedChanges": "Afficher les modifications non indexées",
894
896
  "connectionFailed": "Impossible de se connecter au référentiel distant: ",
895
897
  "pullUnrelatedHistory": "<p>Le réferentiel distant a un historique de validations sans rapport.</p><p>Êtes-vous sûr de vouloir extraire les modifications dans votre référentiel local ?</p>",
896
- "pullChanges": "Tirer les changements",
898
+ "pullChanges": "Tirer les changements distants",
897
899
  "history": "Historique",
898
900
  "projectHistory": "Historique du projet",
899
901
  "daysAgo": "il y a __count__ jour",
@@ -974,7 +976,7 @@
974
976
  "result": "Résultat",
975
977
  "format": "Format",
976
978
  "compatMode": "Mode de compatibilité activé",
977
- "compatModeDesc": "<h3>Mode de compatibilité JSONata</h3><p> L'expression actuelle semble toujours faire référence à <code>msg</code> et sera donc évaluée en mode de compatibilité. Veuiller mettre à jour l'expression pour ne pas utiliser <code>msg</code> car ce mode sera supprimé à l'avenir.</p><p> 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 <code>msg</code>. Par exemple, <code>msg.payload</code> serait utilisé pour accéder à la charge utile.</p><p> 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 <code>charge utile</code>.</p>",
979
+ "compatModeDesc": "<h3>Mode de compatibilité JSONata</h3><p> L'expression actuelle semble toujours faire référence à <code>msg</code> et sera donc évaluée en mode de compatibilité. Veuillez mettre à jour l'expression pour ne pas utiliser <code>msg</code> car ce mode sera supprimé à l'avenir.</p><p> 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 <code>msg</code>. Par exemple, <code>msg.payload</code> serait utilisé pour accéder à la charge utile.</p><p> 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 <code>charge utile</code>.</p>",
978
980
  "noMatch": "Aucun résultat correspondant",
979
981
  "errors": {
980
982
  "invalid-expr": "Expression JSONata non valide :\n __message__",
@@ -997,7 +999,7 @@
997
999
  },
998
1000
  "jsonEditor": {
999
1001
  "title": "Éditeur JSON",
1000
- "format": "Format JSON",
1002
+ "format": "Formatter JSON",
1001
1003
  "rawMode": "Modifier JSON",
1002
1004
  "uiMode": "Afficher l'éditeur",
1003
1005
  "rawMode-readonly": "JSON",
@@ -1016,7 +1018,7 @@
1016
1018
  "markdownEditor": {
1017
1019
  "title": "Éditeur Markdown",
1018
1020
  "expand": "Développer",
1019
- "format": "Formaté avec Markdown",
1021
+ "format": "Formatter avec Markdown",
1020
1022
  "heading1": "Rubrique 1",
1021
1023
  "heading2": "Rubrique 2",
1022
1024
  "heading3": "Rubrique 3",
@@ -1090,7 +1092,7 @@
1090
1092
  "credential-key": "Clé de chiffrement des identifiants",
1091
1093
  "cant-get-ssh-key": "Erreur! Impossible d'obtenir le chemin de la clé SSH sélectionnée.",
1092
1094
  "already-exists2": "Existe déjà",
1093
- "git-error": "Erreur git",
1095
+ "git-error": "Erreur Git",
1094
1096
  "connection-failed": "La connexion a échoué",
1095
1097
  "not-git-repo": "Ce n'est pas un dépôt Git",
1096
1098
  "repo-not-found": "Référentiel introuvable"
@@ -1104,7 +1106,7 @@
1104
1106
  "credentials-file": "Fichier d'identifiants"
1105
1107
  },
1106
1108
  "encryption-config": {
1107
- "setup": "Configuration du chiffrage de votre fichier d'informations d'identification",
1109
+ "setup": "Configuration du chiffrement de votre fichier d'informations d'identification",
1108
1110
  "desc0": "Votre fichier d'informations d'identification de flux peut être chiffré pour sécuriser son contenu.",
1109
1111
  "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.",
1110
1112
  "desc2": "Votre fichier d'identifiants de flux n'est actuellement pas chiffré.",
@@ -1161,9 +1163,9 @@
1161
1163
  "add-ssh-key": "Ajouter une clé ssh",
1162
1164
  "credentials-encryption-key": "Clé de chiffrement des identifiants",
1163
1165
  "already-exists-2": "Existe déjà",
1164
- "git-error": "Erreur git",
1166
+ "git-error": "Erreur Git",
1165
1167
  "con-failed": "La connexion a échoué",
1166
- "not-git": "Ce n'est pas un dépôt git",
1168
+ "not-git": "Ce n'est pas un dépôt Git",
1167
1169
  "no-resource": "Référentiel introuvable",
1168
1170
  "cant-get-ssh-key-path": "Erreur! Impossible d'obtenir le chemin de la clé SSH sélectionnée.",
1169
1171
  "unexpected_error": "Erreur inattendue",
@@ -1201,7 +1203,7 @@
1201
1203
  },
1202
1204
  "errors": {
1203
1205
  "no-username-email": "Votre client Git n'est pas configuré avec un nom d'utilisateur/e-mail.",
1204
- "unexpected": "Une erreur inattendue est apparue",
1206
+ "unexpected": "Une erreur inattendue est survenue",
1205
1207
  "code": "Code"
1206
1208
  }
1207
1209
  },
@@ -1270,7 +1272,7 @@
1270
1272
  "list-modified-nodes": "Afficher les flux modifiés",
1271
1273
  "list-hidden-flows": "Afficher les flux cachés",
1272
1274
  "list-flows": "Lister les flux",
1273
- "list-subflows": "Liste les sous-flux",
1275
+ "list-subflows": "Lister les sous-flux",
1274
1276
  "go-to-previous-location": "Aller à l'emplacement précédent",
1275
1277
  "go-to-next-location": "Aller à l'emplacement suivant",
1276
1278
  "copy-selection-to-internal-clipboard": "Copier la sélection dans le presse-papiers",
@@ -1330,8 +1332,8 @@
1330
1332
  "align-selection-to-bottom": "Aligner la sélection vers le bas",
1331
1333
  "align-selection-to-middle": "Aligner la sélection au centre verticalement",
1332
1334
  "align-selection-to-center": "Aligner la sélection au centre horizontalement",
1333
- "distribute-selection-horizontally": "Distribuer la sélection horizontalement",
1334
- "distribute-selection-vertical": "Distribuer la sélection verticalement",
1335
+ "distribute-selection-horizontally": "Répartir la sélection horizontalement",
1336
+ "distribute-selection-vertical": "Répartir la sélection verticalement",
1335
1337
  "wire-series-of-nodes": "Connecter les noeuds en série",
1336
1338
  "wire-node-to-multiple": "Connecter les noeuds à plusieurs",
1337
1339
  "wire-multiple-to-node": "Connecter plusieurs au noeud",
@@ -27,7 +27,8 @@
27
27
  "lock": "固定",
28
28
  "unlock": "固定を解除",
29
29
  "locked": "固定済み",
30
- "unlocked": "固定なし"
30
+ "unlocked": "固定なし",
31
+ "format": "形式"
31
32
  },
32
33
  "type": {
33
34
  "string": "文字列",
@@ -281,8 +282,8 @@
281
282
  "selected": "選択したフロー",
282
283
  "current": "現在のタブ",
283
284
  "all": "全てのタブ",
284
- "compact": "インデントのないJSONフォーマット",
285
- "formatted": "インデント付きのJSONフォーマット",
285
+ "compact": "インデントなし",
286
+ "formatted": "インデント付き",
286
287
  "copy": "書き出し",
287
288
  "export": "ライブラリに書き出し",
288
289
  "exportAs": "書き出し先",
@@ -923,6 +924,8 @@
923
924
  }
924
925
  },
925
926
  "typedInput": {
927
+ "selected": "__count__個を選択",
928
+ "selected_plural": "__count__個を選択",
926
929
  "type": {
927
930
  "str": "文字列",
928
931
  "num": "数値",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@node-red/editor-client",
3
- "version": "4.0.0",
3
+ "version": "4.0.2",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
package/public/red/about CHANGED
@@ -1,3 +1,38 @@
1
+ #### 4.0.2: Maintenance Release
2
+
3
+ Editor
4
+
5
+ - Use a more subtle border on the header (#4818) @bonanitech
6
+ - Improve the editor's French translations (#4824) @GogoVega
7
+ - Clean up orphaned editors (#4821) @Steve-Mcl
8
+ - Fix node validation if the property is not required (#4812) @GogoVega
9
+ - Ensure mermaid.min.js is cached properly between loads of the editor (#4817) @knolleary
10
+
11
+ Runtime
12
+
13
+ - Allow auth cookie name to be customised (#4815) @knolleary
14
+ - Guard against undefined sessions in multiplayer (#4816) @knolleary
15
+
16
+ #### 4.0.1: Maintenance Release
17
+
18
+ Editor
19
+
20
+ - Ensure subflow instance credential property values are extracted (#4802) @knolleary
21
+ - Use `_ADD_` value for both `add new...` and `none` options (#4800) @GogoVega
22
+ - Fix the config node select value assignment (#4788) @GogoVega
23
+ - Add tooltip for number of subflow instance on info tab (#4786) @kazuhitoyokoi
24
+ - Add Japanese translations for v4.0.0 (#4785) @kazuhitoyokoi
25
+
26
+ Runtime
27
+
28
+ - Ensure group nodes are properly exported in /flow api (#4803) @knolleary
29
+
30
+ Nodes
31
+
32
+ - Joins: make using msg.parts optional in join node (#4796) @dceejay
33
+ - HTTP Request: UI proxy should setup agents for both http_proxy and https_proxy (#4794) @Steve-Mcl
34
+ - HTTP Request: Remove default user agent (#4791) @Steve-Mcl
35
+
1
36
  #### 4.0.0: Milestone Release
2
37
 
3
38
  This marks the next major release of Node-RED. The following changes represent
package/public/red/red.js CHANGED
@@ -31825,7 +31825,7 @@ RED.sidebar.info = (function() {
31825
31825
  evt.stopPropagation();
31826
31826
  RED.search.show("type:subflow:"+n.id);
31827
31827
  })
31828
- // RED.popover.tooltip(userCountBadge,function() { return RED._('editor.nodesUse',{count:n.users.length})});
31828
+ RED.popover.tooltip(subflowInstanceBadge,function() { return RED._('subflow.subflowInstances',{count:n.instances.length})});
31829
31829
  }
31830
31830
  if (n._def.category === "config" && n.type !== "group") {
31831
31831
  var userCountBadge = $('<button type="button" class="red-ui-info-outline-item-control-users red-ui-button red-ui-button-small"><i class="fa fa-toggle-right"></i></button>').text(n.users.length).appendTo(controls).on("click",function(evt) {
@@ -35347,6 +35347,12 @@ RED.editor = (function() {
35347
35347
  }
35348
35348
  }
35349
35349
  if (valid && "validate" in definition[property]) {
35350
+ if (definition[property].hasOwnProperty("required") &&
35351
+ definition[property].required === false) {
35352
+ if (value === "") {
35353
+ return true;
35354
+ }
35355
+ }
35350
35356
  try {
35351
35357
  var opt = {};
35352
35358
  if (label) {
@@ -35373,6 +35379,11 @@ RED.editor = (function() {
35373
35379
  });
35374
35380
  }
35375
35381
  } else if (valid) {
35382
+ if (definition[property].hasOwnProperty("required") && definition[property].required === false) {
35383
+ if (value === "") {
35384
+ return true;
35385
+ }
35386
+ }
35376
35387
  // If the validator is not provided in node property => Check if the input has a validator
35377
35388
  if ("category" in node._def) {
35378
35389
  const isConfig = node._def.category === "config";
@@ -35603,11 +35614,8 @@ RED.editor = (function() {
35603
35614
  if (selectedOpt?.data('env')) {
35604
35615
  disableButton(addButton, true);
35605
35616
  disableButton(editButton, true);
35606
- // disable the edit button if no options available
35607
- } else if (optionsLength === 1 && selectedOpt.val() === "_ADD_") {
35608
- disableButton(addButton, false);
35609
- disableButton(editButton, true);
35610
- } else if (selectedOpt.val() === "") {
35617
+ // disable the edit button if no options available or 'none' selected
35618
+ } else if (optionsLength === 1 || selectedOpt.val() === "_ADD_") {
35611
35619
  disableButton(addButton, false);
35612
35620
  disableButton(editButton, true);
35613
35621
  } else {
@@ -35616,14 +35624,9 @@ RED.editor = (function() {
35616
35624
  }
35617
35625
  });
35618
35626
 
35619
- var label = "";
35620
- var configNode = RED.nodes.node(nodeValue);
35621
-
35622
- if (configNode) {
35623
- label = RED.utils.getNodeLabel(configNode, configNode.id);
35624
- }
35625
-
35626
- input.val(label);
35627
+ // If the value is "", 'add new...' option if no config node available or 'none' option
35628
+ // Otherwise, it's a config node
35629
+ select.val(nodeValue || '_ADD_');
35627
35630
  }
35628
35631
 
35629
35632
  /**
@@ -36124,9 +36127,11 @@ RED.editor = (function() {
36124
36127
  }
36125
36128
 
36126
36129
  if (!configNodes.length) {
36130
+ // Add 'add new...' option
36127
36131
  select.append('<option value="_ADD_" selected>' + RED._("editor.addNewType", { type: label }) + '</option>');
36128
36132
  } else {
36129
- select.append('<option value="">' + RED._("editor.inputs.none") + '</option>');
36133
+ // Add 'none' option
36134
+ select.append('<option value="_ADD_">' + RED._("editor.inputs.none") + '</option>');
36130
36135
  }
36131
36136
 
36132
36137
  window.setTimeout(function() { select.trigger("change");},50);
@@ -41338,9 +41343,22 @@ RED.editor = (function() {
41338
41343
 
41339
41344
  if (!initializing) {
41340
41345
  initializing = true
41341
- $.getScript(
41342
- 'vendor/mermaid/mermaid.min.js',
41343
- function (data, stat, jqxhr) {
41346
+ // Find the cache-buster:
41347
+ let cacheBuster
41348
+ $('script').each(function (i, el) {
41349
+ if (!cacheBuster) {
41350
+ const src = el.getAttribute('src')
41351
+ const m = /\?v=(.+)$/.exec(src)
41352
+ if (m) {
41353
+ cacheBuster = m[1]
41354
+ }
41355
+ }
41356
+ })
41357
+ $.ajax({
41358
+ url: `vendor/mermaid/mermaid.min.js?v=${cacheBuster}`,
41359
+ dataType: "script",
41360
+ cache: true,
41361
+ success: function (data, stat, jqxhr) {
41344
41362
  mermaid.initialize({
41345
41363
  startOnLoad: false,
41346
41364
  theme: RED.settings.get('mermaid', {}).theme
@@ -41351,7 +41369,7 @@ RED.editor = (function() {
41351
41369
  render(pending)
41352
41370
  }
41353
41371
  }
41354
- )
41372
+ });
41355
41373
  }
41356
41374
  } else {
41357
41375
  const nodes = document.querySelectorAll(selector)
@@ -41838,7 +41856,13 @@ RED.editor.codeEditor.monaco = (function() {
41838
41856
  //Handles orphaned models
41839
41857
  //ensure loaded models that are not explicitly destroyed by a call to .destroy() are disposed
41840
41858
  RED.events.on("editor:close",function() {
41841
- let models = window.monaco ? monaco.editor.getModels() : null;
41859
+ if (!window.monaco) { return; }
41860
+ const editors = window.monaco.editor.getEditors()
41861
+ const orphanEditors = editors.filter(editor => editor && !document.body.contains(editor.getDomNode()))
41862
+ orphanEditors.forEach(editor => {
41863
+ editor.dispose();
41864
+ });
41865
+ let models = monaco.editor.getModels()
41842
41866
  if(models && models.length) {
41843
41867
  console.warn("Cleaning up monaco models left behind. Any node that calls createEditor() should call .destroy().")
41844
41868
  for (let index = 0; index < models.length; index++) {
@@ -42797,6 +42821,7 @@ RED.editor.codeEditor.monaco = (function() {
42797
42821
 
42798
42822
  $(el).remove();
42799
42823
  $(toolbarRow).remove();
42824
+ ed.dispose();
42800
42825
  }
42801
42826
 
42802
42827
  ed.resize = function resize() {
@@ -48882,7 +48907,7 @@ RED.subflow = (function() {
48882
48907
  input.val(val.value);
48883
48908
  break;
48884
48909
  case "cred":
48885
- input = $('<input type="password">').css('width','70%').appendTo(row);
48910
+ input = $('<input type="password">').css('width','70%').attr('id', elId).appendTo(row);
48886
48911
  if (node.credentials) {
48887
48912
  if (node.credentials[tenv.name]) {
48888
48913
  input.val(node.credentials[tenv.name]);
@@ -49128,7 +49153,7 @@ RED.subflow = (function() {
49128
49153
  }
49129
49154
  break;
49130
49155
  case "cred":
49131
- item.value = input.val();
49156
+ item.value = input.typedInput('value');
49132
49157
  item.type = 'cred';
49133
49158
  break;
49134
49159
  case "spinner":