diff --git a/.github/workflows/win-exe.yml b/.github/workflows/win-exe.yml
index cb754ca17..45ce36c2e 100644
--- a/.github/workflows/win-exe.yml
+++ b/.github/workflows/win-exe.yml
@@ -8,11 +8,17 @@ on:
version:
description: 'Version'
required: false
+ isDebug:
+ description: 'Build debug version with console output'
+ type: boolean
+
env:
JAVA_VERSION: 19
- JAVA_DIST: 'zulu'
+ JAVA_DIST: 'temurin'
JAVA_CACHE: 'maven'
+ JFX_JMODS_URL: 'https://download2.gluonhq.com/openjfx/19.0.2.1/openjfx-19.0.2.1_windows-x64_bin-jmods.zip'
+ JFX_JMODS_HASH: 'B7CF2CAD2468842B3B78D99F6C0555771499A36FA1F1EE3DD1B9A4597F1FAB86'
defaults:
run:
@@ -30,6 +36,7 @@ jobs:
needs: [get-version]
env:
LOOPBACK_ALIAS: 'cryptomator-vault'
+ WIN_CONSOLE_FLAG: ''
steps:
- uses: actions/checkout@v3
- name: Setup Java
@@ -37,17 +44,31 @@ jobs:
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
- java-package: 'jdk+fx'
+ java-package: 'jdk'
cache: ${{ env.JAVA_CACHE }}
- - name: Ensure major jfx version in pom equals in jdk
- shell: pwsh
+ - name: Download and extract JavaFX jmods from Gluon
+ #In the last step we move all jmods files a dir level up because jmods are placed inside a directory in the zip
run: |
- $jfxPomVersion = (&mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) -split "\."
- $jfxJdkVersion = ((Get-Content -path "${env:JAVA_HOME}/lib/javafx.properties" | Where-Object {$_ -like 'javafx.version=*' }) -replace '.*=','') -split "\."
- if ($jfxPomVersion[0] -ne $jfxJdkVersion[0]) {
- Write-Error "Major part of JavaFX version in pom($($jfxPomVersion[0])) does not match the version in JDK($($jfxJdkVersion[0])) "
- exit 1
+ curl --output jfxjmods.zip -L "${{ env.JFX_JMODS_URL }}"
+ if(!(Get-FileHash -Path jfxjmods.zip -Algorithm SHA256).Hash.equals("${{ env.JFX_JMODS_HASH }}")) {
+ exit 1;
}
+ Expand-Archive -Path jfxjmods.zip -DestinationPath jfxjmods
+ Get-ChildItem -Path jfxjmods -Recurse -Filter "*.jmod" | ForEach-Object { Move-Item -Path $_ -Destination $_.Directory.Parent}
+ shell: pwsh
+ - name: Ensure major jfx version in pom and in jmods is the same
+ run: |
+ JMOD_VERSION_AMD64=$(jmod describe jfxjmods/javafx.base.jmod | head -1)
+ JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64#*@}
+ JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64%%.*}
+ POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
+ POM_JFX_VERSION=${POM_JFX_VERSION#*@}
+ POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
+
+ if [ $POM_JFX_VERSION -ne $JMOD_VERSION_AMD64 ]; then
+ >&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != amd64 jmod version (${JMOD_VERSION_AMD64})"
+ exit 1
+ fi
- name: Set version
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
- name: Run maven
@@ -61,13 +82,16 @@ jobs:
${JAVA_HOME}/bin/jlink
--verbose
--output runtime
- --module-path "${JAVA_HOME}/jmods"
+ --module-path "jfxjmods;${JAVA_HOME}/jmods"
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr
--strip-native-commands
--no-header-files
--no-man-pages
--strip-debug
--compress=1
+ - name: Change win-console flag if debug is active
+ if: ${{ inputs.isDebug }}
+ run: echo "WIN_CONSOLE_FLAG=--win-console" >> $GITHUB_ENV
- name: Run jpackage
run: >
${JAVA_HOME}/bin/jpackage
@@ -99,8 +123,10 @@ jobs:
--java-options "-Dcryptomator.buildNumber=\"msi-${{ needs.get-version.outputs.revNum }}\""
--java-options "-Dcryptomator.integrationsWin.autoStartShellLinkName=\"Cryptomator\""
--java-options "-Dcryptomator.integrationsWin.keychainPaths=\"~/AppData/Roaming/Cryptomator/keychain.json\""
+ --java-options "-Djavafx.verbose=${{ inputs.isDebug }}"
--resource-dir dist/win/resources
--icon dist/win/resources/Cryptomator.ico
+ ${WIN_CONSOLE_FLAG}
- name: Patch Application Directory
run: |
cp dist/win/contrib/* appdir/Cryptomator
diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml
deleted file mode 100644
index 632b02de5..000000000
--- a/.github/workflows/winget.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-name: Release to Winget
-
-on:
- workflow_call:
- inputs:
- releaseTag:
- required: true
- type: string
- workflow_dispatch:
- inputs:
- releaseTag:
- description: 'Release tag name'
- required: true
- type: string
-
-jobs:
- publish-winget:
- name: Publish on winget repo
- runs-on: windows-latest
- steps:
- - name: Get download url for release assets
- id: get-release-assets
- uses: actions/github-script@v6
- with:
- script: |
- const query =`query($tag:String!) {
- repository(owner:"cryptomator", name:"cryptomator"){
- release(tagName: $tag) {
- releaseAssets(first:20) {
- nodes {
- name
- downloadUrl
- }
- }
- }
- }
- }`;
- const variables = {
- tag: "${{ inputs.releaseTag }}"
- }
- return await github.graphql(query, variables)
- - name: Submit package to Windows Package Manager Community Repository
- id: submit-winget
- run: |
- iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
- $releaseAssets = (ConvertFrom-Json '${{ steps.get-release-assets.outputs.result }}').repository.release.releaseAssets.nodes
- $installerUrl = $releaseAssets | Where-Object -Property name -match '^Cryptomator-.*\.msi$' | Select -ExpandProperty downloadUrl -First 1
- .\wingetcreate.exe update Cryptomator.Cryptomator -s -v "${{ inputs.releaseTag }}" -u "$installerUrl" -t ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
- shell: pwsh
diff --git a/README.md b/README.md
index 88e5d1475..b78fb7d88 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,6 @@ Cryptomator is provided free of charge as an open-source project despite the hig
-
diff --git a/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml b/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml
index 7295b66e9..db65581f0 100644
--- a/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml
+++ b/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml
@@ -66,6 +66,7 @@
+
diff --git a/pom.xml b/pom.xml
index f257a2fa7..487e404d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0org.cryptomatorcryptomator
- 1.7.3
+ 1.7.4Cryptomator Desktop App
@@ -33,12 +33,12 @@
org.ow2.asm,org.apache.jackrabbit,org.apache.httpcomponents,de.swiesend,org.purejava,com.github.hypfvieh
- 2.6.2
+ 2.6.31.2.01.2.01.2.01.2.0
- 2.0.4
+ 2.0.52.0.02.0.2
@@ -317,41 +317,6 @@
-
- org.codehaus.mojo
- exec-maven-plugin
- 3.1.0
-
-
- compile-light-theme
- compile
-
- java
-
-
- javafx.graphics/com.sun.javafx.css.parser.Css2Bin
-
- ${project.basedir}/src/main/resources/css/light_theme.css
- ${project.build.outputDirectory}/css/light_theme.bss
-
-
-
-
- compile-dark-theme
- compile
-
- java
-
-
- javafx.graphics/com.sun.javafx.css.parser.Css2Bin
-
- ${project.basedir}/src/main/resources/css/dark_theme.css
- ${project.build.outputDirectory}/css/dark_theme.bss
-
-
-
-
- org.apache.maven.pluginsmaven-jar-plugin
diff --git a/src/main/java/org/cryptomator/common/ObservableUtil.java b/src/main/java/org/cryptomator/common/ObservableUtil.java
index 289f6e929..7927b6e54 100644
--- a/src/main/java/org/cryptomator/common/ObservableUtil.java
+++ b/src/main/java/org/cryptomator/common/ObservableUtil.java
@@ -2,7 +2,9 @@ package org.cryptomator.common;
import javafx.beans.binding.Bindings;
import javafx.beans.value.ObservableValue;
+import java.util.Objects;
import java.util.function.Function;
+import java.util.function.Supplier;
public class ObservableUtil {
@@ -15,4 +17,14 @@ public class ObservableUtil {
}
}, observable);
}
+
+ public static ObservableValue mapWithDefault(ObservableValue observable, Function super T, ? extends U> mapper, Supplier defaultValue) {
+ return Bindings.createObjectBinding(() -> {
+ if (observable.getValue() == null) {
+ return defaultValue.get();
+ } else {
+ return mapper.apply(observable.getValue());
+ }
+ }, observable);
+ }
}
diff --git a/src/main/java/org/cryptomator/common/mount/MountModule.java b/src/main/java/org/cryptomator/common/mount/MountModule.java
index d78cc3216..0978c44db 100644
--- a/src/main/java/org/cryptomator/common/mount/MountModule.java
+++ b/src/main/java/org/cryptomator/common/mount/MountModule.java
@@ -2,50 +2,71 @@ package org.cryptomator.common.mount;
import dagger.Module;
import dagger.Provides;
+import org.cryptomator.common.ObservableUtil;
import org.cryptomator.common.settings.Settings;
+import org.cryptomator.integrations.mount.Mount;
import org.cryptomator.integrations.mount.MountService;
+import javax.inject.Named;
import javax.inject.Singleton;
-import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.value.ObservableValue;
import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
@Module
public class MountModule {
+ private static final AtomicReference formerSelectedMountService = new AtomicReference<>(null);
+ private static final List problematicFuseMountServices = List.of("org.cryptomator.frontend.fuse.mount.MacFuseMountProvider", "org.cryptomator.frontend.fuse.mount.FuseTMountProvider");
+
@Provides
@Singleton
static List provideSupportedMountServices() {
return MountService.get().toList();
}
- //currently not used, because macFUSE and FUSE-T cannot be used in the same JVM
- /*
@Provides
@Singleton
- static ObservableValue provideMountService(Settings settings, List serviceImpls) {
+ @Named("FUPFMS")
+ static AtomicReference provideFirstUsedProblematicFuseMountService() {
+ return new AtomicReference<>(null);
+ }
+
+ @Provides
+ @Singleton
+ static ObservableValue provideMountService(Settings settings, List serviceImpls, @Named("FUPFMS") AtomicReference fupfms) {
var fallbackProvider = serviceImpls.stream().findFirst().orElse(null);
- return ObservableUtil.mapWithDefault(settings.mountService(), //
+
+ var observableMountService = ObservableUtil.mapWithDefault(settings.mountService(), //
desiredServiceImpl -> { //
- var desiredService = serviceImpls.stream().filter(serviceImpl -> serviceImpl.getClass().getName().equals(desiredServiceImpl)).findAny(); //
- return new ActualMountService(desiredService.orElse(fallbackProvider), desiredService.isPresent()); //
+ var serviceFromSettings = serviceImpls.stream().filter(serviceImpl -> serviceImpl.getClass().getName().equals(desiredServiceImpl)).findAny(); //
+ var targetedService = serviceFromSettings.orElse(fallbackProvider);
+ return applyWorkaroundForProblematicFuse(targetedService, serviceFromSettings.isPresent(), fupfms);
}, //
- new ActualMountService(fallbackProvider, true));
- }
- */
-
- @Provides
- @Singleton
- static ActualMountService provideActualMountService(Settings settings, List serviceImpls) {
- var fallbackProvider = serviceImpls.stream().findFirst().orElse(null);
- var desiredService = serviceImpls.stream().filter(serviceImpl -> serviceImpl.getClass().getName().equals(settings.mountService().getValue())).findFirst(); //
- return new ActualMountService(desiredService.orElse(fallbackProvider), desiredService.isPresent()); //
+ () -> { //
+ return applyWorkaroundForProblematicFuse(fallbackProvider, true, fupfms);
+ });
+ return observableMountService;
}
- @Provides
- @Singleton
- static ObservableValue provideMountService(ActualMountService service) {
- return new SimpleObjectProperty<>(service);
+ //see https://github.com/cryptomator/cryptomator/issues/2786
+ private synchronized static ActualMountService applyWorkaroundForProblematicFuse(MountService targetedService, boolean isDesired, AtomicReference firstUsedProblematicFuseMountService) {
+ //set the first used problematic fuse service if applicable
+ var targetIsProblematicFuse = isProblematicFuseService(targetedService);
+ if (targetIsProblematicFuse && firstUsedProblematicFuseMountService.get() == null) {
+ firstUsedProblematicFuseMountService.set(targetedService);
+ }
+
+ //do not use the targeted mount service and fallback to former one, if the service is problematic _and_ not the first problematic one used.
+ if (targetIsProblematicFuse && !firstUsedProblematicFuseMountService.get().equals(targetedService)) {
+ return new ActualMountService(formerSelectedMountService.get(), false);
+ } else {
+ formerSelectedMountService.set(targetedService);
+ return new ActualMountService(targetedService, isDesired);
+ }
}
+ public static boolean isProblematicFuseService(MountService service) {
+ return problematicFuseMountServices.contains(service.getClass().getName());
+ }
}
diff --git a/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java
index 61a54ba22..6c60e74b7 100644
--- a/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java
+++ b/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java
@@ -2,12 +2,14 @@ package org.cryptomator.ui.preferences;
import dagger.Lazy;
import org.cryptomator.common.ObservableUtil;
+import org.cryptomator.common.mount.MountModule;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.integrations.mount.MountCapability;
import org.cryptomator.integrations.mount.MountService;
import org.cryptomator.ui.common.FxController;
import javax.inject.Inject;
+import javax.inject.Named;
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanExpression;
@@ -19,6 +21,7 @@ import javafx.util.StringConverter;
import java.util.List;
import java.util.Optional;
import java.util.ResourceBundle;
+import java.util.concurrent.atomic.AtomicReference;
@PreferencesScoped
public class VolumePreferencesController implements FxController {
@@ -33,6 +36,7 @@ public class VolumePreferencesController implements FxController {
private final ObservableValue mountToDriveLetterSupported;
private final ObservableValue mountFlagsSupported;
private final ObservableValue readonlySupported;
+ private final ObservableValue fuseRestartRequired;
private final Lazy application;
private final List mountProviders;
public ChoiceBox volumeTypeChoiceBox;
@@ -40,7 +44,7 @@ public class VolumePreferencesController implements FxController {
public Button loopbackPortApplyButton;
@Inject
- VolumePreferencesController(Settings settings, Lazy application, List mountProviders, ResourceBundle resourceBundle) {
+ VolumePreferencesController(Settings settings, Lazy application, List mountProviders, @Named("FUPFMS") AtomicReference firstUsedProblematicFuseMountService, ResourceBundle resourceBundle) {
this.settings = settings;
this.application = application;
this.mountProviders = mountProviders;
@@ -53,6 +57,12 @@ public class VolumePreferencesController implements FxController {
this.mountToDriveLetterSupported = selectedMountService.map(s -> s.hasCapability(MountCapability.MOUNT_AS_DRIVE_LETTER));
this.mountFlagsSupported = selectedMountService.map(s -> s.hasCapability(MountCapability.MOUNT_FLAGS));
this.readonlySupported = selectedMountService.map(s -> s.hasCapability(MountCapability.READ_ONLY));
+ this.fuseRestartRequired = selectedMountService.map(s -> {//
+ return firstUsedProblematicFuseMountService.get() != null //
+ && MountModule.isProblematicFuseService(s) //
+ && !firstUsedProblematicFuseMountService.get().equals(s);
+ });
+
}
public void initialize() {
@@ -129,6 +139,14 @@ public class VolumePreferencesController implements FxController {
return mountFlagsSupported.getValue();
}
+ public ObservableValue fuseRestartRequiredProperty() {
+ return fuseRestartRequired;
+ }
+
+ public boolean getFuseRestartRequired() {
+ return fuseRestartRequired.getValue();
+ }
+
/* Helpers */
private class MountServiceConverter extends StringConverter {
diff --git a/src/main/resources/css/dark_theme.css b/src/main/resources/css/dark_theme.css
index 5f0877842..45cadba93 100644
--- a/src/main/resources/css/dark_theme.css
+++ b/src/main/resources/css/dark_theme.css
@@ -116,6 +116,10 @@
-fx-font-size: 0.64em;
}
+.label-red {
+ -fx-text-fill: RED_5;
+}
+
.text-flow > * {
-fx-fill: TEXT_FILL;
}
diff --git a/src/main/resources/css/light_theme.css b/src/main/resources/css/light_theme.css
index decf64b64..c3c0faaa9 100644
--- a/src/main/resources/css/light_theme.css
+++ b/src/main/resources/css/light_theme.css
@@ -116,6 +116,10 @@
-fx-font-size: 0.64em;
}
+.label-red {
+ -fx-text-fill: RED_5;
+}
+
.text-flow > * {
-fx-fill: TEXT_FILL;
}
diff --git a/src/main/resources/fxml/preferences_volume.fxml b/src/main/resources/fxml/preferences_volume.fxml
index 16ccc2b52..f48b1c1c8 100644
--- a/src/main/resources/fxml/preferences_volume.fxml
+++ b/src/main/resources/fxml/preferences_volume.fxml
@@ -8,9 +8,9 @@
+
-
+
+
diff --git a/src/main/resources/i18n/strings.properties b/src/main/resources/i18n/strings.properties
index ebaf73143..6c580ba84 100644
--- a/src/main/resources/i18n/strings.properties
+++ b/src/main/resources/i18n/strings.properties
@@ -275,9 +275,10 @@ preferences.interface.showMinimizeButton=Show minimize button
preferences.interface.showTrayIcon=Show tray icon (requires restart)
## Volume
preferences.volume=Virtual Drive
-preferences.volume.type=Volume Type (requires restart)
+preferences.volume.type=Volume Type
preferences.volume.type.automatic=Automatic
preferences.volume.docsTooltip=Open the documentation to learn more about the different volume types.
+preferences.volume.fuseRestartRequired=To apply the changes, Cryptomator needs to be restarted.
preferences.volume.tcp.port=TCP Port
preferences.volume.supportedFeatures=The chosen volume type supports the following features:
preferences.volume.feature.mountAuto=Automatic mount point selection
diff --git a/src/main/resources/i18n/strings_be.properties b/src/main/resources/i18n/strings_be.properties
index 9a86cb8cc..61a8cfcfc 100644
--- a/src/main/resources/i18n/strings_be.properties
+++ b/src/main/resources/i18n/strings_be.properties
@@ -270,7 +270,6 @@ preferences.interface.showMinimizeButton=Паказаць кнопку згор
preferences.interface.showTrayIcon=Паказваць іконку на інфармацыйнай панэлі (спатрэбіцца перазапуск)
## Volume
preferences.volume=Віртуальны дыск
-preferences.volume.type=Тып тому (спатрэбіцца перазапуск)
preferences.volume.type.automatic=Аўтаматычна
preferences.volume.docsTooltip=Адчыні дакумэнтацыю, каб даведацца больш пра розныя тыпы тому.
preferences.volume.tcp.port=Порт TCP
diff --git a/src/main/resources/i18n/strings_ca.properties b/src/main/resources/i18n/strings_ca.properties
index bf0cfa34d..65af883fc 100644
--- a/src/main/resources/i18n/strings_ca.properties
+++ b/src/main/resources/i18n/strings_ca.properties
@@ -274,7 +274,6 @@ 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.docsTooltip=Obre la documentació per aprendre més sobre els diferents tipus de volums.
preferences.volume.tcp.port=Port TCP
diff --git a/src/main/resources/i18n/strings_da.properties b/src/main/resources/i18n/strings_da.properties
index 3c66e23e5..3e3ea458f 100644
--- a/src/main/resources/i18n/strings_da.properties
+++ b/src/main/resources/i18n/strings_da.properties
@@ -272,7 +272,6 @@ preferences.interface.showMinimizeButton=Vis knap til minimering
preferences.interface.showTrayIcon=Vis ikon i system-bakken (kræver genstart)
## Volume
preferences.volume=Virtuelt drev
-preferences.volume.type=Drev type (kræver genstart)
preferences.volume.type.automatic=Automatisk
preferences.volume.tcp.port=TCP port
preferences.volume.supportedFeatures=Den valgte type drev understøtter følgende funktioner:
diff --git a/src/main/resources/i18n/strings_de.properties b/src/main/resources/i18n/strings_de.properties
index 73fd8a004..0523c47e8 100644
--- a/src/main/resources/i18n/strings_de.properties
+++ b/src/main/resources/i18n/strings_de.properties
@@ -155,7 +155,7 @@ hub.unauthorized.message=Zugriff verweigert
hub.unauthorized.description=Dein Gerät wurde noch nicht für den Zugriff auf diesen Tresor autorisiert. Bitte den Tresorbesitzer, dein Gerät zu autorisieren.
### License Exceeded
hub.invalidLicense.message=Hub-Lizenz ungültig
-hub.invalidLicense.description=Die Lizenz deiner Cryptomator-Hub-Instanz ist ungültig. Bitte informiere deinen Hub-Administrator, um die Lizenz zu aktualisieren oder zu erneuern.
+hub.invalidLicense.description=Die Lizenz deiner Cryptomator-Hub-Instanz ist ungültig. Bitte informiere deinen Hub-Administrator, um die Lizenz zu erweitern oder zu erneuern.
# Lock
## Force
@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Schaltfläche zum Minimieren anzeigen
preferences.interface.showTrayIcon=Symbol im Infobereich anzeigen (Neustart erforderlich)
## Volume
preferences.volume=Virtuelles Laufwerk
-preferences.volume.type=Laufwerkstyp (Neustart erforderlich)
+preferences.volume.type=Laufwerkstyp
preferences.volume.type.automatic=Automatisch
preferences.volume.docsTooltip=Öffne die Dokumentation, um mehr über die verschiedenen Laufwerkstypen zu erfahren.
+preferences.volume.fuseRestartRequired=Um die Änderungen anzuwenden, muss Cryptomator neu gestartet werden.
preferences.volume.tcp.port=TCP-Port
preferences.volume.supportedFeatures=Der gewählte Laufwerkstyp unterstützt folgende Funktionen:
preferences.volume.feature.mountAuto=Automatische Einhängepunkt Auswahl
diff --git a/src/main/resources/i18n/strings_el.properties b/src/main/resources/i18n/strings_el.properties
index f3251b473..5781d4e51 100644
--- a/src/main/resources/i18n/strings_el.properties
+++ b/src/main/resources/i18n/strings_el.properties
@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Εμφάνιση κουμπιού ελ
preferences.interface.showTrayIcon=Εμφάνιση εικονιδίου tray (απαιτεί επανεκκίνηση)
## Volume
preferences.volume=Εικονικός δίσκος
-preferences.volume.type=Τύπος Τόμου (απαιτείται επανεκκίνηση)
+preferences.volume.type=Τύπος Τόμου
preferences.volume.type.automatic=Αυτόματα
preferences.volume.docsTooltip=Ανοίξτε τις οδηγίες για να μάθετε περισσότερα σχετικά με τους διαφορετικούς τύπους τόμων.
+preferences.volume.fuseRestartRequired=Για να εφαρμοστούν οι αλλαγές, πρέπει να γίνει επανεκκίνηση του Cryptomator.
preferences.volume.tcp.port=Θύρα TCP
preferences.volume.supportedFeatures=Ο επιλεγμένος τύπος τόμου υποστηρίζει τις ακόλουθες δυνατότητες:
preferences.volume.feature.mountAuto=Αυτόματη επιλογή σημείου προσάρτησης
diff --git a/src/main/resources/i18n/strings_es.properties b/src/main/resources/i18n/strings_es.properties
index fcd40ea8f..f8e3900e3 100644
--- a/src/main/resources/i18n/strings_es.properties
+++ b/src/main/resources/i18n/strings_es.properties
@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Mostrar botón minimizar
preferences.interface.showTrayIcon=Mostrar ícono de bandeja (requiere reiniciar)
## Volume
preferences.volume=Unidad virtual
-preferences.volume.type=Tipo de volumen (requiere reiniciar)
+preferences.volume.type=Tipo de volumen
preferences.volume.type.automatic=Automático
preferences.volume.docsTooltip=Abra la documentación para saber más sobre los diferentes tipos de volumen.
+preferences.volume.fuseRestartRequired=Para aplicar los cambios, Cryptomator necesita ser reiniciado.
preferences.volume.tcp.port=Puerto TCP
preferences.volume.supportedFeatures=El tipo de volumen elegido admite las siguientes funciones:
preferences.volume.feature.mountAuto=Selección automática del punto de montaje
diff --git a/src/main/resources/i18n/strings_fr.properties b/src/main/resources/i18n/strings_fr.properties
index 821b303c6..710e06b73 100644
--- a/src/main/resources/i18n/strings_fr.properties
+++ b/src/main/resources/i18n/strings_fr.properties
@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Afficher le bouton Réduire
preferences.interface.showTrayIcon=Montrer l'icône de service (redémarrage nécessaire)
## Volume
preferences.volume=Disque virtuel
-preferences.volume.type=Type de volume (redémarrage requis)
+preferences.volume.type=Type de volume
preferences.volume.type.automatic=Automatique
preferences.volume.docsTooltip=Consultez la documentation pour en savoir plus sur les différents types de volumes.
+preferences.volume.fuseRestartRequired=Pour appliquer les modifications, Cryptomator doit être redémarré.
preferences.volume.tcp.port=Port TCP
preferences.volume.supportedFeatures=Le type de volume choisi prend en charge les fonctionnalités suivantes :
preferences.volume.feature.mountAuto=Sélection automatique du point de montage
diff --git a/src/main/resources/i18n/strings_he.properties b/src/main/resources/i18n/strings_he.properties
index 5afd5c7ca..30ef83b79 100644
--- a/src/main/resources/i18n/strings_he.properties
+++ b/src/main/resources/i18n/strings_he.properties
@@ -274,7 +274,6 @@ preferences.interface.showMinimizeButton=הצג כפתור מזעור
preferences.interface.showTrayIcon=הצג צלמית בשורה מטה (דורש הפעלה מחדש)
## Volume
preferences.volume=כונן וירטואלי
-preferences.volume.type=סוג volume (דורש הפעלה מחדש)
preferences.volume.type.automatic=אוטומטי
preferences.volume.docsTooltip=בכדי ללמוד עוד על סוגי volume ניתן לקרוא את הדוקומנטציה.
preferences.volume.tcp.port=פורט TCP
diff --git a/src/main/resources/i18n/strings_hu.properties b/src/main/resources/i18n/strings_hu.properties
index 50fe39b6e..cd699b392 100644
--- a/src/main/resources/i18n/strings_hu.properties
+++ b/src/main/resources/i18n/strings_hu.properties
@@ -53,6 +53,9 @@ addvaultwizard.new.fileAlreadyExists=Már létezik fájl/könyvtár ezzel a trez
addvaultwizard.new.locationDoesNotExist=A megadott elérési úton lévő könyvtár nem létezik, vagy nem érhető el
addvaultwizard.new.locationIsNotWritable=Nincs írási hozzáférés a megadott elérési úthoz
addvaultwizard.new.locationIsOk=Megfelelő hely a trezornak
+addvaultwizard.new.invalidName=Érvénytelen vault név
+addvaultwizard.new.validName=Érvényes vault név
+addvaultwizard.new.validCharacters.message=A vault neve a következő karaktereket tartalmazhatja:
### Password
addvaultwizard.new.createVaultBtn=Új széf létrehozása
addvaultwizard.new.generateRecoveryKeyChoice=Nem fog tudni hozzáférni az adataihoz a jelszó nélkül. Akar egy visszaállítási kulcsot arra az esetre, ha elveszíti a jelszavát?
@@ -79,12 +82,14 @@ addvault.new.readme.accessLocation.4=Bátran eltávolíthatja ezt a fájlt.
addvaultwizard.existing.instruction=Válassza ki a "vault.cryptomatotor" fájlt a meglévő tárolóhoz. Ha csak egy "masterkey.cryptomatotor" nevű fájl létezik, válassza azt.
addvaultwizard.existing.chooseBtn=Kiválaszt…
addvaultwizard.existing.filePickerTitle=Trezor fájl kiválasztása
+addvaultwizard.existing.filePickerMimeDesc=Cryptomator széf
## Success
addvaultwizard.success.nextStepsInstructions=Széf létrehozva "%s".\nA tartalom eléréséhez, vagy hozzáadásához fel kell oldania a széfet. Alternatív megoldásként később bármikor feloldhatja.
addvaultwizard.success.unlockNow=Azonnali feloldás
# Remove Vault
removeVault.title=Széf eltávolitása
+removeVault.message=Vault eltávolitása?
removeVault.description=Ez kizárolag a Cryptomator-ból távolitja el ezt a széfet. Később hozzáadhatja újra. A titkosított fájlokat nem törli a merevlemezről.
removeVault.confirmBtn=Széf eltávolitása
@@ -95,6 +100,7 @@ changepassword.finalConfirmation=Megértettem, hogy nem fogok hozzáférni az ad
# Forget Password
forgetPassword.title=Jelszó elfelejtése
+forgetPassword.message=Elfelejtette az elmentett jelszót?
forgetPassword.description=Eltávolítja a széf mentett jelszavát a rendszere kulcstartójából.
forgetPassword.confirmBtn=Jelszó elfelejtése
@@ -107,18 +113,23 @@ unlock.unlockBtn=Feloldás
unlock.chooseMasterkey.description=Nem található a tároló kulcsfájlja a várt helyen. Kérjük válassza ki a kulcsfájlt manuálisan.
unlock.chooseMasterkey.filePickerTitle=Mesterkulcs fájl kiválasztása
## Success
+unlock.success.message=Sikeres feloldás
unlock.success.description="%s" sikreresen feloldásra került! Mostmár hozzáférhet a virtuális trezorhoz.
unlock.success.rememberChoice=Jegyezze meg a választást és ne mutassa többet
unlock.success.revealBtn=Széf megjelenítése
## Failure
## Hub
+hub.noKeychain.openBtn=Beállítások megnyitása
### Waiting
### Receive Key
+hub.receive.message=Válasz feldolgozása…
### Register Device
+hub.register.nameLabel=Készülék neve
hub.register.occupiedMsg=Ez a név már használatban van
hub.register.registerBtn=Megerősítés
### Registration Success
### Registration Failed
+hub.registerFailed.message=Az eszköz elnevezése sikertelen volt
### Unauthorized
### License Exceeded
@@ -136,6 +147,7 @@ lock.fail.description=A "%s" tárolót nem lehetett zárolni. Győződjön meg a
migration.title=Széf frissítése
## Start
migration.start.header=Széf frissítése
+migration.start.remarkUndone=Ezt a módosítást nem lehet visszafordítani.
migration.start.confirm=Elolvastam és megértettem a fenti információkat
## Run
migration.run.enterPassword=Írja be a jelszót a következőhöz Enter the password for "%s"
@@ -184,8 +196,19 @@ health.check.detail.checkFinished=Az ellenőrzés sikeresen véget ért.
health.check.detail.checkFinishedAndFound=Az ellenőrzés véget ért. Kérem ellenőrizze az eredményét.
health.check.detail.checkFailed=Az ellenőrzés egy hiba miatt megszakadt.
health.check.detail.checkCancelled=Az ellenőrzés meg lett szakítva.
+health.check.detail.listFilters.label=Szűrő
+health.check.detail.fixAllSpecificBtn=Az összes ilyen javítása
health.check.exportBtn=Jelentés exportálása
## Result view
+health.result.severityFilter.all=Súlyosság - Összes
+health.result.severityFilter.good=Rendben
+health.result.severityFilter.info=Infó
+health.result.severityFilter.warn=Figyelmeztetés
+health.result.severityFilter.crit=Kritikus
+health.result.fixStateFilter.fixable=Javítható
+health.result.fixStateFilter.notFixable=Nem javítható
+health.result.fixStateFilter.fixing=Javítás alatt…
+health.result.fixStateFilter.fixed=Kijavított
## Fix Application
health.fix.fixBtn=Javítás
health.fix.successTip=Javítás sikeres
diff --git a/src/main/resources/i18n/strings_it.properties b/src/main/resources/i18n/strings_it.properties
index da1780ae8..b4bb6e876 100644
--- a/src/main/resources/i18n/strings_it.properties
+++ b/src/main/resources/i18n/strings_it.properties
@@ -154,6 +154,8 @@ hub.registerFailed.description=Si è verificato un errore nel processo di nomina
hub.unauthorized.message=Accesso negato
hub.unauthorized.description=Il tuo dispositivo non è ancora stato autorizzato ad accedere a questa cassaforte. Chiedi al proprietario della cassaforte di autorizzarlo.
### License Exceeded
+hub.invalidLicense.message=Licenza Hub non valida
+hub.invalidLicense.description=La tua istanza Cryptomator Hub ha una licenza non valida. Si prega di informare un amministratore Hub per aggiornare o rinnovare la licenza.
# Lock
## Force
@@ -272,8 +274,10 @@ 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=Tipo di Volume
preferences.volume.type.automatic=Automatico
+preferences.volume.docsTooltip=Aprire la documentazione per saperne di più sui diversi tipi di volume.
+preferences.volume.fuseRestartRequired=Per applicare le modifiche, Cryptomator deve essere riavviato.
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
@@ -443,6 +447,8 @@ recoveryKey.display.StorageHints=Mantienilo da qualche parte molto sicuro, ad es
recoveryKey.recover.title=Reimposta Password
recoveryKey.recover.prompt=Inserisci la tua chiave di recupero per "%s":
recoveryKey.recover.correctKey=Questa è una chiave di recupero valida
+recoveryKey.recover.wrongKey=Questa chiave di recupero appartiene ad una cassaforte diversa
+recoveryKey.recover.invalidKey=Questa chiave di recupero non é valida
recoveryKey.printout.heading=Chiave di recupero Cryptomator\n"%s"\n
### Reset Password
recoveryKey.recover.resetBtn=Reimposta
diff --git a/src/main/resources/i18n/strings_ja.properties b/src/main/resources/i18n/strings_ja.properties
index b19a76d22..1fabbcba4 100644
--- a/src/main/resources/i18n/strings_ja.properties
+++ b/src/main/resources/i18n/strings_ja.properties
@@ -125,8 +125,8 @@ unlock.success.revealBtn=ドライブを表示
## Failure
unlock.error.customPath.message=カスタム パスに金庫をマウントできません
unlock.error.customPath.description.notSupported=カスタム パスを使い続けたい場合、環境設定に移動してサポートしているボリューム タイプを選択してください。もしくは、金庫のオプションに移動してサポートされるマウント ポイントを選択してください。
-unlock.error.customPath.description.notExists=カスタム マウント パスが存在していません。ローカル ファイルシステムで作成するか、金庫のオプションで変更を加えてください。
-unlock.error.customPath.description.generic=この金庫のカスタム・マウント・パスを選択しましたが、その使用は次のメッセージで失敗しました: %s
+unlock.error.customPath.description.notExists=カスタム マウント パスが存在していません。ローカル ファイルシステムで作成するか、金庫のオプションで変更してください。
+unlock.error.customPath.description.generic=この金庫のカスタム マウント パスを選択しましたが、次のメッセージで失敗しました: %s
## Hub
hub.noKeychain.message=デバイス キーにアクセスできません
hub.noKeychain.description=ハブ金庫を解錠するには、キーチェーンが保護するデバイス キーが必要です。続行するには、"%s" を有効にし環境設定からキーチェーンを選択します。
@@ -154,8 +154,8 @@ hub.registerFailed.description=デバイス名登録中にエラーが発生し
hub.unauthorized.message=アクセスが拒否されました
hub.unauthorized.description=お使いのデバイスはまだこの金庫にアクセスする権限がありません。金庫のオーナーに権限を与えてもらってください。
### License Exceeded
-hub.invalidLicense.message=ハブライセンスが無効です
-hub.invalidLicense.description=Cryptomator ハブインスタンスに無効なライセンスがあります。ライセンスをアップグレードまたは更新するには、ハブ管理者に連絡してください。
+hub.invalidLicense.message=Hub のライセンスが無効です
+hub.invalidLicense.description=Cryptomator Hub インスタンスのライセンスが無効です。ライセンスをアップグレードまたは更新するには、Hub の管理者にご連絡ください。
# Lock
## Force
@@ -171,10 +171,10 @@ lock.fail.description=金庫 "%s" を施錠できませんでした。保存さ
migration.title=金庫をアップグレード
## Start
migration.start.header=金庫をアップグレード
-migration.start.text=Cryptomatorのこの新しいバージョンであなたの金庫「%s」を開くには、金庫を新しい形式にアップグレードする必要があります。これを行う前に、次のことを知っておく必要があります:
+migration.start.text=この新しいバージョンの Cryptomator 内で金庫 "%s" を開くには、金庫を新しい形式にアップグレードする必要があります。この操作を行う前に、次のことにご注意ください:
migration.start.remarkUndone=このアップグレードは取り消すことができません。
-migration.start.remarkVersions=古い Cryptomator では、アップグレードされた金庫を開くことができなくなります。
-migration.start.remarkCanRun=あなたが金庫にアクセスするすべてのデバイスは、Cryptomatorのこのバージョンを実行できることを確認する必要があります。
+migration.start.remarkVersions=古い Cryptomator では、アップグレードした金庫を開くことができなくなります。
+migration.start.remarkCanRun=金庫にアクセスするすべてのデバイスがこのバージョンの Cryptomator を実行できることを確認する必要があります。
migration.start.remarkSynced=アップグレードする前に、このデバイスと他のデバイスで、金庫が完全に同期されていることを確認する必要があります。
migration.start.confirm=上記の情報を理解しました。
## Run
@@ -274,14 +274,15 @@ preferences.interface.showMinimizeButton=最小化ボタンを表示
preferences.interface.showTrayIcon=トレイアイコンを表示 (再起動が必要)
## Volume
preferences.volume=仮想ドライブ
-preferences.volume.type=ボリューム タイプ (再起動が必要)
+preferences.volume.type=ボリュームの種類
preferences.volume.type.automatic=自動
preferences.volume.docsTooltip=異なるボリュームタイプの詳細については、ドキュメントを確認してください。
+preferences.volume.fuseRestartRequired=変更を適用するには、Cryptomator を再起動する必要があります。
preferences.volume.tcp.port=TCP ポート
-preferences.volume.supportedFeatures=選択されたボリュームタイプは、以下の機能をサポートしています。
+preferences.volume.supportedFeatures=選択したボリューム形式は、次の機能をサポートしています:
preferences.volume.feature.mountAuto=マウント先の自動選択
-preferences.volume.feature.mountToDir=カスタムディレクトリをマウント先に指定
-preferences.volume.feature.mountToDriveLetter=ドライブレターをマウント先に指定
+preferences.volume.feature.mountToDir=カスタム ディレクトリをマウント先に指定
+preferences.volume.feature.mountToDriveLetter=ドライブ レターをマウント先に指定
preferences.volume.feature.mountFlags=カスタム マウント オプション
preferences.volume.feature.readOnly=読み取り専用マウント
## Updates
@@ -306,21 +307,27 @@ stats.title=%s の統計情報
stats.cacheHitRate=キャッシュ ヒット率
## Read
stats.read.throughput.idle=読み取り: アイドル状態
+stats.read.throughput.kibs=読み取り: %.2f KiB/s
stats.read.throughput.mibs=読み取り: %.2f MiB/s
stats.read.total.data.none=データ読み取り: -
+stats.read.total.data.kib=データ読み取り: %.1f KiB
stats.read.total.data.mib=データ読み取り: %.1f MiB
stats.read.total.data.gib=データ読み取り: %.1f GiB
stats.decr.total.data.none=復号済みデータ: -
+stats.decr.total.data.kib=復号済みデータ: %.1f KiB
stats.decr.total.data.mib=復号済みデータ: %.1f MiB
stats.decr.total.data.gib=復号済みデータ: %.1f GiB
stats.read.accessCount=合計読み取り: %d
## Write
stats.write.throughput.idle=書き込み: アイドル状態
+stats.write.throughput.kibs=書き込み: %.2f KiB/s
stats.write.throughput.mibs=書き込み: %.2f MiB/s
stats.write.total.data.none=書き込み済みデータ: -
+stats.write.total.data.kib=書き込み済みデータ: %.1f KiB
stats.write.total.data.mib=書き込み済みデータ: %.1f MiB
stats.write.total.data.gib=書き込み済みデータ: %.1f GiB
stats.encr.total.data.none=暗号化済みデータ: -
+stats.encr.total.data.kib=暗号化済みデータ: %.1f KiB
stats.encr.total.data.mib=暗号化済みデータ: %.1f MiB
stats.encr.total.data.gib=暗号化済みデータ: %.1f GiB
stats.write.accessCount=合計書き込み: %d
@@ -363,6 +370,7 @@ main.vaultDetail.lockBtn=施錠
main.vaultDetail.bytesPerSecondRead=読み取り:
main.vaultDetail.bytesPerSecondWritten=書き込み:
main.vaultDetail.throughput.idle=アイドル
+main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=金庫の統計情報
main.vaultDetail.locateEncryptedFileBtn=暗号化されたファイルの場所
diff --git a/src/main/resources/i18n/strings_nb.properties b/src/main/resources/i18n/strings_nb.properties
index fdce4c421..de3d5ee95 100644
--- a/src/main/resources/i18n/strings_nb.properties
+++ b/src/main/resources/i18n/strings_nb.properties
@@ -274,7 +274,6 @@ preferences.interface.showMinimizeButton=Vis minimer-knapp
preferences.interface.showTrayIcon=Vis verktøykasseikon (krever omstart)
## Volume
preferences.volume=Virtuell enhet
-preferences.volume.type=Volumtype (krever omstart)
preferences.volume.type.automatic=Automatisk
preferences.volume.docsTooltip=Åpne dokumentasjonen for å lære mer om de forskjellige volumtypene.
preferences.volume.tcp.port=TCP Port
diff --git a/src/main/resources/i18n/strings_nl.properties b/src/main/resources/i18n/strings_nl.properties
index 358acab7a..dfd52d3da 100644
--- a/src/main/resources/i18n/strings_nl.properties
+++ b/src/main/resources/i18n/strings_nl.properties
@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Knop minimaliseren weergeven
preferences.interface.showTrayIcon=Pictogram in systeemvak weergeven (herstart vereist)
## Volume
preferences.volume=Virtuele schijf
-preferences.volume.type=Type Volume (herstart vereist)
+preferences.volume.type=Type volume
preferences.volume.type.automatic=Automatisch
preferences.volume.docsTooltip=Open de documentatie om meer te weten te komen over de verschillende volume types.
+preferences.volume.fuseRestartRequired=Om de wijzigingen toe te passen, moet Cryptomator opnieuw worden gestart.
preferences.volume.tcp.port=TCP-poort
preferences.volume.supportedFeatures=Het gekozen volume type ondersteunt de volgende functies:
preferences.volume.feature.mountAuto=Automatische koppelpunt selectie
diff --git a/src/main/resources/i18n/strings_pl.properties b/src/main/resources/i18n/strings_pl.properties
index e2de335cb..0856b0e05 100644
--- a/src/main/resources/i18n/strings_pl.properties
+++ b/src/main/resources/i18n/strings_pl.properties
@@ -274,7 +274,6 @@ preferences.interface.showMinimizeButton=Pokaż przycisk minimalizacji
preferences.interface.showTrayIcon=Pokaż ikonę zasobnika (wymaga restartu)
## Volume
preferences.volume=Dysk wirtualny
-preferences.volume.type=Typ udziału (wymaga ponownego uruchomienia)
preferences.volume.type.automatic=Automatyczny
preferences.volume.docsTooltip=Sprawdź dokumentację, aby dowiedzieć się więcej o różnych typach udziałów.
preferences.volume.tcp.port=Port TCP
@@ -306,21 +305,27 @@ stats.title=Statystyki dla %s
stats.cacheHitRate=Trafność cache
## Read
stats.read.throughput.idle=Odczyt: bezczynny
+stats.read.throughput.kibs=Odczyt: %.2f kiB/s
stats.read.throughput.mibs=Odczyt: %.2f kiB/s
stats.read.total.data.none=Dane odczytywane: -
+stats.read.total.data.kib=Odczyt danych: %.1f KiB
stats.read.total.data.mib=Odczyt danych: %.1f kiB
stats.read.total.data.gib=Odczyt danych: %.1f kiB
stats.decr.total.data.none=Dane odszyfrowane: -
+stats.decr.total.data.kib=Dane odszyfrowane: %.1f KiB
stats.decr.total.data.mib=Dane odszyfrowane: %.1f kiB
stats.decr.total.data.gib=Dane odszyfrowane: %.1f kiB
stats.read.accessCount=Całkowite odczyty: %d
## Write
stats.write.throughput.idle=Zapis: bezczynny
+stats.write.throughput.kibs=Zapis: %.2f KiB/s
stats.write.throughput.mibs=Zapis: %.2f kiB/s
stats.write.total.data.none=Zapisane dane: -
+stats.write.total.data.kib=Zapis danych: %.1f KiB
stats.write.total.data.mib=Zapisane dane: %.1f MiB
stats.write.total.data.gib=Zapisane dane: %.1f kiB
stats.encr.total.data.none=Dane odszyfrowane: -
+stats.encr.total.data.kib=Dane zaszyfrowane: %.1f KiB
stats.encr.total.data.mib=Dane odszyfrowane: %.1f kiB
stats.encr.total.data.gib=Dane odszyfrowane: %.1f kiB
stats.write.accessCount=Całkowity zapis: %d
@@ -363,6 +368,7 @@ main.vaultDetail.lockBtn=Blokuj
main.vaultDetail.bytesPerSecondRead=Odczyt:
main.vaultDetail.bytesPerSecondWritten=Zapisz:
main.vaultDetail.throughput.idle=bezczynny
+main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Statystyki sejfu
main.vaultDetail.locateEncryptedFileBtn=Zlokalizuj zaszyfrowany plik
diff --git a/src/main/resources/i18n/strings_pt.properties b/src/main/resources/i18n/strings_pt.properties
index 57e180031..038d4e7f8 100644
--- a/src/main/resources/i18n/strings_pt.properties
+++ b/src/main/resources/i18n/strings_pt.properties
@@ -217,6 +217,7 @@ health.check.detail.checkFinishedAndFound=A verificação concluiu. Por favor, r
health.check.detail.listFilters.label=Filtro
health.check.exportBtn=Exportar relatórios
## Result view
+health.result.severityFilter.all=Gravidade - Todos
health.result.severityFilter.good=Ótimo
health.result.severityFilter.info=Informações
health.result.severityFilter.warn=Atenção
@@ -262,15 +263,35 @@ preferences.about=Sobre
# Vault Statistics
stats.title=Estatísticas de %s
## Read
+stats.decr.total.data.none=Dados desencriptados: -
+stats.decr.total.data.kib=Dados desencriptados: %.1f KiB
+stats.decr.total.data.mib=Dados desencriptados: %.1f MiB
+stats.decr.total.data.gib=Dados desencriptados: %.1f GiB
+stats.read.accessCount=Total de leituras: %d
## Write
+stats.write.throughput.idle=Escrever: em pausa
+stats.write.throughput.kibs=Escrever: %.2f KiB/s
+stats.write.throughput.mibs=Escrever: %.2f MiB/s
+stats.write.total.data.none=Dados gravados: -
+stats.write.total.data.kib=Dados gravados: %.1f KiB
+stats.write.total.data.mib=Dados gravados: %.1f MiB
+stats.write.total.data.gib=Dados gravados: %.1f GiB
+stats.encr.total.data.none=Dados encriptados: -
+stats.encr.total.data.kib=Dados encriptados: %.1f KiB
+stats.encr.total.data.mib=Dados encriptados: %.1f MiB
+stats.encr.total.data.gib=Dados encriptados: %.1f GiB
+stats.write.accessCount=Total de escritas: %d
## Accesses
+stats.access.current=Acesso: %d
+stats.access.total=Total de acessos: %d
# Main Window
main.closeBtn.tooltip=Fechar
main.minimizeBtn.tooltip=Minimizar
main.preferencesBtn.tooltip=Preferências
+main.debugModeEnabled.tooltip=Modo de depuração está ativado
main.supporterCertificateMissing.tooltip=Por favor, considere doar
## Vault List
main.vaultlist.emptyList.onboardingInstruction=Clique aqui para adicionar um cofre
@@ -278,10 +299,12 @@ main.vaultlist.contextMenu.remove=Remover…
main.vaultlist.contextMenu.lock=Trancar
main.vaultlist.contextMenu.unlock=Desbloquear…
main.vaultlist.contextMenu.unlockNow=Destrancar agora
+main.vaultlist.contextMenu.vaultoptions=Mostrar opções do Cofre
main.vaultlist.contextMenu.reveal=Revelar unidade
main.vaultlist.addVaultBtn=Adicionar Cofre
## Vault Detail
### Welcome
+main.vaultDetail.welcomeOnboarding=Obrigado por escolher Cryptomator para proteger os seus ficheiros. Se precisar de alguma ajuda, veja os nossos guias introdutórios:
### Locked
main.vaultDetail.lockedStatus=BLOQUEADO
main.vaultDetail.unlockBtn=Desbloquear…
@@ -292,24 +315,38 @@ main.vaultDetail.passwordSavedInKeychain=Palavra-passe guardada
main.vaultDetail.unlockedStatus=DESBLOQUEADO
main.vaultDetail.accessLocation=O conteúdo do seu cofre está acessível aqui:
main.vaultDetail.revealBtn=Revelar unidade
+main.vaultDetail.copyUri=Copiar endereço
main.vaultDetail.lockBtn=Trancar
+main.vaultDetail.bytesPerSecondRead=Ler:
+main.vaultDetail.bytesPerSecondWritten=Escrever:
main.vaultDetail.throughput.idle=inativo
+main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s
+main.vaultDetail.stats=Estatísticas do Cofre
main.vaultDetail.locateEncryptedFileBtn=Localizar Ficheiro Encriptado
main.vaultDetail.locateEncryptedFileBtn.tooltip=Escolha um ficheiro do seu cofre para localizar a sua contraparte encriptada
main.vaultDetail.encryptedPathsCopied=Caminhos copiados para a área de transferência!
main.vaultDetail.filePickerTitle=Selecione o ficheiro no cofre
### Missing
main.vaultDetail.missing.info=O Cryptomator não conseguiu encontrar um cofre neste diretório.
+main.vaultDetail.missing.recheck=Verificar novamente
+main.vaultDetail.missing.remove=Remover da Lista de Cofres…
+main.vaultDetail.missing.changeLocation=Mudar localização do Cofre…
### Needs Migration
main.vaultDetail.migrateButton=Atualizar Cofre
main.vaultDetail.migratePrompt=O cofre precisa de ser atualizado para um novo formato, antes que possa acessá-lo
### Error
+main.vaultDetail.error.info=Ocorreu um erro a carregar o cofre do disco.
+main.vaultDetail.error.reload=Recarregar
+main.vaultDetail.error.windowTitle=Erro a carregar o cofre
# Wrong File Alert
wrongFileAlert.title=Como criptografar arquivos
wrongFileAlert.message=Você tentou criptografar esses arquivos?
+wrongFileAlert.description=Para isso, o Cryptomator fornece um volume no gestor de ficheiros do seu sistema.
+wrongFileAlert.instruction.0=Para encriptar ficheiros, siga estes passos:
wrongFileAlert.instruction.1=1. Desbloqueie o seu cofre.
+wrongFileAlert.instruction.2=2. Clique em "Revelar" para abrir o volume no seu gestor de ficheiros.
wrongFileAlert.instruction.3=3. Adicione ficheiros a este volume.
wrongFileAlert.link=Para obter assistência, visite
@@ -317,34 +354,76 @@ wrongFileAlert.link=Para obter assistência, visite
## General
vaultOptions.general=Geral
vaultOptions.general.vaultName=Nome do Cofre
+vaultOptions.general.autoLock.lockAfterTimePart1=Bloquear quando inativo por
+vaultOptions.general.autoLock.lockAfterTimePart2=minutos
vaultOptions.general.unlockAfterStartup=Destrancar o cofre ao iniciar o Cryptomator
vaultOptions.general.actionAfterUnlock=Após destrancar com sucesso
+vaultOptions.general.actionAfterUnlock.ignore=Não fazer nada
vaultOptions.general.actionAfterUnlock.reveal=Revelar unidade
vaultOptions.general.actionAfterUnlock.ask=Perguntar
+vaultOptions.general.startHealthCheckBtn=Verificar Saúde
## Mount
+vaultOptions.mount=Montar
+vaultOptions.mount.info=Opções dependem do tipo de volume selecionado.
+vaultOptions.mount.linkToPreferences=Abrir preferências da Unidade Virtual
vaultOptions.mount.readonly=Somente leitura
+vaultOptions.mount.winDriveLetterOccupied=ocupado
+vaultOptions.mount.mountPoint=Ponto de montagem
+vaultOptions.mount.mountPoint.auto=Escolher automaticamente um local adequado
+vaultOptions.mount.mountPoint.driveLetter=Use a letra da unidade atribuída
+vaultOptions.mount.mountPoint.custom=Usar diretório escolhido
vaultOptions.mount.mountPoint.directoryPickerButton=Escolher…
+vaultOptions.mount.mountPoint.directoryPickerTitle=Escolher um diretório
## Master Key
vaultOptions.masterkey=Senha
vaultOptions.masterkey.changePasswordBtn=Alterar Senha
vaultOptions.masterkey.forgetSavedPasswordBtn=Esqueça a senha salva
vaultOptions.masterkey.recoveryKeyExplanation=Uma chave de recuperação é a única forma de restaurar o acesso a um cofre se perder a senha.
vaultOptions.masterkey.showRecoveryKeyBtn=Exibir Chave de Recuperação
+vaultOptions.masterkey.recoverPasswordBtn=Redefinir palavra-passe
# Recovery Key
## Display Recovery Key
+recoveryKey.display.title=Mostrar chave de recuperação
+recoveryKey.create.message=Palavra-passe necessária
+recoveryKey.create.description=Inserir a palavra passe de "%s" para mostrar a chave de recuperação.
+recoveryKey.display.description=Esta chave de recuperação pode ser usada para restaurar acesso a "%s":
+recoveryKey.display.StorageHints=Guarde-a num lugar muito seguro, por exemplo:\n • Armazená-la usando um gerenciador de senhas\n • Guarde-a numa ‘pen’ USB\n • Imprima-a em papel
## Reset Password
### Enter Recovery Key
+recoveryKey.recover.title=Redefinir palavra-passe
+recoveryKey.recover.prompt=Insira a chave de recuperação para "%s":
+recoveryKey.recover.correctKey=Esta chave de recuperação está certa
+recoveryKey.recover.wrongKey=Esta chave de recuperação pertence a um cofre diferente
+recoveryKey.recover.invalidKey=Esta chave de recupreação não está certa
+recoveryKey.printout.heading=A chave de recuperação do Cryptomator \n"%s"\n
### Reset Password
+recoveryKey.recover.resetBtn=Repor
### Recovery Key Password Reset Success
+recoveryKey.recover.resetSuccess.message=Palavra-passe redefinida com sucesso
+recoveryKey.recover.resetSuccess.description=Você pode desbloquear o seu cofre com a nova senha.
# New Password
+newPassword.promptText=Inserir uma nova palavra-passe
+newPassword.reenterPassword=Confirme a nova palavra-passe
+newPassword.passwordsMatch=As palavras-passe são iguais!
+newPassword.passwordsDoNotMatch=As palavras-passe não são iguais
+passwordStrength.messageLabel.tooShort=Use pelo menos %d caracteres
+passwordStrength.messageLabel.0=Muito fraca
+passwordStrength.messageLabel.1=Fraca
+passwordStrength.messageLabel.2=Razoável
passwordStrength.messageLabel.3=Forte
passwordStrength.messageLabel.4=Muito forte
# Quit
+quit.title=Sair da aplicação
+quit.message=Existem cofres desbloqueados
+quit.description=Por favor, confirme que deseja sair. O Cryptomator irá fechar graciosamente todos os cofres desbloqueados para evitar a perda de dados.
quit.lockAndQuitBtn=Bloquear e Sair
-# Forced Quit
\ No newline at end of file
+# Forced Quit
+quit.forced.message=Alguns cofres não poderam ser fechados
+quit.forced.description=Bloquear os cofres foi impossibilitado por operações pendentes ou ficheiros abertos. Poderá forçar o bloqueio dos cofres restantes, sob a possibilidade da perda de dados não guardados.
+quit.forced.forceAndQuitBtn=Forçar e Sair
\ No newline at end of file
diff --git a/src/main/resources/i18n/strings_pt_BR.properties b/src/main/resources/i18n/strings_pt_BR.properties
index 99491cfe2..cd7f5cd09 100644
--- a/src/main/resources/i18n/strings_pt_BR.properties
+++ b/src/main/resources/i18n/strings_pt_BR.properties
@@ -272,7 +272,6 @@ preferences.interface.showMinimizeButton=Mostrar botão minimizar
preferences.interface.showTrayIcon=Mostrar ícone na barra do sistema (requer reinicialização)
## Volume
preferences.volume=Volume Virtual
-preferences.volume.type=Tipo de Volume (requer reinicialização)
preferences.volume.type.automatic=Automático
preferences.volume.tcp.port=Porta TCP
preferences.volume.supportedFeatures=O tipo de volume escolhido suporta os seguintes recursos:
diff --git a/src/main/resources/i18n/strings_ro.properties b/src/main/resources/i18n/strings_ro.properties
index 350a4e850..74a6266c1 100644
--- a/src/main/resources/i18n/strings_ro.properties
+++ b/src/main/resources/i18n/strings_ro.properties
@@ -272,7 +272,6 @@ preferences.interface.showMinimizeButton=Arată butonul de minimizare
preferences.interface.showTrayIcon=Arată tray icon (necesită repornire)
## Volume
preferences.volume=Unitate virtuală
-preferences.volume.type=Tip unitate de stocare (necesită repornire)
preferences.volume.type.automatic=Automat
preferences.volume.docsTooltip=Deschideți documentația pentru a afla mai multe despre tipurile diferite de unități de stocare.
preferences.volume.tcp.port=Portul TCP
diff --git a/src/main/resources/i18n/strings_ru.properties b/src/main/resources/i18n/strings_ru.properties
index bc93760dd..2b1d265e7 100644
--- a/src/main/resources/i18n/strings_ru.properties
+++ b/src/main/resources/i18n/strings_ru.properties
@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Показывать кнопку св
preferences.interface.showTrayIcon=Показывать значок в панели задач (требуется перезапуск)
## Volume
preferences.volume=Виртуальный диск
-preferences.volume.type=Тип тома (требуется перезапуск)
+preferences.volume.type=Тип тома
preferences.volume.type.automatic=Автоматически
preferences.volume.docsTooltip=Откройте документацию, чтобы узнать больше о различных типах томов.
+preferences.volume.fuseRestartRequired=Для применения изменений необходимо перезапустить Cryptomator.
preferences.volume.tcp.port=Порт TCP
preferences.volume.supportedFeatures=Выбранный тип тома поддерживает следующие функции:
preferences.volume.feature.mountAuto=Выбор точки автомонтирования
diff --git a/src/main/resources/i18n/strings_sk.properties b/src/main/resources/i18n/strings_sk.properties
index 70cfbd6d9..d15a84798 100644
--- a/src/main/resources/i18n/strings_sk.properties
+++ b/src/main/resources/i18n/strings_sk.properties
@@ -272,9 +272,10 @@ preferences.interface.showMinimizeButton=Ukáž minimalizačné tlačidlo
preferences.interface.showTrayIcon=Ukázať ikonu na sytémovej lište (vyžaduje reštart)
## Volume
preferences.volume=Virtuálny disk
-preferences.volume.type=Typ oddielu (vyžaduje reštart)
+preferences.volume.type=Typ obsahu
preferences.volume.type.automatic=Automaticky
preferences.volume.docsTooltip=Pre viac informácií ohľadne iných typov volume otvorte dokumentáciu.
+preferences.volume.fuseRestartRequired=Pre aplikovanie zmien je potrebné Cryptomator reštartovať.
preferences.volume.tcp.port=TCP port
preferences.volume.supportedFeatures=Zvolený typ oddielu podporuje nasledovné funkcie:
preferences.volume.feature.mountAuto=Automatická voľba bodu pripojenia
diff --git a/src/main/resources/i18n/strings_sv.properties b/src/main/resources/i18n/strings_sv.properties
index 6bfc60641..9c38e3487 100644
--- a/src/main/resources/i18n/strings_sv.properties
+++ b/src/main/resources/i18n/strings_sv.properties
@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Visa minimera-knapp
preferences.interface.showTrayIcon=Visa ikon i aktivitetsfältet (kräver omstart)
## Volume
preferences.volume=Virtuell enhet
-preferences.volume.type=Volymtyp (kräver omstart)
+preferences.volume.type=Volymtyp
preferences.volume.type.automatic=Automatiskt
preferences.volume.docsTooltip=Öppna dokumentationen för att läsa mer om de olika volymtyperna.
+preferences.volume.fuseRestartRequired=Cryptomator måste startas om för att tillämpa ändringarna.
preferences.volume.tcp.port=TCP-port
preferences.volume.supportedFeatures=Den valda volymtypen stöder följande funktioner:
preferences.volume.feature.mountAuto=Automatiskt val av monteringspunkt
diff --git a/src/main/resources/i18n/strings_sw.properties b/src/main/resources/i18n/strings_sw.properties
index bee10a175..617818342 100644
--- a/src/main/resources/i18n/strings_sw.properties
+++ b/src/main/resources/i18n/strings_sw.properties
@@ -274,7 +274,6 @@ preferences.interface.showMinimizeButton=Onyesha kitufe cha kupunguza
preferences.interface.showTrayIcon=Onyesha ikoni ya trei (inahitaji kuanzisha upya)
## Volume
preferences.volume=Kiendeshi pepe
-preferences.volume.type=Aina ya Sauti (inahitaji kuanzishwa upya)
preferences.volume.type.automatic=Otomatiki
preferences.volume.docsTooltip=Fungua hati ili kujifunza zaidi kuhusu aina tofauti za sauti.
preferences.volume.tcp.port=Bandari ya TCP
@@ -283,6 +282,7 @@ preferences.volume.feature.mountAuto=Uchaguzi wa sehemu ya kupachika otomatiki
preferences.volume.feature.mountToDir=Saraka maalum kama sehemu ya kupachika
preferences.volume.feature.mountToDriveLetter=Endesha barua kama sehemu ya kupachika
preferences.volume.feature.mountFlags=Chaguzi maalum za kupachika
+preferences.volume.feature.readOnly=Mlima wa kusoma pekee
## Updates
preferences.updates=Sasishi
preferences.updates.currentVersion=Toleo la Sasa: %s
diff --git a/src/main/resources/i18n/strings_tr.properties b/src/main/resources/i18n/strings_tr.properties
index ca8e61c6b..b3bf32b2f 100644
--- a/src/main/resources/i18n/strings_tr.properties
+++ b/src/main/resources/i18n/strings_tr.properties
@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=Küçültme düğmesini göster
preferences.interface.showTrayIcon=Sistem tepsisi simgesini göster (Yeniden başlatma gerekir)
## Volume
preferences.volume=Sanal Sürücü
-preferences.volume.type=Birim Türü (yeniden başlatma gerektirir)
+preferences.volume.type=Birim Türü
preferences.volume.type.automatic=Otomatik
preferences.volume.docsTooltip=Farklı birim türleri hakkında daha fazla bilgi edinmek için belgeleri açın.
+preferences.volume.fuseRestartRequired=Değişikliklerin uygulanması için Cryptomator uygulamasının yeniden başlatılması gerekmektedir.
preferences.volume.tcp.port=TCP Portu
preferences.volume.supportedFeatures=Seçilen birim türü aşağıdaki özellikleri destekler:
preferences.volume.feature.mountAuto=Otomatik bağlama noktası seçimi
diff --git a/src/main/resources/i18n/strings_zh.properties b/src/main/resources/i18n/strings_zh.properties
index 2d8cebe43..9aabce1d9 100644
--- a/src/main/resources/i18n/strings_zh.properties
+++ b/src/main/resources/i18n/strings_zh.properties
@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=显示最小化按钮
preferences.interface.showTrayIcon=显示托盘图标(需重启)
## Volume
preferences.volume=虚拟磁盘
-preferences.volume.type=卷类型(需重启)
+preferences.volume.type=卷类型
preferences.volume.type.automatic=自动
preferences.volume.docsTooltip=打开文档以了解有关不同卷类型的更多信息
+preferences.volume.fuseRestartRequired=Cryptomator 需要重新启动以应用更改
preferences.volume.tcp.port=TCP 端口
preferences.volume.supportedFeatures=选定的卷类型支持以下功能:
preferences.volume.feature.mountAuto=自动选择挂载点
diff --git a/src/main/resources/i18n/strings_zh_HK.properties b/src/main/resources/i18n/strings_zh_HK.properties
index 879a9e367..5f04ad1dc 100644
--- a/src/main/resources/i18n/strings_zh_HK.properties
+++ b/src/main/resources/i18n/strings_zh_HK.properties
@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=顯示最小化按鈕
preferences.interface.showTrayIcon=顯示系統工作列圖示 (需重新啟動)
## Volume
preferences.volume=虛擬磁碟
-preferences.volume.type=磁區類別(須重啟)
+preferences.volume.type=磁區類型
preferences.volume.type.automatic=自動
preferences.volume.docsTooltip=閱讀文檔以了解各加密空間類型。
+preferences.volume.fuseRestartRequired=需要重新啟動 Cryptomator 以應用更改。
preferences.volume.tcp.port=TCP 埠
preferences.volume.supportedFeatures=所選擇的磁區空間類別支援下列功能:
preferences.volume.feature.mountAuto=自動選擇掛載路徑
diff --git a/src/main/resources/i18n/strings_zh_TW.properties b/src/main/resources/i18n/strings_zh_TW.properties
index 32df067e1..0be86ef11 100644
--- a/src/main/resources/i18n/strings_zh_TW.properties
+++ b/src/main/resources/i18n/strings_zh_TW.properties
@@ -274,9 +274,10 @@ preferences.interface.showMinimizeButton=顯示最小化按鈕
preferences.interface.showTrayIcon=顯示系統工作列圖示 (需要重新啟動)
## Volume
preferences.volume=虛擬磁碟
-preferences.volume.type=磁區類別 (須重啟)
+preferences.volume.type=磁區類型
preferences.volume.type.automatic=自动
preferences.volume.docsTooltip=打開文檔以了解有關不同磁區類型更多信息。
+preferences.volume.fuseRestartRequired=需要重新啟動 Cryptomator以套用變更。
preferences.volume.tcp.port=TCP 埠
preferences.volume.supportedFeatures=所選擇的磁區空間類別支援下列功能:
preferences.volume.feature.mountAuto=自動選擇掛載路徑