Feature/harmonize translation keys (#1478)

Harmonize translation keys

Co-authored-by: Eduard Heimbuch <eduard.heimbuch@cloudogu.com>
This commit is contained in:
Florian Scholdei
2020-12-16 11:24:13 +01:00
committed by GitHub
parent 1041faf8f9
commit 214cf527d4
20 changed files with 251 additions and 182 deletions

View File

@@ -13,7 +13,7 @@ eingegeben werden. Danach muss das neue Passwort zweimal eingegeben werden.
## Öffentliche Schlüssel ## Öffentliche Schlüssel
Zum Prüfen von Signaturen für z. B. Commits können hier die entsprechenden öffentlichen GPG Schlüssel hinterlegt werden. Zum Prüfen von Signaturen für z. B. Commits können hier die entsprechenden öffentlichen GPG-Schlüssel hinterlegt werden.
Zudem können hier die vom SCM-Manager erstellten Signaturschlüssel heruntergeladen werden. Zudem können hier die vom SCM-Manager erstellten Signaturschlüssel heruntergeladen werden.
## API Schlüssel ## API Schlüssel

View File

@@ -1,14 +1,14 @@
{ {
"scm-git-plugin": { "scm-git-plugin": {
"information": { "information": {
"clone": "Clone the repository", "clone": "Clone the Repository",
"create": "Create a new repository", "create": "Create a New Repository",
"replace": "Push an existing repository", "replace": "Push an Existing Repository",
"fetch": "Get remote changes", "fetch": "Get Remote Changes",
"checkout": "Switch branch", "checkout": "Switch Branch",
"checkoutTag": "Checkout tag as new branch", "checkoutTag": "Checkout Tag as New Branch",
"merge": { "merge": {
"heading": "How to merge source branch into target branch", "heading": "How to Merge Source Branch into Target Branch",
"checkout": "1. Make sure your workspace is clean and checkout target branch", "checkout": "1. Make sure your workspace is clean and checkout target branch",
"update": "2. Update workspace", "update": "2. Update workspace",
"merge": "3. Merge source branch", "merge": "3. Merge source branch",
@@ -34,7 +34,7 @@
"repo-config": { "repo-config": {
"link": "Configuration", "link": "Configuration",
"title": "Git Settings", "title": "Git Settings",
"default-branch": "Default branch", "default-branch": "Default Branch",
"submit": "Submit", "submit": "Submit",
"error": { "error": {
"title": "Error", "title": "Error",

View File

@@ -2,11 +2,11 @@
"scm-hg-plugin": { "scm-hg-plugin": {
"information": { "information": {
"clone" : "Clone the repository", "clone" : "Clone the repository",
"create" : "Create a new repository", "create" : "Create a New Repository",
"replace" : "Push an existing repository", "replace" : "Push an Existing Repository",
"fetch": "Get remote changes", "fetch": "Get Remote Changes",
"checkout": "Switch branch", "checkout": "Switch Branch",
"checkoutTag": "Checkout tag" "checkoutTag": "Checkout Tag"
}, },
"config": { "config": {
"link": "Mercurial", "link": "Mercurial",

View File

@@ -1,7 +1,7 @@
{ {
"scm-svn-plugin": { "scm-svn-plugin": {
"information": { "information": {
"checkout": "Checkout repository" "checkout": "Checkout Repository"
}, },
"config": { "config": {
"link": "Subversion", "link": "Subversion",

View File

@@ -11,18 +11,27 @@
"no-write-permission-notification": "Hinweis: Es fehlen Berechtigungen zum Bearbeiten der Einstellungen!" "no-write-permission-notification": "Hinweis: Es fehlen Berechtigungen zum Bearbeiten der Einstellungen!"
} }
}, },
"proxy-settings": { "proxySettings": {
"name": "Proxy Einstellungen", "subtitle": "Proxy Einstellungen",
"proxy-password": "Proxy Passwort", "enable": "Proxy aktivieren",
"proxy-port": "Proxy Port", "enableHelpText": "Proxy aktivieren",
"proxy-server": "Proxy Server", "password": "Proxy Passwort",
"proxy-user": "Proxy Benutzer", "passwordHelpText": "Das Passwort für die Proxy Server Anmeldung.",
"enable-proxy": "Proxy aktivieren", "port": "Proxy Port",
"proxy-excludes": "Proxy Excludes", "portHelpText": "Der Proxy Port",
"remove-proxy-exclude-button": "Proxy Exclude löschen", "server": "Proxy Server",
"add-proxy-exclude-error": "Der Proxy Exclude ist ungültig", "serverHelpText": "Der Proxy Server",
"add-proxy-exclude-textfield": "Neue Proxy Excludes hinzufügen", "user": "Proxy Benutzer",
"add-proxy-exclude-button": "Proxy Exclude hinzufügen" "userHelpText": "Der Benutzername für die Proxy Server Anmeldung.",
"noExcludes": "Es wurden keine Proxy Excludes gefunden.",
"excludesTable": {
"label": "Proxy Excludes",
"helpText": "Glob patterns für Hostnamen, die von den Proxy-Einstellungen ausgeschlossen werden sollen.",
"deleteButton": "Proxy Exclude löschen"
},
"addExclude": "Neue Proxy Excludes hinzufügen",
"addExcludeButton": "Proxy Exclude hinzufügen",
"addExcludeError": "Der Proxy Exclude ist ungültig"
}, },
"base-url-settings": { "base-url-settings": {
"name": "Base URL Einstellungen", "name": "Base URL Einstellungen",
@@ -75,12 +84,6 @@
"baseUrlHelpText": "Die URL der Applikation mit Kontextpfad, z.B. http://localhost:8080/scm", "baseUrlHelpText": "Die URL der Applikation mit Kontextpfad, z.B. http://localhost:8080/scm",
"loginAttemptLimitHelpText": "Maximale Anzahl von Anmeldeversuchen. Durch Verwendung von -1 wird die Begrenzung der Anmeldeversuche deaktiviert.", "loginAttemptLimitHelpText": "Maximale Anzahl von Anmeldeversuchen. Durch Verwendung von -1 wird die Begrenzung der Anmeldeversuche deaktiviert.",
"loginAttemptLimitTimeoutHelpText": "Timeout in Sekunden für Benutzer, die vorübergehend wegen zu vieler fehlgeschlagener Anmeldeversuche, deaktiviert wurden.", "loginAttemptLimitTimeoutHelpText": "Timeout in Sekunden für Benutzer, die vorübergehend wegen zu vieler fehlgeschlagener Anmeldeversuche, deaktiviert wurden.",
"enableProxyHelpText": "Proxy aktivieren",
"proxyPortHelpText": "Der Proxy Port",
"proxyPasswordHelpText": "Das Passwort für die Proxy Server Anmeldung.",
"proxyServerHelpText": "Der Proxy Server",
"proxyUserHelpText": "Der Benutzername für die Proxy Server Anmeldung.",
"proxyExcludesHelpText": "Glob patterns für Hostnamen, die von den Proxy-Einstellungen ausgeschlossen werden sollen.",
"enableXsrfProtectionHelpText": "Xsrf Cookie Protection aktivieren. Hinweis: Dieses Feature befindet sich noch im Experimentalstatus.", "enableXsrfProtectionHelpText": "Xsrf Cookie Protection aktivieren. Hinweis: Dieses Feature befindet sich noch im Experimentalstatus.",
"enabledUserConverterHelpText": "Benutzer Konverter aktivieren. Interne Benutzer werden beim Einloggen über ein Fremdsystem zu externen Benutzern konvertiert.", "enabledUserConverterHelpText": "Benutzer Konverter aktivieren. Interne Benutzer werden beim Einloggen über ein Fremdsystem zu externen Benutzern konvertiert.",
"nameSpaceStrategyHelpText": "Strategie für Namespaces.", "nameSpaceStrategyHelpText": "Strategie für Namespaces.",

View File

@@ -278,7 +278,8 @@
"moreFilesAvailable": "Es werden nur die ersten {{count}} Dateien angezeigt. Es sind weitere Dateien vorhanden." "moreFilesAvailable": "Es werden nur die ersten {{count}} Dateien angezeigt. Es sind weitere Dateien vorhanden."
}, },
"permission": { "permission": {
"title": "Berechtigungen bearbeiten", "title": "Berechtigungen",
"noPermissions": "Keine Berechtigungen gefunden.",
"user": "Benutzer", "user": "Benutzer",
"group": "Gruppe", "group": "Gruppe",
"error-title": "Fehler", "error-title": "Fehler",

View File

@@ -80,7 +80,7 @@
}, },
"publicKey": { "publicKey": {
"subtitle": "Öffentliche Schlüssel", "subtitle": "Öffentliche Schlüssel",
"description": "Zum Prüfen von Signaturen für z. B. Commits können hier die entsprechenden öffentlichen GPG Schlüssel hinterlegt werden. Zudem können hier die vom SCM-Manager erstellten Signaturschlüssel heruntergeladen werden.", "description": "Zum Prüfen von Signaturen für z. B. Commits können hier die entsprechenden öffentlichen GPG-Schlüssel hinterlegt werden. Zudem können hier die vom SCM-Manager erstellten Signaturschlüssel heruntergeladen werden.",
"noStoredKeys": "Es wurden keine Schlüssel gefunden.", "noStoredKeys": "Es wurden keine Schlüssel gefunden.",
"displayName": "Anzeigename", "displayName": "Anzeigename",
"created": "Eingetragen an", "created": "Eingetragen an",

View File

@@ -9,16 +9,16 @@
"info": { "info": {
"title": "Administration", "title": "Administration",
"currentAppVersion": "Current Application Version", "currentAppVersion": "Current Application Version",
"newAppVersion": "New SCM-Manager version available", "newAppVersion": "New SCM-Manager Version Available",
"newRelease": { "newRelease": {
"title": "New SCM-Manager version available", "title": "New SCM-Manager Version Available",
"description": "Download the latest SCM-Manager version {{version}} from the official homepage.", "description": "Download the latest SCM-Manager version {{version}} from the official homepage.",
"downloadButton": "Get latest version" "downloadButton": "Get Latest Version"
}, },
"communityTitle": "Community Support", "communityTitle": "Community Support",
"communityIconAlt": "Community Support Icon", "communityIconAlt": "Community Support Icon",
"communityInfo": "Contact the SCM-Manager support team for questions about SCM-Manager, to report bugs or to request features through the official channels.", "communityInfo": "Contact the SCM-Manager support team for questions about SCM-Manager, to report bugs or to request features through the official channels.",
"communityButton": "Contact our Team", "communityButton": "Contact Our Team",
"enterpriseTitle": "Enterprise Support", "enterpriseTitle": "Enterprise Support",
"enterpriseIconAlt": "Enterprise Support Icon", "enterpriseIconAlt": "Enterprise Support Icon",
"enterpriseInfo": "You require support with the integration of SCM-Manager into your processes, with the customization of the tool or simply a service level agreement (SLA)?", "enterpriseInfo": "You require support with the integration of SCM-Manager into your processes, with the customization of the tool or simply a service level agreement (SLA)?",
@@ -36,12 +36,12 @@
"installedNavLink": "Installed", "installedNavLink": "Installed",
"availableNavLink": "Available" "availableNavLink": "Available"
}, },
"showPending": "Show changes", "showPending": "Show Changes",
"executePending": "Execute changes", "executePending": "Execute Changes",
"outdatedPlugins": "Update {{count}} plugin", "outdatedPlugins": "Update {{count}} Plugin",
"outdatedPlugins_plural": "Update {{count}} plugins", "outdatedPlugins_plural": "Update {{count}} Plugins",
"updateAll": "Update all plugins", "updateAll": "Update All Plugins",
"cancelPending": "Cancel changes", "cancelPending": "Cancel Changes",
"noPlugins": "No plugins found.", "noPlugins": "No plugins found.",
"modal": { "modal": {
"title": { "title": {

View File

@@ -14,7 +14,7 @@
}, },
"logout": { "logout": {
"error": { "error": {
"title": "Logout failed", "title": "Logout Failed",
"subtitle": "Something went wrong during logout" "subtitle": "Something went wrong during logout"
} }
}, },
@@ -87,10 +87,10 @@
}, },
"password": { "password": {
"label": "Password", "label": "Password",
"newPassword": "New password", "newPassword": "New Password",
"currentPassword": "Current password", "currentPassword": "Current Password",
"currentPasswordHelpText": "The password currently in use", "currentPasswordHelpText": "The password currently in use",
"confirmPassword": "Confirm password", "confirmPassword": "Confirm Password",
"passwordInvalid": "Password has to be between 6 and 32 characters", "passwordInvalid": "Password has to be between 6 and 32 characters",
"passwordConfirmFailed": "Passwords have to be identical", "passwordConfirmFailed": "Passwords have to be identical",
"submit": "Submit", "submit": "Submit",
@@ -113,6 +113,6 @@
"lastDivider": "and" "lastDivider": "and"
}, },
"fileUpload": { "fileUpload": {
"label": "Upload file" "label": "Upload File"
} }
} }

View File

@@ -11,18 +11,27 @@
"no-write-permission-notification": "Please note: You do not have the permission to edit the config!" "no-write-permission-notification": "Please note: You do not have the permission to edit the config!"
} }
}, },
"proxy-settings": { "proxySettings": {
"name": "Proxy Settings", "subtitle": "Proxy Settings",
"proxy-password": "Proxy Password", "enable": "Enable Proxy",
"proxy-port": "Proxy Port", "enableHelpText": "Enable Proxy",
"proxy-server": "Proxy Server", "password": "Proxy Password",
"proxy-user": "Proxy User", "passwordHelpText": "The password for the proxy server authentication.",
"enable-proxy": "Enable Proxy", "port": "Port",
"proxy-excludes": "Proxy Excludes", "portHelpText": "The proxy port",
"remove-proxy-exclude-button": "Remove Proxy Exclude", "server": "Proxy Server",
"add-proxy-exclude-error": "The proxy exclude you want to add is not valid", "serverHelpText": "The proxy server",
"add-proxy-exclude-textfield": "Add proxy exclude you want to add to proxy excludes here", "user": "Proxy User",
"add-proxy-exclude-button": "Add Proxy Exclude" "userHelpText": "The username for the proxy server authentication.",
"noExcludes": "No proxy excludes found.",
"excludesTable": {
"label": "Proxy Excludes",
"helpText": "Glob patterns for hostnames, which should be excluded from proxy settings.",
"deleteButton": "Remove Proxy Exclude"
},
"addExclude": "Add Proxy Exclude",
"addExcludeButton": "Add Proxy Exclude",
"addExcludeError": "The proxy exclude you want to add is not valid."
}, },
"base-url-settings": { "base-url-settings": {
"name": "Base URL Settings", "name": "Base URL Settings",
@@ -75,12 +84,6 @@
"baseUrlHelpText": "The url of the application (with context path), i.e. http://localhost:8080/scm", "baseUrlHelpText": "The url of the application (with context path), i.e. http://localhost:8080/scm",
"loginAttemptLimitHelpText": "Maximum allowed login attempts. Use -1 to disable the login attempt limit.", "loginAttemptLimitHelpText": "Maximum allowed login attempts. Use -1 to disable the login attempt limit.",
"loginAttemptLimitTimeoutHelpText": "Timeout in seconds for users which are temporary disabled, because of too many failed login attempts.", "loginAttemptLimitTimeoutHelpText": "Timeout in seconds for users which are temporary disabled, because of too many failed login attempts.",
"enableProxyHelpText": "Enable Proxy",
"proxyPortHelpText": "The proxy port",
"proxyPasswordHelpText": "The password for the proxy server authentication.",
"proxyServerHelpText": "The proxy server",
"proxyUserHelpText": "The username for the proxy server authentication.",
"proxyExcludesHelpText": "Glob patterns for hostnames, which should be excluded from proxy settings.",
"enableXsrfProtectionHelpText": "Enable XSRF Cookie Protection. Note: This feature is still experimental.", "enableXsrfProtectionHelpText": "Enable XSRF Cookie Protection. Note: This feature is still experimental.",
"enabledUserConverterHelpText": "Enable User Converter. Internal users will automatically be converted to external on their first login using an external system.", "enabledUserConverterHelpText": "Enable User Converter. Internal users will automatically be converted to external on their first login using an external system.",
"nameSpaceStrategyHelpText": "The namespace strategy.", "nameSpaceStrategyHelpText": "The namespace strategy.",

View File

@@ -51,7 +51,7 @@
}, },
"groupForm": { "groupForm": {
"subtitle": "Edit Group", "subtitle": "Edit Group",
"externalSubtitle": "Edit external group", "externalSubtitle": "Edit External Group",
"submit": "Submit", "submit": "Submit",
"nameError": "Group name is invalid", "nameError": "Group name is invalid",
"descriptionError": "Description is invalid", "descriptionError": "Description is invalid",

View File

@@ -1,6 +1,6 @@
{ {
"setPermissions": { "setPermissions": {
"button": "Set permissions", "button": "Set Permissions",
"setPermissionsSuccessful": "Permissions set successfully" "setPermissionsSuccessful": "Permissions set successfully"
} }
} }

View File

@@ -60,12 +60,11 @@
}, },
"create": { "create": {
"title": "Add Repository", "title": "Add Repository",
"subtitle": "Create a new repository", "subtitle": "Create a new repository"
"createButton": "Create new repository"
}, },
"import": { "import": {
"subtitle": "Import existing repository", "subtitle": "Import existing repository",
"importUrl": "Remote repository url", "importUrl": "Remote Repository Url",
"username": "Username", "username": "Username",
"password": "Password", "password": "Password",
"compressed": { "compressed": {
@@ -73,7 +72,7 @@
"helpText": "Check if your dump file is compressed." "helpText": "Check if your dump file is compressed."
}, },
"bundle": { "bundle": {
"title": "Select your dump file", "title": "Dump File",
"helpText": "Select your dump file from which the repository should be imported." "helpText": "Select your dump file from which the repository should be imported."
}, },
"pending": { "pending": {
@@ -94,7 +93,7 @@
}, },
"branches": { "branches": {
"overview": { "overview": {
"title": "Overview of all branches", "title": "Overview of All Branches",
"noBranches": "No branches found.", "noBranches": "No branches found.",
"createButton": "Create Branch", "createButton": "Create Branch",
"lastCommit": "Last commit" "lastCommit": "Last commit"
@@ -118,13 +117,13 @@
"commits": "Commits", "commits": "Commits",
"sources": "Sources", "sources": "Sources",
"defaultTag": "Default", "defaultTag": "Default",
"dangerZone": "Delete branch", "dangerZone": "Delete Branch",
"delete": { "delete": {
"button": "Delete branch", "button": "Delete Branch",
"subtitle": "Delete branch", "subtitle": "Delete Branch",
"description": "Deleted branches cannot be restored.", "description": "Deleted branches cannot be restored.",
"confirmAlert": { "confirmAlert": {
"title": "Delete branch", "title": "Delete Branch",
"message": "Do you really want to delete the branch \"{{branch}}\"?", "message": "Do you really want to delete the branch \"{{branch}}\"?",
"cancel": "No", "cancel": "No",
"submit": "Yes" "submit": "Yes"
@@ -133,7 +132,7 @@
}, },
"tags": { "tags": {
"overview": { "overview": {
"title": "Overview of all tags", "title": "Overview of All Tags",
"noTags": "No tags found.", "noTags": "No tags found.",
"created": "Created" "created": "Created"
}, },
@@ -152,7 +151,7 @@
} }
} }
}, },
"title": "Create a new tag", "title": "Create a New Tag",
"hint": "The tag will be automatically signed with your default key by the SCM-Manager.", "hint": "The tag will be automatically signed with your default key by the SCM-Manager.",
"confirm": "Create Tag", "confirm": "Create Tag",
"cancel": "Cancel" "cancel": "Cancel"
@@ -162,13 +161,13 @@
"name": "Name", "name": "Name",
"commit": "Commit", "commit": "Commit",
"sources": "Sources", "sources": "Sources",
"dangerZone": "Delete tag", "dangerZone": "Delete Tag",
"delete": { "delete": {
"button": "Delete tag", "button": "Delete Tag",
"subtitle": "Delete tag", "subtitle": "Delete Tag",
"description": "Deleted tag can not be restored.", "description": "Deleted tag can not be restored.",
"confirmAlert": { "confirmAlert": {
"title": "Delete tag", "title": "Delete Tag",
"message": "Do you really want to delete the tag \"{{tag}}\"?", "message": "Do you really want to delete the tag \"{{tag}}\"?",
"cancel": "No", "cancel": "No",
"submit": "Yes" "submit": "Yes"
@@ -238,16 +237,16 @@
"subtitle": "Edit Repository", "subtitle": "Edit Repository",
"submitCreate": "Save", "submitCreate": "Save",
"submitImport": "Import", "submitImport": "Import",
"initializeRepository": "Initialize repository", "initializeRepository": "Initialize Repository",
"dangerZone": "Rename, archive and delete", "dangerZone": "Rename, Archive and Delete",
"createButton": "Create Repository", "createButton": "Create Repository",
"importButton": "Import repository" "importButton": "Import Repository"
}, },
"sources": { "sources": {
"fileTree": { "fileTree": {
"name": "Name", "name": "Name",
"length": "Length", "length": "Length",
"commitDate": "Commit date", "commitDate": "Commit Date",
"description": "Description", "description": "Description",
"notYetComputed": "Not yet computed, will be updated in a short while", "notYetComputed": "Not yet computed, will be updated in a short while",
"computationAborted": "The computation took too long and was aborted", "computationAborted": "The computation took too long and was aborted",
@@ -266,7 +265,7 @@
}, },
"path": "Path", "path": "Path",
"branch": "Branch", "branch": "Branch",
"commitDate": "Commit date", "commitDate": "Commit Date",
"description": "Description", "description": "Description",
"size": "Size", "size": "Size",
"copyPermalink": "Copy Permalink to Clipboard" "copyPermalink": "Copy Permalink to Clipboard"
@@ -279,12 +278,13 @@
"moreFilesAvailable": "These are just the first {{count}} files. There are more files available." "moreFilesAvailable": "These are just the first {{count}} files. There are more files available."
}, },
"permission": { "permission": {
"title": "Edit Permissions", "title": "Permissions",
"noPermissions": "No permissions found.",
"user": "User", "user": "User",
"group": "Group", "group": "Group",
"error-title": "Error", "error-title": "Error",
"error-subtitle": "Unknown permissions error", "error-subtitle": "Unknown permissions error",
"name": "User or group", "name": "User or Group",
"role": "Role", "role": "Role",
"custom": "CUSTOM", "custom": "CUSTOM",
"permissions": "Permissions", "permissions": "Permissions",
@@ -300,14 +300,14 @@
"delete-permission-button": { "delete-permission-button": {
"label": "Delete", "label": "Delete",
"confirm-alert": { "confirm-alert": {
"title": "Delete permission", "title": "Delete Permission",
"message": "Do you really want to delete the permission?", "message": "Do you really want to delete the permission?",
"submit": "Yes", "submit": "Yes",
"cancel": "No" "cancel": "No"
} }
}, },
"add-permission": { "add-permission": {
"add-permission-heading": "Add new Permission", "add-permission-heading": "Add New Permission",
"submit-button": "Submit", "submit-button": "Submit",
"name-input-invalid": "Permission is not allowed to be empty! If it is not empty, your input name is invalid or it already exists!" "name-input-invalid": "Permission is not allowed to be empty! If it is not empty, your input name is invalid or it already exists!"
}, },
@@ -327,10 +327,10 @@
}, },
"deleteRepo": { "deleteRepo": {
"button": "Delete Repository", "button": "Delete Repository",
"subtitle": "Delete repository", "subtitle": "Delete Repository",
"description": "Deleted repositories can not be restored.", "description": "Deleted repositories can not be restored.",
"confirmAlert": { "confirmAlert": {
"title": "Delete repository", "title": "Delete Repository",
"message": "Do you really want to delete the repository?", "message": "Do you really want to delete the repository?",
"submit": "Yes", "submit": "Yes",
"cancel": "No" "cancel": "No"
@@ -338,14 +338,14 @@
}, },
"renameRepo": { "renameRepo": {
"button": "Rename Repository", "button": "Rename Repository",
"subtitle": "Renames this repository", "subtitle": "Rename this Repository",
"description1": "The repository can only be accessed by its new name.", "description1": "The repository can only be accessed by its new name.",
"description2": "Namespace Permissions must be set again if the namespace is changed.", "description2": "Namespace Permissions must be set again if the namespace is changed.",
"modal": { "modal": {
"title": "Rename repository", "title": "Rename Repository",
"label": { "label": {
"repoName": "Repository name", "repoName": "Repository Name",
"repoNamespace": "Repository namespace" "repoNamespace": "Repository Namespace"
}, },
"button": { "button": {
"rename": "Rename", "rename": "Rename",

View File

@@ -70,12 +70,12 @@
"userIsExternal": "This user is managed by an external system", "userIsExternal": "This user is managed by an external system",
"button": { "button": {
"submit": "Submit", "submit": "Submit",
"convertToExternal": "Convert user to external", "convertToExternal": "Convert User to External",
"convertToInternal": "Convert user to internal" "convertToInternal": "Convert User to Internal"
}, },
"modal": { "modal": {
"passwordRequired": "Set new password for internal user", "passwordRequired": "Set New Password for Internal User",
"convertToInternal": "Convert to internal" "convertToInternal": "Convert to Internal"
} }
}, },
"publicKey": { "publicKey": {
@@ -87,8 +87,8 @@
"raw": "Key", "raw": "Key",
"download": "Download", "download": "Download",
"delete": "Delete", "delete": "Delete",
"addSubtitle": "Add new key", "addSubtitle": "Add New Key",
"addKey": "Add key" "addKey": "Add Key"
}, },
"apiKey": { "apiKey": {
"subtitle": "API Keys", "subtitle": "API Keys",
@@ -102,12 +102,12 @@
"help": "The api key will be restricted to permissions of this role" "help": "The api key will be restricted to permissions of this role"
}, },
"created": "Created on", "created": "Created on",
"addSubtitle": "Add new key", "addSubtitle": "Add New Key",
"addKey": "Add key", "addKey": "Add Key",
"delete": "Delete", "delete": "Delete",
"download": "Download", "download": "Download",
"modal": { "modal": {
"title": "Key created", "title": "Key Created",
"text1": "Your new API key is ready. You can use it as a bearer token for REST calls or as a password for SCM clients.", "text1": "Your new API key is ready. You can use it as a bearer token for REST calls or as a password for SCM clients.",
"text2": "Store your API key in a safe place now! It is only displayed now and cannot be recovered later.", "text2": "Store your API key in a safe place now! It is only displayed now and cannot be recovered later.",
"clipboard": "Copy to clipboard", "clipboard": "Copy to clipboard",

View File

@@ -11,18 +11,27 @@
"no-write-permission-notification": "Por favor, tenga en cuenta: ¡No tiene permiso para editar la configuración!" "no-write-permission-notification": "Por favor, tenga en cuenta: ¡No tiene permiso para editar la configuración!"
} }
}, },
"proxy-settings": { "proxySettings": {
"name": "Ajustes del proxy", "subtitle": "Ajustes del proxy",
"proxy-password": "Contraseña del proxy", "enable": "Habilitar proxy",
"proxy-port": "Puerto del proxy", "enableHelpText": "Habilitar proxy",
"proxy-server": "Servidor proxy", "password": "Contraseña del proxy",
"proxy-user": "Usuario del proxy", "passwordHelpText": "La contraseña para la autenticación del servidor proxy.",
"enable-proxy": "Habilitar proxy", "port": "Puerto del proxy",
"proxy-excludes": "Excepciones del proxy", "portHelpText": "El puerto del proxy",
"remove-proxy-exclude-button": "Eliminar las excepciones del proxy", "server": "Servidor proxy",
"add-proxy-exclude-error": "La excepción que desea añadir al proxy es incorrecta", "serverHelpText": "El servidor proxy",
"add-proxy-exclude-textfield": "Añada aquí las excepciones que desee incluir al proxy", "user": "Usuario del proxy",
"add-proxy-exclude-button": "Añadir excepción al proxy" "userHelpText": "El nombre de usuario para la autenticación del servidor proxy.",
"noExcludes": "No se encontraron exclusiones del proxy.",
"excludesTable": {
"label": "Excepciones del proxy",
"helpText": "Patrones globales para hostnames que deben excluirse de la configuración del proxy.",
"deleteButton": "Eliminar las excepciones del proxy"
},
"addExclude": "Añada aquí las excepciones que desee incluir al proxy",
"addExcludeButton": "Añadir excepción al proxy",
"addExcludeError": "La excepción que desea añadir al proxy es incorrecta"
}, },
"base-url-settings": { "base-url-settings": {
"name": "Ajustes de la URL base", "name": "Ajustes de la URL base",
@@ -65,12 +74,6 @@
"baseUrlHelpText": "La URL de la aplicación (con la ruta del contexto), por ejemplo: http://localhost:8080/scm", "baseUrlHelpText": "La URL de la aplicación (con la ruta del contexto), por ejemplo: http://localhost:8080/scm",
"loginAttemptLimitHelpText": "Máximo número permitido de intentos de inicio de sesión. Use -1 para deshabilitar este límite.", "loginAttemptLimitHelpText": "Máximo número permitido de intentos de inicio de sesión. Use -1 para deshabilitar este límite.",
"loginAttemptLimitTimeoutHelpText": "Tiempo de espera en segundos para los usuarios que están deshabilitados temporalmente debido a demasiado intentos fallidos de inicio de sesión.", "loginAttemptLimitTimeoutHelpText": "Tiempo de espera en segundos para los usuarios que están deshabilitados temporalmente debido a demasiado intentos fallidos de inicio de sesión.",
"enableProxyHelpText": "Habilitar proxy",
"proxyPortHelpText": "El puerto del proxy",
"proxyPasswordHelpText": "La contraseña para la autenticación del servidor proxy.",
"proxyServerHelpText": "El servidor proxy",
"proxyUserHelpText": "El nombre de usuario para la autenticación del servidor proxy.",
"proxyExcludesHelpText": "Patrones globales para hostnames que deben excluirse de la configuración del proxy.",
"enableXsrfProtectionHelpText": "Habilitar la protección de cookies XSRF. Nota: Esta funcionalidad todavía es experimental.", "enableXsrfProtectionHelpText": "Habilitar la protección de cookies XSRF. Nota: Esta funcionalidad todavía es experimental.",
"nameSpaceStrategyHelpText": "La estrategia para el espacio de nombres.", "nameSpaceStrategyHelpText": "La estrategia para el espacio de nombres.",
"loginInfoUrlHelpText": "URL para la información en el inicio de sesión (consejos sobre complementos y funcionalidades en la página de inicio de sesión). Si esto se omite, no se mostrará información de inicio de sesión." "loginInfoUrlHelpText": "URL para la información en el inicio de sesión (consejos sobre complementos y funcionalidades en la página de inicio de sesión). Si esto se omite, no se mostrará información de inicio de sesión."

View File

@@ -134,7 +134,8 @@
} }
}, },
"permission": { "permission": {
"title": "Editar permisos", "title": "Permisos",
"noPermissions": "No se han encontrado permisos.",
"user": "Usuario", "user": "Usuario",
"group": "Grupo", "group": "Grupo",
"error-title": "Error", "error-title": "Error",

View File

@@ -47,61 +47,61 @@ class ProxySettings extends React.Component<Props> {
proxyUser, proxyUser,
enableProxy, enableProxy,
proxyExcludes, proxyExcludes,
hasUpdatePermission hasUpdatePermission,
} = this.props; } = this.props;
return ( return (
<div> <div>
<Subtitle subtitle={t("proxy-settings.name")} /> <Subtitle subtitle={t("proxySettings.subtitle")} />
<div className="columns"> <div className="columns">
<div className="column is-full"> <div className="column is-full">
<Checkbox <Checkbox
checked={enableProxy} checked={enableProxy}
label={t("proxy-settings.enable-proxy")} label={t("proxySettings.enable")}
onChange={this.handleEnableProxyChange} onChange={this.handleEnableProxyChange}
disabled={!hasUpdatePermission} disabled={!hasUpdatePermission}
helpText={t("help.enableProxyHelpText")} helpText={t("proxySettings.enableHelpText")}
/> />
</div> </div>
</div> </div>
<div className="columns"> <div className="columns">
<div className="column is-half"> <div className="column is-half">
<InputField <InputField
label={t("proxy-settings.proxy-password")} label={t("proxySettings.password")}
onChange={this.handleProxyPasswordChange} onChange={this.handleProxyPasswordChange}
value={proxyPassword} value={proxyPassword}
type="password" type="password"
disabled={!enableProxy || !hasUpdatePermission} disabled={!enableProxy || !hasUpdatePermission}
helpText={t("help.proxyPasswordHelpText")} helpText={t("proxySettings.passwordHelpText")}
/> />
</div> </div>
<div className="column is-half"> <div className="column is-half">
<InputField <InputField
label={t("proxy-settings.proxy-port")} label={t("proxySettings.port")}
value={proxyPort} value={proxyPort}
onChange={this.handleProxyPortChange} onChange={this.handleProxyPortChange}
disabled={!enableProxy || !hasUpdatePermission} disabled={!enableProxy || !hasUpdatePermission}
helpText={t("help.proxyPortHelpText")} helpText={t("proxySettings.portHelpText")}
/> />
</div> </div>
</div> </div>
<div className="columns"> <div className="columns">
<div className="column is-half"> <div className="column is-half">
<InputField <InputField
label={t("proxy-settings.proxy-server")} label={t("proxySettings.server")}
value={proxyServer} value={proxyServer}
onChange={this.handleProxyServerChange} onChange={this.handleProxyServerChange}
disabled={!enableProxy || !hasUpdatePermission} disabled={!enableProxy || !hasUpdatePermission}
helpText={t("help.proxyServerHelpText")} helpText={t("proxySettings.serverHelpText")}
/> />
</div> </div>
<div className="column is-half"> <div className="column is-half">
<InputField <InputField
label={t("proxy-settings.proxy-user")} label={t("proxySettings.user")}
value={proxyUser} value={proxyUser}
onChange={this.handleProxyUserChange} onChange={this.handleProxyUserChange}
disabled={!enableProxy || !hasUpdatePermission} disabled={!enableProxy || !hasUpdatePermission}
helpText={t("help.proxyUserHelpText")} helpText={t("proxySettings.userHelpText")}
/> />
</div> </div>
</div> </div>
@@ -115,9 +115,10 @@ class ProxySettings extends React.Component<Props> {
<AddEntryToTableField <AddEntryToTableField
addEntry={this.addProxyExclude} addEntry={this.addProxyExclude}
disabled={!enableProxy || !hasUpdatePermission} disabled={!enableProxy || !hasUpdatePermission}
buttonLabel={t("proxy-settings.add-proxy-exclude-button")} buttonLabel={t("proxySettings.addExcludeButton")}
fieldLabel={t("proxy-settings.add-proxy-exclude-textfield")} fieldLabel={t("proxySettings.addExclude")}
errorMessage={t("proxy-settings.add-proxy-exclude-error")} helpText={t("proxySettings.excludesTable.helpText")}
errorMessage={t("proxySettings.addExcludeError")}
/> />
</div> </div>
</div> </div>

View File

@@ -39,11 +39,11 @@ class ProxyExcludesTable extends React.Component<Props, State> {
return ( return (
<ArrayConfigTable <ArrayConfigTable
items={proxyExcludes} items={proxyExcludes}
label={t("proxy-settings.proxy-excludes")} label={t("proxySettings.excludesTable.label")}
removeLabel={t("proxy-settings.remove-proxy-exclude-button")} removeLabel={t("proxySettings.excludesTable.deleteButton")}
onRemove={this.removeEntry} onRemove={this.removeEntry}
disabled={disabled} disabled={disabled}
helpText={t("help.proxyExcludesHelpText")} helpText={t("proxySettings.excludesTable.helpText")}
/> />
); );
} }

View File

@@ -0,0 +1,89 @@
/*
* MIT License
*
* Copyright (c) 2020-present Cloudogu GmbH and Contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
import React, { FC } from "react";
import { useTranslation } from "react-i18next";
import { LabelWithHelpIcon, Notification } from "@scm-manager/ui-components";
import SinglePermission from "../containers/SinglePermission";
import { PermissionCollection, RepositoryRole } from "@scm-manager/ui-types";
type Props = {
availableRepositoryRoles: RepositoryRole[];
availableVerbs: string[];
namespace: string;
repoName?: string;
permissions: PermissionCollection;
};
const PermissionsTable: FC<Props> = ({
availableRepositoryRoles,
availableVerbs,
namespace,
repoName,
permissions,
}) => {
const [t] = useTranslation("repos");
if (permissions?.length === 0) {
return <Notification type="info">{t("permission.noPermissions")}</Notification>;
}
return (
<table className="card-table table is-hoverable is-fullwidth">
<thead>
<tr>
<th>
<LabelWithHelpIcon label={t("permission.name")} helpText={t("permission.help.nameHelpText")} />
</th>
<th>
<LabelWithHelpIcon label={t("permission.role")} helpText={t("permission.help.roleHelpText")} />
</th>
<th>
<LabelWithHelpIcon
label={t("permission.permissions")}
helpText={t("permission.help.permissionsHelpText")}
/>
</th>
<th />
</tr>
</thead>
<tbody>
{permissions.map((permission) => {
return (
<SinglePermission
availableRepositoryRoles={availableRepositoryRoles}
availableRepositoryVerbs={availableVerbs}
key={permission.name + permission.groupPermission.toString()}
namespace={namespace}
repoName={repoName}
permission={permission}
/>
);
})}
</tbody>
</table>
);
};
export default PermissionsTable;

View File

@@ -45,9 +45,8 @@ import {
isFetchPermissionsPending, isFetchPermissionsPending,
modifyPermissionReset modifyPermissionReset
} from "../modules/permissions"; } from "../modules/permissions";
import { ErrorPage, LabelWithHelpIcon, Loading, Subtitle } from "@scm-manager/ui-components"; import { ErrorPage, Loading, Subtitle } from "@scm-manager/ui-components";
import { Permission, PermissionCollection, PermissionCreateEntry, RepositoryRole } from "@scm-manager/ui-types"; import { Permission, PermissionCollection, PermissionCreateEntry, RepositoryRole } from "@scm-manager/ui-types";
import SinglePermission from "./SinglePermission";
import CreatePermissionForm from "./CreatePermissionForm"; import CreatePermissionForm from "./CreatePermissionForm";
import { History } from "history"; import { History } from "history";
import { getPermissionsLink } from "../../modules/repos"; import { getPermissionsLink } from "../../modules/repos";
@@ -57,6 +56,7 @@ import {
getRepositoryVerbsLink, getRepositoryVerbsLink,
getUserAutoCompleteLink getUserAutoCompleteLink
} from "../../../modules/indexResource"; } from "../../../modules/indexResource";
import PermissionsTable from "../components/PermissionsTable";
type Props = WithTranslation & { type Props = WithTranslation & {
availablePermissions: boolean; availablePermissions: boolean;
availableRepositoryRoles: RepositoryRole[]; availableRepositoryRoles: RepositoryRole[];
@@ -147,7 +147,7 @@ class Permissions extends React.Component<Props> {
<CreatePermissionForm <CreatePermissionForm
availableRoles={availableRepositoryRoles} availableRoles={availableRepositoryRoles}
availableVerbs={availableVerbs} availableVerbs={availableVerbs}
createPermission={permission => this.createPermission(permission)} createPermission={(permission) => this.createPermission(permission)}
loading={loadingCreatePermission} loading={loadingCreatePermission}
currentPermissions={permissions} currentPermissions={permissions}
userAutocompleteLink={userAutocompleteLink} userAutocompleteLink={userAutocompleteLink}
@@ -158,39 +158,7 @@ class Permissions extends React.Component<Props> {
return ( return (
<div> <div>
<Subtitle subtitle={t("permission.title")} /> <Subtitle subtitle={t("permission.title")} />
<table className="card-table table is-hoverable is-fullwidth"> <PermissionsTable {...this.props} />
<thead>
<tr>
<th>
<LabelWithHelpIcon label={t("permission.name")} helpText={t("permission.help.nameHelpText")} />
</th>
<th>
<LabelWithHelpIcon label={t("permission.role")} helpText={t("permission.help.roleHelpText")} />
</th>
<th>
<LabelWithHelpIcon
label={t("permission.permissions")}
helpText={t("permission.help.permissionsHelpText")}
/>
</th>
<th />
</tr>
</thead>
<tbody>
{permissions.map(permission => {
return (
<SinglePermission
availableRepositoryRoles={availableRepositoryRoles}
availableRepositoryVerbs={availableVerbs}
key={permission.name + permission.groupPermission.toString()}
namespace={namespace}
repoName={repoName}
permission={permission}
/>
);
})}
</tbody>
</table>
{createPermissionForm} {createPermissionForm}
</div> </div>
); );