diff --git a/src/translation/en.json b/src/translation/en.json index 9185f1a07..8a732eccd 100644 --- a/src/translation/en.json +++ b/src/translation/en.json @@ -618,7 +618,8 @@ "diskPath": "Disk Path", "cifsSealSupport": "Use seal encryption. Requires at least SMB v3", "chown": "Remote file system supports chown", - "encryptedFilenames": "Encrypt filenames" + "encryptedFilenames": "Encrypted filenames", + "encryptFilenames": "Encrypt Filenames" }, "check": { "noop": "Cloudron backups are disabled. Please ensure this server is backed up using alternate means. See https://docs.cloudron.io/backups/#storage-providers for more information.", diff --git a/src/translation/fr.json b/src/translation/fr.json index 5d4d5bf53..d9bfa9eee 100644 --- a/src/translation/fr.json +++ b/src/translation/fr.json @@ -276,7 +276,7 @@ }, "exposedLdap": { "secret": { - "label": "Secret", + "label": "Mot de passe de liaison", "description": "Toutes les requêtes LDAP doivent être authentifiées avec ce secret et le DN utilisateur {{ userDN }}", "url": "URL du serveur" }, @@ -394,15 +394,18 @@ "errorDisplayNameRequired": "Un nom affiché valide est nécessaire" }, "apiTokens": { - "expiresAt": "Expire le", + "expiresAt": "Expire", "name": "Nom", - "noTokensPlaceholder": "Aucun jeton API créé", + "noTokensPlaceholder": "Pas de jeton API créé", "revokeTokenTooltip": "Révoquer jeton", "newApiToken": "Nouveau jeton API", "title": "Jetons API", "description": "Utilisez ces jetons d'accès personnels pour vous authentifier avec l'API Cloudron", "neverUsed": "jamais", - "lastUsed": "Dernière utilisation" + "lastUsed": "Dernière utilisation", + "scope": "Portée", + "readonly": "Lecture seule", + "readwrite": "Lecture et écriture" }, "loginTokens": { "logoutAll": "Déconnecter de tous", @@ -653,7 +656,15 @@ "queue": { "rcptTo": "À", "mailFrom": "De", - "details": "Détails" + "details": "Détails", + "resendTooltip": "Renvoyer maintenant", + "empty": "La file d'attente des emails est vide", + "title": "File d'attente des e-mails", + "discardTooltip": "Jeter", + "queueTime": "Temps d'attente" + }, + "action": { + "queue": "File d'attente" } }, "network": { @@ -1119,7 +1130,8 @@ "24h": "24 heures", "12h": "12 heures", "6h": "6 heures" - } + }, + "diskTitle": "Utilisation du disque" }, "resources": { "memory": { @@ -1200,7 +1212,7 @@ "title": "Ajouter un lien d'application externe" }, "editApplinkDialog": { - "title": "Modifier le lien de l'application externe", + "title": "Modifier le lien de l'application", "deleteAction": "Effacer" }, "applinks": { @@ -1534,7 +1546,7 @@ "provider": "Fournisseur", "domain": "Domaine", "addDomain": "Ajouter un domaine", - "title": "Domaines & Certificats", + "title": "Domaines et Certificats", "domainWellKnown": { "title": "Emplacements Well-Known de {{ domain }}" }, @@ -1730,7 +1742,8 @@ "diskContent": "Ce disque {{ type }} contient", "usageInfo": "{{ available | prettyDiskSize }} sur {{ size | prettyDiskSize }} disponible(s)", "mountedAt": "{{ filesystem }} monté sur {{ mountpoint }}", - "title": "Utilisation du disque" + "title": "Utilisation du disque", + "usedInfo": "{{ used }} utilisé de {{ size }}" }, "title": "Info système" }, diff --git a/src/translation/nl.json b/src/translation/nl.json index a9c8fb7c5..bfc30160f 100644 --- a/src/translation/nl.json +++ b/src/translation/nl.json @@ -1158,7 +1158,7 @@ "title": "Voeg externe app link toe" }, "editApplinkDialog": { - "title": "Bewerk externe app link", + "title": "Bewerk App Link", "deleteAction": "Verwijder" }, "applinks": { diff --git a/src/translation/ru.json b/src/translation/ru.json index 3a379e481..2f9368b25 100644 --- a/src/translation/ru.json +++ b/src/translation/ru.json @@ -25,8 +25,8 @@ "groupsFilterHeader": "Все группы", "stateFilterHeader": "Все состояния", "addAppAction": "Добавить приложение", - "addAppproxyAction": "Добавить Appproxy", - "addApplinkAction": "Добавить Applink", + "addAppproxyAction": "Добавить App Proxy", + "addApplinkAction": "Добавить App Link", "filter": { "clearAll": "Очистить все" } @@ -814,7 +814,7 @@ "title": "Добавить ссылку на внешнее приложение" }, "editApplinkDialog": { - "title": "Редактировать ссылку на внешнее приложение", + "title": "Редактировать App Link", "deleteAction": "Удалить" }, "applinks": { diff --git a/src/views/app.html b/src/views/app.html index 8db7ecc44..50ffa6bdb 100644 --- a/src/views/app.html +++ b/src/views/app.html @@ -294,6 +294,12 @@ + +
+ + +
+
diff --git a/src/views/app.js b/src/views/app.js index 9b92549fb..00be484b2 100644 --- a/src/views/app.js +++ b/src/views/app.js @@ -1211,7 +1211,7 @@ angular.module('Application').controller('AppController', ['$scope', '$location' }; $scope.mountlike = function (provider) { - return provider === 'sshfs' || provider === 'cifs' || provider === 'nfs'; + return provider === 'sshfs' || provider === 'cifs' || provider === 'nfs' || provider === 'mountpoint' || provider === 'ext4' || provider === 'xfs'; }; $scope.importBackup = { @@ -1233,7 +1233,7 @@ angular.module('Application').controller('AppController', ['$scope', '$location' remotePath: '', password: '', encryptedFilenames: true, - mountOptions: {}, + mountOptions: {}, // host, port, username, password, remoteDir, diskPath, user, privateKey encrypted: false, // helps with ng-required when backupConfig is read from file clearForm: function () { @@ -1333,9 +1333,12 @@ angular.module('Application').controller('AppController', ['$scope', '$location' $scope.importBackup.busy = false; return; } - } else if (backupConfig.provider === 'sshfs' || backupConfig.provider === 'cifs' || backupConfig.provider === 'nfs') { + } else if (backupConfig.provider === 'sshfs' || backupConfig.provider === 'cifs' || backupConfig.provider === 'nfs' || backupConfig.provider === 'ext4' || backupConfig.provider === 'xfs') { backupConfig.mountOptions = $scope.importBackup.mountOptions; backupConfig.prefix = $scope.importBackup.prefix; + } else if (backupConfig.provider === 'mountpoint') { + backupConfig.mountOptions = {}; + backupConfig.mountPoint = $scope.mountPoint; } else if (backupConfig.provider === 'filesystem') { var parts = remotePath.split('/'); remotePath = parts.pop() || parts.pop(); // removes any trailing slash. this is basename() diff --git a/src/views/backups.html b/src/views/backups.html index 962078ad4..0cfb543ca 100644 --- a/src/views/backups.html +++ b/src/views/backups.html @@ -367,7 +367,7 @@