From 5550aac36b56714eac7fa073786a974fd0adfa73 Mon Sep 17 00:00:00 2001 From: lupusA Date: Thu, 21 Mar 2024 19:59:17 +0100 Subject: [PATCH] Some smaller improvements. Further translating text. --- .vscode/settings.json | 3 +- public/locales/de/translation.json | 37 +++++++++++++++++++++ public/locales/en/translation.json | 42 +++++++++++++++++++++-- public/locales/es/translation.json | 37 +++++++++++++++++++++ public/locales/fr/translation.json | 37 +++++++++++++++++++++ public/locales/it/translation.json | 37 +++++++++++++++++++++ public/locales/jp/translation.json | 37 +++++++++++++++++++++ public/locales/pl/translation.json | 37 +++++++++++++++++++++ public/locales/ru/translation.json | 37 +++++++++++++++++++++ src/components/Logs.jsx | 6 ++-- src/components/SetupRepository.jsx | 48 ++++++++++++++------------- src/components/SetupRepositoryS3.jsx | 19 ++++++----- src/components/SnapshotEstimation.jsx | 11 +++--- src/css/App.css | 3 +- src/pages/Task.jsx | 9 +++-- 15 files changed, 348 insertions(+), 52 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 561c45c..94e7f97 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,6 +14,7 @@ "feedback.provider.rclone-remote", "feedback.provider.webdav-server", "feedback.provider.backblaze-b2", - "feedback.provider.sftp-server" + "feedback.provider.sftp-server", + "feedback.task.estimate-results" ] } \ No newline at end of file diff --git a/public/locales/de/translation.json b/public/locales/de/translation.json index 90e2fdf..24f7764 100644 --- a/public/locales/de/translation.json +++ b/public/locales/de/translation.json @@ -1,11 +1,13 @@ { "common.back": "Zurück", "common.cancel": "Abbrechen", + "common.click-here-to-learn-more": "Klick hier um mehr zu erfahren.", "common.delete": "Löschen", "common.delete-confirm": "Löschen bestätigen", "common.loading": "Wird geladen ...", "common.next": "Weiter", "common.return": "Zurück", + "enter-object-name-prefix-or-leave-empty-hint": "Geben Sie das Präfix für den Objektnamen ein oder lassen Sie es leer", "event.description.cancel": "Abbrechen", "event.description.new": "Geben Sie eine neue Beschreibung ein", "event.description.remove": "Beschreibung entfernen", @@ -19,7 +21,10 @@ "event.pin.update": "Pin aktualisieren", "event.repository.advanced-options-hide": "Erweiterte Optionen ausblenden", "event.repository.advanced-options.show": "Erweiterte Optionen anzeigen", + "event.repository.connect-to-repository": "Mit Repository verbinden", + "event.repository.create-repository": "Repository erstellen", "feedback.description.modal-title": "Beschreibung des Snapshots", + "feedback.error.connection": "Verbindungsfehler:", "feedback.header.actions": "Aktionen", "feedback.header.defined": "Definiert", "feedback.header.directories": "Verzeichnisse", @@ -42,14 +47,24 @@ "feedback.provider.sftp-server": "SFTP-Server", "feedback.provider.use-repository-token": "Repository-Token", "feedback.provider.webdav-server": "WebDAV-Server", + "feedback.repository.additional-parameters-hint": "Beim Erstellen des Repositorys über die Befehlszeile können zusätzliche Parameter festgelegt werden.", "feedback.repository.configuration": "Speicherkonfiguration", + "feedback.repository.connect-as": "Verbinden als", + "feedback.repository.connect-in-read-only-mode": "Stellen Sie eine Verbindung im schreibgeschützten Modus her", + "feedback.repository.connect-in-read-only-mode-hint": "Der schreibgeschützte Modus verhindert jegliche Änderungen am Repository.", + "feedback.repository.connect-to-repository": "Mit Repository verbinden", "feedback.repository.create-repository-new": "Neues Repository erstellen", "feedback.repository.create-repository-new-help": "Geben Sie ein sicheres Passwort ein, um das Kopia-Repository im bereitgestellten Speicher zu erstellen.", + "feedback.repository.eec-warning": "[EXPERIMENTELL] Eine Fehlerkorrektur kann zum Schutz vor bestimmten Arten von Datenbeschädigungen aufgrund spontaner Bitwechsel im Speichermedium beitragen.", "feedback.repository.encryption": "Verschlüsselung", "feedback.repository.kopia-server-parameters": "Kopia-Serverparameter", "feedback.repository.name-default": "Mein Repository", + "feedback.repository.override-hint": "Klicken Sie zum Überschreiben auf „Erweiterte Optionen anzeigen“.", "feedback.repository.provider-selection": "Wählen Sie ein Repository aus", "feedback.repository.provider-selection-hint": "Wählen Sie ein Repository aus, um ein neues zu erstellen oder eine Verbindung zu einem bestehenden Repository herzustellen:", + "feedback.repository.repository-description": "Beschreibung des Repository", + "feedback.repository.repository-description-help": "Hilft bei der Unterscheidung zwischen mehreren verbundenen Repositorys", + "feedback.repository.repository-description-hint": "Geben Sie eine Repository-Beschreibung ein", "feedback.repository.repository-token-enter": "Geben Sie das Repository-Token ein", "feedback.tab.policies": "Richtlinien", "feedback.tab.preferences": "Einstellungen", @@ -57,6 +72,7 @@ "feedback.tab.repository-is-not-connected": "Das Repository ist nicht verbunden", "feedback.tab.snapshots": "Snapshots", "feedback.tab.tasks": "Aufgaben", + "feedback.task.estimate-results": "{{description}} Bytes: {{bytes}} ({{bytes.excluded}} exkludiert) Files: {{files}} ({{files.excluded}} exkludiert) Directories: {{directories}} ({{directories.excluded}} exkludiert) Errors: {{errors}} ({{errors.ignored}} ignoriert)", "feedback.task.total": "Gesamt", "feedback.ui.appearance": "Darstellung", "feedback.ui.appearance-help": "Gibt die Darstellung des Nutzerinterfaces an", @@ -115,12 +131,31 @@ "feedback.validation.repository-token.token-hint": "Verbindungstoken einfügen", "feedback.validation.required.directory": "Pflichtfeld", "feedback.validation.required.field": "Pflichtfeld", + "feedback.validation.required.hostname": "Hostname", + "feedback.validation.required.hostname-hint": "Überschreiben Sie dies, wenn Sie einen Snapshot wiederherstellen, der auf einem anderen Computer erstellt wurde", "feedback.validation.required.password-repository": "Repository-Passwort", "feedback.validation.required.password-repository-help": "Wird zum Verschlüsseln des Repository-Inhalts verwendet", "feedback.validation.required.password-repository-hint": "Geben Sie das Repository-Passwort ein", "feedback.validation.required.repository-password-confirm": "Bestätigen Sie das Repository-Passwort", "feedback.validation.required.repository-password-confirm-again": "Geben Sie das Repository-Passwort erneut ein", + "feedback.validation.required.server-password": "Server-Passwort", + "feedback.validation.required.server-password-hint": "Geben Sie das Passwort ein, um eine Verbindung zum Server herzustellen", + "feedback.validation.required.username": "Nutzername", + "feedback.validation.required.username-hint": "Überschreiben Sie dies, wenn Sie einen Snapshot wiederherstellen, der von einem anderen Benutzer erstellt wurde", "feedback.validation.required.valid-number-or-empty": "Muss eine gültige Zahl oder leer sein", + "feedback.validation.s3.access-key-id": "Zugriffsschlüssel-ID", + "feedback.validation.s3.access-key-id-hint": "Geben Sie die Zugriffsschlüssel-ID ein", + "feedback.validation.s3.bucket-name": "Bucket", + "feedback.validation.s3.bucket-name-hint": "Geben Sie den Bucket-Namen ein", + "feedback.validation.s3.object-name-prefix": "Präfix des Objektnamens", + "feedback.validation.s3.override-region": "Region überschreiben", + "feedback.validation.s3.override-region-hint": "Geben Sie eine bestimmte Region ein (z. B. us-west-1) oder lassen Sie das Feld leer", + "feedback.validation.s3.secret-access-key": "Geheimer Zugangsschlüssel", + "feedback.validation.s3.secret-access-key-hint": "Geben Sie den geheimen Zugangsschlüssel ein", + "feedback.validation.s3.server-endpoint": "Serverendpunkt", + "feedback.validation.s3.server-endpoint-hint": "Geben Sie die Serveradresse ein (z. B. s3.amazonaws.com)", + "feedback.validation.s3.session-token": "Sitzungstoken", + "feedback.validation.s3.session-token-hint": "Geben Sie das Sitzungstoken ein oder lassen Sie es leer", "feedback.validation.webdav.password": "Passwort", "feedback.validation.webdav.password-hint": "Passwort eingeben", "feedback.validation.webdav.server-url": "WebDAV-Server-URL", @@ -251,6 +286,8 @@ "value.log.details-10-maximum-details": "10 - maximale Details", "value.log.details-5-normal-details": "5 - normale Details", "value.log.details-inherit-from-parent": "(vom übergeordneten Element erben)", + "value.provider.s3.http-connection-insecure": "HTTP-Verbindung verwenden (unsicher)", + "value.provider.s3.no-tls-verification": "TLS-Zertifikat nicht überprüfen", "value.ui.appearance-large": "groß", "value.ui.appearance-medium": "mittel", "value.ui.appearance-small": "klein", diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index b229c28..7574732 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -1,11 +1,13 @@ { "common.back": "Back", "common.cancel": "Cancel", + "common.click-here-to-learn-more": "Click here to learn more.", "common.delete": "Delete", "common.delete-confirm": "Confirm Delete", "common.loading": "Loading ...", "common.next": "Next", "common.return": "Return", + "enter-object-name-prefix-or-leave-empty-hint": "Enter object name prefix or leave empty", "event.description.cancel": "Cancel", "event.description.new": "Enter new description", "event.description.remove": "Remove Description", @@ -19,7 +21,10 @@ "event.pin.update": "Update Pin", "event.repository.advanced-options-hide": "Hide Advanced Options", "event.repository.advanced-options.show": "Show Advanced Options", + "event.repository.connect-to-repository": "Connect to repository", + "event.repository.create-repository": "Create repository", "feedback.description.modal-title": "Snapshot Description", + "feedback.error.connection": "Connect Error:", "feedback.header.actions": "Actions", "feedback.header.defined": "Defined", "feedback.header.directories": "Directories", @@ -42,14 +47,24 @@ "feedback.provider.sftp-server": "SFTP Server", "feedback.provider.use-repository-token": "Use Repository Token", "feedback.provider.webdav-server": "WebDAV Server", + "feedback.repository.additional-parameters-hint": "Additional parameters can be set when creating repository using command line.", "feedback.repository.configuration": "Storage Configuration", + "feedback.repository.connect-as": "Connect as", + "feedback.repository.connect-in-read-only-mode": "Connect in read-only mode", + "feedback.repository.connect-in-read-only-mode-hint": "Read-only mode prevents any changes to the repository.", + "feedback.repository.connect-to-repository": "Connect to repository", "feedback.repository.create-repository-new": "Create New Repository", "feedback.repository.create-repository-new-help": "Enter a strong password to create Kopia repository in the provided storage.", + "feedback.repository.eec-warning": "[EXPERIMENTAL] Error correction can help protect from certain kinds of data corruption due to spontaneous bit flips in the storage media.", "feedback.repository.encryption": "Encryption", "feedback.repository.kopia-server-parameters": "Kopia Server Parameters", "feedback.repository.name-default": "My Repository", + "feedback.repository.override-hint": "To override, click 'Show Advanced Options'", "feedback.repository.provider-selection": "Select Storage Type", "feedback.repository.provider-selection-hint": "To connect to a repository or create one, select the preferred storage type:", + "feedback.repository.repository-description": "Repository description", + "feedback.repository.repository-description-help": "Helps to distinguish between multiple connected repositories", + "feedback.repository.repository-description-hint": "Enter repository description", "feedback.repository.repository-token-enter": "Enter Repository Token", "feedback.tab.policies": "Policies", "feedback.tab.preferences": "Preferences", @@ -57,6 +72,7 @@ "feedback.tab.repository-is-not-connected": "Repository is not connected", "feedback.tab.snapshots": "Snapshots", "feedback.tab.tasks": "Tasks", + "feedback.task.estimate-results": "{{description}} Bytes: {{bytes}} ({{bytes.excluded}} excluded) Files: {{files}} ({{files.excluded}} excluded) Directories: {{directories}} ({{directories.excluded}} excluded) Errors: {{errors}} ({{errors.ignored}} ignored)", "feedback.task.total": "Total", "feedback.ui.appearance": "Appearance", "feedback.ui.appearance-help": "Specifies the appearance of the user interface", @@ -115,12 +131,31 @@ "feedback.validation.repository-token.token-hint": "Paste connection token", "feedback.validation.required.directory": "Required field", "feedback.validation.required.field": "Required field", + "feedback.validation.required.hostname": "Hostname", + "feedback.validation.required.hostname-hint": "Override this when restoring a snapshot taken on another machine", "feedback.validation.required.password-repository": "Repository Password", "feedback.validation.required.password-repository-help": "Used to encrypt the repository's contents", "feedback.validation.required.password-repository-hint": "Enter repository password", "feedback.validation.required.repository-password-confirm": "Confirm Repository Password", "feedback.validation.required.repository-password-confirm-again": "enter repository password again", + "feedback.validation.required.server-password": "Server password", + "feedback.validation.required.server-password-hint": "Enter password to connect to server", + "feedback.validation.required.username": "Username", + "feedback.validation.required.username-hint": "Override this when restoring a snapshot taken by another user", "feedback.validation.required.valid-number-or-empty": "Must be a valid number or empty", + "feedback.validation.s3.access-key-id": "Access Key ID", + "feedback.validation.s3.access-key-id-hint": "Enter access key ID", + "feedback.validation.s3.bucket-name": "Bucket", + "feedback.validation.s3.bucket-name-hint": "Enter bucket name", + "feedback.validation.s3.object-name-prefix": "Object Name Prefix", + "feedback.validation.s3.override-region": "Override Region", + "feedback.validation.s3.override-region-hint": "Enter specific region (e.g., us-west-1) or leave empty", + "feedback.validation.s3.secret-access-key": "Secret Access Key", + "feedback.validation.s3.secret-access-key-hint": "Enter secret access key", + "feedback.validation.s3.server-endpoint": "Server Endpoint", + "feedback.validation.s3.server-endpoint-hint": "Enter server address (e.g., s3.amazonaws.com)", + "feedback.validation.s3.session-token": "Session Token", + "feedback.validation.s3.session-token-hint": "Enter session token or leave empty", "feedback.validation.webdav.password": "Password", "feedback.validation.webdav.password-hint": "Enter password", "feedback.validation.webdav.server-url": "WebDAV Server URL", @@ -251,6 +286,8 @@ "value.log.details-10-maximum-details": "10 - maximum details", "value.log.details-5-normal-details": "5 - normal details", "value.log.details-inherit-from-parent": "(inherit from parent)", + "value.provider.s3.http-connection-insecure": "Use HTTP connection (insecure)", + "value.provider.s3.no-tls-verification": "Do not verify TLS certificate", "value.ui.appearance-large": "large", "value.ui.appearance-medium": "medium", "value.ui.appearance-small": "small", @@ -261,6 +298,5 @@ "value.ui.theme-ocean": "ocean", "value.ui.theme-pastel": "pastel", "value.validation.optional-no": "no", - "value.validation.optional-yes": "yes", - "feedback.task.estimate-results": "{{description}} Bytes: {{bytes}} ({{bytes.excluded}} excluded) Files: {{files}} ({{files.excluded}} excluded) Directories: {{directories}} ({{directories.excluded}} excluded) Errors: {{errors}} ({{errors.ignored}} ignored)" -} \ No newline at end of file + "value.validation.optional-yes": "yes" +} diff --git a/public/locales/es/translation.json b/public/locales/es/translation.json index 1d6b3d4..bdad015 100644 --- a/public/locales/es/translation.json +++ b/public/locales/es/translation.json @@ -1,11 +1,13 @@ { "common.back": "Atrás", "common.cancel": "Cancelar", + "common.click-here-to-learn-more": "Clic aquí para saber más.", "common.delete": "Borrar", "common.delete-confirm": "Confirmar eliminación", "common.loading": "Cargando ...", "common.next": "Próximo", "common.return": "Volver", + "enter-object-name-prefix-or-leave-empty-hint": "Introduzca el prefijo del nombre del objeto o déjelo vacío", "event.description.cancel": "Cancelar", "event.description.new": "Ingrese una nueva descripción", "event.description.remove": "Eliminar descripción", @@ -19,7 +21,10 @@ "event.pin.update": "Actualizar PIN", "event.repository.advanced-options-hide": "Ocultar opciones avanzadas", "event.repository.advanced-options.show": "Mostrar opciones avanzadas", + "event.repository.connect-to-repository": "Conectarse al repositorio", + "event.repository.create-repository": "Crear repositorio", "feedback.description.modal-title": "Descripción de la instantánea", + "feedback.error.connection": "Error de conexión:", "feedback.header.actions": "Comportamiento", "feedback.header.defined": "Definido", "feedback.header.directories": "Directorios", @@ -42,14 +47,24 @@ "feedback.provider.sftp-server": "Servidor SFTP", "feedback.provider.use-repository-token": "Usar token de repositorio", "feedback.provider.webdav-server": "Servidor WebDAV", + "feedback.repository.additional-parameters-hint": "Se pueden configurar parámetros adicionales al crear un repositorio usando la línea de comando.", "feedback.repository.configuration": "Configuración de almacenamiento", + "feedback.repository.connect-as": "Conectar como", + "feedback.repository.connect-in-read-only-mode": "Conéctese en modo de solo lectura", + "feedback.repository.connect-in-read-only-mode-hint": "El modo de solo lectura evita cualquier cambio en el repositorio.", + "feedback.repository.connect-to-repository": "Conectarse al repositorio", "feedback.repository.create-repository-new": "Crear nuevo repositorio", "feedback.repository.create-repository-new-help": "Ingrese una contraseña segura para crear el repositorio de Kopia en el almacenamiento proporcionado.", + "feedback.repository.eec-warning": "[EXPERIMENTAL] La corrección de errores puede ayudar a proteger contra ciertos tipos de corrupción de datos debido a cambios espontáneos de bits en los medios de almacenamiento.", "feedback.repository.encryption": "Cifrado", "feedback.repository.kopia-server-parameters": "Parámetros del servidor Kopia", "feedback.repository.name-default": "Mi repositorio", + "feedback.repository.override-hint": "Para anular, haga clic en 'Mostrar opciones avanzadas'", "feedback.repository.provider-selection": "Seleccione el tipo de almacenamiento", "feedback.repository.provider-selection-hint": "Para conectarse a un repositorio o crear uno, seleccione el tipo de almacenamiento preferido:", + "feedback.repository.repository-description": "Descripción del repositorio", + "feedback.repository.repository-description-help": "Ayuda a distinguir entre múltiples repositorios conectados", + "feedback.repository.repository-description-hint": "Ingrese la descripción del repositorio", "feedback.repository.repository-token-enter": "Ingrese el token del repositorio", "feedback.tab.policies": "Políticas", "feedback.tab.preferences": "Preferencias", @@ -57,6 +72,7 @@ "feedback.tab.repository-is-not-connected": "El repositorio no está conectado", "feedback.tab.snapshots": "Copias de respaldo", "feedback.tab.tasks": "Tareas", + "feedback.task.estimate-results": "{{description}} Bytes: {{bytes}} ({{bytes.excluded}} excluido) Files: {{files}} ({{files.excluded}} excluido) Directories: {{directories}} ({{directories.excluded}} excluido) Errors: {{errors}} ({{errors.ignored}} ignorado)", "feedback.task.total": "Total", "feedback.ui.appearance": "Apariencia", "feedback.ui.appearance-help": "Especifica la apariencia de la interfaz de usuario", @@ -115,12 +131,31 @@ "feedback.validation.repository-token.token-hint": "Pegar token de conexión", "feedback.validation.required.directory": "Campo requerido", "feedback.validation.required.field": "Campo requerido", + "feedback.validation.required.hostname": "Nombre de host", + "feedback.validation.required.hostname-hint": "Anule esto al restaurar una instantánea tomada en otra máquina", "feedback.validation.required.password-repository": "Contraseña del repositorio", "feedback.validation.required.password-repository-help": "Se utiliza para cifrar el contenido del repositorio.", "feedback.validation.required.password-repository-hint": "Ingrese la contraseña del repositorio", "feedback.validation.required.repository-password-confirm": "Confirmar contraseña del repositorio", "feedback.validation.required.repository-password-confirm-again": "ingrese la contraseña del repositorio nuevamente", + "feedback.validation.required.server-password": "Contraseña del servidor", + "feedback.validation.required.server-password-hint": "Ingrese la contraseña para conectarse al servidor", + "feedback.validation.required.username": "Nombre de usuario", + "feedback.validation.required.username-hint": "Anule esto al restaurar una instantánea tomada por otro usuario", "feedback.validation.required.valid-number-or-empty": "Debe ser un número válido o vacío.", + "feedback.validation.s3.access-key-id": "ID de clave de acceso", + "feedback.validation.s3.access-key-id-hint": "Introduzca el ID de la clave de acceso", + "feedback.validation.s3.bucket-name": "Balde", + "feedback.validation.s3.bucket-name-hint": "Introduce el nombre del depósito", + "feedback.validation.s3.object-name-prefix": "Prefijo del nombre del objeto", + "feedback.validation.s3.override-region": "Anular región", + "feedback.validation.s3.override-region-hint": "Ingrese una región específica (por ejemplo, us-west-1) o déjela vacía", + "feedback.validation.s3.secret-access-key": "Clave de acceso secreta", + "feedback.validation.s3.secret-access-key-hint": "Introduzca la clave de acceso secreta", + "feedback.validation.s3.server-endpoint": "Punto final del servidor", + "feedback.validation.s3.server-endpoint-hint": "Ingrese la dirección del servidor (por ejemplo, s3.amazonaws.com)", + "feedback.validation.s3.session-token": "Token de sesión", + "feedback.validation.s3.session-token-hint": "Ingrese el token de sesión o déjelo vacío", "feedback.validation.webdav.password": "Contraseña", "feedback.validation.webdav.password-hint": "Introducir la contraseña", "feedback.validation.webdav.server-url": "URL del servidor WebDAV", @@ -251,6 +286,8 @@ "value.log.details-10-maximum-details": "10 - detalles máximos", "value.log.details-5-normal-details": "5 - detalles normales", "value.log.details-inherit-from-parent": "(heredado de los padres)", + "value.provider.s3.http-connection-insecure": "Usar conexión HTTP (insegura)", + "value.provider.s3.no-tls-verification": "No verificar el certificado TLS", "value.ui.appearance-large": "grande", "value.ui.appearance-medium": "mediano", "value.ui.appearance-small": "pequeño", diff --git a/public/locales/fr/translation.json b/public/locales/fr/translation.json index 63c89e0..992c238 100644 --- a/public/locales/fr/translation.json +++ b/public/locales/fr/translation.json @@ -1,11 +1,13 @@ { "common.back": "Dos", "common.cancel": "Annuler", + "common.click-here-to-learn-more": "Cliquez ici pour en savoir plus.", "common.delete": "Supprimer", "common.delete-confirm": "Confirmation de la suppression", "common.loading": "Chargement ...", "common.next": "Suivant", "common.return": "Retour", + "enter-object-name-prefix-or-leave-empty-hint": "Entrez le préfixe du nom de l'objet ou laissez vide", "event.description.cancel": "Annuler", "event.description.new": "Entrez une nouvelle description", "event.description.remove": "Supprimer la description", @@ -19,7 +21,10 @@ "event.pin.update": "Mettre à jour l'épingle", "event.repository.advanced-options-hide": "Masquer les options avancées", "event.repository.advanced-options.show": "Montrer les options avancées", + "event.repository.connect-to-repository": "Se connecter au référentiel", + "event.repository.create-repository": "Créer un référentiel", "feedback.description.modal-title": "Description de l'instantané", + "feedback.error.connection": "Erreur de connexion :", "feedback.header.actions": "Actions", "feedback.header.defined": "Défini", "feedback.header.directories": "Annuaires", @@ -42,14 +47,24 @@ "feedback.provider.sftp-server": "Serveur SFTP", "feedback.provider.use-repository-token": "Utiliser le jeton de référentiel", "feedback.provider.webdav-server": "Serveur WebDAV", + "feedback.repository.additional-parameters-hint": "Des paramètres supplémentaires peuvent être définis lors de la création du référentiel à l'aide de la ligne de commande.", "feedback.repository.configuration": "Configuration du stockage", + "feedback.repository.connect-as": "Se connecter en tant que", + "feedback.repository.connect-in-read-only-mode": "Connectez-vous en mode lecture seule", + "feedback.repository.connect-in-read-only-mode-hint": "Le mode lecture seule empêche toute modification du référentiel.", + "feedback.repository.connect-to-repository": "Se connecter au référentiel", "feedback.repository.create-repository-new": "Créer un nouveau référentiel", "feedback.repository.create-repository-new-help": "Entrez un mot de passe fort pour créer le référentiel Kopia dans le stockage fourni.", + "feedback.repository.eec-warning": "[EXPERIMENTAL] La correction d'erreurs peut aider à protéger contre certains types de corruption de données dues à des retournements de bits spontanés dans le support de stockage.", "feedback.repository.encryption": "Chiffrement", "feedback.repository.kopia-server-parameters": "Paramètres du serveur Kopia", "feedback.repository.name-default": "Mon référentiel", + "feedback.repository.override-hint": "Pour remplacer, cliquez sur \"Afficher les options avancées\".", "feedback.repository.provider-selection": "Sélectionnez le type de stockage", "feedback.repository.provider-selection-hint": "Pour vous connecter à un référentiel ou en créer un, sélectionnez le type de stockage préféré :", + "feedback.repository.repository-description": "Description du référentiel", + "feedback.repository.repository-description-help": "Aide à distinguer plusieurs référentiels connectés", + "feedback.repository.repository-description-hint": "Entrez la description du référentiel", "feedback.repository.repository-token-enter": "Entrez le jeton de référentiel", "feedback.tab.policies": "Politiques", "feedback.tab.preferences": "Préférences", @@ -57,6 +72,7 @@ "feedback.tab.repository-is-not-connected": "Le référentiel n'est pas connecté", "feedback.tab.snapshots": "Instantanés", "feedback.tab.tasks": "Tâches", + "feedback.task.estimate-results": "{{description}} Bytes: {{bytes}} ({{bytes.excluded}} exclu) Files: {{files}} ({{files.excluded}} exclu) Directories: {{directories}} ({{directories.excluded}} exclu) Errors: {{errors}} ({{errors.ignored}} ignoré)", "feedback.task.total": "Total", "feedback.ui.appearance": "Apparence", "feedback.ui.appearance-help": "Spécifie l'apparence de l'interface utilisateur", @@ -115,12 +131,31 @@ "feedback.validation.repository-token.token-hint": "Coller le jeton de connexion", "feedback.validation.required.directory": "champs requis", "feedback.validation.required.field": "champs requis", + "feedback.validation.required.hostname": "Nom d'hôte", + "feedback.validation.required.hostname-hint": "Remplacez ceci lors de la restauration d'un instantané pris sur une autre machine", "feedback.validation.required.password-repository": "Mot de passe du référentiel", "feedback.validation.required.password-repository-help": "Utilisé pour chiffrer le contenu du référentiel", "feedback.validation.required.password-repository-hint": "Entrez le mot de passe du référentiel", "feedback.validation.required.repository-password-confirm": "Confirmer le mot de passe du référentiel", "feedback.validation.required.repository-password-confirm-again": "entrez à nouveau le mot de passe du référentiel", + "feedback.validation.required.server-password": "Mot de passe du serveur", + "feedback.validation.required.server-password-hint": "Entrez le mot de passe pour vous connecter au serveur", + "feedback.validation.required.username": "Nom d'utilisateur", + "feedback.validation.required.username-hint": "Remplacez ceci lors de la restauration d'un instantané pris par un autre utilisateur", "feedback.validation.required.valid-number-or-empty": "Doit être un numéro valide ou vide", + "feedback.validation.s3.access-key-id": "ID de clé d'accès", + "feedback.validation.s3.access-key-id-hint": "Entrez l'ID de la clé d'accès", + "feedback.validation.s3.bucket-name": "Seau", + "feedback.validation.s3.bucket-name-hint": "Saisissez le nom du compartiment", + "feedback.validation.s3.object-name-prefix": "Préfixe du nom de l'objet", + "feedback.validation.s3.override-region": "Remplacer la région", + "feedback.validation.s3.override-region-hint": "Entrez une région spécifique (par exemple, us-west-1) ou laissez vide", + "feedback.validation.s3.secret-access-key": "Clé d'accès secrète", + "feedback.validation.s3.secret-access-key-hint": "Entrez la clé d'accès secrète", + "feedback.validation.s3.server-endpoint": "Point de terminaison du serveur", + "feedback.validation.s3.server-endpoint-hint": "Saisissez l'adresse du serveur (par exemple, s3.amazonaws.com)", + "feedback.validation.s3.session-token": "Jeton de session", + "feedback.validation.s3.session-token-hint": "Entrez le jeton de session ou laissez vide", "feedback.validation.webdav.password": "Mot de passe", "feedback.validation.webdav.password-hint": "Entrer le mot de passe", "feedback.validation.webdav.server-url": "URL du serveur WebDAV", @@ -251,6 +286,8 @@ "value.log.details-10-maximum-details": "10 - détails maximum", "value.log.details-5-normal-details": "5 - détails normaux", "value.log.details-inherit-from-parent": "(hériter du parent)", + "value.provider.s3.http-connection-insecure": "Utiliser une connexion HTTP (non sécurisée)", + "value.provider.s3.no-tls-verification": "Ne pas vérifier le certificat TLS", "value.ui.appearance-large": "grande", "value.ui.appearance-medium": "moyenne", "value.ui.appearance-small": "petite", diff --git a/public/locales/it/translation.json b/public/locales/it/translation.json index e20bca3..9ea5ab8 100644 --- a/public/locales/it/translation.json +++ b/public/locales/it/translation.json @@ -1,11 +1,13 @@ { "common.back": "Indietro", "common.cancel": "Annulla", + "common.click-here-to-learn-more": "Clicca qui per saperne di più.", "common.delete": "Eliminare", "common.delete-confirm": "Conferma cancellazione", "common.loading": "Caricamento ...", "common.next": "Prossimo", "common.return": "Ritorno", + "enter-object-name-prefix-or-leave-empty-hint": "Inserisci il prefisso del nome dell'oggetto o lascia vuoto", "event.description.cancel": "Annulla", "event.description.new": "Inserisci una nuova descrizione", "event.description.remove": "Rimuovi descrizione", @@ -19,7 +21,10 @@ "event.pin.update": "Aggiorna perno", "event.repository.advanced-options-hide": "Nascondi opzioni avanzate", "event.repository.advanced-options.show": "Mostra opzioni avanzate", + "event.repository.connect-to-repository": "Connettiti al deposito", + "event.repository.create-repository": "Crea archivio", "feedback.description.modal-title": "Descrizione dell'istantanea", + "feedback.error.connection": "Errore di connessione:", "feedback.header.actions": "Azioni", "feedback.header.defined": "Definito", "feedback.header.directories": "Directory", @@ -42,14 +47,24 @@ "feedback.provider.sftp-server": "Server SFTP", "feedback.provider.use-repository-token": "Utilizza token di archivio", "feedback.provider.webdav-server": "Server WebDAV", + "feedback.repository.additional-parameters-hint": "È possibile impostare parametri aggiuntivi durante la creazione del repository utilizzando la riga di comando.", "feedback.repository.configuration": "Configurazione di archiviazione", + "feedback.repository.connect-as": "Connetti come", + "feedback.repository.connect-in-read-only-mode": "Connetti in modalità di sola lettura", + "feedback.repository.connect-in-read-only-mode-hint": "La modalità di sola lettura impedisce qualsiasi modifica al repository.", + "feedback.repository.connect-to-repository": "Connettiti al deposito", "feedback.repository.create-repository-new": "Crea nuovo archivio", "feedback.repository.create-repository-new-help": "Inserisci una password complessa per creare il repository Kopia nello spazio di archiviazione fornito.", + "feedback.repository.eec-warning": "[SPERIMENTALE] La correzione degli errori può aiutare a proteggere da alcuni tipi di danneggiamento dei dati dovuti a inversioni di bit spontanee nei supporti di memorizzazione.", "feedback.repository.encryption": "Crittografia", "feedback.repository.kopia-server-parameters": "Parametri del server Copia", "feedback.repository.name-default": "Il mio deposito", + "feedback.repository.override-hint": "Per eseguire l'override, fai clic su \"Mostra opzioni avanzate\"", "feedback.repository.provider-selection": "Seleziona il tipo di archiviazione", "feedback.repository.provider-selection-hint": "Per connettersi a un repository o crearne uno, selezionare il tipo di archiviazione preferito:", + "feedback.repository.repository-description": "Descrizione del deposito", + "feedback.repository.repository-description-help": "Aiuta a distinguere tra più repository connessi", + "feedback.repository.repository-description-hint": "Inserisci la descrizione del repository", "feedback.repository.repository-token-enter": "Inserisci il token del repository", "feedback.tab.policies": "Politiche", "feedback.tab.preferences": "Preferenze", @@ -57,6 +72,7 @@ "feedback.tab.repository-is-not-connected": "Il repository non è connesso", "feedback.tab.snapshots": "Istantanee", "feedback.tab.tasks": "Attività", + "feedback.task.estimate-results": "{{description}} Bytes: {{bytes}} ({{bytes.excluded}} escluso) Files: {{files}} ({{files.excluded}} escluso) Directories: {{directories}} ({{directories.excluded}} escluso) Errors: {{errors}} ({{errors.ignored}} ignorato)", "feedback.task.total": "Totale", "feedback.ui.appearance": "Aspetto", "feedback.ui.appearance-help": "Specifica l'aspetto dell'interfaccia utente", @@ -115,12 +131,31 @@ "feedback.validation.repository-token.token-hint": "Incolla token di connessione", "feedback.validation.required.directory": "campo obbligatorio", "feedback.validation.required.field": "campo obbligatorio", + "feedback.validation.required.hostname": "Nome host", + "feedback.validation.required.hostname-hint": "Sostituiscilo quando ripristini uno snapshot acquisito su un altro computer", "feedback.validation.required.password-repository": "Password dell'archivio", "feedback.validation.required.password-repository-help": "Utilizzato per crittografare il contenuto del repository", "feedback.validation.required.password-repository-hint": "Inserisci la password dell'archivio", "feedback.validation.required.repository-password-confirm": "Conferma la password dell'archivio", "feedback.validation.required.repository-password-confirm-again": "immettere nuovamente la password del repository", + "feedback.validation.required.server-password": "Password del server", + "feedback.validation.required.server-password-hint": "Inserisci la password per connetterti al server", + "feedback.validation.required.username": "Nome utente", + "feedback.validation.required.username-hint": "Sostituiscilo quando ripristini uno snapshot scattato da un altro utente", "feedback.validation.required.valid-number-or-empty": "Deve essere un numero valido o vuoto", + "feedback.validation.s3.access-key-id": "ID chiave di accesso", + "feedback.validation.s3.access-key-id-hint": "Immettere l'ID della chiave di accesso", + "feedback.validation.s3.bucket-name": "Secchio", + "feedback.validation.s3.bucket-name-hint": "Inserisci il nome del bucket", + "feedback.validation.s3.object-name-prefix": "Prefisso nome oggetto", + "feedback.validation.s3.override-region": "Sostituisci regione", + "feedback.validation.s3.override-region-hint": "Inserisci una regione specifica (ad esempio, us-west-1) o lascia vuoto", + "feedback.validation.s3.secret-access-key": "Chiave di accesso segreta", + "feedback.validation.s3.secret-access-key-hint": "Inserisci la chiave di accesso segreta", + "feedback.validation.s3.server-endpoint": "Punto finale del server", + "feedback.validation.s3.server-endpoint-hint": "Inserisci l'indirizzo del server (ad esempio, s3.amazonaws.com)", + "feedback.validation.s3.session-token": "Gettone di sessione", + "feedback.validation.s3.session-token-hint": "Inserisci il token della sessione o lascia vuoto", "feedback.validation.webdav.password": "Parola d'ordine", "feedback.validation.webdav.password-hint": "Inserire la password", "feedback.validation.webdav.server-url": "URL del server WebDAV", @@ -251,6 +286,8 @@ "value.log.details-10-maximum-details": "10 - dettagli massimi", "value.log.details-5-normal-details": "5 - dettagli normali", "value.log.details-inherit-from-parent": "(eredita dal genitore)", + "value.provider.s3.http-connection-insecure": "Utilizza connessione HTTP (non sicura)", + "value.provider.s3.no-tls-verification": "Non verificare il certificato TLS", "value.ui.appearance-large": "grande", "value.ui.appearance-medium": "medio", "value.ui.appearance-small": "piccolo", diff --git a/public/locales/jp/translation.json b/public/locales/jp/translation.json index a6f4907..0eb6904 100644 --- a/public/locales/jp/translation.json +++ b/public/locales/jp/translation.json @@ -1,11 +1,13 @@ { "common.back": "Back", "common.cancel": "キャンセル", + "common.click-here-to-learn-more": "Click here to learn more.", "common.delete": "削除", "common.delete-confirm": "Confirm Delete", "common.loading": "Loading ...", "common.next": "Next", "common.return": "戻る", + "enter-object-name-prefix-or-leave-empty-hint": "Enter object name prefix or leave empty", "event.description.cancel": "Cancel", "event.description.new": "Enter new description", "event.description.remove": "Remove Description", @@ -19,7 +21,10 @@ "event.pin.update": "Update Pin", "event.repository.advanced-options-hide": "Hide Advanced Options", "event.repository.advanced-options.show": "Show Advanced Options", + "event.repository.connect-to-repository": "Connect to repository", + "event.repository.create-repository": "Create repository", "feedback.description.modal-title": "Snapshot Description", + "feedback.error.connection": "Connect Error:", "feedback.header.actions": "Actions", "feedback.header.defined": "Defined", "feedback.header.directories": "Directories", @@ -42,14 +47,24 @@ "feedback.provider.sftp-server": "SFTP Server", "feedback.provider.use-repository-token": "Use Repository Token", "feedback.provider.webdav-server": "WebDAV Server", + "feedback.repository.additional-parameters-hint": "Additional parameters can be set when creating repository using command line.", "feedback.repository.configuration": "Storage Configuration", + "feedback.repository.connect-as": "Connect as", + "feedback.repository.connect-in-read-only-mode": "Connect in read-only mode", + "feedback.repository.connect-in-read-only-mode-hint": "Read-only mode prevents any changes to the repository.", + "feedback.repository.connect-to-repository": "Connect to repository", "feedback.repository.create-repository-new": "Create New Repository", "feedback.repository.create-repository-new-help": "Enter a strong password to create Kopia repository in the provided storage.", + "feedback.repository.eec-warning": "[EXPERIMENTAL] Error correction can help protect from certain kinds of data corruption due to spontaneous bit flips in the storage media.", "feedback.repository.encryption": "Encryption", "feedback.repository.kopia-server-parameters": "Kopia Server Parameters", "feedback.repository.name-default": "My Repository", + "feedback.repository.override-hint": "To override, click 'Show Advanced Options'", "feedback.repository.provider-selection": "Select Storage Type", "feedback.repository.provider-selection-hint": "To connect to a repository or create one, select the preferred storage type:", + "feedback.repository.repository-description": "Repository description", + "feedback.repository.repository-description-help": "Helps to distinguish between multiple connected repositories", + "feedback.repository.repository-description-hint": "Enter repository description", "feedback.repository.repository-token-enter": "Enter Repository Token", "feedback.tab.policies": "ポリシー", "feedback.tab.preferences": "設定", @@ -57,6 +72,7 @@ "feedback.tab.repository-is-not-connected": "Repository is not connected", "feedback.tab.snapshots": "スナップショット", "feedback.tab.tasks": "タスク", + "feedback.task.estimate-results": "{{description}} Bytes: {{bytes}} ({{bytes.excluded}} excluded) Files: {{files}} ({{files.excluded}} excluded) Directories: {{directories}} ({{directories.excluded}} excluded) Errors: {{errors}} ({{errors.ignored}} ignored)", "feedback.task.total": "Total", "feedback.ui.appearance": "外観", "feedback.ui.appearance-help": "ユーザーインターフェースの外観を指定します", @@ -115,12 +131,31 @@ "feedback.validation.repository-token.token-hint": "Paste connection token", "feedback.validation.required.directory": "Required field", "feedback.validation.required.field": "Required field", + "feedback.validation.required.hostname": "Hostname", + "feedback.validation.required.hostname-hint": "Override this when restoring a snapshot taken on another machine", "feedback.validation.required.password-repository": "Repository Password", "feedback.validation.required.password-repository-help": "Used to encrypt the repository's contents", "feedback.validation.required.password-repository-hint": "Enter repository password", "feedback.validation.required.repository-password-confirm": "Confirm Repository Password", "feedback.validation.required.repository-password-confirm-again": "enter repository password again", + "feedback.validation.required.server-password": "Server password", + "feedback.validation.required.server-password-hint": "Enter password to connect to server", + "feedback.validation.required.username": "Username", + "feedback.validation.required.username-hint": "Override this when restoring a snapshot taken by another user", "feedback.validation.required.valid-number-or-empty": "Must be a valid number or empty", + "feedback.validation.s3.access-key-id": "Access Key ID", + "feedback.validation.s3.access-key-id-hint": "Enter access key ID", + "feedback.validation.s3.bucket-name": "Bucket", + "feedback.validation.s3.bucket-name-hint": "Enter bucket name", + "feedback.validation.s3.object-name-prefix": "Object Name Prefix", + "feedback.validation.s3.override-region": "Override Region", + "feedback.validation.s3.override-region-hint": "Enter specific region (e.g., us-west-1) or leave empty", + "feedback.validation.s3.secret-access-key": "Secret Access Key", + "feedback.validation.s3.secret-access-key-hint": "Enter secret access key", + "feedback.validation.s3.server-endpoint": "Server Endpoint", + "feedback.validation.s3.server-endpoint-hint": "Enter server address (e.g., s3.amazonaws.com)", + "feedback.validation.s3.session-token": "Session Token", + "feedback.validation.s3.session-token-hint": "Enter session token or leave empty", "feedback.validation.webdav.password": "Password", "feedback.validation.webdav.password-hint": "Enter password", "feedback.validation.webdav.server-url": "WebDAV Server URL", @@ -251,6 +286,8 @@ "value.log.details-10-maximum-details": "10 - maximum details", "value.log.details-5-normal-details": "5 - normal details", "value.log.details-inherit-from-parent": "(inherit from parent)", + "value.provider.s3.http-connection-insecure": "Use HTTP connection (insecure)", + "value.provider.s3.no-tls-verification": "Do not verify TLS certificate", "value.ui.appearance-large": "大", "value.ui.appearance-medium": "中", "value.ui.appearance-small": "小", diff --git a/public/locales/pl/translation.json b/public/locales/pl/translation.json index 7110810..98ce9cd 100644 --- a/public/locales/pl/translation.json +++ b/public/locales/pl/translation.json @@ -1,11 +1,13 @@ { "common.back": "Z powrotem", "common.cancel": "Anulować", + "common.click-here-to-learn-more": "Kliknij tutaj, aby dowiedzieć się więcej.", "common.delete": "Usuwać", "common.delete-confirm": "Potwierdź usunięcie", "common.loading": "Ładowanie ...", "common.next": "Następny", "common.return": "Wróć", + "enter-object-name-prefix-or-leave-empty-hint": "Wprowadź przedrostek nazwy obiektu lub pozostaw puste", "event.description.cancel": "Anulować", "event.description.new": "Wprowadź nowy opis", "event.description.remove": "Usuń opis", @@ -19,7 +21,10 @@ "event.pin.update": "Zaktualizuj Pin", "event.repository.advanced-options-hide": "Ukryj opcje zaawansowane", "event.repository.advanced-options.show": "Pokaż ustawienia zaawansowane", + "event.repository.connect-to-repository": "Połącz się z repozytorium", + "event.repository.create-repository": "Utwórz repozytorium", "feedback.description.modal-title": "Opis migawki", + "feedback.error.connection": "Błąd połączenia:", "feedback.header.actions": "działania", "feedback.header.defined": "Zdefiniowane", "feedback.header.directories": "Katalogi", @@ -42,14 +47,24 @@ "feedback.provider.sftp-server": "Serwer SFTP", "feedback.provider.use-repository-token": "Użyj tokena repozytorium", "feedback.provider.webdav-server": "Serwer WebDAV", + "feedback.repository.additional-parameters-hint": "Dodatkowe parametry można ustawić podczas tworzenia repozytorium za pomocą wiersza poleceń.", "feedback.repository.configuration": "Konfiguracja pamięci", + "feedback.repository.connect-as": "Połącz jako", + "feedback.repository.connect-in-read-only-mode": "Połącz się w trybie tylko do odczytu", + "feedback.repository.connect-in-read-only-mode-hint": "Tryb tylko do odczytu zapobiega wszelkim zmianom w repozytorium.", + "feedback.repository.connect-to-repository": "Połącz się z repozytorium", "feedback.repository.create-repository-new": "Utwórz nowe repozytorium", "feedback.repository.create-repository-new-help": "Wprowadź silne hasło, aby utworzyć repozytorium Kopia w udostępnionym magazynie.", + "feedback.repository.eec-warning": "[EKSPERYMENTALNE] Korekcja błędów może pomóc w ochronie przed niektórymi rodzajami uszkodzeń danych spowodowanymi spontanicznymi zamianami bitów na nośniku pamięci.", "feedback.repository.encryption": "Szyfrowanie", "feedback.repository.kopia-server-parameters": "Parametry serwera Kopia", "feedback.repository.name-default": "Moje repozytorium", + "feedback.repository.override-hint": "Aby zastąpić, kliknij „Pokaż opcje zaawansowane”", "feedback.repository.provider-selection": "Wybierz Typ przechowywania", "feedback.repository.provider-selection-hint": "Aby połączyć się z repozytorium lub je utworzyć, wybierz preferowany typ magazynu:", + "feedback.repository.repository-description": "Opis repozytorium", + "feedback.repository.repository-description-help": "Pomaga rozróżnić wiele połączonych repozytoriów", + "feedback.repository.repository-description-hint": "Wprowadź opis repozytorium", "feedback.repository.repository-token-enter": "Wprowadź token repozytorium", "feedback.tab.policies": "Konfiguracje", "feedback.tab.preferences": "Ustawienia", @@ -57,6 +72,7 @@ "feedback.tab.repository-is-not-connected": "Repozytorium nie jest połączone", "feedback.tab.snapshots": "Kopie", "feedback.tab.tasks": "Zadania", + "feedback.task.estimate-results": "{{description}} Bytes: {{bytes}} ({{bytes.excluded}} wyłączony) Files: {{files}} ({{files.excluded}} wyłączony) Directories: {{directories}} ({{directories.excluded}} wyłączony) Errors: {{errors}} ({{errors.ignored}} ignorowany)", "feedback.task.total": "Całkowity", "feedback.ui.appearance": "Wielkość tekstu", "feedback.ui.appearance-help": "Wybierz rodzaj czcionki", @@ -115,12 +131,31 @@ "feedback.validation.repository-token.token-hint": "Wklej token połączenia", "feedback.validation.required.directory": "Pole wymagane", "feedback.validation.required.field": "Pole wymagane", + "feedback.validation.required.hostname": "Nazwa hosta", + "feedback.validation.required.hostname-hint": "Zastąp tę opcję podczas przywracania migawki wykonanej na innym komputerze", "feedback.validation.required.password-repository": "Hasło do repozytorium", "feedback.validation.required.password-repository-help": "Służy do szyfrowania zawartości repozytorium", "feedback.validation.required.password-repository-hint": "Wprowadź hasło do repozytorium", "feedback.validation.required.repository-password-confirm": "Potwierdź hasło do repozytorium", "feedback.validation.required.repository-password-confirm-again": "wprowadź ponownie hasło do repozytorium", + "feedback.validation.required.server-password": "Hasło serwera", + "feedback.validation.required.server-password-hint": "Wprowadź hasło, aby połączyć się z serwerem", + "feedback.validation.required.username": "Nazwa użytkownika", + "feedback.validation.required.username-hint": "Zastąp tę opcję podczas przywracania migawki wykonanej przez innego użytkownika", "feedback.validation.required.valid-number-or-empty": "Musi to być prawidłowy numer lub pusty", + "feedback.validation.s3.access-key-id": "Identyfikator klucza dostępu", + "feedback.validation.s3.access-key-id-hint": "Wprowadź identyfikator klucza dostępu", + "feedback.validation.s3.bucket-name": "Wiaderko", + "feedback.validation.s3.bucket-name-hint": "Wpisz nazwę zasobnika", + "feedback.validation.s3.object-name-prefix": "Przedrostek nazwy obiektu", + "feedback.validation.s3.override-region": "Zastąp region", + "feedback.validation.s3.override-region-hint": "Wpisz konkretny region (np. us-west-1) lub pozostaw puste", + "feedback.validation.s3.secret-access-key": "Tajny klucz dostępu", + "feedback.validation.s3.secret-access-key-hint": "Wprowadź tajny klucz dostępu", + "feedback.validation.s3.server-endpoint": "Punkt końcowy serwera", + "feedback.validation.s3.server-endpoint-hint": "Wpisz adres serwera (np. s3.amazonaws.com)", + "feedback.validation.s3.session-token": "Token sesji", + "feedback.validation.s3.session-token-hint": "Wprowadź token sesji lub pozostaw puste", "feedback.validation.webdav.password": "Hasło", "feedback.validation.webdav.password-hint": "Wprowadź hasło", "feedback.validation.webdav.server-url": "Adres URL serwera WebDAV", @@ -251,6 +286,8 @@ "value.log.details-10-maximum-details": "10 - maksimum szczegółów", "value.log.details-5-normal-details": "5 - normalne szczegóły", "value.log.details-inherit-from-parent": "(dziedzicz po rodzicu)", + "value.provider.s3.http-connection-insecure": "Użyj połączenia HTTP (niepewne)", + "value.provider.s3.no-tls-verification": "Nie weryfikuj certyfikatu TLS", "value.ui.appearance-large": "duża", "value.ui.appearance-medium": "średnia", "value.ui.appearance-small": "mała", diff --git a/public/locales/ru/translation.json b/public/locales/ru/translation.json index 41e9391..c28becc 100644 --- a/public/locales/ru/translation.json +++ b/public/locales/ru/translation.json @@ -1,11 +1,13 @@ { "common.back": "Назад", "common.cancel": "Отмена", + "common.click-here-to-learn-more": "Кликните сюда, чтобы узнать больше.", "common.delete": "Удалить", "common.delete-confirm": "Подтвердите удаление", "common.loading": "Загрузка...", "common.next": "Следующий", "common.return": "Возврат", + "enter-object-name-prefix-or-leave-empty-hint": "Введите префикс имени объекта или оставьте пустым.", "event.description.cancel": "Отмена", "event.description.new": "Введите новое описание", "event.description.remove": "Удалить описание", @@ -19,7 +21,10 @@ "event.pin.update": "Обновить пин-код", "event.repository.advanced-options-hide": "Скрыть дополнительные параметры", "event.repository.advanced-options.show": "Показать дополнительные параметры", + "event.repository.connect-to-repository": "Подключиться к репозиторию", + "event.repository.create-repository": "Создать репозиторий", "feedback.description.modal-title": "Описание снимка", + "feedback.error.connection": "Ошибка подключения:", "feedback.header.actions": "Действия", "feedback.header.defined": "Определенный", "feedback.header.directories": "Каталоги", @@ -42,14 +47,24 @@ "feedback.provider.sftp-server": "SFTP-сервер", "feedback.provider.use-repository-token": "Использовать токен репозитория", "feedback.provider.webdav-server": "ВебДАВ-сервер", + "feedback.repository.additional-parameters-hint": "Дополнительные параметры можно задать при создании репозитория с помощью командной строки.", "feedback.repository.configuration": "Конфигурация хранилища", + "feedback.repository.connect-as": "Подключиться как", + "feedback.repository.connect-in-read-only-mode": "Подключайтесь в режиме только для чтения", + "feedback.repository.connect-in-read-only-mode-hint": "Режим только для чтения предотвращает любые изменения в репозитории.", + "feedback.repository.connect-to-repository": "Подключиться к репозиторию", "feedback.repository.create-repository-new": "Создать новый репозиторий", "feedback.repository.create-repository-new-help": "Введите надежный пароль, чтобы создать репозиторий Kopia в предоставленном хранилище.", + "feedback.repository.eec-warning": "[ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ] Исправление ошибок может помочь защитить от определенных видов повреждения данных из-за самопроизвольной смены битов на носителе.", "feedback.repository.encryption": "Шифрование", "feedback.repository.kopia-server-parameters": "Параметры сервера Копия", "feedback.repository.name-default": "Мой репозиторий", + "feedback.repository.override-hint": "Чтобы переопределить, нажмите «Показать дополнительные параметры».", "feedback.repository.provider-selection": "Выберите тип хранилища", "feedback.repository.provider-selection-hint": "Чтобы подключиться к репозиторию или создать его, выберите предпочитаемый тип хранилища:", + "feedback.repository.repository-description": "Описание репозитория", + "feedback.repository.repository-description-help": "Помогает различать несколько подключенных репозиториев.", + "feedback.repository.repository-description-hint": "Введите описание репозитория", "feedback.repository.repository-token-enter": "Введите токен репозитория", "feedback.tab.policies": "Политики", "feedback.tab.preferences": "Настройки", @@ -57,6 +72,7 @@ "feedback.tab.repository-is-not-connected": "Репозиторий не подключен", "feedback.tab.snapshots": "Снимки", "feedback.tab.tasks": "Задачи", + "feedback.task.estimate-results": "{{description}} Bytes: {{bytes}} ({{bytes.excluded}} исключено) Files: {{files}} ({{files.excluded}} исключено) Directories: {{directories}} ({{directories.excluded}} исключено) Errors: {{errors}} ({{errors.ignored}} проигнорировал)", "feedback.task.total": "Общий", "feedback.ui.appearance": "Внешний вид", "feedback.ui.appearance-help": "Определяет внешний вид пользовательского интерфейса", @@ -115,12 +131,31 @@ "feedback.validation.repository-token.token-hint": "Вставить токен подключения", "feedback.validation.required.directory": "Обязательное поле", "feedback.validation.required.field": "Обязательное поле", + "feedback.validation.required.hostname": "Имя хоста", + "feedback.validation.required.hostname-hint": "Переопределите это значение при восстановлении снимка, сделанного на другом компьютере.", "feedback.validation.required.password-repository": "Пароль репозитория", "feedback.validation.required.password-repository-help": "Используется для шифрования содержимого репозитория.", "feedback.validation.required.password-repository-hint": "Введите пароль репозитория", "feedback.validation.required.repository-password-confirm": "Подтвердите пароль репозитория", "feedback.validation.required.repository-password-confirm-again": "введите пароль хранилища еще раз", + "feedback.validation.required.server-password": "Пароль сервера", + "feedback.validation.required.server-password-hint": "Введите пароль для подключения к серверу", + "feedback.validation.required.username": "Имя пользователя", + "feedback.validation.required.username-hint": "Переопределите это при восстановлении снимка, сделанного другим пользователем.", "feedback.validation.required.valid-number-or-empty": "Должно быть действительным числом или пустым.", + "feedback.validation.s3.access-key-id": "Идентификатор ключа доступа", + "feedback.validation.s3.access-key-id-hint": "Введите идентификатор ключа доступа", + "feedback.validation.s3.bucket-name": "Ведро", + "feedback.validation.s3.bucket-name-hint": "Введите название сегмента", + "feedback.validation.s3.object-name-prefix": "Префикс имени объекта", + "feedback.validation.s3.override-region": "Переопределить регион", + "feedback.validation.s3.override-region-hint": "Введите конкретный регион (например, us-west-1) или оставьте пустым.", + "feedback.validation.s3.secret-access-key": "Секретный ключ доступа", + "feedback.validation.s3.secret-access-key-hint": "Введите секретный ключ доступа", + "feedback.validation.s3.server-endpoint": "Конечная точка сервера", + "feedback.validation.s3.server-endpoint-hint": "Введите адрес сервера (например, s3.amazonaws.com)", + "feedback.validation.s3.session-token": "Токен сеанса", + "feedback.validation.s3.session-token-hint": "Введите токен сеанса или оставьте пустым", "feedback.validation.webdav.password": "Пароль", "feedback.validation.webdav.password-hint": "Введите пароль", "feedback.validation.webdav.server-url": "URL-адрес сервера WebDAV", @@ -251,6 +286,8 @@ "value.log.details-10-maximum-details": "10 - максимум деталей", "value.log.details-5-normal-details": "5 - нормальные детали", "value.log.details-inherit-from-parent": "(наследовать от родителя)", + "value.provider.s3.http-connection-insecure": "Использовать HTTP-соединение (небезопасно)", + "value.provider.s3.no-tls-verification": "Не проверять сертификат TLS", "value.ui.appearance-large": "большой", "value.ui.appearance-medium": "средний", "value.ui.appearance-small": "маленький", diff --git a/src/components/Logs.jsx b/src/components/Logs.jsx index 5ee904d..44699f0 100644 --- a/src/components/Logs.jsx +++ b/src/components/Logs.jsx @@ -6,8 +6,8 @@ import { redirect } from '../utils/uiutil'; import i18n from '../utils/i18n'; export class Logs extends Component { - constructor() { - super(); + constructor(props) { + super(props); this.state = { items: [], isLoading: false, @@ -16,7 +16,6 @@ export class Logs extends Component { this.handleChange = handleChange.bind(this); this.fetchLog = this.fetchLog.bind(this); - this.interval = window.setInterval(this.fetchLog, 3000); this.messagesEndRef = React.createRef(); this.scrollToBottom = this.scrollToBottom.bind(this); } @@ -26,6 +25,7 @@ export class Logs extends Component { isLoading: true, }); + this.interval = window.setInterval(this.fetchLog, 3000); this.fetchLog(); this.scrollToBottom(); } diff --git a/src/components/SetupRepository.jsx b/src/components/SetupRepository.jsx index dbfc7f2..ac93a00 100644 --- a/src/components/SetupRepository.jsx +++ b/src/components/SetupRepository.jsx @@ -345,7 +345,7 @@ export class SetupRepository extends Component {

{i18n.t('feedback.repository.create-repository-new-help')}

{RequiredField(this, i18n.t('feedback.validation.required.password-repository'), "password", { autoFocus: true, type: "password", placeholder: i18n.t('feedback.validation.required.password-repository-hint') }, i18n.t('feedback.validation.required.password-repository-help'))} - {RequiredField(this, i18n.t('feedback.validation.required.repository-password-confirm'), "confirmPassword", { type: "password", placeholder: i18n.t('feedback.validation.required.repository-password-confirm-again')})} + {RequiredField(this, i18n.t('feedback.validation.required.repository-password-confirm'), "confirmPassword", { type: "password", placeholder: i18n.t('feedback.validation.required.repository-password-confirm-again') })}
{this.toggleAdvancedButton()} @@ -384,6 +384,7 @@ export class SetupRepository extends Component { +
Repository Format @@ -427,78 +428,80 @@ export class SetupRepository extends Component { - [EXPERIMENTAL] Error correction can help protect from certain - kinds of data corruption due to spontaneous bit flips in the storage - media. Click here to - learn more. + {i18n.t('feedback.repository.eec-warning')} {i18n.t('common.click-here-to-learn-more')}. +
{this.overrideUsernameHostnameRow()} - Additional parameters can be set when creating repository using command line. + {i18n.t('feedback.repository.additional-parameters-hint')}
+
{this.connectionErrorInfo()}
- -   - + + {' '} + {this.loadingSpinner()} ; } overrideUsernameHostnameRow() { return - {RequiredField(this, "Username", "username", {}, "Override this when restoring a snapshot taken by another user")} - {RequiredField(this, "Hostname", "hostname", {}, "Override this when restoring a snapshot taken on another machine")} + {RequiredField(this, i18n.t('feedback.validation.required.username'), "username", {}, i18n.t('feedback.validation.required.username-hint'))} + {RequiredField(this, i18n.t('feedback.validation.required.hostname'), "hostname", {}, i18n.t('feedback.validation.required.hostname-hint'))} ; } connectionErrorInfo() { return this.state.connectError && - Connect Error: {this.state.connectError} + {i18n.t('feedback.error.connection')} {this.state.connectError} ; } renderConfirmConnect() { return
-

Connect To Repository

+

{i18n.t('feedback.repository.connect-to-repository')}

- Connect As + {i18n.t('feedback.repository.connect-as')} - To override, click 'Show Advanced Options' + {i18n.t('feedback.repository.override-hint')} +
- {(this.state.provider !== "_token" && this.state.provider !== "_server") && RequiredField(this, "Repository Password", "password", { autoFocus: true, type: "password", placeholder: "enter repository password" }, "Used to encrypt the repository's contents")} - {this.state.provider === "_server" && RequiredField(this, "Server Password", "password", { autoFocus: true, type: "password", placeholder: "enter password to connect to server" })} + {(this.state.provider !== "_token" && this.state.provider !== "_server") && RequiredField(this, i18n.t('feedback.validation.required.password-repository'), "password", { autoFocus: true, type: "password", placeholder: i18n.t('feedback.validation.required.password-repository-hint') }, i18n.t('feedback.validation.required.password-repository-help'))} + {this.state.provider === "_server" && RequiredField(this, i18n.t('feedback.validation.required.server-password'), "password", { autoFocus: true, type: "password", placeholder: i18n.t('feedback.validation.required.server-password-hint') })} +
- {RequiredField(this, "Repository Description", "description", { autoFocus: this.state.provider === "_token", placeholder: "enter repository description" }, "Helps to distinguish between multiple connected repositories")} + {RequiredField(this, i18n.t('feedback.repository.repository-description'), "description", { autoFocus: this.state.provider === "_token", placeholder: i18n.t('feedback.repository.repository-description-hint') }, i18n.t('feedback.repository.repository-description-help') )} +
{this.toggleAdvancedButton()}
- {RequiredBoolean(this, "Connect in read-only mode", "readonly", "Read-only mode prevents any changes to the repository.")} + {RequiredBoolean(this, i18n.t('feedback.repository.connect-in-read-only-mode'), "readonly", i18n.t('feedback.repository.connect-in-read-only-mode-hint'))} {this.overrideUsernameHostnameRow()}
{this.connectionErrorInfo()}
- -   - + + {' '} + {this.loadingSpinner()}
; } @@ -526,7 +529,6 @@ export class SetupRepository extends Component { render() { return <> {this.renderInternal()} - {/*
{JSON.stringify(this.state, null, 2)}
*/} ; } } diff --git a/src/components/SetupRepositoryS3.jsx b/src/components/SetupRepositoryS3.jsx index d05da1d..96c28e3 100644 --- a/src/components/SetupRepositoryS3.jsx +++ b/src/components/SetupRepositoryS3.jsx @@ -4,6 +4,7 @@ import { handleChange, validateRequiredFields } from '../forms'; import { OptionalField } from '../forms/OptionalField'; import { RequiredBoolean } from '../forms/RequiredBoolean'; import { RequiredField } from '../forms/RequiredField'; +import i18n from '../utils/i18n'; export class SetupRepositoryS3 extends Component { constructor(props) { @@ -24,21 +25,21 @@ export class SetupRepositoryS3 extends Component { render() { return <> - {RequiredField(this, "Bucket", "bucket", { autoFocus: true, placeholder: "enter bucket name" })} - {RequiredField(this, "Server Endpoint", "endpoint", { placeholder: "enter server address (e.g., s3.amazonaws.com)" })} - {OptionalField(this, "Override Region", "region", { placeholder: "enter specific region (e.g., us-west-1) or leave empty" })} + {RequiredField(this, i18n.t('feedback.validation.s3.bucket-name'), "bucket", { autoFocus: true, placeholder: i18n.t('feedback.validation.s3.bucket-name-hint') })} + {RequiredField(this, i18n.t('feedback.validation.s3.server-endpoint'), "endpoint", { placeholder: i18n.t('feedback.validation.s3.server-endpoint-hint') })} + {OptionalField(this, i18n.t('feedback.validation.s3.override-region'), "region", { placeholder: i18n.t('feedback.validation.s3.override-region-hint') })} - {RequiredBoolean(this, "Use HTTP connection (insecure)", "doNotUseTLS")} - {RequiredBoolean(this, "Do not verify TLS certificate", "doNotVerifyTLS")} + {RequiredBoolean(this, i18n.t('value.provider.s3.http-connection-insecure'), "doNotUseTLS")} + {RequiredBoolean(this, i18n.t('value.provider.s3.no-tls-verification'), "doNotVerifyTLS")} - {RequiredField(this, "Access Key ID", "accessKeyID", { placeholder: "enter access key ID" })} - {RequiredField(this, "Secret Access Key", "secretAccessKey", { placeholder: "enter secret access key", type: "password" })} - {OptionalField(this, "Session Token", "sessionToken", { placeholder: "enter session token or leave empty", type: "password" })} + {RequiredField(this, i18n.t('feedback.validation.s3.access-key-id'), "accessKeyID", { placeholder: i18n.t('feedback.validation.s3.access-key-id-hint') })} + {RequiredField(this, i18n.t('feedback.validation.s3.secret-access-key'), "secretAccessKey", { placeholder: i18n.t('feedback.validation.s3.secret-access-key-hint'), type: "password" })} + {OptionalField(this, i18n.t('feedback.validation.s3.session-token'), "sessionToken", { placeholder: i18n.t('feedback.validation.s3.session-token-hint'), type: "password" })} - {OptionalField(this, "Object Name Prefix", "prefix", { placeholder: "enter object name prefix or leave empty" })} + {OptionalField(this, i18n.t('feedback.validation.s3.object-name-prefix'), "prefix", { placeholder: i18n.t('enter-object-name-prefix-or-leave-empty-hint') })} ; } diff --git a/src/components/SnapshotEstimation.jsx b/src/components/SnapshotEstimation.jsx index 80adc09..033c5d3 100644 --- a/src/components/SnapshotEstimation.jsx +++ b/src/components/SnapshotEstimation.jsx @@ -13,26 +13,23 @@ import i18n from '../utils/i18n'; import { Trans } from 'react-i18next'; export class SnapshotEstimation extends Component { - constructor() { - super(); + constructor(props) { + super(props); this.state = { isLoading: true, error: null, showLog: false, }; - this.taskID = this.taskID.bind(this); this.fetchTask = this.fetchTask.bind(this); - - // poll frequently, we will stop as soon as the task ends. - this.interval = window.setInterval(() => this.fetchTask(this.props), 500); } componentDidMount() { this.setState({ isLoading: true, }); - + // poll frequently, we will stop as soon as the task ends. + this.interval = window.setInterval(() => this.fetchTask(this.props), 500); this.fetchTask(this.props); } diff --git a/src/css/App.css b/src/css/App.css index 49502f7..eba0edf 100644 --- a/src/css/App.css +++ b/src/css/App.css @@ -158,9 +158,10 @@ body { } #kopia .text-muted.form-text, +#kopia .text-muted, #kopia .form-text, #kopia .form-control::placeholder { - color: var(--color-text-form-help) !important + color: var(--color-text-form-help) !important; } #kopia .accordion-body, diff --git a/src/pages/Task.jsx b/src/pages/Task.jsx index 1a109a5..11ff8c6 100644 --- a/src/pages/Task.jsx +++ b/src/pages/Task.jsx @@ -16,8 +16,8 @@ import { UIPreferencesContext } from '../contexts/UIPreferencesContext'; import i18n from '../utils/i18n' export class Task extends Component { - constructor() { - super(); + constructor(props) { + super(props); this.state = { items: [], isLoading: true, @@ -27,9 +27,6 @@ export class Task extends Component { this.taskID = this.taskID.bind(this); this.fetchTask = this.fetchTask.bind(this); - - // poll frequently, we will stop as soon as the task ends. - this.interval = window.setInterval(() => this.fetchTask(), 500); } componentDidMount() { @@ -37,6 +34,8 @@ export class Task extends Component { isLoading: true, }); + // poll frequently, we will stop as soon as the task ends. + this.interval = window.setInterval(() => this.fetchTask(), 500); this.fetchTask(); }