{
    "common": {
        "label": {
            "name": "Name",
            "ok": "Ok",
            "done": "Done",
            "cancel": "Cancel",
            "delete": "Delete",
            "close": "Close",
            "load": "Load",
            "save": "Save",
            "import": "Import",
            "export": "Export",
            "back": "Back",
            "next": "Next",
            "clone": "Clone project",
            "cont": "Continue",
            "style": "Style",
            "line": "Outline",
            "fill": "Fill",
            "label": "Label",
            "color": "Color",
            "position": "Position",
            "enable": "Enable",
            "disable": "Disable",
            "upload": "Upload",
            "lock": "Lock",
            "unlock": "Unlock",
            "locked": "Locked",
            "unlocked": "Unlocked"
        },
        "type": {
            "string": "string",
            "number": "number",
            "boolean": "boolean",
            "array": "array",
            "buffer": "buffer",
            "object": "object",
            "jsonString": "JSON string",
            "undefined": "undefined",
            "null": "null"
        }
    },
    "event": {
        "loadPlugins": "Loading Plugins",
        "loadPalette": "Loading Palette",
        "loadNodeCatalogs": "Loading Node catalogs",
        "loadNodes": "Loading Nodes __count__",
        "loadFlows": "Loading Flows",
        "importFlows": "Adding Flows to workspace",
        "importError": "<p>Error adding flows</p><p>__message__</p>",
        "loadingProject": "Loading project"
    },
    "workspace": {
        "defaultName": "Flow __number__",
        "editFlow": "Edit flow: __name__",
        "confirmDelete": "Confirm delete",
        "delete": "Are you sure you want to delete '__label__'?",
        "dropFlowHere": "Drop the flow here",
        "dropImageHere": "Drop the image here",
        "addFlow": "Add flow",
        "addFlowToRight": "Add flow to the right",
        "closeFlow": "Close flow",
        "hideFlow": "Hide flow",
        "hideOtherFlows": "Hide other flows",
        "showAllFlows": "Show all flows (__count__ hidden)",
        "hideAllFlows": "Hide all flows",
        "hiddenFlows": "List __count__ hidden flow",
        "hiddenFlows_plural": "List __count__ hidden flows",
        "showLastHiddenFlow": "Reopen hidden flow",
        "listFlows": "List flows",
        "listSubflows": "List subflows",
        "status": "Status",
        "enabled": "Enabled",
        "disabled": "Disabled",
        "info": "Description",
        "selectNodes": "Click nodes to select",
        "enableFlow": "Enable flow",
        "disableFlow": "Disable flow",
        "lockFlow": "Lock flow",
        "unlockFlow": "Unlock flow",
        "moveToStart": "Move flow to start",
        "moveToEnd": "Move flow to end"
    },
    "menu": {
        "label": {
            "view": {
                "view": "View",
                "grid": "Grid",
                "storeZoom": "Restore zoom level on load",
                "storePosition": "Restore scroll position on load",
                "showGrid": "Show grid",
                "snapGrid": "Snap to grid",
                "gridSize": "Grid size",
                "textDir": "Text Direction",
                "defaultDir": "Default",
                "ltr": "Left-to-right",
                "rtl": "Right-to-left",
                "auto": "Contextual",
                "language": "Language",
                "browserDefault": "Browser default"
            },
            "sidebar": {
                "show": "Show sidebar"
            },
            "palette": {
                "show": "Show palette"
            },
            "edit": "Edit",
            "settings": "Settings",
            "userSettings": "User Settings",
            "nodes": "Nodes",
            "displayStatus": "Show node status",
            "displayConfig": "Configuration nodes",
            "import": "Import",
            "importExample": "Import example flow",
            "export": "Export",
            "search": "Search flows",
            "searchInput": "search your flows",
            "subflows": "Subflows",
            "createSubflow": "Create Subflow",
            "selectionToSubflow": "Selection to Subflow",
            "flows": "Flows",
            "add": "Add",
            "delete": "Delete",
            "keyboardShortcuts": "Keyboard shortcuts",
            "login": "Login",
            "logout": "Logout",
            "editPalette": "Manage palette",
            "other": "Other",
            "showTips": "Show tips",
            "showNodeHelp": "Show node help",
            "enableSelectedNodes": "Enable selected nodes",
            "disableSelectedNodes": "Disable selected nodes",
            "showSelectedNodeLabels": "Show selected node labels",
            "hideSelectedNodeLabels": "Hide selected node labels",
            "showWelcomeTours": "Show guided tours for new versions",
            "help": "Node-RED website",
            "projects": "Projects",
            "projects-new": "New",
            "projects-open": "Open",
            "projects-settings": "Project Settings",
            "showNodeLabelDefault": "Show label of newly added nodes",
            "codeEditor": "Code Editor",
            "groups": "Groups",
            "groupSelection": "Group selection",
            "ungroupSelection": "Ungroup selection",
            "groupMergeSelection": "Merge selection",
            "groupRemoveSelection": "Remove from group",
            "arrange": "Arrange",
            "alignLeft": "Align to left",
            "alignCenter": "Align to center",
            "alignRight": "Align to right",
            "alignTop": "Align to top",
            "alignMiddle": "Align to middle",
            "alignBottom": "Align to bottom",
            "distributeHorizontally": "Distribute horizontally",
            "distributeVertically": "Distribute vertically",
            "moveToBack": "Move to back",
            "moveToFront": "Move to front",
            "moveBackwards": "Move backwards",
            "moveForwards": "Move forwards"
        }
    },
    "actions": {
        "toggle-navigator": "Toggle navigator",
        "zoom-out": "Zoom out",
        "zoom-reset": "Reset zoom",
        "zoom-in": "Zoom in",
        "search-flows": "Search flows",
        "search-prev": "Previous",
        "search-next": "Next",
        "search-counter": "\"__term__\" __result__ of __count__"
    },
    "user": {
        "loggedInAs": "Logged in as __name__",
        "username": "Username",
        "password": "Password",
        "login": "Login",
        "loginFailed": "Login failed",
        "notAuthorized": "Not authorized",
        "errors": {
            "settings": "You must be logged in to access settings",
            "deploy": "You must be logged in to deploy changes",
            "notAuthorized": "You must be logged in to perform this action"
        }
    },
    "notification": {
        "state": {
            "flowsStopped": "Flows stopped",
            "flowsStarted": "Flows started"
        },
        "warning": "<strong>Warning</strong>: __message__",
        "warnings": {
            "undeployedChanges": "node has undeployed changes",
            "nodeActionDisabled": "node actions disabled",
            "nodeActionDisabledSubflow": "node actions disabled within subflow",
            "missing-types": "<p>Flows stopped due to missing node types.</p>",
            "missing-modules": "<p>Flows stopped due to missing modules.</p>",
            "safe-mode": "<p>Flows stopped in safe mode.</p><p>You can modify your flows and deploy the changes to restart.</p>",
            "restartRequired": "Node-RED must be restarted to enable upgraded modules",
            "credentials_load_failed": "<p>Flows stopped as the credentials could not be decrypted.</p><p>The flow credential file is encrypted, but the project's encryption key is missing or invalid.</p>",
            "credentials_load_failed_reset": "<p>Credentials could not be decrypted</p><p>The flow credential file is encrypted, but the project's encryption key is missing or invalid.</p><p>The flow credential file will be reset on the next deployment. Any existing flow credentials will be cleared.</p>",
            "missing_flow_file": "<p>Project flow file not found.</p><p>The project is not configured with a flow file.</p>",
            "missing_package_file": "<p>Project package file not found.</p><p>The project is missing a package.json file.</p>",
            "project_empty": "<p>The project is empty.</p><p>Do you want to create a default set of project files?<br/>Otherwise, you will have to manually add files to the project outside of the editor.</p>",
            "project_not_found": "<p>Project '__project__' not found.</p>",
            "git_merge_conflict": "<p>Automatic merging of changes failed.</p><p>Fix the unmerged conflicts then commit the results.</p>"
        },
        "error": "<strong>Error</strong>: __message__",
        "errors": {
            "lostConnection": "Lost connection to server, reconnecting...",
            "lostConnectionReconnect": "Lost connection to server, reconnecting in __time__s.",
            "lostConnectionTry": "Try now",
            "cannotAddSubflowToItself": "Cannot add subflow to itself",
            "cannotAddCircularReference": "Cannot add subflow - circular reference detected",
            "unsupportedVersion": "<p>Using an unsupported version of Node.js</p><p>You should upgrade to the latest Node.js LTS release</p>",
            "failedToAppendNode": "<p>Failed to load '__module__'</p><p>__error__</p>"
        },
        "project": {
            "change-branch": "Change to local branch '__project__'",
            "merge-abort": "Git merge aborted",
            "loaded": "Project '__project__' loaded",
            "updated": "Project '__project__' updated",
            "pull": "Project '__project__' reloaded",
            "revert": "Project '__project__' reverted",
            "merge-complete": "Git merge completed",
            "setupCredentials": "Setup credentials",
            "setupProjectFiles": "Setup project files",
            "no": "No thanks",
            "createDefault": "Create default project files",
            "mergeConflict": "Show merge conflicts"
        },
        "label": {
            "manage-project-dep": "Manage project dependencies",
            "setup-cred": "Setup credentials",
            "setup-project": "Setup project files",
            "create-default-package": "Create default package file",
            "no-thanks": "No thanks",
            "create-default-project": "Create default project files",
            "show-merge-conflicts": "Show merge conflicts",
            "unknownNodesButton": "Search for unknown nodes"
        }
    },
    "clipboard": {
        "clipboard": "Clipboard",
        "nodes": "Nodes",
        "node": "__count__ node",
        "node_plural": "__count__ nodes",
        "configNode": "__count__ configuration node",
        "configNode_plural": "__count__ configuration nodes",
        "group": "__count__ group",
        "group_plural": "__count__ groups",
        "flow": "__count__ flow",
        "flow_plural": "__count__ flows",
        "subflow": "__count__ subflow",
        "subflow_plural": "__count__ subflows",
        "replacedNodes": "__count__ node replaced",
        "replacedNodes_plural": "__count__ nodes replaced",
        "pasteNodes": "Paste flow json or",
        "selectFile": "select a file to import",
        "importNodes": "Import nodes",
        "exportNodes": "Export nodes",
        "download": "Download",
        "importUnrecognised": "Imported unrecognised type:",
        "importUnrecognised_plural": "Imported unrecognised types:",
        "importDuplicate": "Imported duplicate node:",
        "importDuplicate_plural": "Imported duplicate nodes:",
        "nodesExported": "Nodes exported to clipboard",
        "nodesImported": "Imported:",
        "nodeCopied": "__count__ node copied",
        "nodeCopied_plural": "__count__ nodes copied",
        "groupCopied": "__count__ group copied",
        "groupCopied_plural": "__count__ groups copied",
        "groupStyleCopied": "Group style copied",
        "invalidFlow": "Invalid flow: __message__",
        "recoveredNodes": "Recovered Nodes",
        "recoveredNodesInfo": "The nodes on this flow were missing a valid flow id when they were imported. They have been added to this flow so you can either restore or delete them.",
        "recoveredNodesNotification": "<p>Imported nodes without a valid flow id</p><p>They have been added to a new flow called '__flowName__'.</p>",
        "export": {
            "selected": "selected nodes",
            "current": "current flow",
            "all": "all flows",
            "compact": "compact",
            "formatted": "formatted",
            "copy": "Copy to clipboard",
            "export": "Export to library",
            "exportAs": "Export as",
            "overwrite": "Replace",
            "exists": "<p><b>\"__file__\"</b> already exists.</p><p>Do you want to replace it?</p>"
        },
        "import": {
            "import": "Import to",
            "importSelected": "Import selected",
            "importCopy": "Import copy",
            "viewNodes": "View nodes...",
            "newFlow": "new flow",
            "replace": "replace",
            "errors": {
                "notArray": "Input not a JSON Array",
                "itemNotObject": "Input not a valid flow - item __index__ not a node object",
                "missingId": "Input not a valid flow - item __index__ missing 'id' property",
                "missingType": "Input not a valid flow - item __index__ missing 'type' property"
            },
            "conflictNotification1": "Some of the nodes you are importing already exist in your workspace.",
            "conflictNotification2": "Select which nodes to import and whether to replace the existing nodes, or to import a copy of them.",
            "alreadyExists": "This node already exists"
        },
        "copyMessagePath": "Path copied",
        "copyMessageValue": "Value copied",
        "copyMessageValue_truncated": "Truncated value copied"
    },
    "deploy": {
        "deploy": "Deploy",
        "full": "Full",
        "fullDesc": "Deploys everything in the workspace",
        "modifiedFlows": "Modified Flows",
        "modifiedFlowsDesc": "Only deploys flows that contain changed nodes",
        "modifiedNodes": "Modified Nodes",
        "modifiedNodesDesc": "Only deploys nodes that have changed",
        "startFlows": "Start",
        "startFlowsDesc": "Start Flows",
        "stopFlows": "Stop",
        "stopFlowsDesc": "Stop Flows",
        "restartFlows": "Restart Flows",
        "restartFlowsDesc": "Restarts the current deployed flows",
        "successfulDeploy": "Successfully deployed",
        "successfulRestart": "Successfully restarted flows",
        "deployFailed": "Deploy failed: __message__",
        "unusedConfigNodes": "You have some unused configuration nodes.",
        "unusedConfigNodesButton": "Search unused config nodes",
        "unknownNodesButton": "Search for unknown nodes",
        "invalidNodesButton": "Search for invalid nodes",
        "errors": {
            "noResponse": "no response from server"
        },
        "confirm": {
            "button": {
                "ignore": "Ignore",
                "confirm": "Confirm deploy",
                "review": "Review changes",
                "cancel": "Cancel",
                "merge": "Merge",
                "overwrite": "Ignore & deploy"
            },
            "undeployedChanges": "You have undeployed changes.\n\nLeaving this page will lose these changes.",
            "improperlyConfigured": "The workspace contains some nodes that are not properly configured:",
            "unknown": "The workspace contains some unknown node types:",
            "confirm": "Are you sure you want to deploy?",
            "doNotWarn": "do not warn about this again",
            "conflict": "The server is running a more recent set of flows.",
            "backgroundUpdate": "The flows on the server have been updated.",
            "conflictChecking": "Checking to see if the changes can be merged automatically",
            "conflictAutoMerge": "The changes include no conflicts and can be merged automatically.",
            "conflictManualMerge": "The changes include conflicts that must be resolved before they can be deployed.",
            "plusNMore": "+ __count__ more"
        }
    },
    "eventLog": {
        "title": "Event log",
        "view": "View log"
    },
    "diff": {
        "unresolvedCount": "__count__ unresolved conflict",
        "unresolvedCount_plural": "__count__ unresolved conflicts",
        "globalNodes": "Global nodes",
        "flowProperties": "Flow Properties",
        "type": {
            "added": "added",
            "changed": "changed",
            "unchanged": "unchanged",
            "deleted": "deleted",
            "flowDeleted": "flow deleted",
            "flowAdded": "flow added",
            "movedTo": "moved to __id__",
            "movedFrom": "moved from __id__"
        },
        "nodeCount": "__count__ node",
        "nodeCount_plural": "__count__ nodes",
        "local": "Local changes",
        "remote": "Remote changes",
        "reviewChanges": "Review Changes",
        "noBinaryFileShowed": "Cannot show binary file contents",
        "viewCommitDiff": "View Commit Changes",
        "compareChanges": "Compare Changes",
        "saveConflict": "Save conflict resolution",
        "conflictHeader": "<span>__resolved__</span> of <span>__unresolved__</span> conflicts resolved",
        "commonVersionError": "Common Version doesn't contain valid JSON:",
        "oldVersionError": "Old Version doesn't contain valid JSON:",
        "newVersionError": "New Version doesn't contain valid JSON:"
    },
    "subflow": {
        "editSubflowInstance": "Edit subflow instance: __name__",
        "editSubflow": "Edit subflow template: __name__",
        "edit": "Edit subflow template",
        "subflowInstances": "There is __count__ instance of this subflow template",
        "subflowInstances_plural": "There are __count__ instances of this subflow template",
        "editSubflowProperties": "edit properties",
        "input": "inputs:",
        "output": "outputs:",
        "status": "status node",
        "deleteSubflow": "delete subflow",
        "confirmDelete": "Are you sure you want to delete this subflow?",
        "info": "Description",
        "category": "Category",
        "module": "Module",
        "license": "License",
        "licenseNone": "none",
        "licenseOther": "Other",
        "type": "Node Type",
        "version": "Version",
        "versionPlaceholder": "x.y.z",
        "keys": "Keywords",
        "keysPlaceholder": "Comma-separated keywords",
        "author": "Author",
        "authorPlaceholder": "Your Name <email@example.com>",
        "desc": "Description",
        "env": {
            "restore": "Restore to subflow default",
            "remove": "Remove environment variable"
        },
        "errors": {
            "noNodesSelected": "<strong>Cannot create subflow</strong>: no nodes selected",
            "acrossMultipleGroups": "Cannot create subflow across multiple groups",
            "multipleInputsToSelection": "<strong>Cannot create subflow</strong>: multiple inputs to selection"
        }
    },
    "group": {
        "editGroup": "Edit group: __name__",
        "errors": {
            "cannotCreateDiffGroups": "Cannot create group using nodes from different groups",
            "cannotAddSubflowPorts": "Cannot add subflow ports to a group"
        }
    },
    "editor": {
        "configEdit": "Edit",
        "configAdd": "Add",
        "configUpdate": "Update",
        "configDelete": "Delete",
        "nodesUse": "__count__ node uses this config",
        "nodesUse_plural": "__count__ nodes use this config",
        "addNewConfig": "Add new __type__ config node",
        "editNode": "Edit __type__ node",
        "editConfig": "Edit __type__ config node",
        "addNewType": "Add new __type__...",
        "nodeProperties": "node properties",
        "label": "Label",
        "color": "Color",
        "portLabels": "Port labels",
        "labelInputs": "Inputs",
        "labelOutputs": "Outputs",
        "settingIcon": "Icon",
        "default": "default",
        "noDefaultLabel": "none",
        "defaultLabel": "use default label",
        "searchIcons": "Search icons",
        "useDefault": "use default",
        "description": "Description",
        "show": "Show",
        "hide": "Hide",
        "locale": "Select UI Language",
        "icon": "Icon",
        "inputType": "Input type",
        "selectType": "select types...",
        "loadCredentials": "Loading node credentials",
        "inputs": {
            "input": "input",
            "select": "select",
            "checkbox": "checkbox",
            "spinner": "spinner",
            "none": "none",
            "hidden": "hide property"
        },
        "types": {
            "str": "string",
            "num": "number",
            "bool": "bool",
            "json": "JSON",
            "bin": "buffer",
            "env": "env variable",
            "cred": "credential"
        },
        "menu": {
            "input": "input",
            "select": "select",
            "checkbox": "checkbox",
            "spinner": "spinner",
            "hidden": "label only"
        },
        "select": {
            "label": "Label",
            "value": "Value"
        },
        "spinner": {
            "min": "Minimum",
            "max": "Maximum"
        },
        "errors": {
            "scopeChange": "Changing the scope will make it unavailable to nodes in other flows that use it",
            "invalidProperties": "Invalid properties:",
            "credentialLoadFailed": "Failed to load node credentials"
        }
    },
    "keyboard": {
        "title": "Keyboard Shortcuts",
        "keyboard": "Keyboard",
        "filterActions": "filter actions",
        "shortcut": "shortcut",
        "scope": "scope",
        "unassigned": "Unassigned",
        "global": "global",
        "workspace": "workspace",
        "editor": "edit dialog",
        "selectAll": "Select all",
        "selectNone": "Select none",
        "selectAllConnected": "Select connected",
        "addRemoveNode": "Add/remove node from selection",
        "editSelected": "Edit selected node",
        "deleteSelected": "Delete selection",
        "deleteReconnect": "Delete and reconnect",
        "importNode": "Import nodes",
        "exportNode": "Export nodes",
        "nudgeNode": "Move selected nodes (1px)",
        "moveNode": "Move selected nodes (20px)",
        "toggleSidebar": "Toggle sidebar",
        "togglePalette": "Toggle palette",
        "copyNode": "Copy selected nodes",
        "cutNode": "Cut selected nodes",
        "pasteNode": "Paste nodes",
        "copyGroupStyle": "Copy group style",
        "pasteGroupStyle": "Paste group style",
        "undoChange": "Undo",
        "redoChange": "Redo",
        "searchBox": "Open search box",
        "managePalette": "Manage palette",
        "actionList": "Action list",
        "splitWireWithLinks": "Split selection with Link nodes"
    },
    "library": {
        "library": "Library",
        "openLibrary": "Open Library...",
        "saveToLibrary": "Save to Library...",
        "typeLibrary": "__type__ library",
        "unnamedType": "Unnamed __type__",
        "exportedToLibrary": "Nodes exported to library",
        "dialogSaveOverwrite": "A __libraryType__ called __libraryName__ already exists. Overwrite?",
        "invalidFilename": "Invalid filename",
        "savedNodes": "Saved nodes",
        "savedType": "Saved __type__",
        "saveFailed": "Save failed: __message__",
        "newFolder": "New folder",
        "types": {
            "local": "Local",
            "examples": "Examples"
        }
    },
    "palette": {
        "noInfo": "no information available",
        "filter": "filter nodes",
        "search": "search modules",
        "addCategory": "Add new...",
        "label": {
            "subflows": "subflows",
            "network": "network",
            "common": "common",
            "input": "input",
            "output": "output",
            "function": "function",
            "sequence": "sequence",
            "parser": "parser",
            "social": "social",
            "storage": "storage",
            "analysis": "analysis",
            "advanced": "advanced"
        },
        "actions": {
            "collapse-all": "Collapse all categories",
            "expand-all": "Expand all categories"
        },
        "event": {
            "nodeAdded": "Node added to palette:",
            "nodeAdded_plural": "Nodes added to palette:",
            "nodeRemoved": "Node removed from palette:",
            "nodeRemoved_plural": "Nodes removed from palette:",
            "nodeEnabled": "Node enabled:",
            "nodeEnabled_plural": "Nodes enabled:",
            "nodeDisabled": "Node disabled:",
            "nodeDisabled_plural": "Nodes disabled:",
            "nodeUpgraded": "Node module __module__ upgraded to version __version__",
            "unknownNodeRegistered": "Error loading node: <ul><li>__type__<br>__error__</li></ul>"
        },
        "editor": {
            "title": "Manage palette",
            "palette": "Palette",
            "allCatalogs": "All Catalogs",
            "times": {
                "seconds": "seconds ago",
                "minutes": "minutes ago",
                "minutesV": "__count__ minutes ago",
                "hoursV": "__count__ hour ago",
                "hoursV_plural": "__count__ hours ago",
                "daysV": "__count__ day ago",
                "daysV_plural": "__count__ days ago",
                "weeksV": "__count__ week ago",
                "weeksV_plural": "__count__ weeks ago",
                "monthsV": "__count__ month ago",
                "monthsV_plural": "__count__ months ago",
                "yearsV": "__count__ year ago",
                "yearsV_plural": "__count__ years ago",
                "yearMonthsV": "__y__ year, __count__ month ago",
                "yearMonthsV_plural": "__y__ year, __count__ months ago",
                "yearsMonthsV": "__y__ years, __count__ month ago",
                "yearsMonthsV_plural": "__y__ years, __count__ months ago"
            },
            "nodeCount": "__label__ node",
            "nodeCount_plural": "__label__ nodes",
            "moduleCount": "__count__ module available",
            "moduleCount_plural": "__count__ modules available",
            "inuse": "in use",
            "enableall": "enable all",
            "disableall": "disable all",
            "enable": "enable",
            "disable": "disable",
            "remove": "remove",
            "update": "update to __version__",
            "updated": "updated",
            "install": "install",
            "installed": "installed",
            "conflict": "conflict",
            "conflictTip": "<p>This module cannot be installed as it includes a<br/>node type that has already been installed</p><p>Conflicts with <code>__module__</code></p>",
            "loading": "Loading catalogues...",
            "tab-nodes": "Nodes",
            "tab-install": "Install",
            "sort": "sort:",
            "sortRelevance": "relevance",
            "sortAZ": "a-z",
            "sortRecent": "recent",
            "more": "+ __count__ more",
            "upload": "Upload module tgz file",
            "refresh": "Refresh module list",
            "errors": {
                "catalogLoadFailed": "<p>Failed to load node catalogue.</p><p>Check the browser console for more information</p>",
                "installFailed": "<p>Failed to install: __module__</p><p>__message__</p><p>Check the log for more information</p>",
                "removeFailed": "<p>Failed to remove: __module__</p><p>__message__</p><p>Check the log for more information</p>",
                "updateFailed": "<p>Failed to update: __module__</p><p>__message__</p><p>Check the log for more information</p>",
                "enableFailed": "<p>Failed to enable: __module__</p><p>__message__</p><p>Check the log for more information</p>",
                "disableFailed": "<p>Failed to disable: __module__</p><p>__message__</p><p>Check the log for more information</p>"
            },
            "confirm": {
                "install": {
                    "body": "<p>Installing '__module__'</p><p>Before installing, please read the node's documentation. Some nodes have dependencies that cannot be automatically resolved and can require a restart of Node-RED.</p>",
                    "title": "Install nodes"
                },
                "remove": {
                    "body": "<p>Removing '__module__'</p><p>Removing the node will uninstall it from Node-RED. The node may continue to use resources until Node-RED is restarted.</p>",
                    "title": "Remove nodes"
                },
                "update": {
                    "body": "<p>Updating '__module__'</p><p>Updating the node will require a restart of Node-RED to complete the update. This must be done manually.</p>",
                    "title": "Update nodes"
                },
                "cannotUpdate": {
                    "body": "An update for this node is available, but it is not installed in a location that the palette manager can update.<br/><br/>Please refer to the documentation for how to update this node."
                },
                "button": {
                    "review": "Open node information",
                    "install": "Install",
                    "remove": "Remove",
                    "update": "Update"
                }
            }
        }
    },
    "sidebar": {
        "info": {
            "name": "Information",
            "tabName": "Name",
            "label": "info",
            "node": "Node",
            "type": "Type",
            "group": "Group",
            "module": "Module",
            "id": "ID",
            "status": "Status",
            "enabled": "Enabled",
            "disabled": "Disabled",
            "subflow": "Subflow",
            "instances": "Instances",
            "properties": "Properties",
            "info": "Information",
            "desc": "Description",
            "blank": "blank",
            "null": "null",
            "showMore": "show more",
            "showLess": "show less",
            "flow": "Flow",
            "selection": "Selection",
            "nodes": "__count__ nodes",
            "flowDesc": "Flow Description",
            "subflowDesc": "Subflow Description",
            "nodeHelp": "Node Help",
            "none": "None",
            "arrayItems": "__count__ items",
            "showTips": "You can open the tips from the settings panel",
            "outline": "Outline",
            "empty": "empty",
            "globalConfig": "Global Configuration Nodes",
            "triggerAction": "Trigger action",
            "find": "Find in workspace",
            "copyItemUrl": "Copy item url",
            "copyURL2Clipboard": "Copied url to clipboard",
            "showFlow": "Show",
            "hideFlow": "Hide"
        },
        "help": {
            "name": "Help",
            "label": "help",
            "search": "Search help",
            "nodeHelp": "Node Help",
            "showHelp": "Show help",
            "showInOutline": "Show in outline",
            "showTopics": "Show topics",
            "noHelp": "No help topic selected",
            "changeLog": "Change Log"
        },
        "config": {
            "name": "Configuration nodes",
            "label": "config",
            "global": "On all flows",
            "none": "none",
            "subflows": "subflows",
            "flows": "flows",
            "filterAll": "all",
            "showAllConfigNodes": "Show all config nodes",
            "filterUnused": "unused",
            "showAllUnusedConfigNodes": "Show all unused config nodes",
            "filtered": "__count__ hidden"
        },
        "context": {
            "name": "Context Data",
            "label": "context",
            "none": "none selected",
            "refresh": "refresh to load",
            "empty": "empty",
            "node": "Node",
            "flow": "Flow",
            "global": "Global",
            "deleteConfirm": "Are you sure you want to delete this item?",
            "autoRefresh": "Refresh on selection change",
            "refrsh": "Refresh",
            "delete": "Delete"
        },
        "palette": {
            "name": "Palette management",
            "label": "palette"
        },
        "project": {
            "label": "project",
            "name": "Project",
            "description": "Description",
            "dependencies": "Dependencies",
            "settings": "Settings",
            "noSummaryAvailable": "No summary available",
            "editDescription": "Edit project description",
            "editDependencies": "Edit project dependencies",
            "noDescriptionAvailable": "No description available",
            "editReadme": "Edit README.md",
            "showProjectSettings": "Show project settings",
            "projectSettings": {
                "title": "Project Settings",
                "edit": "edit",
                "none": "None",
                "install": "install",
                "removeFromProject": "remove from project",
                "addToProject": "add to project",
                "files": "Files",
                "flow": "Flow",
                "credentials": "Credentials",
                "package": "Package",
                "packageCreate": "File will be created when changes are saved",
                "fileNotExist": "File does not exist",
                "selectFile": "Select File",
                "invalidEncryptionKey": "Invalid encryption key",
                "encryptionEnabled": "Encryption enabled",
                "encryptionDisabled": "Encryption disabled",
                "setTheEncryptionKey": "Set the encryption key",
                "resetTheEncryptionKey": "Reset the encryption key",
                "changeTheEncryptionKey": "Change the encryption key",
                "currentKey": "Current key",
                "newKey": "New key",
                "credentialsAlert": "This will delete all existing credentials",
                "versionControl": "Version Control",
                "branches": "Branches",
                "noBranches": "No branches",
                "deleteConfirm": "Are you sure you want to delete the local branch '__name__'? This cannot be undone.",
                "unmergedConfirm": "The local branch '__name__' has unmerged changes that will be lost. Are you sure you want to delete it?",
                "deleteUnmergedBranch": "Delete unmerged branch",
                "gitRemotes": "Git remotes",
                "addRemote": "add remote",
                "addRemote2": "Add remote",
                "remoteName": "Remote name",
                "nameRule": "Must contain only A-Z 0-9 _ -",
                "url": "URL",
                "urlRule": "https://, ssh:// or file://",
                "urlRule2": "Do not include the username/password in the URL",
                "noRemotes": "No remotes",
                "deleteRemoteConfrim": "Are you sure you want to delete the remote '__name__'?",
                "deleteRemote": "Delete remote"
            },
            "userSettings": {
                "committerDetail": "Committer Details",
                "committerTip": "Leave blank to use system default",
                "userName": "Username",
                "email": "Email",
                "workflow": "Workflow",
                "workfowTip": "Choose your preferred git workflow",
                "workflowManual": "Manual",
                "workflowManualTip": "All changes must be manually committed under the 'history' sidebar",
                "workflowAuto": "Automatic",
                "workflowAutoTip": "Changes are committed automatically with every deploy",
                "sshKeys": "SSH Keys",
                "sshKeysTip": "Allows you to create secure connections to remote git repositories.",
                "add": "add key",
                "addSshKey": "Add SSH Key",
                "addSshKeyTip": "Generate a new public/private key pair",
                "name": "Name",
                "nameRule": "Must contain only A-Z 0-9 _ -",
                "passphrase": "Passphrase",
                "passphraseShort": "Passphrase too short",
                "optional": "Optional",
                "cancel": "Cancel",
                "generate": "Generate key",
                "noSshKeys": "No SSH keys",
                "copyPublicKey": "Copy public key to clipboard",
                "delete": "Delete key",
                "gitConfig": "Git config",
                "deleteConfirm": "Are you sure you want to delete the SSH key __name__? This cannot be undone."
            },
            "versionControl": {
                "unstagedChanges": "Unstaged changes",
                "stagedChanges": "Staged changes",
                "unstageChange": "Unstage change",
                "stageChange": "Stage change",
                "unstageAllChange": "Unstage all changes",
                "stageAllChange": "Stage all changes",
                "commitChanges": "Commit changes",
                "resolveConflicts": "Resolve conflicts",
                "head": "HEAD",
                "staged": "Staged",
                "unstaged": "Unstaged",
                "local": "Local",
                "remote": "Remote",
                "revert": "Are you sure you want to revert the changes to '__file__'? This cannot be undone.",
                "revertChanges": "Revert changes",
                "localChanges": "Local Changes",
                "none": "None",
                "conflictResolve": "All conflicts resolved. Commit the changes to complete the merge.",
                "localFiles": "Local files",
                "all": "all",
                "unmergedChanges": "Unmerged changes",
                "abortMerge": "abort merge",
                "commit": "commit",
                "changeToCommit": "Changes to commit",
                "commitPlaceholder": "Enter your commit message",
                "cancelCapital": "Cancel",
                "commitCapital": "Commit",
                "commitHistory": "Commit History",
                "branch": "Branch:",
                "moreCommits": " more commit(s)",
                "changeLocalBranch": "Change local branch",
                "createBranchPlaceholder": "Find or create a branch",
                "upstream": "upstream",
                "localOverwrite": "You have local changes that would be overwritten by changing the branch. You must either commit or undo those changes first.",
                "manageRemoteBranch": "Manage remote branch",
                "unableToAccess": "Unable to access remote repository",
                "retry": "Retry",
                "setUpstreamBranch": "Set as upstream branch",
                "createRemoteBranchPlaceholder": "Find or create a remote branch",
                "trackedUpstreamBranch": "The created branch will be set as the tracked upstream branch.",
                "selectUpstreamBranch": "The branch will be created. Select below to set it as the tracked upstream branch.",
                "pushFailed": "Push failed as the remote has more recent commits. Pull and merge first, then push again.",
                "push": "push",
                "pull": "pull",
                "unablePull": "<p>Unable to pull remote changes; your unstaged local changes would be overwritten.</p><p>Commit your changes and try again.</p>",
                "showUnstagedChanges": "Show unstaged changes",
                "connectionFailed": "Could not connect to remote repository: ",
                "pullUnrelatedHistory": "<p>The remote has an unrelated history of commits.</p><p>Are you sure you want to pull the changes into your local repository?</p>",
                "pullChanges": "Pull changes",
                "history": "history",
                "projectHistory": "Project History",
                "daysAgo": "__count__ day ago",
                "daysAgo_plural": "__count__ days ago",
                "hoursAgo": "__count__ hour ago",
                "hoursAgo_plural": "__count__ hours ago",
                "minsAgo": "__count__ min ago",
                "minsAgo_plural": "__count__ mins ago",
                "secondsAgo": "Seconds ago",
                "notTracking": "Your local branch is not currently tracking a remote branch.",
                "statusUnmergedChanged": "Your repository has unmerged changes. You need to fix the conflicts and commit the result.",
                "repositoryUpToDate": "Your repository is up to date.",
                "commitsAhead": "Your repository is __count__ commit ahead of the remote. You can push this commit now.",
                "commitsAhead_plural": "Your repository is __count__ commits ahead of the remote. You can push these commits now.",
                "commitsBehind": "Your repository is __count__ commit behind of the remote. You can pull this commit now.",
                "commitsBehind_plural": "Your repository is __count__ commits behind of the remote. You can pull these commits now.",
                "commitsAheadAndBehind1": "Your repository is __count__ commit behind and ",
                "commitsAheadAndBehind1_plural": "Your repository is __count__ commits behind and ",
                "commitsAheadAndBehind2": "__count__ commit ahead of the remote. ",
                "commitsAheadAndBehind2_plural": "__count__ commits ahead of the remote. ",
                "commitsAheadAndBehind3": "You must pull the remote commit down before pushing.",
                "commitsAheadAndBehind3_plural": "You must pull the remote commits down before pushing.",
                "refreshCommitHistory": "Refresh commit history",
                "refreshChanges": "Refresh changes"
            }
        }
    },
    "typedInput": {
        "type": {
            "str": "string",
            "num": "number",
            "re": "regular expression",
            "bool": "boolean",
            "json": "JSON",
            "bin": "buffer",
            "date": "timestamp",
            "jsonata": "expression",
            "env": "env variable",
            "cred": "credential"
        }
    },
    "editableList": {
        "add": "add",
        "addTitle": "add an item"
    },
    "search": {
        "history": "Search history",
        "clear": "clear all",
        "empty": "No matches found",
        "addNode": "add a node...",
        "options": {
            "configNodes": "Configuration nodes",
            "unusedConfigNodes": "Unused configuration nodes",
            "invalidNodes": "Invalid nodes",
            "uknownNodes": "Unknown nodes",
            "unusedSubflows": "Unused subflows",
            "hiddenFlows": "Hidden flows",
            "modifiedNodes": "Modified nodes and flows",
            "thisFlow": "Current flow"
        }
    },
    "expressionEditor": {
        "functions": "Functions",
        "functionReference": "Function reference",
        "insert": "Insert",
        "title": "JSONata Expression editor",
        "test": "Test",
        "data": "Example message",
        "result": "Result",
        "format": "format expression",
        "compatMode": "Compatibility mode enabled",
        "compatModeDesc": "<h3>JSONata compatibility mode</h3><p> The current expression appears to still reference <code>msg</code> so will be evaluated in compatibility mode. Please update the expression to not use <code>msg</code> as this mode will be removed in the future.</p><p> When JSONata support was first added to Node-RED, it required the expression to reference the <code>msg</code> object. For example <code>msg.payload</code> would be used to access the payload.</p><p> That is no longer necessary as the expression will be evaluated against the message directly. To access the payload, the expression should be just <code>payload</code>.</p>",
        "noMatch": "No matching result",
        "errors": {
            "invalid-expr": "Invalid JSONata expression:\n  __message__",
            "invalid-msg": "Invalid example JSON message:\n  __message__",
            "context-unsupported": "Cannot test context functions\n $flowContext or $globalContext",
            "env-unsupported": "Cannot test $env function",
            "moment-unsupported": "Cannot test $moment function",
            "clone-unsupported": "Cannot test $clone function",
            "eval": "Error evaluating expression:\n  __message__"
        }
    },
    "monaco": {
        "setTheme": "Set theme"
    },
    "jsEditor": {
        "title": "JavaScript editor"
    },
    "textEditor": {
        "title": "Text editor"
    },
    "jsonEditor": {
        "title": "JSON editor",
        "format": "format JSON",
        "rawMode": "Edit JSON",
        "uiMode": "Visual editor",
        "rawMode-readonly": "JSON",
        "uiMode-readonly": "Visual",
        "insertAbove": "Insert above",
        "insertBelow": "Insert below",
        "addItem": "Add item",
        "copyPath": "Copy path to item",
        "expandItems": "Expand items",
        "collapseItems": "Collapse items",
        "duplicate": "Duplicate",
        "error": {
            "invalidJSON": "Invalid JSON: "
        }
    },
    "markdownEditor": {
        "title": "Markdown editor",
        "expand": "Expand",
        "format": "Formatted with markdown",
        "heading1": "Heading 1",
        "heading2": "Heading 2",
        "heading3": "Heading 3",
        "bold": "Bold",
        "italic": "Italic",
        "code": "Code",
        "ordered-list": "Ordered list",
        "unordered-list": "Unordered list",
        "quote": "Quote",
        "link": "Link",
        "horizontal-rule": "Horizontal rule",
        "toggle-preview": "Toggle preview",
        "mermaid": {
            "summary": "Mermaid Diagram"
        }
    },
    "bufferEditor": {
        "title": "Buffer editor",
        "modeString": "Handle as UTF-8 String",
        "modeArray": "Handle as JSON array",
        "modeDesc": "<h3>Buffer editor</h3><p>The Buffer type is stored as a JSON array of byte values. The editor will attempt to parse the entered value as a JSON array. If it is not valid JSON, it will be treated as a UTF-8 String and converted to an array of the individual character code points.</p><p>For example, a value of <code>Hello World</code> will be converted to the JSON array:<pre>[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]</pre></p>"
    },
    "projects": {
        "config-git": "Configure Git client",
        "welcome": {
            "hello": "Hello! We have introduced 'projects' to Node-RED.",
            "desc0": "This is a new way for you to manage your flow files and includes version control of your flows.",
            "desc1": "To get started you can create your first project or clone an existing project from a git repository.",
            "desc2": "If you are not sure, you can skip this for now. You will still be able to create your first project from the 'Projects' menu at any time.",
            "create": "Create Project",
            "clone": "Clone Repository",
            "openExistingProject": "Open existing project",
            "not-right-now": "Not right now"
        },
        "git-config": {
            "setup": "Setup your version control client",
            "desc0": "Node-RED uses the open source tool Git for version control. It tracks changes to your project files and lets you push them to remote repositories.",
            "desc1": "When you commit a set of changes, Git records who made the changes with a username and email address. The Username can be anything you want - it does not need to be your real name.",
            "desc2": "Your Git client is already configured with the details below.",
            "desc3": "You can change these settings later under the 'Git config' tab of the settings dialog.",
            "username": "Username",
            "email": "Email"
        },
        "project-details": {
            "create": "Create your project",
            "desc0": "A project is maintained as a Git repository. It makes it much easier to share your flows with others and to collaborate on them.",
            "desc1": "You can create multiple projects and quickly switch between them from the editor.",
            "desc2": "To begin, your project needs a name and an optional description.",
            "already-exists": "Project already exists",
            "must-contain": "Must contain only A-Z 0-9 _ -",
            "project-name": "Project name",
            "desc": "Description",
            "opt": "Optional"
        },
        "clone-project": {
            "clone": "Clone a project",
            "desc0": "If you already have a git repository containing a project, you can clone it to get started.",
            "already-exists": "Project already exists",
            "must-contain": "Must contain only A-Z 0-9 _ -",
            "project-name": "Project name",
            "no-info-in-url": "Do not include the username/password in the url",
            "git-url": "Git repository URL",
            "protocols": "https://, ssh:// or file://",
            "auth-failed": "Authentication failed",
            "username": "Username",
            "passwd": "Password",
            "ssh-key": "SSH Key",
            "passphrase": "Passphrase",
            "ssh-key-desc": "Before you can clone a repository over ssh you must add an SSH key to access it.",
            "ssh-key-add": "Add an ssh key",
            "credential-key": "Credentials encryption key",
            "cant-get-ssh-key": "Error! Can't get selected SSH key path.",
            "already-exists2": "already exists",
            "git-error": "git error",
            "connection-failed": "Connection failed",
            "not-git-repo": "Not a git repository",
            "repo-not-found": "Repository not found"
        },
        "default-files": {
            "create": "Create your project files",
            "desc0": "A project contains your flow files, a README file and a package.json file.",
            "desc1": "It can contain any other files you want to maintain in the Git repository.",
            "desc2": "Your existing flow and credential files will be copied into the project.",
            "flow-file": "Flow file",
            "credentials-file": "Credentials file"
        },
        "encryption-config": {
            "setup": "Setup encryption of your credentials file",
            "desc0": "Your flow credentials file can be encrypted to keep its contents secure.",
            "desc1": "If you want to store these credentials in a public Git repository, you must encrypt them by providing a secret key phrase.",
            "desc2": "Your flow credentials file is not currently encrypted.",
            "desc3": "That means its contents, such as passwords and access tokens, can be read by anyone with access to the file.",
            "desc4": "If you want to store these credentials in a public Git repository, you must encrypt them by providing a secret key phrase.",
            "desc5": "Your flow credentials file is currently encrypted using the credentialSecret property from your settings file as the key.",
            "desc6": "Your flow credentials file is currently encrypted using a system-generated key. You should provide a new secret key for this project.",
            "desc7": "The key will be stored separately from your project files. You will need to provide the key to use this project in another instance of Node-RED.",
            "credentials": "Credentials",
            "enable": "Enable encryption",
            "disable": "Disable encryption",
            "disabled": "disabled",
            "copy": "Copy over existing key",
            "use-custom": "Use custom key",
            "desc8": "The credentials file will not be encrypted and its contents easily read",
            "create-project-files": "Create project files",
            "create-project": "Create project",
            "already-exists": "already exists",
            "git-error": "git error",
            "git-auth-error": "git auth error"
        },
        "create-success": {
            "success": "You have successfully created your first project!",
            "desc0": "You can now continue to use Node-RED just as you always have.",
            "desc1": "The 'info' tab in the sidebar shows you what your current active project is. The button next to the name can be used to access the project settings view.",
            "desc2": "The 'history' tab in the sidebar can be used to view files that have changed in your project and to commit them. It shows you a complete history of your commits and allows you to push your changes to a remote repository."
        },
        "create": {
            "projects": "Projects",
            "already-exists": "Project already exists",
            "must-contain": "Must contain only A-Z 0-9 _ -",
            "no-info-in-url": "Do not include the username/password in the url",
            "open": "Open Project",
            "create": "Create Project",
            "clone": "Clone Repository",
            "project-name": "Project name",
            "desc": "Description",
            "opt": "Optional",
            "flow-file": "Flow file",
            "credentials": "Credentials",
            "enable-encryption": "Enable encryption",
            "disable-encryption": "Disable encryption",
            "encryption-key": "Encryption key",
            "desc0": "A phrase to secure your credentials with",
            "desc1": "The credentials file will not be encrypted and its contents easily read",
            "git-url": "Git repository URL",
            "protocols": "https://, ssh:// or file://",
            "auth-failed": "Authentication failed",
            "username": "Username",
            "password": "Password",
            "ssh-key": "SSH Key",
            "passphrase": "Passphrase",
            "desc2": "Before you can clone a repository over ssh you must add an SSH key to access it.",
            "add-ssh-key": "Add an ssh key",
            "credentials-encryption-key": "Credentials encryption key",
            "already-exists-2": "already exists",
            "git-error": "git error",
            "con-failed": "Connection failed",
            "not-git": "Not a git repository",
            "no-resource": "Repository not found",
            "cant-get-ssh-key-path": "Error! Can't get selected SSH key path.",
            "unexpected_error": "unexpected_error",
            "clearContext": "Clear context when switching projects"
        },
        "delete": {
            "confirm": "Are you sure you want to delete this project?"
        },
        "create-project-list": {
            "search": "search your projects",
            "current": "current"
        },
        "require-clean": {
            "confirm": "<p>You have undeployed changes that will be lost.</p><p>Do you want to continue?</p>"
        },
        "send-req": {
            "auth-req": "Authentication required for repository",
            "username": "Username",
            "password": "Password",
            "passphrase": "Passphrase",
            "retry": "Retry",
            "update-failed": "Failed to update auth",
            "unhandled": "Unhandled error response",
            "host-key-verify-failed": "<p>Host key verification failed.</p><p>The repository host key could not be verified. Please update your <code>known_hosts</code> file and try again.</p>"
        },
        "create-branch-list": {
            "invalid": "Invalid branch",
            "create": "Create branch",
            "current": "current"
        },
        "create-default-file-set": {
            "no-active": "Cannot create default file set without an active project",
            "no-empty": "Cannot create default file set on a non-empty project",
            "git-error": "git error"
        },
        "errors": {
            "no-username-email": "Your Git client is not configured with a username/email.",
            "unexpected": "An unexpected error occurred",
            "code": "code"
        }
    },
    "editor-tab": {
        "properties": "Properties",
        "envProperties": "Environment Variables",
        "module": "Module Properties",
        "description": "Description",
        "appearance": "Appearance",
        "preview": "UI Preview",
        "defaultValue": "Default value"
    },
    "tourGuide": {
        "takeATour": "Take a tour",
        "start": "Start",
        "next": "Next",
        "welcomeTours": "Welcome Tours"
    },
    "diagnostics": {
        "title": "System Info"
    },
    "languages": {
        "de": "Deutsch",
        "en-US": "English",
        "es-ES": "Español (España)",
        "fr": "Français",
        "ja": "日本語",
        "ko": "Korean",
        "pt-BR": "Português (Brasil)",
        "ru": "Русский",
        "zh-CN": "简体中文",
        "zh-TW": "繁體中文"
    },
    "validator": {
        "errors": {
            "invalid-json": "Invalid JSON data: __error__",
            "invalid-expr": "Invalid JSONata expression: __error__",
            "invalid-prop": "Invalid property expression",
            "invalid-num": "Invalid number",
            "invalid-num-prop": "__prop__: invalid number",
            "invalid-regexp": "Invalid input pattern",
            "invalid-regex-prop": "__prop__: invalid input pattern",
            "missing-required-prop": "__prop__: property value missing",
            "invalid-config": "__prop__: invalid configuration node",
            "missing-config": "__prop__: missing configuration node",
            "validation-error": "__prop__: validation error: __node__, __id__: __error__"
        }
    },
    "contextMenu": {
        "showActionList": "Show action list",
        "insert": "Insert",
        "node": "Node",
        "junction": "Junction",
        "linkNodes": "Link Nodes"
    },
    "env-var": {
        "environment": "Environment",
        "header": "Global Environment Variables",
        "revert": "Revert"
    }
}
