From 392ed706fdd4a33333ec35a5a7b7ae49b0130c98 Mon Sep 17 00:00:00 2001 From: Hiroyasu Nishiyama Date: Sat, 26 May 2018 14:21:30 +0900 Subject: [PATCH] add i18n support for projects interface and Japanese message catalogue --- editor/js/ui/projects/projects.js | 319 +++++++++++------------ red/api/editor/locales/en-US/editor.json | 168 +++++++++++- red/api/editor/locales/ja/editor.json | 168 +++++++++++- 3 files changed, 492 insertions(+), 163 deletions(-) diff --git a/editor/js/ui/projects/projects.js b/editor/js/ui/projects/projects.js index d7c2787d8..71a19d661 100644 --- a/editor/js/ui/projects/projects.js +++ b/editor/js/ui/projects/projects.js @@ -22,18 +22,18 @@ RED.projects = (function() { function reportUnexpectedError(error) { var notification; if (error.error === 'git_missing_user') { - notification = RED.notify("

You Git client is not configured with a username/email.

",{ + notification = RED.notify("

"+RED._("projects.errors.no-username-email")+"

",{ fixed: true, type:'error', buttons: [ { - text: "Cancel", + text: RED._("common.label.cancel"), click: function() { notification.close(); } }, { - text: "Configure Git client", + text: RED._("projects.config-git"), click: function() { RED.userSettings.show('gitconfig'); notification.close(); @@ -43,13 +43,13 @@ RED.projects = (function() { }) } else { console.log(error); - notification = RED.notify("

An unexpected error occurred:

"+error.message+"

code: "+error.error+"",{ + notification = RED.notify("

"+RED._("projects.errors.unexpected")+":

"+error.message+"

"+RED._("projects.errors.code")+": "+error.error+"",{ fixed: true, modal: true, type: 'error', buttons: [ { - text: "Close", + text: RED._("common.label.close"), click: function() { notification.close(); } @@ -75,14 +75,14 @@ RED.projects = (function() { migrateProjectHeader.appendTo(container); var body = $('
').appendTo(container); - $('

').text("Hello! We have introduced 'projects' to Node-RED.").appendTo(body); - $('

').text("This is a new way for you to manage your flow files and includes version control of your flows.").appendTo(body); - $('

').text("To get started you can create your first project or clone an existing project from a git repository.").appendTo(body); - $('

').text("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.").appendTo(body); + $('

').text(RED._("projects.welcome.hello")).appendTo(body); + $('

').text(RED._("projects.welcome.desc0")).appendTo(body); + $('

').text(RED._("projects.welcome.desc1")).appendTo(body); + $('

').text(RED._("projects.welcome.desc2")).appendTo(body); var row = $('

').appendTo(body); - var createAsEmpty = $('').appendTo(row); - var createAsClone = $('').appendTo(row); + var createAsEmpty = $('').appendTo(row); + var createAsClone = $('').appendTo(row); createAsEmpty.click(function(e) { e.preventDefault(); @@ -105,7 +105,7 @@ RED.projects = (function() { buttons: [ { // id: "clipboard-dialog-cancel", - text: "Not right now", + text: RED._("projects.welcome.not-right-now"), click: function() { createProjectOptions = {}; $( this ).dialog( "close" ); @@ -139,23 +139,23 @@ RED.projects = (function() { migrateProjectHeader.appendTo(container); var body = $('
').appendTo(container); - $('

').text("Setup your version control client").appendTo(body); - $('

').text("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.").appendTo(body); - $('

').text("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.").appendTo(body); + $('

').text(RED._("projects.git-config.setup")).appendTo(body); + $('

').text(RED._("projects.git-config.desc0")).appendTo(body); + $('

').text(RED._("projects.git-config.desc1")).appendTo(body); if (isGlobalConfig) { - $('

').text("Your Git client is already configured with the details below.").appendTo(body); + $('

').text(RED._("projects.git-config.desc2")).appendTo(body); } - $('

').text("You can change these settings later under the 'Git config' tab of the settings dialog.").appendTo(body); + $('

').text(RED._("projects.git-config.desc3")).appendTo(body); var row = $('

').appendTo(body); - $('').appendTo(row); + $('').appendTo(row); gitUsernameInput = $('').val((existingGitSettings&&existingGitSettings.name)||"").appendTo(row); // $('
').text("This does not need to be your real name").appendTo(row); gitUsernameInput.on("change keyup paste",validateForm); row = $('
').appendTo(body); - $('').appendTo(row); + $('').appendTo(row); gitEmailInput = $('').val((existingGitSettings&&existingGitSettings.email)||"").appendTo(row); gitEmailInput.on("change keyup paste",validateForm); // $('
').text("Something something email").appendTo(row); @@ -168,14 +168,14 @@ RED.projects = (function() { buttons: [ { // id: "clipboard-dialog-cancel", - text: "Back", + text: RED._("common.label.back"), click: function() { show('welcome'); } }, { id: "projects-dialog-git-config", - text: "Next", // TODO: nls + text: RED._("common.label.next"), class: "primary", click: function() { var currentGitSettings = RED.settings.get('git') || {}; @@ -216,10 +216,10 @@ RED.projects = (function() { migrateProjectHeader.appendTo(container); var body = $('
').appendTo(container); - $('

').text("Create your project").appendTo(body); - $('

').text("A project is maintained as a Git repository. It makes it much easier to share your flows with others and to collaborate on them.").appendTo(body); - $('

').text("You can create multiple projects and quickly switch between them from the editor.").appendTo(body); - $('

').text("To begin, your project needs a name and an optional description.").appendTo(body); + $('

').text(RED._("projects.project-details.create")).appendTo(body); + $('

').text(RED._("projects.project-details.desc0")).appendTo(body); + $('

').text(RED._("projects.project-details.desc1")).appendTo(body); + $('

').text(RED._("projects.project-details.desc2")).appendTo(body); var validateForm = function() { var projectName = projectNameInput.val(); @@ -236,14 +236,14 @@ RED.projects = (function() { projectNameValid = false; valid = false; if (projectList[projectName]) { - projectNameSublabel.text("Project already exists"); + projectNameSublabel.text(RED._("projects.project-details.already-exists")); } else { - projectNameSublabel.text("Must contain only A-Z 0-9 _ -"); + projectNameSublabel.text(RED._("projects.project-details.must-contain")); } } else { projectNameInput.removeClass("input-error"); $('').appendTo(projectNameStatus); - projectNameSublabel.text("Must contain only A-Z 0-9 _ -"); + projectNameSublabel.text(RED._("projects.project-details.must-contain")); projectNameValid = true; } projectNameLastChecked = projectName; @@ -253,7 +253,7 @@ RED.projects = (function() { } var row = $('

').appendTo(body); - $('').appendTo(row); + $('').appendTo(row); var subrow = $('
').appendTo(row); projectNameInput = $('').val(createProjectOptions.name||"").appendTo(subrow); @@ -283,13 +283,13 @@ RED.projects = (function() { checkProjectName = null; },300) }); - projectNameSublabel = $('').appendTo(row).find("small"); + projectNameSublabel = $('').appendTo(row).find("small"); // Empty Project row = $('
').appendTo(body); - $('').appendTo(row); + $('').appendTo(row); projectSummaryInput = $('').val(createProjectOptions.summary||"").appendTo(row); - $('').appendTo(row); + $('').appendTo(row); setTimeout(function() { projectNameInput.focus(); @@ -300,7 +300,7 @@ RED.projects = (function() { buttons: function(options) { return [ { - text: "Back", + text: RED._("common.label.back"), click: function() { show('git-config'); } @@ -308,7 +308,7 @@ RED.projects = (function() { { id: "projects-dialog-create-name", disabled: true, - text: "Next", // TODO: nls + text: RED._("common.label.next"), class: "primary disabled", click: function() { createProjectOptions.name = projectNameInput.val(); @@ -344,8 +344,8 @@ RED.projects = (function() { var container = $('
'); migrateProjectHeader.appendTo(container); var body = $('
').appendTo(container); - $('

').text("Clone a project").appendTo(body); - $('

').text("If you already have a git repository containing a project, you can clone it to get started.").appendTo(body); + $('

').text(RED._("projects.clone-project.clone")).appendTo(body); + $('

').text(RED._("projects.clone-project.desc0")).appendTo(body); var projectList = null; var pendingFormValidation = false; @@ -376,14 +376,14 @@ RED.projects = (function() { projectNameValid = false; valid = false; if (projectList[projectName]) { - projectNameSublabel.text("Project already exists"); + projectNameSublabel.text(RED._("projects.clone-project.already-exists")); } else { - projectNameSublabel.text("Must contain only A-Z 0-9 _ -"); + projectNameSublabel.text(RED._("projects.clone-project.must-contain")); } } else { projectNameInput.removeClass("input-error"); $('').appendTo(projectNameStatus); - projectNameSublabel.text("Must contain only A-Z 0-9 _ -"); + projectNameSublabel.text(RED._("projects.clone-project.must-contain")); projectNameValid = true; } projectNameLastChecked = projectName; @@ -395,7 +395,7 @@ RED.projects = (function() { // var validRepo = /^(?:file|git|ssh|https?|[\d\w\.\-_]+@[\w\.]+):(?:\/\/)?[\w\.@:\/~_-]+(?:\/?|\#[\d\w\.\-_]+?)$/.test(repo); var validRepo = repo.length > 0 && !/\s/.test(repo); if (/^https?:\/\/[^/]+@/i.test(repo)) { - $("#projects-dialog-screen-create-project-repo-label small").text("Do not include the username/password in the url"); + $("#projects-dialog-screen-create-project-repo-label small").text(RED._("projects.clone-project.no-info-in-url")); validRepo = false; } if (!validRepo) { @@ -426,7 +426,7 @@ RED.projects = (function() { var row; row = $('

').appendTo(body); - $('').appendTo(row); + $('').appendTo(row); var subrow = $('
').appendTo(row); projectNameInput = $('').appendTo(subrow); @@ -456,19 +456,19 @@ RED.projects = (function() { checkProjectName = null; },300) }); - projectNameSublabel = $('').appendTo(row).find("small"); + projectNameSublabel = $('').appendTo(row).find("small"); row = $('
').appendTo(body); - $('').appendTo(row); + $('').appendTo(row); projectRepoInput = $('').appendTo(row); - $('').appendTo(row); + $('').appendTo(row); var projectRepoChanged = false; var lastProjectRepo = ""; projectRepoInput.on("change keyup paste",function() { projectRepoChanged = true; var repo = $(this).val(); if (lastProjectRepo !== repo) { - $("#projects-dialog-screen-create-project-repo-label small").text("https://, ssh:// or file://"); + $("#projects-dialog-screen-create-project-repo-label small").text(RED._("projects.clone-project.protocols")); } lastProjectRepo = repo; @@ -486,24 +486,24 @@ RED.projects = (function() { var cloneAuthRows = $('
').appendTo(body); row = $('
').hide().appendTo(cloneAuthRows); - $('
Authentication failed
').appendTo(row); + $('
'+RED._("projects.clone-project.auth-failed")+'
').appendTo(row); // Repo credentials - username/password ---------------- row = $('
').hide().appendTo(cloneAuthRows); var subrow = $('
').appendTo(row); - $('').appendTo(subrow); + $('').appendTo(subrow); projectRepoUserInput = $('').appendTo(subrow); subrow = $('
').appendTo(row); - $('').appendTo(subrow); + $('').appendTo(subrow); projectRepoPasswordInput = $('').appendTo(subrow); // ----------------------------------------------------- // Repo credentials - key/passphrase ------------------- row = $('
').hide().appendTo(cloneAuthRows); subrow = $('
').appendTo(row); - $('').appendTo(subrow); + $('').appendTo(subrow); projectRepoSSHKeySelect = $("').appendTo(subrow); subrow = $('
').appendTo(cloneAuthRows); var sshwarningRow = $('
').hide().appendTo(subrow); - $('
Before you can clone a repository over ssh you must add an SSH key to access it.
').appendTo(sshwarningRow); + $('
'+RED._("projects.clone-project.ssh-key-desc")+'
').appendTo(sshwarningRow); subrow = $('
').appendTo(sshwarningRow); - $('').appendTo(subrow).click(function(e) { + $('').appendTo(subrow).click(function(e) { e.preventDefault(); $('#projects-dialog-cancel').click(); RED.userSettings.show('gitconfig'); @@ -543,7 +543,7 @@ RED.projects = (function() { // Secret - clone row = $('
').appendTo(body); - $('').appendTo(row); + $('').appendTo(row); projectSecretInput = $('').appendTo(row); @@ -553,7 +553,7 @@ RED.projects = (function() { buttons: function(options) { return [ { - text: "Back", + text: RED._("common.label.back"), click: function() { show('git-config'); } @@ -561,7 +561,7 @@ RED.projects = (function() { { id: "projects-dialog-clone-project", disabled: true, - text: "Clone project", // TODO: nls + text: RED._("common.label.clone"), class: "primary disabled", click: function() { var projectType = $(".projects-dialog-screen-create-type.selected").data('type'); @@ -585,7 +585,7 @@ RED.projects = (function() { }; } else { - console.log("Error! Can't get selected SSH key path."); + console.log(RED._("projects.clone-project.cant-get-ssh-key")); return; } } @@ -602,7 +602,7 @@ RED.projects = (function() { } $(".projects-dialog-screen-create-row-auth-error").hide(); - $("#projects-dialog-screen-create-project-repo-label small").text("https://, ssh:// or file://"); + $("#projects-dialog-screen-create-project-repo-label small").text(RED._("projects.clone-project.protocols")); projectRepoUserInput.removeClass("input-error"); projectRepoPasswordInput.removeClass("input-error"); @@ -622,22 +622,22 @@ RED.projects = (function() { }, 400: { 'project_exists': function(error) { - console.log("already exists"); + console.log(RED._("projects.clone-project.already-exists")); }, 'git_error': function(error) { - console.log("git error",error); + console.log(RED._("projects.clone-project.git-error"),error); }, 'git_connection_failed': function(error) { projectRepoInput.addClass("input-error"); - $("#projects-dialog-screen-create-project-repo-label small").text("Connection failed"); + $("#projects-dialog-screen-create-project-repo-label small").text(RED._("projects.clone-project.connection-failed")); }, 'git_not_a_repository': function(error) { projectRepoInput.addClass("input-error"); - $("#projects-dialog-screen-create-project-repo-label small").text("Not a git repository"); + $("#projects-dialog-screen-create-project-repo-label small").text(RED._("projects.clone-project.not-git-repo")); }, 'git_repository_not_found': function(error) { projectRepoInput.addClass("input-error"); - $("#projects-dialog-screen-create-project-repo-label small").text("Repository not found"); + $("#projects-dialog-screen-create-project-repo-label small").text(RED._("projects.clone-project.repo-not-found")); }, 'git_auth_failed': function(error) { $(".projects-dialog-screen-create-row-auth-error").show(); @@ -689,11 +689,11 @@ RED.projects = (function() { migrateProjectHeader.appendTo(container); var body = $('
').appendTo(container); - $('

').text("Create your project files").appendTo(body); - $('

').text("A project contains your flow files, a README file and a package.json file.").appendTo(body); - $('

').text("It can contain any other files you want to maintain in the Git repository.").appendTo(body); + $('

').text(RED._("projects.default-files.create")).appendTo(body); + $('

').text(RED._("projects.default-files.desc0")).appendTo(body); + $('

').text(RED._("projects.default-files.desc1")).appendTo(body); if (!options.existingProject && RED.settings.files) { - $('

').text("Your existing flow and credential files will be copied into the project.").appendTo(body); + $('

').text(RED._("projects.default-files.desc2")).appendTo(body); } var validateForm = function() { @@ -724,7 +724,7 @@ RED.projects = (function() { $("#projects-dialog-create-default-files").prop('disabled',!valid).toggleClass('disabled ui-button-disabled ui-state-disabled',!valid); } var row = $('

').appendTo(body); - $('').appendTo(row); + $('').appendTo(row); var subrow = $('
').appendTo(row); var defaultFlowFile = (createProjectOptions.files &&createProjectOptions.files.flow) || (RED.settings.files && RED.settings.files.flow)||"flow.json"; projectFlowFileInput = $('').val(defaultFlowFile) @@ -735,7 +735,7 @@ RED.projects = (function() { var defaultCredentialsFile = (createProjectOptions.files &&createProjectOptions.files.credentials) || (RED.settings.files && RED.settings.files.credentials)||"flow_cred.json"; row = $('
').appendTo(body); - $('').appendTo(row); + $('').appendTo(row); subrow = $('
').appendTo(row); projectCredentialFileInput = $('
').text(defaultCredentialsFile) .appendTo(subrow); @@ -752,7 +752,7 @@ RED.projects = (function() { return [ { // id: "clipboard-dialog-cancel", - text: options.existingProject?"Cancel":"Back", + text: RED._(options.existingProject ? "common.label.cancel": "common.label.back"), click: function() { if (options.existingProject) { $(this).dialog('close'); @@ -763,7 +763,7 @@ RED.projects = (function() { }, { id: "projects-dialog-create-default-files", - text: "Next", // TODO: nls + text: RED._("common.label.next"), class: "primary", click: function() { createProjectOptions.files = { @@ -789,22 +789,22 @@ RED.projects = (function() { migrateProjectHeader.appendTo(container); var body = $('
').appendTo(container); - $('

').text("Setup encryption of your credentials file").appendTo(body); + $('

').text(RED._("projects.encryption-config.setup")).appendTo(body); if (options.existingProject) { - $('

').text("Your flow credentials file can be encrypted to keep its contents secure.").appendTo(body); - $('

').text("If you want to store these credentials in a public Git repository, you must encrypt them by providing a secret key phrase.").appendTo(body); + $('

').text(RED._("projects.encryption-config.desc0")).appendTo(body); + $('

').text(RED._("projects.encryption-config.desc1")).appendTo(body); } else { if (RED.settings.flowEncryptionType === 'disabled') { - $('

').text("Your flow credentials file is not currently encrypted.").appendTo(body); - $('

').text("That means its contents, such as passwords and access tokens, can be read by anyone with access to the file.").appendTo(body); - $('

').text("If you want to store these credentials in a public Git repository, you must encrypt them by providing a secret key phrase.").appendTo(body); + $('

').text(RED._("projects.encryption-config.desc2")).appendTo(body); + $('

').text(RED._("projects.encryption-config.desc3")).appendTo(body); + $('

').text(RED._("projects.encryption-config.desc4")).appendTo(body); } else { if (RED.settings.flowEncryptionType === 'user') { - $('

').text("Your flow credentials file is currently encrypted using the credentialSecret property from your settings file as the key.").appendTo(body); + $('

').text(RED._("projects.encryption-config.desc5")).appendTo(body); } else if (RED.settings.flowEncryptionType === 'system') { - $('

').text("Your flow credentials file is currently encrypted using a system-generated key. You should provide a new secret key for this project.").appendTo(body); + $('

').text(RED._("projects.encryption-config.desc6")).appendTo(body); } - $('

').text("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.").appendTo(body); + $('

').text(RED._("projects.encryption-config.desc7")).appendTo(body); } } @@ -832,16 +832,16 @@ RED.projects = (function() { var row = $('

').appendTo(body); - $('').appendTo(row); + $('').appendTo(row); var credentialsBox = $('
').appendTo(row); var credentialsRightBox = $('
').appendTo(credentialsBox); var credentialsLeftBox = $('
').appendTo(credentialsBox); var credentialsEnabledBox = $('
').appendTo(credentialsLeftBox); - $('').appendTo(credentialsEnabledBox); + $('').appendTo(credentialsEnabledBox); var credentialsDisabledBox = $('
').appendTo(credentialsLeftBox); - $('').appendTo(credentialsDisabledBox); + $('').appendTo(credentialsDisabledBox); credentialsLeftBox.find("input[name=projects-encryption-type]").click(function(e) { var val = $(this).val(); @@ -876,15 +876,15 @@ RED.projects = (function() { }) row = $('
').appendTo(credentialsRightBox); - $('').appendTo(row); + $('').appendTo(row); row = $('
').appendTo(credentialsRightBox); - $('').appendTo(row); + $('').appendTo(row); row = $('
').appendTo(credentialsRightBox); emptyProjectCredentialInput = $('').appendTo(row); emptyProjectCredentialInput.on("change keyup paste", validateForm); row = $('
').hide().appendTo(credentialsRightBox); - $('
The credentials file will not be encrypted and its contents easily read
').appendTo(row); + $('
'+RED._("projects.encryption-config.desc8")+'
').appendTo(row); credentialsRightBox.find("input[name=projects-encryption-key]").click(function() { var val = $(this).val(); @@ -911,14 +911,14 @@ RED.projects = (function() { return [ { // id: "clipboard-dialog-cancel", - text: "Back", + text: RED._("common.label.back"), click: function() { show('default-files',options); } }, { id: "projects-dialog-create-encryption", - text: options.existingProject?"Create project files":"Create project", // TODO: nls + text: RED._(options.existingProject?"projects.encryption-config.create-project-files":"projects.encryption-config.create-project"), class: "primary disabled", disabled: true, click: function() { @@ -966,10 +966,10 @@ RED.projects = (function() { }, 400: { 'project_exists': function(error) { - console.log("already exists"); + console.log(RED._("projects.encryption-config.already-exists")); }, 'git_error': function(error) { - console.log("git error",error); + console.log(RED._("projects.encryption-config.git-error"),error); }, 'git_connection_failed': function(error) { projectRepoInput.addClass("input-error"); @@ -978,7 +978,7 @@ RED.projects = (function() { projectRepoUserInput.addClass("input-error"); projectRepoPasswordInput.addClass("input-error"); // getRepoAuthDetails(req); - console.log("git auth error",error); + console.log(RED._("projects.encryption-config.git-auth-error"),error); }, '*': function(error) { reportUnexpectedError(error); @@ -1004,19 +1004,16 @@ RED.projects = (function() { migrateProjectHeader.appendTo(container); var body = $('
').appendTo(container); - $('

').text("You have successfully created your first project!").appendTo(body); - $('

').text("You can now continue to use Node-RED just as you always have.").appendTo(body); - $('

').text("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.").appendTo(body); - $('

').text("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.").appendTo(body); + $('

').text(RED._("projects.create-success.success")).appendTo(body); + $('

').text(RED._("projects.create-success.desc0")).appendTo(body); + $('

').text(RED._("projects.create-success.desc1")).appendTo(body); + $('

').text(RED._("projects.create-success.desc2")).appendTo(body); return container; }, buttons: [ { - text: "Done", + text: RED._("common.label.done"), click: function() { $( this ).dialog( "close" ); } @@ -1043,7 +1040,7 @@ RED.projects = (function() { var selectedProject; return { - title: "Projects", // TODO: NLS + title: RED._("projects.create.projects"), content: function(options) { var projectList = null; selectedProject = null; @@ -1077,14 +1074,14 @@ RED.projects = (function() { projectNameValid = false; valid = false; if (projectList[projectName]) { - projectNameSublabel.text("Project already exists"); + projectNameSublabel.text(RED._("projects.create.already-exists")); } else { - projectNameSublabel.text("Must contain only A-Z 0-9 _ -"); + projectNameSublabel.text(RED._("projects.create.must-contain")); } } else { projectNameInput.removeClass("input-error"); $('').appendTo(projectNameStatus); - projectNameSublabel.text("Must contain only A-Z 0-9 _ -"); + projectNameSublabel.text(RED._("projects.create.must-contain")); projectNameValid = true; } projectNameLastChecked = projectName; @@ -1102,7 +1099,7 @@ RED.projects = (function() { // var validRepo = /^(?:file|git|ssh|https?|[\d\w\.\-_]+@[\w\.]+):(?:\/\/)?[\w\.@:\/~_-]+(?:\/?|\#[\d\w\.\-_]+?)$/.test(repo); var validRepo = repo.length > 0 && !/\s/.test(repo); if (/^https?:\/\/[^/]+@/i.test(repo)) { - $("#projects-dialog-screen-create-project-repo-label small").text("Do not include the username/password in the url"); + $("#projects-dialog-screen-create-project-repo-label small").text(RED._("projects.create.no-info-in-url")); validRepo = false; } if (!validRepo) { @@ -1159,10 +1156,10 @@ RED.projects = (function() { row = $('

').appendTo(container); - var openProject = $('').appendTo(row); - var createAsEmpty = $('').appendTo(row); + var openProject = $('').appendTo(row); + var createAsEmpty = $('').appendTo(row); // var createAsCopy = $('').appendTo(row); - var createAsClone = $('').appendTo(row); + var createAsClone = $('').appendTo(row); // var createAsClone = $('').appendTo(row); row.find(".projects-dialog-screen-create-type").click(function(evt) { evt.preventDefault(); @@ -1173,9 +1170,9 @@ RED.projects = (function() { validateForm(); projectNameInput.focus(); switch ($(this).data('type')) { - case "open": $("#projects-dialog-create").text("Open project"); break; - case "empty": $("#projects-dialog-create").text("Create project"); break; - case "clone": $("#projects-dialog-create").text("Clone project"); break; + case "open": $("#projects-dialog-create").text(RED._("projects.create.open")); break; + case "empty": $("#projects-dialog-create").text(RED._("projects.create.create")); break; + case "clone": $("#projects-dialog-create").text(RED._("projects.create.clone")); break; } }) @@ -1201,7 +1198,7 @@ RED.projects = (function() { }).appendTo(row); row = $('
').appendTo(container); - $('').appendTo(row); + $('').appendTo(row); var subrow = $('
').appendTo(row); projectNameInput = $('').appendTo(subrow); @@ -1231,16 +1228,16 @@ RED.projects = (function() { checkProjectName = null; },300) }); - projectNameSublabel = $('').appendTo(row).find("small"); + projectNameSublabel = $('').appendTo(row).find("small"); // Empty Project row = $('
').appendTo(container); - $('').appendTo(row); + $('').appendTo(row); projectSummaryInput = $('').appendTo(row); - $('').appendTo(row); + $('').appendTo(row); row = $('
').appendTo(container); - $('').appendTo(row); + $('').appendTo(row); subrow = $('
').appendTo(row); projectFlowFileInput = $('').val("flow.json") .on("change keyup paste",validateForm) @@ -1249,16 +1246,16 @@ RED.projects = (function() { $('').appendTo(row); row = $('
').appendTo(container); - $('').appendTo(row); + $('').appendTo(row); var credentialsBox = $('
').appendTo(row); var credentialsRightBox = $('
').appendTo(credentialsBox); var credentialsLeftBox = $('
').appendTo(credentialsBox); var credentialsEnabledBox = $('
').appendTo(credentialsLeftBox); - $('').appendTo(credentialsEnabledBox); + $('').appendTo(credentialsEnabledBox); var credentialsDisabledBox = $('
').appendTo(credentialsLeftBox); - $('').appendTo(credentialsDisabledBox); + $('').appendTo(credentialsDisabledBox); credentialsLeftBox.find("input[name=projects-encryption-type]").click(function(e) { var val = $(this).val(); @@ -1292,15 +1289,15 @@ RED.projects = (function() { }) row = $('
').appendTo(credentialsRightBox); - $('').appendTo(row); + $('').appendTo(row); // row = $('
').appendTo(credentialsRightBox); emptyProjectCredentialInput = $('').appendTo(row); emptyProjectCredentialInput.on("change keyup paste", validateForm); - $('').appendTo(row); + $('').appendTo(row); row = $('
').hide().appendTo(credentialsRightBox); - $('
The credentials file will not be encrypted and its contents easily read
').appendTo(row); + $('
'+RED._("projects.create.desc1")+'
').appendTo(row); credentialsRightBox.find("input[name=projects-encryption-key]").click(function() { var val = $(this).val(); @@ -1313,9 +1310,9 @@ RED.projects = (function() { // Clone Project row = $('
').appendTo(container); - $('').appendTo(row); + $('').appendTo(row); projectRepoInput = $('').appendTo(row); - $('').appendTo(row); + $('').appendTo(row); var projectRepoChanged = false; var lastProjectRepo = ""; @@ -1323,7 +1320,7 @@ RED.projects = (function() { projectRepoChanged = true; var repo = $(this).val(); if (lastProjectRepo !== repo) { - $("#projects-dialog-screen-create-project-repo-label small").text("https://, ssh:// or file://"); + $("#projects-dialog-screen-create-project-repo-label small").text(RED._("projects.create.protocols")); } lastProjectRepo = repo; @@ -1342,24 +1339,24 @@ RED.projects = (function() { var cloneAuthRows = $('
').hide().appendTo(container); row = $('
').hide().appendTo(cloneAuthRows); - $('
Authentication failed
').appendTo(row); + $('
'+RED._("projects.create.auth-failed")+'
').appendTo(row); // Repo credentials - username/password ---------------- row = $('
').hide().appendTo(cloneAuthRows); var subrow = $('
').appendTo(row); - $('').appendTo(subrow); + $('').appendTo(subrow); projectRepoUserInput = $('').appendTo(subrow); subrow = $('
').appendTo(row); - $('').appendTo(subrow); + $('').appendTo(subrow); projectRepoPasswordInput = $('').appendTo(subrow); // ----------------------------------------------------- // Repo credentials - key/passphrase ------------------- row = $('
').hide().appendTo(cloneAuthRows); subrow = $('
').appendTo(row); - $('').appendTo(subrow); + $('').appendTo(subrow); projectRepoSSHKeySelect = $("').appendTo(subrow); subrow = $('
').appendTo(cloneAuthRows); var sshwarningRow = $('
').hide().appendTo(subrow); - $('
Before you can clone a repository over ssh you must add an SSH key to access it.
').appendTo(sshwarningRow); + $('
'+RED._("projects.create.desc2")+'
').appendTo(sshwarningRow); subrow = $('
').appendTo(sshwarningRow); - $('').appendTo(subrow).click(function(e) { + $('').appendTo(subrow).click(function(e) { e.preventDefault(); $('#projects-dialog-cancel').click(); RED.userSettings.show('gitconfig'); @@ -1399,7 +1396,7 @@ RED.projects = (function() { // Secret - clone row = $('
').appendTo(container); - $('').appendTo(row); + $('').appendTo(row); projectSecretInput = $('').appendTo(row); @@ -1421,9 +1418,9 @@ RED.projects = (function() { buttons: function(options) { var initialLabel; switch (options.screen||"empty") { - case "open": initialLabel = "Open project"; break; - case "empty": initialLabel = "Create project"; break; - case "clone": initialLabel = "Clone project"; break; + case "open": initialLabel = RED._("projects.create.open"); break; + case "empty": initialLabel = RED._("projects.create.create"); break; + case "clone": initialLabel = RED._("projects.create.clone"); break; } return [ { @@ -1477,7 +1474,7 @@ RED.projects = (function() { }; } else { - console.log("Error! Can't get selected SSH key path."); + console.log(RED._("projects.create.cant-get-ssh-key-path")); return; } } @@ -1497,14 +1494,14 @@ RED.projects = (function() { dialog.dialog( "close" ); if (err) { if (err.error !== 'credentials_load_failed') { - console.log("unexpected_error",err) + console.log(RED._("projects.create.unexpected_error"),err) } } }) } $(".projects-dialog-screen-create-row-auth-error").hide(); - $("#projects-dialog-screen-create-project-repo-label small").text("https://, ssh:// or file://"); + $("#projects-dialog-screen-create-project-repo-label small").text(RED._("projects.create.protocols")); projectRepoUserInput.removeClass("input-error"); projectRepoPasswordInput.removeClass("input-error"); @@ -1524,22 +1521,22 @@ RED.projects = (function() { }, 400: { 'project_exists': function(error) { - console.log("already exists"); + console.log(RED._("projects.create.already-exists-2")); }, 'git_error': function(error) { - console.log("git error",error); + console.log(RED._("projects.create.git-error"),error); }, 'git_connection_failed': function(error) { projectRepoInput.addClass("input-error"); - $("#projects-dialog-screen-create-project-repo-label small").text("Connection failed"); + $("#projects-dialog-screen-create-project-repo-label small").text(RED._("projects.create.con-failed")); }, 'git_not_a_repository': function(error) { projectRepoInput.addClass("input-error"); - $("#projects-dialog-screen-create-project-repo-label small").text("Not a git repository"); + $("#projects-dialog-screen-create-project-repo-label small").text(RED._("projects.create.not-git")); }, 'git_repository_not_found': function(error) { projectRepoInput.addClass("input-error"); - $("#projects-dialog-screen-create-project-repo-label small").text("Repository not found"); + $("#projects-dialog-screen-create-project-repo-label small").text(RED._("projects.create.no-resource")); }, 'git_auth_failed': function(error) { $(".projects-dialog-screen-create-row-auth-error").show(); @@ -1619,15 +1616,15 @@ RED.projects = (function() { whitespace: "nowrap", width:"1000px" }).click(function(evt) { evt.stopPropagation(); }).appendTo(row); - $('').css({"lineHeight":"40px"}).text("Are you sure you want to delete this project?").appendTo(cover); - $('') + $('').css({"lineHeight":"40px"}).text(RED._("projects.delete.confirm")).appendTo(cover); + $('') .appendTo(cover) .click(function(e) { e.stopPropagation(); cover.remove(); done(true); }); - $('') + $('') .appendTo(cover) .click(function(e) { e.stopPropagation(); @@ -1681,7 +1678,7 @@ RED.projects = (function() { var filterTerm = ""; var searchDiv = $("
",{class:"red-ui-search-container"}).appendTo(container); - var searchInput = $('').appendTo(searchDiv).searchBox({ + var searchInput = $('').appendTo(searchDiv).searchBox({ //data-i18n="[placeholder]menu.label.searchInput" delay: 200, change: function() { @@ -1790,7 +1787,7 @@ RED.projects = (function() { $('').text(entry.name).appendTo(header); if (activeProject && activeProject.name === entry.name) { header.addClass("projects-list-entry-current"); - $('current').appendTo(header); + $(''+RED._("projects.create-project-list.current")+'').appendTo(header); if (options.canSelectActive === false) { // active project cannot be selected; so skip the rest return @@ -1852,7 +1849,7 @@ RED.projects = (function() { function requireCleanWorkspace(done) { if (RED.nodes.dirty()) { - var message = '

You have undeployed changes that will be lost.

Do you want to continue?

'; + var message = RED._("projects.require-clean.confirm"); var cleanNotification = RED.notify(message,{ type:"info", fixed: true, @@ -1867,7 +1864,7 @@ RED.projects = (function() { done(true); } },{ - text: 'Continue', + text: RED._("common.label.cont"), click: function() { cleanNotification.close(); done(false); @@ -1945,14 +1942,14 @@ RED.projects = (function() { var url = activeProject.git.remotes[xhr.responseJSON.remote||options.remote||'origin'].fetch; var message = $('
'+ - '
Authentication required for repository:
'+ + '
'+RED._("projects.send-req.auth-req")+':
'+ '
'+url+'
'+ '
'); var isSSH = false; if (/^https?:\/\//.test(url)) { - $('
'+ - '
').appendTo(message); + $('
'+ + '
').appendTo(message); } else if (/^(?:ssh|[\d\w\.\-_]+@[\w\.]+):(?:\/\/)?/.test(url)) { isSSH = true; var row = $('
').appendTo(message); @@ -1969,7 +1966,7 @@ RED.projects = (function() { } }); row = $('
').appendTo(message); - $('').appendTo(row); + $('').appendTo(row); $('').appendTo(row); } @@ -1999,7 +1996,7 @@ RED.projects = (function() { } var done = function(err) { if (err) { - console.log("Failed to update auth"); + console.log(RED._("projects.send-req.update-failed")); console.log(err); } else { sendRequest(options,body); @@ -2039,7 +2036,7 @@ RED.projects = (function() { return; } } - console.log("Unhandled error response:"); + console.log(RED._("projects.send-req.unhandled")+":"); console.log(xhr); console.log(textStatus); console.log(err); @@ -2073,7 +2070,7 @@ RED.projects = (function() { branchFilterCreateItem.addClass("input-error"); branchFilterCreateItem.find("i").addClass("fa-warning").removeClass("fa-code-fork"); } - branchFilterCreateItem.find("span").text("Invalid branch: "+branchPrefix+branchFilterTerm); + branchFilterCreateItem.find("span").text(RED._("projects.create-branch-list.invalid")+": "+branchPrefix+branchFilterTerm); } else { if (branchFilterCreateItem.hasClass("input-error")) { branchFilterCreateItem.removeClass("input-error"); @@ -2093,14 +2090,14 @@ RED.projects = (function() { if (!entry.hasOwnProperty('commit')) { branchFilterCreateItem = container; $('').appendTo(container); - $('').text("Create branch:").appendTo(container); + $('').text(RED._("projects.create-branch-list.create")+":").appendTo(container); $('
').text(entry.name).appendTo(container); } else { $('').appendTo(container); $('').text(entry.name).appendTo(container); if (entry.current) { container.addClass("selected"); - $('').text(options.currentLabel||"current").appendTo(container); + $('').text(options.currentLabel||RED._("projects.create-branch-list.current")).appendTo(container); } } container.click(function(evt) { @@ -2240,9 +2237,9 @@ RED.projects = (function() { function createDefaultFileSet() { if (!activeProject) { - throw new Error("Cannot create default file set without an active project"); + throw new Error(RED._("projects.create-default-file-set.no-active")); } else if (!activeProject.empty) { - throw new Error("Cannot create default file set on a non-empty project"); + throw new Error(RED._("projects.create-default-file-set.no-empty")); } if (!RED.user.hasPermission("projects.write")) { RED.notify(RED._("user.errors.notAuthorized"),"error"); @@ -2269,7 +2266,7 @@ RED.projects = (function() { 200: function(data) { }, 400: { 'git_error': function(error) { - console.log("git error",error); + console.log(RED._("projects.create-default-file-set.git-error"),error); }, 'missing_flow_file': function(error) { // This is a natural next error - but let the runtime event diff --git a/red/api/editor/locales/en-US/editor.json b/red/api/editor/locales/en-US/editor.json index dfcef21a6..0b7880667 100644 --- a/red/api/editor/locales/en-US/editor.json +++ b/red/api/editor/locales/en-US/editor.json @@ -10,7 +10,11 @@ "load": "Load", "save": "Save", "import": "Import", - "export": "Export" + "export": "Export", + "back": "Back", + "next": "Next", + "clone": "Clone project", + "cont": "Continue" } }, "workspace": { @@ -509,5 +513,167 @@ "modeString": "Handle as UTF-8 String", "modeArray": "Handle as JSON array", "modeDesc":"

Buffer editor

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.

For example, a value of Hello World will be converted to the JSON array:

[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]

" + }, + "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", + "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-exists": "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" + }, + "delete": { + "confirm": "Are you sure you want to delete this project?" + }, + "create-project-list": { + "search": "search your projects", + "current": "current" + }, + "require-clean": { + "confirm": "

You have undeployed changes that will be lost.

Do you want to continue?

" + }, + "send-req": { + "auth-req": "Authentication required for repository", + "username": "Username", + "password": "Password", + "passphrase": "Passphrase", + "update-failed": "Failed to update auth", + "unhandled": "Unhandled error response" + }, + "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" + } } } diff --git a/red/api/editor/locales/ja/editor.json b/red/api/editor/locales/ja/editor.json index 999dc3422..46f970341 100644 --- a/red/api/editor/locales/ja/editor.json +++ b/red/api/editor/locales/ja/editor.json @@ -10,7 +10,11 @@ "load": "読み込み", "save": "保存", "import": "読み込み", - "export": "書き出し" + "export": "書き出し", + "back": "戻る", + "next": "進む", + "clone": "プロジェクトをクローン", + "cont": "続ける" } }, "workspace": { @@ -499,5 +503,167 @@ "modeString": "UTF-8文字列として処理", "modeArray": "JSON配列として処理", "modeDesc": "

バッファエディタ

バッファ型は、バイト値から成るJSON配列として格納されます。このエディタは、入力値をJSON配列として構文解析します。もし不正なJSON配列の場合、UTF-8文字列として扱い、各文字コード番号から成る配列へ変換します。

例えば、 Hello World という値を、以下のJSON配列へ変換します。

[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]

" + }, + "projects": { + "config-git": "Gitクライアントの設定", + "welcome": { + "hello": "こんにちは! Node-REDで「プロジェクト」機能が利用できるようになりました。", + "desc0": "フローファイルの管理方法が刷新され、バージョン管理も可能です。", + "desc1": "まず最初にプロジェクトを作成するか、既存のGitリポジトリからプロジェクトをクローンしてください。", + "desc2": "とりあえずこの処理をスキップしてもかまいません。「プロジェクト」メニューから、いつでもプロジェクトの作成を開始できます。", + "create": "プロジェクトの作成", + "clone": "プロジェクトのクローン", + "not-right-now": "後にする" + }, + "git-config": { + "setup": "バージョン管理クライアントの設定", + "desc0": "Node-REDはオープンソースツールのGitを使ってバージョン管理を行います。Gitによりプロジェクトファイルに対する変化を記録し、外部リポジトリに保存することができます。", + "desc1": "変更をコミットする際、変更を行った人物の情報としてユーザ名とEmailアドレスをGitが記憶します。ユーザ名は本名でなくても構いません。好きな名前を使ってください。", + "desc2": "Gitクライアントの現在の設定は以下の通りです。", + "desc3": "設定ダイアログの「Git設定」タブから別途変更することもできます。", + "username": "ユーザ名", + "email": "Email" + }, + "project-details": { + "create": "プロジェクトの作成", + "desc0": "プロジェクトはGitリポジトリとして管理します。Gitリポジトリを使ってフローの共有やコラボレーションが簡単にできます。", + "desc1": "複数のプロジェクトを作成し、エディタから即座に変更できます。", + "desc2": "まず、プロジェクト名と説明(任意)を指定してください。", + "already-exists": "既に存在するプロジェクトです", + "must-contain": "A-Z 0-9 _ - のみ指定可能", + "project-name": "プロジェクト名", + "desc": "説明", + "opt": "任意" + }, + "clone-project": { + "clone": "プロジェクトをクローン", + "desc0": "プロジェクトを含んだGitリポジトリを作成済みの場合、クローンを作成することができます。", + "already-exists": "既に存在するプロジェクトです", + "must-contain": "A-Z 0-9 _ - のみ指定可能", + "project-name": "プロジェクト名", + "no-info-in-url": "URLにユーザ名/パスワードを含めないようにしてください", + "git-url": "GitリポジトリのURL", + "protocols": "https://, ssh:// もしくは file://", + "auth-failed": "認証に失敗しました", + "username": "ユーザ名", + "passwd": "パスワード", + "ssh-key": "SSHキー", + "passphrase": "パスフレーズ", + "ssh-key-desc": "SSHでリポジトリをクローンする前にSSHキーを追加してください。", + "ssh-key-add": "SSHキーの追加", + "credential-key": "認証情報の暗号化キー", + "cant-get-ssh-key": "エラー! 選択したSSHキーのパスを取得できません。", + "already-exists": "既に存在します", + "git-error": "Gitエラー", + "connection-failed": "接続に失敗しました", + "not-git-repo": "Gitリポジトリではありません", + "repo-not-found": "リポジトリが見つかりません" + }, + "default-files": { + "create": "プロジェクト関連ファアイルの作成", + "desc0": "プロジェクトはフローファイル、README、package.jsonを含みます。", + "desc1": "その他、Gitリポジトリで管理したいファイルを含めても構いません。", + "desc2": "既存のフローと認証情報ファイルをプロジェクトにコピーします。", + "flow-file": "フローファイル", + "credentials-file": "認証情報ファイル" + }, + "encryption-config": { + "setup": "認証情報ファイルの暗号化設定", + "desc0": "フロー認証情報ファイルを暗号化して内容の安全性を担保できます。", + "desc1": "認証情報を公開Gitリポジトリに保存する際には、秘密キーフレーズによって暗号化します。", + "desc2": "認証情報ファイルは暗号化されていません。", + "desc3": "パスワードやアクセストークンといった認証情報を他人が参照できます。", + "desc4": "認証情報を公開Gitリポジトリに保存する際には、秘密キーフレーズによって暗号化します。", + "desc5": "フロー認証情報ファイルはsettingsファイルのcredentialSecretプロパティで暗号化されています。", + "desc6": "フロー認証情報ファイルはシステムが生成したキーによって暗号化されています。このプロジェクト用に新しい秘密キーを指定してください。", + "desc7": "キーはプロジェクトファイルとば別に保存されます。他のNode-REDでこのプロジェクトを利用するには、このプロジェクトのキーが必要です。", + "credentials": "認証情報", + "enable": "暗号化を有効にする", + "disable": "暗号化を無効にする", + "disabled": "無効", + "copy": "既存のキーをコピー", + "use-custom": "カスタムキーを使用", + "desc8": "認証情報ファイルが暗号化されないため、簡単に読み出すことができます。", + "create-project-files": "プロジェクト関連ファイル作成", + "create-project": "プロジェクト作成", + "already-exists": "既に存在", + "git-error": "Gitエラー", + "git-auth-error": "Git認証エラー" + }, + "create-success": { + "success": "最初のプロジェクトの作成が成功しました!", + "desc0": "以降は、これまでと同様にNode-REDを利用できます。", + "desc1": "サイドバーの「情報」タブに現在選択されたプロジェクトを表示します。プロジェクト名の隣のボタンでプロジェクト設定画面を呼び出すことができます。", + "desc2": "サイドバーの「履歴」タブで変更が加えられたプロジェクト内のファイルを確認しコミットできます。このサイドバーでは、全てのコミット履歴を確認し、変更を外部リポジトリにプッシュすることが可能です。" + }, + "create": { + "projects": "プロジェクト", + "already-exists": "プロジェクトは既に存在します", + "must-contain": "A-Z 0-9 _ - のみ指定可能", + "no-info-in-url": "URLにユーザ名/パスワードを含めないようにしてください", + "open": "プロジェクトを開く", + "create": "プロジェクトを作成", + "clone": "プロジェクトをクローン", + "project-name": "プロジェクト名", + "desc": "説明", + "opt": "任意", + "flow-file": "フローファイル", + "credentials": "認証情報", + "enable-encryption": "暗号化を有効にする", + "disable-encryption": "暗号化を無効にする", + "encryption-key": "暗号化キー", + "desc0": "認証情報をセキュアにするためのフレーズ", + "desc1": "認証情報ファイルが暗号化されないため、簡単に読み出すことができます", + "git-url": "GitリポジトリのURL", + "protocols": "https://, ssh:// もしくは file://", + "auth-failed": "認証に失敗しました", + "username": "ユーザ名", + "password": "パスワード", + "ssh-key": "SSHキー", + "passphrase": "パスフレーズ", + "desc2": "SSHでリポジトリをクローンする前にSSHキーを追加してください。", + "add-ssh-key": "SSHキーの追加", + "credentials-encryption-key": "認証情報の暗号化キー", + "already-exists-2": "既に存在します", + "git-error": "Gitエラー", + "con-failed": "接続に失敗しました", + "not-git": "Gitリポジトリではありません", + "no-resource": "リポジトリが見つかりません", + "cant-get-ssh-key-path": "エラー! 選択したSSHキーのパスを取得できません。", + "unexpected_error": "予期しないエラー" + }, + "delete": { + "confirm": "プロジェクトを削除しても良いですか?" + }, + "create-project-list": { + "search": "プロジェクトを検索", + "current": "有効" + }, + "require-clean": { + "confirm": "

デプロイされていない変更は失われます。

続けますか?

" + }, + "send-req": { + "auth-req": "リポジトリ対する認証が必要です", + "username": "ユーザ名", + "password": "パスワード", + "passphrase": "パスフレーズ", + "update-failed": "認証の更新に失敗しました", + "unhandled": "エラー応答が処理されませんでした" + }, + "create-branch-list": { + "invalid": "不正なブランチ", + "create": "ブランチの作成", + "current": "有効" + }, + "create-default-file-set": { + "no-active": "有効なプロジェクトが無い場合、デフォルトのファイル群を作成できません。", + "no-empty": "デフォルトのファイル群を空でないプロジェクトに作成することはできません。", + "git-error": "Gitエラー" + }, + "errors" : { + "no-username-email": "Gitクライアントのユーザ名/emailが設定されていません。", + "unexpected": "予期しないエラーが発生しました", + "code": "コード" + } } }