From a106b04c7e7bbf045b43df3ab96f8aeda7fe1048 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Mon, 30 Jan 2023 13:30:06 +0100 Subject: [PATCH 01/19] prototpye for powershell script to be executed after installation --- dist/win/contrib/170FuseMigration.ps1 | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 dist/win/contrib/170FuseMigration.ps1 diff --git a/dist/win/contrib/170FuseMigration.ps1 b/dist/win/contrib/170FuseMigration.ps1 new file mode 100644 index 000000000..203913ae7 --- /dev/null +++ b/dist/win/contrib/170FuseMigration.ps1 @@ -0,0 +1,12 @@ +$settingsPath = 'C:\Users\Arbeit\AppData\Roaming\Cryptomator-Dev\settings1617.json' +$settings = Get-Content -Path $settingsPath | ConvertFrom-Json +$atLeastOneCustomPath = $false; +foreach ($vault in $settings.directories){ + $atLeastOneCustomPath = $atLeastOneCustomPath -or ($vault.useCustomMountPath -eq "True") +} + +if( $atLeastOneCustomPath -and ($settings.preferredVolumeImpl -eq "FUSE")) { + Add-Member -Force -InputObject $settings -Name "mountService" -Value "org.cryptomator.frontend.fuse.mount.WinFspMountProvider" -MemberType NoteProperty + $newSettings = $settings | Select-Object * -ExcludeProperty "preferredVolumeImpl" + ConvertTo-Json $newSettings | Set-Content -Path $settingsPath +} From fb54ee04a6167ab7adb5e899f1fe083c9533cd73 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Mon, 30 Jan 2023 13:32:56 +0100 Subject: [PATCH 02/19] Remove Dokany advertisement from msi installer --- dist/win/resources/customWizard.wxi | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/dist/win/resources/customWizard.wxi b/dist/win/resources/customWizard.wxi index 0cd34e44f..ab25702ce 100644 --- a/dist/win/resources/customWizard.wxi +++ b/dist/win/resources/customWizard.wxi @@ -65,13 +65,10 @@ - We recommend for the best user experience to download and install one of the following third party Windows drivers: + We recommend for the best user experience to download and install the following third party Windows driver: - Homepage)]]> - - - Homepage)]]> + Homepage)]]> From 5f9b77241f9f438f49112f917175823a0b0c8822 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Tue, 31 Jan 2023 13:40:25 +0100 Subject: [PATCH 03/19] extend migration script to all local users --- dist/win/contrib/170FuseMigration.ps1 | 47 +++++++++++++++++++++------ 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/dist/win/contrib/170FuseMigration.ps1 b/dist/win/contrib/170FuseMigration.ps1 index 203913ae7..8c740b3de 100644 --- a/dist/win/contrib/170FuseMigration.ps1 +++ b/dist/win/contrib/170FuseMigration.ps1 @@ -1,12 +1,39 @@ -$settingsPath = 'C:\Users\Arbeit\AppData\Roaming\Cryptomator-Dev\settings1617.json' -$settings = Get-Content -Path $settingsPath | ConvertFrom-Json -$atLeastOneCustomPath = $false; -foreach ($vault in $settings.directories){ - $atLeastOneCustomPath = $atLeastOneCustomPath -or ($vault.useCustomMountPath -eq "True") -} +# This script migrates Cryptomator settings for all local users on Windows in case a custom directory is used +#Requires -RunAsAdministrator -if( $atLeastOneCustomPath -and ($settings.preferredVolumeImpl -eq "FUSE")) { - Add-Member -Force -InputObject $settings -Name "mountService" -Value "org.cryptomator.frontend.fuse.mount.WinFspMountProvider" -MemberType NoteProperty - $newSettings = $settings | Select-Object * -ExcludeProperty "preferredVolumeImpl" - ConvertTo-Json $newSettings | Set-Content -Path $settingsPath +#Get all active, local user profiles +$profileList = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList' +$localUsers = Get-LocalUser | Where-Object {$_.Enabled} | ForEach-Object { $_.Name} + +Get-ChildItem $profileList | ForEach-Object { $_.GetValue("ProfileImagePath") } | Where-Object { + $matches = ($_ | Select-String -Pattern "\\([^\\]+)$").Matches + if($matches.Count -eq 1) { + return $localUsers.Contains($matches[0].Groups[1].Value) + } + return $false; +} | ForEach-Object { + $settingsPath = "$_\AppData\Roaming\Cryptomator\settings.json" + if(!(Test-Path -Path $settingsPath)) { + #No settings file, nothing to do. + return; + } + + $settings = Get-Content -Path $settingsPath | ConvertFrom-Json + if($settings.preferredVolumeImpl -eq "FUSE") { + #Fuse not used, nothing to do + return; + } + + #check if customMountPoints are used + $atLeastOneCustomPath = $false; + foreach ($vault in $settings.directories){ + $atLeastOneCustomPath = $atLeastOneCustomPath -or ($vault.useCustomMountPath -eq "True") + } + + #if so, use WinFsp Local Drive + if( $atLeastOneCustomPath ) { + Add-Member -Force -InputObject $settings -Name "mountService" -Value "org.cryptomator.frontend.fuse.mount.WinFspMountProvider" -MemberType NoteProperty + $newSettings = $settings | Select-Object * -ExcludeProperty "preferredVolumeImpl" + ConvertTo-Json $newSettings | Set-Content -Path $settingsPath + } } From e56e6a8359daa07b99eff90d9314d7aa272aaeb9 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Tue, 31 Jan 2023 13:58:56 +0100 Subject: [PATCH 04/19] integrate script into installer --- dist/win/contrib/version170-migrate-settings.bat | 4 ++++ ...Migration.ps1 => version170-migrate-settings.ps1} | 12 ++++++++---- dist/win/resources/main.wxs | 4 ++++ 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 dist/win/contrib/version170-migrate-settings.bat rename dist/win/contrib/{170FuseMigration.ps1 => version170-migrate-settings.ps1} (81%) diff --git a/dist/win/contrib/version170-migrate-settings.bat b/dist/win/contrib/version170-migrate-settings.bat new file mode 100644 index 000000000..ac8d59dfa --- /dev/null +++ b/dist/win/contrib/version170-migrate-settings.bat @@ -0,0 +1,4 @@ +@echo off + +cd %~dp0 +powershell -NoLogo -NonInteractive -ExecutionPolicy Unrestricted -Command .\version170-migrate-settings.ps1 \ No newline at end of file diff --git a/dist/win/contrib/170FuseMigration.ps1 b/dist/win/contrib/version170-migrate-settings.ps1 similarity index 81% rename from dist/win/contrib/170FuseMigration.ps1 rename to dist/win/contrib/version170-migrate-settings.ps1 index 8c740b3de..92bb037cf 100644 --- a/dist/win/contrib/170FuseMigration.ps1 +++ b/dist/win/contrib/version170-migrate-settings.ps1 @@ -1,4 +1,5 @@ -# This script migrates Cryptomator settings for all local users on Windows in case a custom directory is used +# This script migrates Cryptomator settings for all local users on Windows in case the users uses custom directories as mountpoint +# #Requires -RunAsAdministrator #Get all active, local user profiles @@ -6,11 +7,14 @@ $profileList = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList' $localUsers = Get-LocalUser | Where-Object {$_.Enabled} | ForEach-Object { $_.Name} Get-ChildItem $profileList | ForEach-Object { $_.GetValue("ProfileImagePath") } | Where-Object { - $matches = ($_ | Select-String -Pattern "\\([^\\]+)$").Matches - if($matches.Count -eq 1) { + $profileNameMatches = ($_ | Select-String -Pattern "\\([^\\]+)$").Matches + if($profileNameMatches.Count -eq 1) { + #check if the last path part is contained in the local user name list + #otherwise do not touch it return $localUsers.Contains($matches[0].Groups[1].Value) + } else { + return $false; } - return $false; } | ForEach-Object { $settingsPath = "$_\AppData\Roaming\Cryptomator\settings.json" if(!(Test-Path -Path $settingsPath)) { diff --git a/dist/win/resources/main.wxs b/dist/win/resources/main.wxs index d6247bf05..58b72b5b4 100644 --- a/dist/win/resources/main.wxs +++ b/dist/win/resources/main.wxs @@ -132,6 +132,9 @@ + + + NOT Installed OR REINSTALL + NOT Installed OR REINSTALL From a771f0a5b7c723001edbb253b5d7d82d1c626185 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Tue, 31 Jan 2023 13:59:18 +0100 Subject: [PATCH 05/19] doc doc doc --- dist/win/contrib/version170-migrate-settings.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/dist/win/contrib/version170-migrate-settings.ps1 b/dist/win/contrib/version170-migrate-settings.ps1 index 92bb037cf..bc1c34954 100644 --- a/dist/win/contrib/version170-migrate-settings.ps1 +++ b/dist/win/contrib/version170-migrate-settings.ps1 @@ -1,4 +1,5 @@ # This script migrates Cryptomator settings for all local users on Windows in case the users uses custom directories as mountpoint +# See also https://github.com/cryptomator/cryptomator/issues/2652 # #Requires -RunAsAdministrator From 68d32957e44b85c92166061d56fedcd37baf1e15 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Tue, 31 Jan 2023 16:37:25 +0100 Subject: [PATCH 06/19] fix errors --- dist/win/contrib/version170-migrate-settings.ps1 | 5 ++--- dist/win/resources/main.wxs | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/dist/win/contrib/version170-migrate-settings.ps1 b/dist/win/contrib/version170-migrate-settings.ps1 index bc1c34954..a88912ef6 100644 --- a/dist/win/contrib/version170-migrate-settings.ps1 +++ b/dist/win/contrib/version170-migrate-settings.ps1 @@ -12,7 +12,7 @@ Get-ChildItem $profileList | ForEach-Object { $_.GetValue("ProfileImagePath") } if($profileNameMatches.Count -eq 1) { #check if the last path part is contained in the local user name list #otherwise do not touch it - return $localUsers.Contains($matches[0].Groups[1].Value) + return $localUsers.Contains($profileNameMatches[0].Groups[1].Value) } else { return $false; } @@ -22,9 +22,8 @@ Get-ChildItem $profileList | ForEach-Object { $_.GetValue("ProfileImagePath") } #No settings file, nothing to do. return; } - $settings = Get-Content -Path $settingsPath | ConvertFrom-Json - if($settings.preferredVolumeImpl -eq "FUSE") { + if($settings.preferredVolumeImpl -ne "FUSE") { #Fuse not used, nothing to do return; } diff --git a/dist/win/resources/main.wxs b/dist/win/resources/main.wxs index 58b72b5b4..91315c3f7 100644 --- a/dist/win/resources/main.wxs +++ b/dist/win/resources/main.wxs @@ -133,7 +133,7 @@ - + @@ -185,7 +185,7 @@ NOT Installed OR REINSTALL - NOT Installed OR REINSTALL + NOT Installed OR REINSTALL From c2691842172d36fc6d8965de0b12ccfb0e199408 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Tue, 31 Jan 2023 18:05:31 +0100 Subject: [PATCH 07/19] ensure that settings.json is a file --- dist/win/contrib/version170-migrate-settings.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/win/contrib/version170-migrate-settings.ps1 b/dist/win/contrib/version170-migrate-settings.ps1 index a88912ef6..015fd6526 100644 --- a/dist/win/contrib/version170-migrate-settings.ps1 +++ b/dist/win/contrib/version170-migrate-settings.ps1 @@ -18,7 +18,7 @@ Get-ChildItem $profileList | ForEach-Object { $_.GetValue("ProfileImagePath") } } } | ForEach-Object { $settingsPath = "$_\AppData\Roaming\Cryptomator\settings.json" - if(!(Test-Path -Path $settingsPath)) { + if(!(Test-Path -Path $settingsPath -PathType Leaf)) { #No settings file, nothing to do. return; } From 95ea23ee6e69512b3f8a65903629d581f2e13de6 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 1 Feb 2023 11:07:23 +0100 Subject: [PATCH 08/19] add more comments regarding removal evaluation of this workaround --- dist/win/contrib/version170-migrate-settings.bat | 1 + dist/win/contrib/version170-migrate-settings.ps1 | 4 +++- dist/win/resources/main.wxs | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dist/win/contrib/version170-migrate-settings.bat b/dist/win/contrib/version170-migrate-settings.bat index ac8d59dfa..94ec16dac 100644 --- a/dist/win/contrib/version170-migrate-settings.bat +++ b/dist/win/contrib/version170-migrate-settings.bat @@ -1,4 +1,5 @@ @echo off +:: see comments in file ./version170-migrate-settings.ps1 cd %~dp0 powershell -NoLogo -NonInteractive -ExecutionPolicy Unrestricted -Command .\version170-migrate-settings.ps1 \ No newline at end of file diff --git a/dist/win/contrib/version170-migrate-settings.ps1 b/dist/win/contrib/version170-migrate-settings.ps1 index 015fd6526..11b9e29e3 100644 --- a/dist/win/contrib/version170-migrate-settings.ps1 +++ b/dist/win/contrib/version170-migrate-settings.ps1 @@ -1,5 +1,7 @@ # This script migrates Cryptomator settings for all local users on Windows in case the users uses custom directories as mountpoint -# See also https://github.com/cryptomator/cryptomator/issues/2652 +# See also https://github.com/cryptomator/cryptomator/pull/2654. +# +# TODO: This script should be evaluated in a yearly interval if it is still needed and if not, should be removed # #Requires -RunAsAdministrator diff --git a/dist/win/resources/main.wxs b/dist/win/resources/main.wxs index 91315c3f7..1fb7b552d 100644 --- a/dist/win/resources/main.wxs +++ b/dist/win/resources/main.wxs @@ -132,7 +132,7 @@ - + From 28217b2de398f77a8d887e18ceb2d9bb57cfcfae Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 1 Feb 2023 13:44:57 +0100 Subject: [PATCH 09/19] only perform mountpoint move and cleanup, if mountpoint is not a drive letter --- src/main/java/org/cryptomator/common/mount/Mounter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/cryptomator/common/mount/Mounter.java b/src/main/java/org/cryptomator/common/mount/Mounter.java index 2c75d3f89..97fc93f08 100644 --- a/src/main/java/org/cryptomator/common/mount/Mounter.java +++ b/src/main/java/org/cryptomator/common/mount/Mounter.java @@ -81,6 +81,7 @@ public class Mounter { var canMountToDriveLetter = service.hasCapability(MOUNT_AS_DRIVE_LETTER); var canMountToParent = service.hasCapability(MOUNT_WITHIN_EXISTING_PARENT); var canMountToDir = service.hasCapability(MOUNT_TO_EXISTING_DIR); + var mpIsDriveLetter = userChosenMountPoint.toString().matches("[A-Z]:\\\\"); if (userChosenMountPoint == null) { if (service.hasCapability(MOUNT_TO_SYSTEM_CHOSEN_PATH)) { @@ -96,7 +97,7 @@ public class Mounter { builder.setMountpoint(mountPoint); } } else { - if (canMountToParent && !canMountToDir) { + if (!mpIsDriveLetter && canMountToParent && !canMountToDir) { MountWithinParentUtil.prepareParentNoMountPoint(userChosenMountPoint); cleanup = () -> { MountWithinParentUtil.cleanup(userChosenMountPoint); @@ -105,7 +106,6 @@ public class Mounter { try { builder.setMountpoint(userChosenMountPoint); } catch (IllegalArgumentException e) { - var mpIsDriveLetter = userChosenMountPoint.toString().matches("[A-Z]:\\\\"); var configNotSupported = (!canMountToDriveLetter && mpIsDriveLetter) || (!canMountToDir && !mpIsDriveLetter) || (!canMountToParent && !mpIsDriveLetter); if (configNotSupported) { throw new MountPointNotSupportedException(e.getMessage()); From 155558caa8192436456df17007b8afceae3ff1f9 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 1 Feb 2023 13:50:56 +0100 Subject: [PATCH 10/19] add style class to text object --- src/main/resources/fxml/vault_options_mount.fxml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/fxml/vault_options_mount.fxml b/src/main/resources/fxml/vault_options_mount.fxml index 5e9e0c19f..5275d1612 100644 --- a/src/main/resources/fxml/vault_options_mount.fxml +++ b/src/main/resources/fxml/vault_options_mount.fxml @@ -26,7 +26,7 @@ - + From fd6e1e67416da14301830a178789095e3433076e Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 1 Feb 2023 19:23:28 +0100 Subject: [PATCH 11/19] fix bug --- src/main/java/org/cryptomator/common/mount/Mounter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/cryptomator/common/mount/Mounter.java b/src/main/java/org/cryptomator/common/mount/Mounter.java index 97fc93f08..325f13f56 100644 --- a/src/main/java/org/cryptomator/common/mount/Mounter.java +++ b/src/main/java/org/cryptomator/common/mount/Mounter.java @@ -81,7 +81,6 @@ public class Mounter { var canMountToDriveLetter = service.hasCapability(MOUNT_AS_DRIVE_LETTER); var canMountToParent = service.hasCapability(MOUNT_WITHIN_EXISTING_PARENT); var canMountToDir = service.hasCapability(MOUNT_TO_EXISTING_DIR); - var mpIsDriveLetter = userChosenMountPoint.toString().matches("[A-Z]:\\\\"); if (userChosenMountPoint == null) { if (service.hasCapability(MOUNT_TO_SYSTEM_CHOSEN_PATH)) { @@ -97,6 +96,7 @@ public class Mounter { builder.setMountpoint(mountPoint); } } else { + var mpIsDriveLetter = userChosenMountPoint.toString().matches("[A-Z]:\\\\"); if (!mpIsDriveLetter && canMountToParent && !canMountToDir) { MountWithinParentUtil.prepareParentNoMountPoint(userChosenMountPoint); cleanup = () -> { From 55d76b65ccc29ee4b6e010a6de93831904dc516f Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 1 Feb 2023 22:31:27 +0100 Subject: [PATCH 12/19] Add IOException to log message during revealPath --- .../ui/mainwindow/VaultDetailUnlockedController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnlockedController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnlockedController.java index 1e5185c06..066debc12 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnlockedController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnlockedController.java @@ -171,7 +171,7 @@ public class VaultDetailUnlockedController implements FxController { } return Optional.of(vault.get().getCiphertextPath(cleartextPath)); } catch (IOException e) { - LOG.warn("Unable to get ciphertext path from path: {}", path); + LOG.warn("Unable to get ciphertext path from path: {}", path, e); return Optional.empty(); } } From b4faae7fa0e0b48d0a1148f32835239222d90ef8 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 2 Feb 2023 10:36:31 +0100 Subject: [PATCH 13/19] make debug logs readable by filter out internal fuse-nio locking --- .../java/org/cryptomator/logging/LogbackConfigurator.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/org/cryptomator/logging/LogbackConfigurator.java b/src/main/java/org/cryptomator/logging/LogbackConfigurator.java index 5162369e8..511599132 100644 --- a/src/main/java/org/cryptomator/logging/LogbackConfigurator.java +++ b/src/main/java/org/cryptomator/logging/LogbackConfigurator.java @@ -84,6 +84,10 @@ public class LogbackConfigurator extends ContextAwareBase implements Configurato upgrades.addAppender(upgrade); upgrades.addAppender(file); upgrades.setAdditive(false); + + // configure fuse file locking logger: + Logger fuseLocking = context.getLogger("org.cryptomator.frontend.fuse.locks"); + fuseLocking.setLevel(Level.OFF); } return ExecutionStatus.DO_NOT_INVOKE_NEXT_IF_ANY; } From 97c0cb4f5f46ab3303ca3348465710fd2400ab48 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 2 Feb 2023 16:44:03 +0100 Subject: [PATCH 14/19] add to settings.json the app version written to it last --- .../org/cryptomator/common/settings/SettingsJsonAdapter.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java index b6c5c426c..8058956ce 100644 --- a/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java +++ b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java @@ -37,6 +37,7 @@ public class SettingsJsonAdapter extends TypeAdapter { @Override public void write(JsonWriter out, Settings value) throws IOException { out.beginObject(); + out.name("lastWrittenByVersion").value(env.getAppVersion()+env.getBuildNumber().map("-"::concat).orElse("")); out.name("directories"); writeVaultSettingsArray(out, value.getDirectories()); out.name("askedForUpdateCheck").value(value.askedForUpdateCheck().get()); From 69d73d0fb9c4efbce45824418357fa8aba9282cd Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 3 Feb 2023 13:15:03 +0100 Subject: [PATCH 15/19] Remove standalone launchers --- dist/linux/launcher.sh | 15 --------------- dist/mac/launcher.sh | 14 -------------- dist/win/contrib/cryptomator.bat | 12 ------------ 3 files changed, 41 deletions(-) delete mode 100755 dist/linux/launcher.sh delete mode 100755 dist/mac/launcher.sh delete mode 100644 dist/win/contrib/cryptomator.bat diff --git a/dist/linux/launcher.sh b/dist/linux/launcher.sh deleted file mode 100755 index 9b9b513d4..000000000 --- a/dist/linux/launcher.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -cd $(dirname $0) -java \ - -p "mods" \ - -cp "libs/*" \ - -Dcryptomator.settingsPath="~/.config/Cryptomator/settings.json" \ - -Dcryptomator.ipcSocketPath="~/.config/Cryptomator/ipc.socket" \ - -Dcryptomator.logDir="~/.local/share/Cryptomator/logs" \ - -Dcryptomator.mountPointsDir="~/.local/share/Cryptomator/mnt" \ - -Djdk.gtk.version=2 \ - -Xss2m \ - -Xmx512m \ - --enable-preview \ - --enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64 \ - -m org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator diff --git a/dist/mac/launcher.sh b/dist/mac/launcher.sh deleted file mode 100755 index eb12426a8..000000000 --- a/dist/mac/launcher.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -cd $(dirname $0) -java \ - -p "mods" \ - -cp "libs/*" \ - -Dcryptomator.settingsPath="~/Library/Application Support/Cryptomator/settings.json" \ - -Dcryptomator.ipcSocketPath="~/Library/Application Support/Cryptomator/ipc.socket" \ - -Dcryptomator.logDir="~/Library/Logs/Cryptomator" \ - -Dcryptomator.mountPointsDir="/Volumes" \ - -Xss20m \ - -Xmx512m \ - --enable-preview \ - --enable-native-access=org.cryptomator.jfuse.mac \ - -m org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator \ No newline at end of file diff --git a/dist/win/contrib/cryptomator.bat b/dist/win/contrib/cryptomator.bat deleted file mode 100644 index 73c65d07f..000000000 --- a/dist/win/contrib/cryptomator.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off -java ^ - -p "app/mods" ^ - -cp "app/*" ^ - -Dcryptomator.settingsPath="~/AppData/Roaming/Cryptomator/settings.json" ^ - -Dcryptomator.ipcSocketPath="~/AppData/Roaming/Cryptomator/ipc.socket" ^ - -Dcryptomator.logDir="~/AppData/Roaming/Cryptomator" ^ - -Dcryptomator.mountPointsDir="~/Cryptomator" ^ - -Dcryptomator.keychainPath="~/AppData/Roaming/Cryptomator/keychain.json" ^ - -Xss20m ^ - -Xmx512m ^ - -m org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator \ No newline at end of file From d378d84832c251fa7e525457da864d8160ba03cf Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 3 Feb 2023 13:18:06 +0100 Subject: [PATCH 16/19] bump fuse-nio-adapter --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7fb036d1a..6f1c1e2e8 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 1.2.0-beta1 1.2.0-beta2 1.2.0-beta1 - 2.0.0-beta4 + 2.0.0-beta5 2.0.0-beta2 2.0.0-beta4 From 489e9fce90897d010e7ff59ee9dc7479c39abe18 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 3 Feb 2023 13:19:04 +0100 Subject: [PATCH 17/19] bump integrations-win to 1.2.0-beta2 Closes #2657 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6f1c1e2e8..fa2c734fa 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ 2.1.1 2.6.1 1.2.0-beta4 - 1.2.0-beta1 + 1.2.0-beta2 1.2.0-beta2 1.2.0-beta1 2.0.0-beta5 From 7a9a9cf4ebd31a825db1e2a19eb3c3fabd124b68 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Mon, 6 Feb 2023 12:31:56 +0100 Subject: [PATCH 18/19] Follow up of 69d73d0fb9c4efbce45824418357fa8aba9282cd: Remove standalone launchers --- .github/workflows/appimage.yml | 1 - .github/workflows/mac-dmg.yml | 1 - .github/workflows/win-exe.yml | 1 - 3 files changed, 3 deletions(-) diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml index c69a460f1..4e81a4295 100644 --- a/.github/workflows/appimage.yml +++ b/.github/workflows/appimage.yml @@ -47,7 +47,6 @@ jobs: - name: Patch target dir run: | cp LICENSE.txt target - cp dist/linux/launcher.sh target cp target/cryptomator-*.jar target/mods - name: Run jlink run: > diff --git a/.github/workflows/mac-dmg.yml b/.github/workflows/mac-dmg.yml index e4b448612..d86f6912e 100644 --- a/.github/workflows/mac-dmg.yml +++ b/.github/workflows/mac-dmg.yml @@ -61,7 +61,6 @@ jobs: - name: Patch target dir run: | cp LICENSE.txt target - cp dist/mac/launcher.sh target cp target/cryptomator-*.jar target/mods - name: Run jlink run: > diff --git a/.github/workflows/win-exe.yml b/.github/workflows/win-exe.yml index 0a75c44ca..e8709ac89 100644 --- a/.github/workflows/win-exe.yml +++ b/.github/workflows/win-exe.yml @@ -55,7 +55,6 @@ jobs: - name: Patch target dir run: | cp LICENSE.txt target - cp dist/linux/launcher.sh target cp target/cryptomator-*.jar target/mods - name: Run jlink run: > From bd75370dfdb15c9eca0ac618269c2e0178e0751d Mon Sep 17 00:00:00 2001 From: Cryptobot Date: Mon, 6 Feb 2023 14:44:45 +0100 Subject: [PATCH 19/19] New Crowdin updates (#2646) New translations strings.properties Catalan; Chinese Simplified; Dutch; Italian; Persian; Polish; Slovak; [ci skip] --- src/main/resources/i18n/strings_ca.properties | 41 ++++++++++++++++++- src/main/resources/i18n/strings_fa.properties | 15 +++++++ src/main/resources/i18n/strings_it.properties | 20 +++++++++ src/main/resources/i18n/strings_nl.properties | 1 + src/main/resources/i18n/strings_pl.properties | 17 ++++++++ src/main/resources/i18n/strings_sk.properties | 8 ++++ src/main/resources/i18n/strings_zh.properties | 17 ++++++++ 7 files changed, 117 insertions(+), 2 deletions(-) diff --git a/src/main/resources/i18n/strings_ca.properties b/src/main/resources/i18n/strings_ca.properties index c9fa1f96f..0f7673271 100644 --- a/src/main/resources/i18n/strings_ca.properties +++ b/src/main/resources/i18n/strings_ca.properties @@ -73,7 +73,7 @@ addvault.new.readme.storageLocation.4=• modifiqueu cap fitxer dins d'aquest d addvault.new.readme.storageLocation.5=• enganxeu cap fitxer a xifrar en aquest directori. addvault.new.readme.storageLocation.6=Si voleu xifrar fitxers i veure el contigut de la caixa forta, feu el següent: addvault.new.readme.storageLocation.7=1. Afegiu aquesta caixa forta a Cryptomator. -addvault.new.readme.storageLocation.8=2. Desbloquejeu la caixa forta enCryptomator. +addvault.new.readme.storageLocation.8=2. Desbloqueu la caixa forta a Cryptomator. addvault.new.readme.storageLocation.9=3. Feu click damunt del botó "Mostra" per obrir la ubicació d'accès. addvault.new.readme.storageLocation.10=Si us cal ajuda, llegiu la documentació: %s addvault.new.readme.accessLocation.fileName=BENVINGUTS.rtf @@ -123,6 +123,10 @@ unlock.success.description=S'ha desblocat %s correctament! Podeu accedir a la vo unlock.success.rememberChoice=Recorda l'elecció. No ho tornis a mostrar. unlock.success.revealBtn=Mostra la unitat ## Failure +unlock.error.customPath.message=No es pot muntar la caixa forta en la ruta personalitzada +unlock.error.customPath.description.notSupported=Si vol continuar fent servir una ruta personalitzada, vagi si us plau a Preferències i seleccioni un tipus de volum que la suporti. Altrament, vagi a les opcions de la caixa forta i escolli un punt de muntatge suportat. +unlock.error.customPath.description.notExists=La ruta de muntatge personalitzada no existeix. Creï-la o canviï-la en les opcions de la caixa forta. +unlock.error.customPath.description.generic=Ha seleccionat una ruta personalitzada on muntar la caixa forta, però ha fallat amb aquest missatge: %s ## Hub hub.noKeychain.message=No es pot accedir a la clau del dispositiu hub.noKeychain.description=Per poder desblocar caixes fortes del Hub es requereix la clau d'un dispositiu, que s'emmagatzema de forma segura en un clauer. Per continuar, habiliti "%s" i seleccioni un clauer en les Preferències. @@ -133,18 +137,25 @@ hub.auth.description=Hauríeu de ser redirigits a la pàgina d'accés. hub.auth.loginLink=No heu estat redirigit? Feu clic aquí per a obrir-la. ### Receive Key hub.receive.message=S'està processant la resposta… +hub.receive.description=Cryptomator està rebent i processant la resposta del Hub. Espereu, si us plau. ### Register Device hub.register.message=Cal un nom de dispositiu +hub.register.description=Sembla que és el primer accés al Hub des d'aquest dispositiu. Per identificar-lo i poder autoritzar l'accés necessiteu anomenar aquest dispositiu. hub.register.nameLabel=Nom del dispositiu hub.register.occupiedMsg=El nom ja està en ús hub.register.registerBtn=Confirma ### Registration Success +hub.registerSuccess.message=Unitat anomenada hub.registerSuccess.description=Per a accedir a la caixa forta, el vostre dispositiu ha de ser autoritzat pel propietari de la caixa. ### Registration Failed +hub.registerFailed.message=Error al nombrar el dispositiu +hub.registerFailed.description=S'ha produït un error en el procés de nomenament. Per més detalls vegeu el registre de l'aplicació. ### Unauthorized hub.unauthorized.message=Accés denegat hub.unauthorized.description=El vostre dispositiu no ha estat encara autoritzat a accedir a aquesta caixa forta. Demaneu autorització al propietari. ### License Exceeded +hub.licenseExceeded.message=Llicència caducada +hub.licenseExceeded.description=Cryptomator Hub ha donat accés a més usuaris dels permesos en la llicència. Si us plau contacteu amb l'administrador del Hub per actualitzar la llicència o amb l'administrador de la caixa forta per treure usuaris. # Lock @@ -161,6 +172,11 @@ lock.fail.description=La caixa forta "%s" no s'ha pogut blocar. Assegureu-vos qu migration.title=Actualitza la caixa forta ## Start migration.start.header=Actualitza la caixa forta +migration.start.text=Per obrir la caixa forta "%s" en aquesta nova versió de Cryptomator, la caixa forta necessita actualitzar-se al nou format. Abans de fer-ho, cal que sabeu el següent: +migration.start.remarkUndone=Aquesta actualització no pot ser desfeta. +migration.start.remarkVersions=Versions antigues de Cryptomator no podran obrir la caixa forta actualitzada. +migration.start.remarkCanRun=Assegureu-vos que tots els dispositius des dels quals accediu a la caixa forta poden executar aquesta versió de Cryptomator. +migration.start.remarkSynced=Assegureu-vos que la caixa forta està completament sincronitzada en aquest i altres dispositius abans d'actualitzar-la. migration.start.confirm=He llegit i entès la informació anterior ## Run migration.run.enterPassword=Introduïu la contrasenya per a "%s" @@ -218,6 +234,10 @@ health.result.severityFilter.good=Bé health.result.severityFilter.info=Info health.result.severityFilter.warn=Avís health.result.severityFilter.crit=Crític +health.result.severityTip.good=Gravetat: Bona.\nEstructura de la caixa forta correcta. +health.result.severityTip.info=Gravetat: Informació\nCaixa forta intacta, es recomana però arreglar-la. +health.result.severityTip.warn=Gravetat: Avís\nCaixa forta corrompuda, és altament recomanable arreglar-la. +health.result.severityTip.crit=Gravetat: Crítica\nCaixa forta corrompuda, s'ha determinat que s'han perdut dades. health.result.fixStateFilter.all=Estat de reparació - Tot health.result.fixStateFilter.fixable=Es pot arreglar health.result.fixStateFilter.notFixable=No es pot arreglar @@ -255,7 +275,15 @@ preferences.interface.showMinimizeButton=Mostra el botó 'minimitzar' preferences.interface.showTrayIcon=Mostra la icona en la barra (cal reiniciar) ## Volume preferences.volume=Unitat virtual +preferences.volume.type=Tipus de volum (requereix reiniciar) preferences.volume.type.automatic=Automàtic +preferences.volume.tcp.port=Port TCP +preferences.volume.supportedFeatures=El tipus de volum escollit suporta les següents característiques: +preferences.volume.feature.mountAuto=Selecció automàtica del punt de muntatge +preferences.volume.feature.mountToDir=Directori personalitzat com a punt de muntatge +preferences.volume.feature.mountToDriveLetter=Lletra de la unitat com a punt de muntatge +preferences.volume.feature.mountFlags=Opcions de muntatge personalitzades +preferences.volume.feature.readOnly=Muntar de només lectura ## Updates preferences.updates=Actualitzacions preferences.updates.currentVersion=Versió actual: %s @@ -336,6 +364,7 @@ main.vaultDetail.passwordSavedInKeychain=Contrasenya desada main.vaultDetail.unlockedStatus=DESBLOQUEJADA main.vaultDetail.accessLocation=Els continguts de la vostra caixa forta són accessibles aquí: main.vaultDetail.revealBtn=Mostra la unitat +main.vaultDetail.copyUri=Copiar URI main.vaultDetail.lockBtn=Bloqueja main.vaultDetail.bytesPerSecondRead=Lectura: main.vaultDetail.bytesPerSecondWritten=Escriu: @@ -343,8 +372,12 @@ main.vaultDetail.throughput.idle=inactiu main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.stats=Estadístiques de la caixa forta +main.vaultDetail.locateEncryptedFileBtn=Trobar fitxer xifrat +main.vaultDetail.locateEncryptedFileBtn.tooltip=Esculli un fitxer de la caixa forta per trobar el seu homòleg xifrat +main.vaultDetail.encryptedPathsCopied=Rutes copiades al porta-retalls! +main.vaultDetail.filePickerTitle=Seleccioni un fitxer dins la caixa forta ### Missing -main.vaultDetail.missing.info=Cryptomator no ha trobat una caixa forta en aquest camí. +main.vaultDetail.missing.info=Cryptomator no ha trobat una caixa forta en aquesta ruta. main.vaultDetail.missing.recheck=Torna a comprovar main.vaultDetail.missing.remove=Eliminar de la llista de la caixa forta… main.vaultDetail.missing.changeLocation=Canvia la localització de la caixa forta… @@ -381,13 +414,17 @@ vaultOptions.general.startHealthCheckBtn=Inicia la comprovació ## Mount vaultOptions.mount=Muntatge +vaultOptions.mount.info=Les opcions depenen del tipus de volum escollit. +vaultOptions.mount.linkToPreferences=Obre les preferències del disc virtual vaultOptions.mount.readonly=Només lectura vaultOptions.mount.customMountFlags=Senyaladors de muntatge personalitzats vaultOptions.mount.winDriveLetterOccupied=ocupat vaultOptions.mount.mountPoint=Punt de muntatge vaultOptions.mount.mountPoint.auto=Tria automàticament una ubicació adequada vaultOptions.mount.mountPoint.driveLetter=Utilitza la lletra de la unitat assignada +vaultOptions.mount.mountPoint.custom=Faci servir el directori escollit vaultOptions.mount.mountPoint.directoryPickerButton=Trieu… +vaultOptions.mount.mountPoint.directoryPickerTitle=Triï un directori ## Master Key vaultOptions.masterkey=Contrasenya vaultOptions.masterkey.changePasswordBtn=Canvi de contrasenya diff --git a/src/main/resources/i18n/strings_fa.properties b/src/main/resources/i18n/strings_fa.properties index 772cf8480..bdc8d0002 100644 --- a/src/main/resources/i18n/strings_fa.properties +++ b/src/main/resources/i18n/strings_fa.properties @@ -16,6 +16,7 @@ generic.button.print=چاپ # Error error.message=خطایی رخ داده است +error.technicalDetails=جزئیات: # Defaults defaults.vault.vaultName=گاوصندوق @@ -28,13 +29,24 @@ traymenu.vault.lock=قفل traymenu.vault.reveal=ظاهر # Add Vault Wizard +addvaultwizard.title=اضافه کردن گاوصندوق ## Welcome +addvaultwizard.welcome.newButton=ساخت گاوصندوق جدید +addvaultwizard.welcome.existingButton=باز کردن گاوصندوق موجود ## New ### Name +addvaultwizard.new.nameInstruction=یک نام برای گاوصندوق انتخاب کنید +addvaultwizard.new.namePrompt=نام گاوصندوق ### Location +addvaultwizard.new.locationLabel=مکان ذخیره‌سازی +addvaultwizard.new.directoryPickerLabel=مکان سفارشی +addvaultwizard.new.directoryPickerButton=انتخاب کنید… +addvaultwizard.new.fileAlreadyExists=در حال حاضر یک فایل یا پوشه با همین نام وجود دارد +addvaultwizard.new.validCharacters.numbers=اعداد ### Password ### Information ## Existing +addvaultwizard.existing.chooseBtn=انتخاب کنید… ## Success # Remove Vault @@ -100,6 +112,7 @@ main.closeBtn.tooltip=ببند main.supporterCertificateMissing.tooltip=لطفا کمک مالی در نظر بگیرند ## Vault List main.vaultlist.contextMenu.lock=قفل +main.vaultlist.addVaultBtn=اضافه کردن گاوصندوق ## Vault Detail ### Welcome ### Locked @@ -113,8 +126,10 @@ main.vaultDetail.lockBtn=قفل # Vault Options ## General +vaultOptions.general.vaultName=نام گاوصندوق ## Mount +vaultOptions.mount.mountPoint.directoryPickerButton=انتخاب کنید… ## Master Key diff --git a/src/main/resources/i18n/strings_it.properties b/src/main/resources/i18n/strings_it.properties index a4f827051..04b5f03e4 100644 --- a/src/main/resources/i18n/strings_it.properties +++ b/src/main/resources/i18n/strings_it.properties @@ -123,6 +123,10 @@ unlock.success.description="%s" sbloccato correttamente! La tua cassaforte è or unlock.success.rememberChoice=Ricorda la scelta, non mostrarmelo più unlock.success.revealBtn=Rivela l'Unità ## Failure +unlock.error.customPath.message=Impossibile montare la cassaforte sul percorso personalizzato +unlock.error.customPath.description.notSupported=Se desideri continuare a utilizzare il percorso personalizzato, vai alle preferenze e seleziona un tipo di volume che lo supporta. Altrimenti, vai alle opzioni della cassaforte e scegli un punto di montaggio supportato. +unlock.error.customPath.description.notExists=Il percorso di mount personalizzato non esiste. Crealo nel tuo file system locale o cambialo nelle opzioni della cassaforte. +unlock.error.customPath.description.generic=Hai selezionato un percorso di montaggio personalizzato per questa cassaforte, ma il suo utilizzo è fallito col messaggio: %s ## Hub hub.noKeychain.message=Impossibile accedere alla chiave del dispositivo hub.noKeychain.description=Per sbloccare le casseforti Hub, è necessaria una chiave del dispositivo, che è protetta tramite un portachiavi. Per procedere, abilita "%s" e seleziona un portachiavi nelle preferenze. @@ -271,7 +275,15 @@ preferences.interface.showMinimizeButton=Mostra il pulsante minimizza preferences.interface.showTrayIcon=Mostra l'icona della barra d'applicazioni (richiede il riavvio) ## Volume preferences.volume=Unità Virtuale +preferences.volume.type=Tipo di volume (richiede riavvio) preferences.volume.type.automatic=Automatico +preferences.volume.tcp.port=Porta TCP +preferences.volume.supportedFeatures=Il tipo di volume scelto supporta le seguenti caratteristiche: +preferences.volume.feature.mountAuto=Selezione automatica del punto di montaggio +preferences.volume.feature.mountToDir=Directory personalizzata come punto di montaggio +preferences.volume.feature.mountToDriveLetter=Lettera dispositivo come punto di montaggio +preferences.volume.feature.mountFlags=Opzioni di montaggio personalizzate +preferences.volume.feature.readOnly=Montaggio di sola lettura ## Updates preferences.updates=Aggiornamenti preferences.updates.currentVersion=Versione Corrente: %s @@ -352,6 +364,7 @@ main.vaultDetail.passwordSavedInKeychain=Password salvata main.vaultDetail.unlockedStatus=SBLOCCATA main.vaultDetail.accessLocation=I contenuti della tua cassaforte sono accessibili qui: main.vaultDetail.revealBtn=Rivela Unità +main.vaultDetail.copyUri=Copia URI main.vaultDetail.lockBtn=Blocca main.vaultDetail.bytesPerSecondRead=Lettura: main.vaultDetail.bytesPerSecondWritten=Scrittura: @@ -359,7 +372,10 @@ main.vaultDetail.throughput.idle=inattivo main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.stats=Statistiche della Cassaforte +main.vaultDetail.locateEncryptedFileBtn=Individua File Crittografato +main.vaultDetail.locateEncryptedFileBtn.tooltip=Scegli un file dalla cassaforte per individuare la controparte cifrata main.vaultDetail.encryptedPathsCopied=Percorsi copiati negli Appunti! +main.vaultDetail.filePickerTitle=Seleziona File Nella Cassaforte ### Missing main.vaultDetail.missing.info=Cryptomator non è riuscito a trovare una cassaforte in questo percorso. main.vaultDetail.missing.recheck=Ricontrolla @@ -398,13 +414,17 @@ vaultOptions.general.startHealthCheckBtn=Avvia il Controllo della Salute ## Mount vaultOptions.mount=Montaggio +vaultOptions.mount.info=Le opzioni dipendono dal tipo di volume selezionato. +vaultOptions.mount.linkToPreferences=Apri le preferenze dell'unità virtuale vaultOptions.mount.readonly=Sola Lettura vaultOptions.mount.customMountFlags=Flag di Montaggio Personalizzati vaultOptions.mount.winDriveLetterOccupied=occupato vaultOptions.mount.mountPoint=Punto di Montaggio vaultOptions.mount.mountPoint.auto=Scegli automaticamente una posizione idonea vaultOptions.mount.mountPoint.driveLetter=Usa la lettera del drive assegnata +vaultOptions.mount.mountPoint.custom=Usa la directory scelta vaultOptions.mount.mountPoint.directoryPickerButton=Scegli… +vaultOptions.mount.mountPoint.directoryPickerTitle=Scegli una directory ## Master Key vaultOptions.masterkey=Password vaultOptions.masterkey.changePasswordBtn=Modifica password diff --git a/src/main/resources/i18n/strings_nl.properties b/src/main/resources/i18n/strings_nl.properties index c3867cd0a..b79db3885 100644 --- a/src/main/resources/i18n/strings_nl.properties +++ b/src/main/resources/i18n/strings_nl.properties @@ -125,6 +125,7 @@ unlock.success.revealBtn=Toon Schijf ## Failure unlock.error.customPath.message=Kan kluis niet aan aangepast pad koppelen unlock.error.customPath.description.notSupported=Als je het aangepaste pad wilt blijven gebruiken, ga dan naar de voorkeuren en selecteer een volume type dat het ondersteunt. Anders ga je naar de kluis opties en kies je een steunpunt voor het koppelplaten. +unlock.error.customPath.description.notExists=Het aangepaste koppelpad bestaat niet. Maak het aan in uw lokale bestandssysteem of verander het in de kluis opties. unlock.error.customPath.description.generic=Je hebt een aangepast koppel pad geselecteerd voor deze kluis, maar het gebruik ervan is mislukt met het bericht: %s ## Hub hub.noKeychain.message=Geen toegang tot de apparaatsleutel diff --git a/src/main/resources/i18n/strings_pl.properties b/src/main/resources/i18n/strings_pl.properties index b65e97aad..31dbe2dc7 100644 --- a/src/main/resources/i18n/strings_pl.properties +++ b/src/main/resources/i18n/strings_pl.properties @@ -123,6 +123,10 @@ unlock.success.description=Odblokowano "%s" pomyślnie! Twój sejf jest teraz do unlock.success.rememberChoice=Zapamiętaj wybór, nie pokazuj tego ponownie unlock.success.revealBtn=Pokaż Dysk ## Failure +unlock.error.customPath.message=Nie można zamontować sejfu na niestandardowej ścieżce +unlock.error.customPath.description.notSupported=Jeśli chcesz nadal używać niestandardowej ścieżki, przejdź do preferencji i wybierz typ woluminu, który ją obsługuje. W przeciwnym razie przejdź do opcji sejfu i wybierz obsługiwany punkt montowania. +unlock.error.customPath.description.notExists=Niestandardowa ścieżka montowania nie istnieje. Stwórz ją w lokalnym systemie plików lub zmień ją w opcjach sejfu. +unlock.error.customPath.description.generic=Wybrałeś niestandardową ścieżkę montowania dla tego sejfu, ale użycie jej nie powiodło się z wiadomością: %s ## Hub hub.noKeychain.message=Brak dostępu do klucza urządzenia hub.noKeychain.description=Aby odblokować sejfy na Hubie, wymagany jest klucz urządzenia zabezpieczony za pomocą pęku kluczy. Aby kontynuować, włącz "%s" i wybierz Pęk kluczy w ustawieniach. @@ -271,7 +275,15 @@ preferences.interface.showMinimizeButton=Pokaż przycisk minimalizacji preferences.interface.showTrayIcon=Pokaż ikonę zasobnika (wymaga restartu) ## Volume preferences.volume=Dysk wirtualny +preferences.volume.type=Typ woluminu (wymaga ponownego uruchomienia) preferences.volume.type.automatic=Automatyczny +preferences.volume.tcp.port=Port TCP +preferences.volume.supportedFeatures=Wybrany typ woluminu obsługuje następujące funkcje: +preferences.volume.feature.mountAuto=Automatyczny wybór punktu montowania +preferences.volume.feature.mountToDir=Niestandardowy katalog jako punkt montowania +preferences.volume.feature.mountToDriveLetter=Litera dysku jako punkt montowania +preferences.volume.feature.mountFlags=Własne opcje montowania +preferences.volume.feature.readOnly=Montowanie tylko do odczytu ## Updates preferences.updates=Aktualizacje preferences.updates.currentVersion=Obecna wersja: %s @@ -352,6 +364,7 @@ main.vaultDetail.passwordSavedInKeychain=Hasło zapisane main.vaultDetail.unlockedStatus=ODBLOKOWANE main.vaultDetail.accessLocation=Zawartość Twojego sejfu dostępna jest tutaj: main.vaultDetail.revealBtn=Otwórz lokalizację +main.vaultDetail.copyUri=Kopiuj URI main.vaultDetail.lockBtn=Blokuj main.vaultDetail.bytesPerSecondRead=Odczyt: main.vaultDetail.bytesPerSecondWritten=Zapisz: @@ -397,13 +410,17 @@ vaultOptions.general.startHealthCheckBtn=Rozpocznij Test Spójności ## Mount vaultOptions.mount=Montowanie +vaultOptions.mount.info=Opcje zależą od wybranego typu woluminu. +vaultOptions.mount.linkToPreferences=Otwórz ustawienia dysku wirtualnego vaultOptions.mount.readonly=Tylko do odczytu vaultOptions.mount.customMountFlags=Własne flagi montowania udziału vaultOptions.mount.winDriveLetterOccupied=zajęty vaultOptions.mount.mountPoint=Punkt montowania vaultOptions.mount.mountPoint.auto=Automatycznie wybierz odpowiednią lokalizację vaultOptions.mount.mountPoint.driveLetter=Użyj przypisanej litery dysku +vaultOptions.mount.mountPoint.custom=Użyj wybranego katalogu vaultOptions.mount.mountPoint.directoryPickerButton=Wybierz… +vaultOptions.mount.mountPoint.directoryPickerTitle=Wybierz katalog ## Master Key vaultOptions.masterkey=Hasło vaultOptions.masterkey.changePasswordBtn=Zmiana Hasła diff --git a/src/main/resources/i18n/strings_sk.properties b/src/main/resources/i18n/strings_sk.properties index 211720a14..af81568c3 100644 --- a/src/main/resources/i18n/strings_sk.properties +++ b/src/main/resources/i18n/strings_sk.properties @@ -272,6 +272,9 @@ preferences.interface.showTrayIcon=Ukázať ikonu na sytémovej lište (vyžaduj ## Volume preferences.volume=Virtuálny disk preferences.volume.type.automatic=Automaticky +preferences.volume.tcp.port=TCP port +preferences.volume.feature.mountFlags=Vlastné parametre mapovania +preferences.volume.feature.readOnly=Mapovanie len na čítanie ## Updates preferences.updates=Aktualizácie preferences.updates.currentVersion=Aktuálna verzia: %s @@ -352,6 +355,7 @@ main.vaultDetail.passwordSavedInKeychain=Heslo uložené main.vaultDetail.unlockedStatus=Odomknutý main.vaultDetail.accessLocation=Obsah Vášho trezora je dostupný tu: main.vaultDetail.revealBtn=Odkry disk +main.vaultDetail.copyUri=Kopírovať URI main.vaultDetail.lockBtn=Uzamknúť main.vaultDetail.bytesPerSecondRead=Čítanie: main.vaultDetail.bytesPerSecondWritten=Zápis: @@ -401,13 +405,17 @@ vaultOptions.general.startHealthCheckBtn=Spustiť kontrolu zdravia ## Mount vaultOptions.mount=Mapovanie +vaultOptions.mount.info=Voľby závisia od typu zvolenej jednotky. +vaultOptions.mount.linkToPreferences=Otvoriť vlastnosti virtuálnej jednotky vaultOptions.mount.readonly=Len-čítanie vaultOptions.mount.customMountFlags=Vlastné parametre mapovania vaultOptions.mount.winDriveLetterOccupied=obsadený vaultOptions.mount.mountPoint=Bod mapovania vaultOptions.mount.mountPoint.auto=Automaticky zvoľ vhodné umiestnenie vaultOptions.mount.mountPoint.driveLetter=Použiť pridelené písmeno disku +vaultOptions.mount.mountPoint.custom=Použiť zvolený adresár vaultOptions.mount.mountPoint.directoryPickerButton=Zvoliť… +vaultOptions.mount.mountPoint.directoryPickerTitle=Vyberte adresár ## Master Key vaultOptions.masterkey=Heslo vaultOptions.masterkey.changePasswordBtn=Zmeniť heslo diff --git a/src/main/resources/i18n/strings_zh.properties b/src/main/resources/i18n/strings_zh.properties index 1a0114155..d0812fd11 100644 --- a/src/main/resources/i18n/strings_zh.properties +++ b/src/main/resources/i18n/strings_zh.properties @@ -123,6 +123,10 @@ unlock.success.description=已成功解锁 "%s"! 您现在可以通过其虚拟 unlock.success.rememberChoice=记住选项且不再显示 unlock.success.revealBtn=显示驱动器 ## Failure +unlock.error.customPath.message=无法将保险库挂载到自定义路径 +unlock.error.customPath.description.notSupported=如果您仍想使用自定义路径,请转至首选项并选择支持它的卷类型。否则,请转至保险库选项并选择受支持的挂载点 +unlock.error.customPath.description.notExists=自定义挂载路径不存在,请在您的本地文件系统中创建它或在保险库选项中进行更改 +unlock.error.customPath.description.generic=您已为此保险库选择了自定义挂载路径,但使用失败,错误消息:%s ## Hub hub.noKeychain.message=无法访问设备密钥 hub.noKeychain.description=为了解锁 Hub 保险库,需要使用由钥匙串保护的设备密钥。若要继续,请启用“%s”并在首选项中选择一个钥匙串 @@ -271,7 +275,15 @@ preferences.interface.showMinimizeButton=显示最小化按钮 preferences.interface.showTrayIcon=显示托盘图标 (需重启) ## Volume preferences.volume=虚拟磁盘 +preferences.volume.type=卷类型(需重启) preferences.volume.type.automatic=自动 +preferences.volume.tcp.port=TCP 端口 +preferences.volume.supportedFeatures=选定的卷类型支持以下功能: +preferences.volume.feature.mountAuto=自动选择挂载点 +preferences.volume.feature.mountToDir=自定义目录作为挂载点 +preferences.volume.feature.mountToDriveLetter=盘符作为挂载点 +preferences.volume.feature.mountFlags=自定义挂载选项 +preferences.volume.feature.readOnly=只读挂载 ## Updates preferences.updates=更新 preferences.updates.currentVersion=当前版本:%s @@ -352,6 +364,7 @@ main.vaultDetail.passwordSavedInKeychain=密码已保存 main.vaultDetail.unlockedStatus=已解锁 main.vaultDetail.accessLocation=您的保险库内容在此处访问: main.vaultDetail.revealBtn=显示驱动器 +main.vaultDetail.copyUri=复制 URI main.vaultDetail.lockBtn=锁定 main.vaultDetail.bytesPerSecondRead=读取: main.vaultDetail.bytesPerSecondWritten=写入: @@ -401,13 +414,17 @@ vaultOptions.general.startHealthCheckBtn=开始健康检查 ## Mount vaultOptions.mount=挂载 +vaultOptions.mount.info=选项取决于所选的卷类型 +vaultOptions.mount.linkToPreferences=打开虚拟驱动器首选项 vaultOptions.mount.readonly=只读 vaultOptions.mount.customMountFlags=自定义挂载标志 vaultOptions.mount.winDriveLetterOccupied=已占用 vaultOptions.mount.mountPoint=挂载点 vaultOptions.mount.mountPoint.auto=自动选择一个合适的位置 vaultOptions.mount.mountPoint.driveLetter=使用分配的驱动器字符 +vaultOptions.mount.mountPoint.custom=使用选定的目录 vaultOptions.mount.mountPoint.directoryPickerButton=选择... +vaultOptions.mount.mountPoint.directoryPickerTitle=选择目录 ## Master Key vaultOptions.masterkey=密码 vaultOptions.masterkey.changePasswordBtn=更改密码