Merge branch 'release/1.4.1'

This commit is contained in:
Tobias Hagemann
2019-01-16 16:50:44 +01:00
49 changed files with 360 additions and 225 deletions

18
.gitignore vendored
View File

@@ -9,15 +9,13 @@
.settings
.project
.classpath
# Maven #
target/
test-output/
# IntelliJ Settings Files #
.idea/
out/
.idea_modules/
*.iws
*.iml
# Temporary file created by test launcher
main/launcher/.ipcPort.tmp
# IntelliJ Settings Files (https://intellij-support.jetbrains.com/hc/en-us/articles/206544839-How-to-manage-projects-under-Version-Control-Systems) #
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/dictionaries
.idea/**/libraries/
*.iml

1
.idea/.name generated Normal file
View File

@@ -0,0 +1 @@
Cryptomator

51
.idea/codeStyles/Project.xml generated Normal file
View File

@@ -0,0 +1,51 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<option name="OTHER_INDENT_OPTIONS">
<value>
<option name="USE_TAB_CHARACTER" value="true" />
</value>
</option>
<option name="LINE_SEPARATOR" value="&#10;" />
<option name="RIGHT_MARGIN" value="220" />
<option name="FORMATTER_TAGS_ENABLED" value="true" />
<JavaCodeStyleSettings>
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="30" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="10" />
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
<value />
</option>
<option name="JD_ALIGN_PARAM_COMMENTS" value="false" />
<option name="JD_ALIGN_EXCEPTION_COMMENTS" value="false" />
</JavaCodeStyleSettings>
<codeStyleSettings language="Groovy">
<indentOptions>
<option name="USE_TAB_CHARACTER" value="true" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="HTML">
<indentOptions>
<option name="USE_TAB_CHARACTER" value="true" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="JAVA">
<option name="KEEP_LINE_BREAKS" value="false" />
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
<option name="KEEP_SIMPLE_BLOCKS_IN_ONE_LINE" value="true" />
<option name="KEEP_SIMPLE_METHODS_IN_ONE_LINE" value="true" />
<option name="KEEP_SIMPLE_LAMBDAS_IN_ONE_LINE" value="true" />
<indentOptions>
<option name="USE_TAB_CHARACTER" value="true" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="JSON">
<indentOptions>
<option name="USE_TAB_CHARACTER" value="true" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="XML">
<indentOptions>
<option name="USE_TAB_CHARACTER" value="true" />
</indentOptions>
</codeStyleSettings>
</code_scheme>
</component>

5
.idea/codeStyles/codeStyleConfig.xml generated Normal file
View File

@@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

16
.idea/compiler.xml generated Normal file
View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="commons" />
<module name="keychain" />
<module name="launcher" />
<module name="ui" />
</profile>
</annotationProcessing>
</component>
</project>

10
.idea/encodings.xml generated Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/main" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/main/commons" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/main/keychain" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/main/launcher" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/main/ui" charset="UTF-8" />
</component>
</project>

14
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/main/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_10" project-jdk-name="10" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@@ -7,7 +7,7 @@ cache:
- $HOME/.m2
env:
global:
- secure: "lV9OwUbHMrMpLUH1CY+Z4puLDdFXytudyPlG1eGRsesdpuG6KM3uQVz6uAtf6lrU8DRbMM/T7ML+PmvQ4UoPPYLdLxESLLBat2qUPOIVBOhTSlCc7I0DmGy04CSvkeMy8dPaQC0ukgNiR7zwoNzfcpGRN/U9S8tziDruuHoZSrg=" # BINTRAY_API_KEY
- secure: "HftEaabMmWn5GwKFKksUkOcelc3Mn7xazwAEy+4d4gL1+F8VhID/6DCK7nas+afUymWnxTano8Rv4Ci5MWryNkNkTH+FUPWmF3xWezc3hajSyS7RB92IZ8VPetl4Fo8UI1WwM5apDEaugalPxkIf8a7N+lpG5X/Gpumwzo3Be3w=" # BINTRAY_API_KEY
- secure: "oWFgRTVP6lyTa7qVxlvkpm20MtVc3BtmsNXQJS6bfg2A0o/iCQMNx7OD59BaafCLGRKvCcJVESiC8FlSylVMS7CDSyYu0gg70NUiIuHp4NBM5inFWYCy/PdQsCTzr5uvNG+rMFQpMFRaCV0FrfM3tLondcVkhsHL68l93Xoexx4=" # CODACY_PROJECT_TOKEN
- secure: "zJxgytA2Ks5Xzv+7kUaUq+EBFNQw9Qec63lcMJVuXVWczjL16nKW1EzzV515ag+OWL46z3lEPForDhufw0VtFnNmaX68jkO0mp01eLrHApc1llN2Y/U8GBXfNNazN4+Kom4H+z/AO+wJr8EsKMMUczCdQ3APgd9uVI0hzXw/Z3M=" # GITHUB_API_KEY
addons:

View File

@@ -4,7 +4,7 @@
<parent>
<groupId>org.cryptomator</groupId>
<artifactId>main</artifactId>
<version>1.4.0-rc1</version>
<version>1.4.1</version>
</parent>
<artifactId>ant-kit</artifactId>
<packaging>pom</packaging>

View File

@@ -4,7 +4,7 @@
<parent>
<groupId>org.cryptomator</groupId>
<artifactId>main</artifactId>
<version>1.4.0-rc1</version>
<version>1.4.1</version>
</parent>
<artifactId>commons</artifactId>
<name>Cryptomator Commons</name>

View File

@@ -5,16 +5,6 @@
*******************************************************************************/
package org.cryptomator.common.settings;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.Base64;
import java.util.Objects;
import java.util.UUID;
import org.apache.commons.lang3.StringUtils;
import org.fxmisc.easybind.EasyBind;
import javafx.beans.Observable;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.ObjectProperty;
@@ -22,7 +12,20 @@ import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import org.apache.commons.lang3.StringUtils;
import org.fxmisc.easybind.EasyBind;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.Base64;
import java.util.Objects;
import java.util.UUID;
/**
* The settings specific to a single vault.
* TODO: Change the name of individualMountPath and its derivatives to customMountPath
*/
public class VaultSettings {
public static final boolean DEFAULT_UNLOCK_AFTER_STARTUP = false;

View File

@@ -5,14 +5,13 @@
*******************************************************************************/
package org.cryptomator.common.settings;
import java.io.IOException;
import java.nio.file.Paths;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.nio.file.Paths;
class VaultSettingsJsonAdapter {
@@ -27,8 +26,7 @@ class VaultSettingsJsonAdapter {
out.name("unlockAfterStartup").value(value.unlockAfterStartup().get());
out.name("revealAfterMount").value(value.revealAfterMount().get());
out.name("usesIndividualMountPath").value(value.usesIndividualMountPath().get());
//TODO: should this always be written? ( because it could contain metadata, which the user does not want to save!)
out.name("individualMountPath").value(value.individualMountPath().get());
out.name("individualMountPath").value(value.individualMountPath().get()); //TODO: should this always be written? ( because it could contain metadata, which the user may not want to save!)
out.endObject();
}

View File

@@ -4,7 +4,7 @@
<parent>
<groupId>org.cryptomator</groupId>
<artifactId>main</artifactId>
<version>1.4.0-rc1</version>
<version>1.4.1</version>
</parent>
<artifactId>keychain</artifactId>
<name>System Keychain Access</name>

View File

@@ -4,7 +4,7 @@
<parent>
<groupId>org.cryptomator</groupId>
<artifactId>main</artifactId>
<version>1.4.0-rc1</version>
<version>1.4.1</version>
</parent>
<artifactId>launcher</artifactId>
<name>Cryptomator Launcher</name>

View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.cryptomator</groupId>
<artifactId>main</artifactId>
<version>1.4.0-rc1</version>
<version>1.4.1</version>
<packaging>pom</packaging>
<name>Cryptomator</name>
@@ -25,19 +25,19 @@
<!-- dependency versions -->
<cryptomator.cryptolib.version>1.2.1</cryptomator.cryptolib.version>
<cryptomator.cryptofs.version>1.6.1</cryptomator.cryptofs.version>
<cryptomator.cryptofs.version>1.6.2</cryptomator.cryptofs.version>
<cryptomator.jni.version>2.0.0</cryptomator.jni.version>
<cryptomator.fuse.version>1.0.1</cryptomator.fuse.version>
<cryptomator.dokany.version>1.0.0</cryptomator.dokany.version>
<cryptomator.fuse.version>1.0.3</cryptomator.fuse.version>
<cryptomator.dokany.version>1.1.1</cryptomator.dokany.version>
<cryptomator.webdav.version>1.0.5</cryptomator.webdav.version>
<commons-io.version>2.5</commons-io.version>
<commons-lang3.version>3.6</commons-lang3.version>
<commons-io.version>2.6</commons-io.version>
<commons-lang3.version>3.8.1</commons-lang3.version>
<easybind.version>1.0.3</easybind.version>
<guava.version>27.0-jre</guava.version>
<dagger.version>2.19</dagger.version>
<dagger.version>2.20</dagger.version>
<gson.version>2.8.5</gson.version>
<slf4j.version>1.7.25</slf4j.version>
@@ -317,8 +317,6 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>9</source>
<target>9</target>
<release>9</release>
<annotationProcessorPaths>
<path>

View File

@@ -4,7 +4,7 @@
<parent>
<groupId>org.cryptomator</groupId>
<artifactId>main</artifactId>
<version>1.4.0-rc1</version>
<version>1.4.1</version>
</parent>
<artifactId>uber-jar</artifactId>
<name>Single über jar with all dependencies</name>

View File

@@ -4,7 +4,7 @@
<parent>
<groupId>org.cryptomator</groupId>
<artifactId>main</artifactId>
<version>1.4.0-rc1</version>
<version>1.4.1</version>
</parent>
<artifactId>ui</artifactId>
<name>Cryptomator GUI</name>

View File

@@ -2,7 +2,7 @@
* Copyright (c) 2014, 2017 Sebastian Stenzel
* All rights reserved.
* This program and the accompanying materials are made available under the terms of the accompanying LICENSE file.
*
*
* Contributors:
* Sebastian Stenzel - initial API and implementation
* Jean-Noël Charon - confirmation dialog on vault removal
@@ -110,7 +110,7 @@ public class MainController implements ViewController {
@Inject
public MainController(@Named("mainWindow") Stage mainWindow, ExecutorService executorService, @Named("fileOpenRequests") BlockingQueue<Path> fileOpenRequests, ExitUtil exitUtil, Localization localization,
VaultFactory vaultFactoy, ViewControllerLoader viewControllerLoader, UpgradeStrategies upgradeStrategies, VaultList vaults, AutoUnlocker autoUnlocker) {
VaultFactory vaultFactoy, ViewControllerLoader viewControllerLoader, UpgradeStrategies upgradeStrategies, VaultList vaults, AutoUnlocker autoUnlocker) {
this.mainWindow = mainWindow;
this.executorService = executorService;
this.fileOpenRequests = fileOpenRequests;
@@ -222,7 +222,7 @@ public class MainController implements ViewController {
ButtonType forceShutdownButtonType = new ButtonType(localization.getString("main.gracefulShutdown.button.forceShutdown"));
Alert gracefulShutdownDialog = DialogBuilderUtil.buildGracefulShutdownDialog(
localization.getString("main.gracefulShutdown.dialog.title"), localization.getString("main.gracefulShutdown.dialog.header"), localization.getString("main.gracefulShutdown.dialog.content"),
forceShutdownButtonType, forceShutdownButtonType, tryAgainButtonType);
forceShutdownButtonType, ButtonType.CANCEL, forceShutdownButtonType, tryAgainButtonType);
Optional<ButtonType> choice = gracefulShutdownDialog.showAndWait();
choice.ifPresent(btnType -> {
@@ -230,6 +230,8 @@ public class MainController implements ViewController {
gracefulShutdown();
} else if (forceShutdownButtonType.equals(btnType)) {
Platform.runLater(Platform::exit);
} else {
return;
}
});
} else {
@@ -331,7 +333,7 @@ public class MainController implements ViewController {
/**
* adds the given directory or selects it if it is already in the list of directories.
*
*
* @param path to a vault directory or masterkey file
*/
public void addVault(final Path path, boolean select) {
@@ -432,7 +434,13 @@ public class MainController implements ViewController {
}
private void didPressKeyOnRoot(KeyEvent event) {
if ((event.isMetaDown() || event.isControlDown()) && event.getCode().isDigitKey()) {
boolean triggered;
if (SystemUtils.IS_OS_MAC) {
triggered = event.isMetaDown();
} else {
triggered = event.isControlDown() && !event.isAltDown();
}
if (triggered && event.getCode().isDigitKey()) {
int digit = Integer.valueOf(event.getText());
switch (digit) {
case 0: {

View File

@@ -8,13 +8,6 @@
******************************************************************************/
package org.cryptomator.ui.controllers;
import javax.inject.Inject;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
import com.google.common.base.CharMatcher;
import com.google.common.base.Strings;
import javafx.application.Application;
@@ -45,9 +38,9 @@ import org.cryptomator.cryptolib.api.InvalidPassphraseException;
import org.cryptomator.cryptolib.api.UnsupportedVaultFormatException;
import org.cryptomator.frontend.webdav.ServerLifecycleException;
import org.cryptomator.keychain.KeychainAccess;
import org.cryptomator.ui.model.InvalidSettingsException;
import org.cryptomator.ui.controls.SecPasswordField;
import org.cryptomator.ui.l10n.Localization;
import org.cryptomator.ui.model.InvalidSettingsException;
import org.cryptomator.ui.model.Vault;
import org.cryptomator.ui.model.WindowsDriveLetters;
import org.cryptomator.ui.util.DialogBuilderUtil;
@@ -57,6 +50,13 @@ import org.fxmisc.easybind.Subscription;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
public class UnlockController implements ViewController {
private static final Logger LOG = LoggerFactory.getLogger(UnlockController.class);
@@ -115,13 +115,13 @@ public class UnlockController implements ViewController {
private ChoiceBox<Character> winDriveLetter;
@FXML
private CheckBox useOwnMountPath;
private CheckBox useCustomMountPath;
@FXML
private Label mountPathLabel;
private Label customMountPathLabel;
@FXML
private TextField mountPath;
private TextField customMountPathField;
@FXML
private ProgressIndicator progressIndicator;
@@ -150,27 +150,31 @@ public class UnlockController implements ViewController {
savePassword.setDisable(!keychainAccess.isPresent());
unlockAfterStartup.disableProperty().bind(savePassword.disabledProperty().or(savePassword.selectedProperty().not()));
mountPathLabel.visibleProperty().bind(useOwnMountPath.selectedProperty());
mountPath.visibleProperty().bind(useOwnMountPath.selectedProperty());
mountPath.managedProperty().bind(useOwnMountPath.selectedProperty());
mountPath.textProperty().addListener(this::mountPathDidChange);
customMountPathLabel.visibleProperty().bind(useCustomMountPath.selectedProperty());
customMountPathLabel.managedProperty().bind(useCustomMountPath.selectedProperty());
customMountPathField.visibleProperty().bind(useCustomMountPath.selectedProperty());
customMountPathField.managedProperty().bind(useCustomMountPath.selectedProperty());
customMountPathField.textProperty().addListener(this::mountPathDidChange);
winDriveLetter.setConverter(new WinDriveLetterLabelConverter());
if (SystemUtils.IS_OS_WINDOWS) {
winDriveLetter.setConverter(new WinDriveLetterLabelConverter());
useOwnMountPath.setVisible(false);
useOwnMountPath.setManaged(false);
mountPathLabel.setManaged(false);
//dirty cheat
mountPath.setMouseTransparent(true);
} else {
if (!SystemUtils.IS_OS_WINDOWS) {
winDriveLetterLabel.setVisible(false);
winDriveLetterLabel.setManaged(false);
winDriveLetter.setVisible(false);
winDriveLetter.setManaged(false);
if (VolumeImpl.WEBDAV.equals(settings.preferredVolumeImpl().get())) {
useOwnMountPath.setVisible(false);
useOwnMountPath.setManaged(false);
mountPathLabel.setManaged(false);
}
if (VolumeImpl.WEBDAV.equals(settings.preferredVolumeImpl().get())) {
useCustomMountPath.setVisible(false);
useCustomMountPath.setManaged(false);
customMountPathField.setMouseTransparent(true);
} else {
useCustomMountPath.setVisible(true);
if (SystemUtils.IS_OS_WINDOWS) {
winDriveLetter.visibleProperty().bind(useCustomMountPath.selectedProperty().not());
winDriveLetter.managedProperty().bind(useCustomMountPath.selectedProperty().not());
winDriveLetterLabel.visibleProperty().bind(useCustomMountPath.selectedProperty().not());
winDriveLetterLabel.managedProperty().bind(useCustomMountPath.selectedProperty().not());
}
}
}
@@ -210,13 +214,11 @@ public class UnlockController implements ViewController {
winDriveLetter.getItems().addAll(driveLetters.getAvailableDriveLetters());
winDriveLetter.getItems().sort(new WinDriveLetterComparator());
winDriveLetter.valueProperty().addListener(driveLetterChangeListener);
chooseSelectedDriveLetter();
}
downloadsPageLink.setVisible(false);
messageText.setText(null);
mountName.setText(vault.getMountName());
if (SystemUtils.IS_OS_WINDOWS) {
chooseSelectedDriveLetter();
}
savePassword.setSelected(false);
// auto-fill pw from keychain:
if (keychainAccess.isPresent()) {
@@ -231,14 +233,15 @@ public class UnlockController implements ViewController {
VaultSettings vaultSettings = vault.getVaultSettings();
unlockAfterStartup.setSelected(savePassword.isSelected() && vaultSettings.unlockAfterStartup().get());
revealAfterMount.setSelected(vaultSettings.revealAfterMount().get());
useOwnMountPath.setSelected(vaultSettings.usesIndividualMountPath().get());
if (!settings.preferredVolumeImpl().get().equals(VolumeImpl.WEBDAV)) {
useCustomMountPath.setSelected(vaultSettings.usesIndividualMountPath().get());
customMountPathField.textProperty().setValue(vaultSettings.individualMountPath().getValueSafe());
}
vaultSubs = vaultSubs.and(EasyBind.subscribe(unlockAfterStartup.selectedProperty(), vaultSettings.unlockAfterStartup()::set));
vaultSubs = vaultSubs.and(EasyBind.subscribe(revealAfterMount.selectedProperty(), vaultSettings.revealAfterMount()::set));
vaultSubs = vaultSubs.and(EasyBind.subscribe(useOwnMountPath.selectedProperty(), vaultSettings.usesIndividualMountPath()::set));
mountPath.textProperty().setValue(vaultSettings.individualMountPath().getValueSafe());
vaultSubs = vaultSubs.and(EasyBind.subscribe(useCustomMountPath.selectedProperty(), vaultSettings.usesIndividualMountPath()::set));
}
@@ -282,7 +285,7 @@ public class UnlockController implements ViewController {
}
private void mountPathDidChange(ObservableValue<? extends String> property, String oldValue, String newValue) {
vault.setIndividualMountPath(newValue);
vault.setCustomMountPath(newValue);
}
/**
@@ -389,6 +392,7 @@ public class UnlockController implements ViewController {
CharSequence password = passwordField.getCharacters();
Tasks.create(() -> {
messageText.setText(localization.getString("unlock.pendingMessage.unlocking"));
vault.unlock(password);
if (keychainAccess.isPresent() && savePassword.isSelected()) {
keychainAccess.get().storePassphrase(vault.getId(), password);
@@ -400,7 +404,7 @@ public class UnlockController implements ViewController {
}).onError(InvalidSettingsException.class, e -> {
messageText.setText(localization.getString("unlock.errorMessage.invalidMountPath"));
advancedOptions.setVisible(true);
mountPath.setStyle("-fx-border-color: red;");
customMountPathField.setStyle("-fx-border-color: red;");
}).onError(InvalidPassphraseException.class, e -> {
messageText.setText(localization.getString("unlock.errorMessage.wrongPassword"));
passwordField.selectAll();
@@ -429,7 +433,7 @@ public class UnlockController implements ViewController {
advancedOptions.setDisable(false);
progressIndicator.setVisible(false);
if (advancedOptions.isVisible()) { //dirty programming, but otherwise the focus is wrong
mountPath.requestFocus();
customMountPathField.requestFocus();
}
}).runOnce(executor);
}

View File

@@ -1,17 +1,17 @@
package org.cryptomator.ui.model;
import javax.inject.Inject;
import java.nio.file.Paths;
import java.util.Set;
import java.util.concurrent.ExecutorService;
import com.google.common.collect.Sets;
import com.google.common.base.Strings;
import org.cryptomator.common.settings.VaultSettings;
import org.cryptomator.cryptofs.CryptoFileSystem;
import org.cryptomator.frontend.dokany.Mount;
import org.cryptomator.frontend.dokany.MountFactory;
import org.cryptomator.frontend.dokany.MountFailedException;
import javax.inject.Inject;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.concurrent.ExecutorService;
public class DokanyVolume implements Volume {
private static final String FS_TYPE_NAME = "Cryptomator File System";
@@ -34,29 +34,31 @@ public class DokanyVolume implements Volume {
return DokanyVolume.isSupportedStatic();
}
//TODO: Drive letter 'A' as mount point is invalid in dokany. maybe we should do already here something against it
@Override
public void mount(CryptoFileSystem fs) throws VolumeException {
char driveLetter;
if (!vaultSettings.winDriveLetter().getValueSafe().equals("")) {
driveLetter = vaultSettings.winDriveLetter().get().charAt(0);
Path mountPath = Paths.get(getMountPathString());
String mountName = vaultSettings.mountName().get();
try {
this.mount = mountFactory.mount(fs.getPath("/"), mountPath, mountName, FS_TYPE_NAME);
} catch (MountFailedException e) {
throw new VolumeException("Unable to mount Filesystem", e);
}
}
private String getMountPathString() throws VolumeException {
if (vaultSettings.usesIndividualMountPath().get()) {
return vaultSettings.individualMountPath().get();
} else if (!Strings.isNullOrEmpty(vaultSettings.winDriveLetter().get())) {
return vaultSettings.winDriveLetter().get().charAt(0) + ":\\";
} else {
//auto assign drive letter
if (!windowsDriveLetters.getAvailableDriveLetters().isEmpty()) {
//this is a temporary fix for 'A' being an invalid drive letter
Set<Character> availableLettersWithoutA = Sets.difference(windowsDriveLetters.getAvailableDriveLetters(), Set.of('A'));
driveLetter = availableLettersWithoutA.iterator().next();
// driveLetter = windowsDriveLetters.getAvailableDriveLetters().iterator().next();
return windowsDriveLetters.getAvailableDriveLetters().iterator().next() + ":\\";
} else {
throw new VolumeException("No free drive letter available.");
}
}
String mountName = vaultSettings.mountName().get();
try {
this.mount = mountFactory.mount(fs.getPath("/"), Paths.get(driveLetter + ":\\") , mountName, FS_TYPE_NAME);
} catch (MountFailedException e) {
throw new VolumeException("Unable to mount Filesystem", e);
}
}
@Override

View File

@@ -8,19 +8,6 @@
*******************************************************************************/
package org.cryptomator.ui.model;
import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Predicate;
import javax.inject.Inject;
import javax.inject.Provider;
import javafx.application.Platform;
import javafx.beans.Observable;
import javafx.beans.binding.Binding;
@@ -42,6 +29,18 @@ import org.fxmisc.easybind.EasyBind;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javax.inject.Provider;
import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Predicate;
@PerVault
public class Vault {
@@ -241,11 +240,11 @@ public class Vault {
return vaultSettings.mountName().get();
}
public String getIndividualMountPath() {
public String getCustomMountPath() {
return vaultSettings.individualMountPath().getValueSafe();
}
public void setIndividualMountPath(String mountPath) {
public void setCustomMountPath(String mountPath) {
vaultSettings.individualMountPath().set(mountPath);
}

View File

@@ -7,8 +7,6 @@
Contributors:
Sebastian Stenzel - initial API and implementation
-->
<?import java.net.URL?>
<?import java.lang.String?>
<?import org.cryptomator.ui.controls.SecPasswordField?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ProgressIndicator?>
@@ -24,12 +22,13 @@
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.control.Separator?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.layout.VBox?>
<GridPane fx:controller="org.cryptomator.ui.controllers.UnlockController" fx:id="root" vgap="12.0" hgap="12.0" prefWidth="400.0" xmlns:fx="http://javafx.com/fxml" cacheShape="true" cache="true">
<padding>
<Insets top="24.0" right="12.0" bottom="24.0" left="12.0" />
</padding>
<columnConstraints>
<ColumnConstraints percentWidth="38.2"/>
<ColumnConstraints percentWidth="61.8"/>
@@ -45,7 +44,7 @@
<Button fx:id="advancedOptionsButton" text="%unlock.button.advancedOptions.show" prefWidth="150.0" onAction="#didClickAdvancedOptionsButton" cacheShape="true" cache="true" />
<Button fx:id="unlockButton" text="%unlock.button.unlock" defaultButton="true" prefWidth="150.0" onAction="#didClickUnlockButton" disable="true" cacheShape="true" cache="true" />
</HBox>
<!-- Row 3 -->
<Label fx:id="successMessage" cacheShape="true" cache="true" visible="true" GridPane.rowIndex="3" GridPane.columnIndex="0" GridPane.columnSpan="2"/>
@@ -54,12 +53,12 @@
<padding>
<Insets top="24.0" />
</padding>
<columnConstraints>
<ColumnConstraints percentWidth="38.2"/>
<ColumnConstraints percentWidth="61.8"/>
</columnConstraints>
<!-- Row 3.0 -->
<Separator GridPane.rowIndex="0" GridPane.columnIndex="0" GridPane.columnSpan="2" cacheShape="true" cache="true"/>
<HBox alignment="CENTER" prefWidth="400.0" GridPane.rowIndex="0" GridPane.columnIndex="0" GridPane.columnSpan="2" cacheShape="true" cache="true">
@@ -69,46 +68,47 @@
</padding>
</Label>
</HBox>
<!-- Row 3.1 -->
<CheckBox GridPane.rowIndex="1" GridPane.columnIndex="0" GridPane.columnSpan="2" fx:id="savePassword" text="%unlock.label.savePassword" onAction="#didClickSavePasswordCheckbox" cacheShape="true" cache="true" />
<!-- Row 3.2 -->
<CheckBox GridPane.rowIndex="2" GridPane.columnIndex="0" GridPane.columnSpan="2" fx:id="unlockAfterStartup" text="%unlock.label.unlockAfterStartup" cacheShape="true" cache="true" />
<!-- Row 3.3 -->
<Label GridPane.rowIndex="3" GridPane.columnIndex="0" text="%unlock.label.mountName" cacheShape="true" cache="true" />
<TextField GridPane.rowIndex="3" GridPane.columnIndex="1" fx:id="mountName" GridPane.hgrow="ALWAYS" maxWidth="Infinity" cacheShape="true" cache="true" />
<!-- Row 3.4 -->
<CheckBox GridPane.rowIndex="4" GridPane.columnIndex="0" GridPane.columnSpan="2" fx:id="revealAfterMount" text="%unlock.label.revealAfterMount" cacheShape="true" cache="true" />
<!-- Row 3.5 Alt1 -->
<Label GridPane.rowIndex="5" GridPane.columnIndex="0" fx:id="winDriveLetterLabel" text="%unlock.label.winDriveLetter" cacheShape="true" cache="true" />
<ChoiceBox GridPane.rowIndex="5" GridPane.columnIndex="1" fx:id="winDriveLetter" GridPane.hgrow="ALWAYS" maxWidth="Infinity" cacheShape="true" cache="true" />
<!-- Row 3.5 Alt2 -->
<CheckBox GridPane.rowIndex="5" GridPane.columnIndex="0" GridPane.columnSpan="2" fx:id="useOwnMountPath" text="%unlock.label.useOwnMountPath" cacheShape="true" cache="true" />
<!-- Row 3.5 -->
<CheckBox GridPane.rowIndex="5" GridPane.columnIndex="0" GridPane.columnSpan="2" fx:id="useCustomMountPath" text="%unlock.label.useOwnMountPath" cacheShape="true" cache="true" />
<Label GridPane.rowIndex="6" GridPane.columnIndex="0" fx:id="mountPathLabel" text="%unlock.label.mountPath" cacheShape="true" cache="true" />
<TextField GridPane.rowIndex="6" GridPane.columnIndex="1" fx:id="mountPath" GridPane.hgrow="ALWAYS" maxWidth="Infinity" cacheShape="true" cache="true" />
<!-- Row 3.6 Alt1 -->
<Label GridPane.rowIndex="6" GridPane.columnIndex="0" fx:id="winDriveLetterLabel" text="%unlock.label.winDriveLetter" cacheShape="true" cache="true" />
<ChoiceBox GridPane.rowIndex="6" GridPane.columnIndex="1" fx:id="winDriveLetter" GridPane.hgrow="ALWAYS" maxWidth="Infinity" cacheShape="true" cache="true" />
<!-- Row 3.6 Alt2 -->
<Label GridPane.rowIndex="6" GridPane.columnIndex="0" fx:id="customMountPathLabel" text="%unlock.label.mountPath" cacheShape="true" cache="true" />
<TextField GridPane.rowIndex="6" GridPane.columnIndex="1" fx:id="customMountPathField" GridPane.hgrow="ALWAYS" maxWidth="Infinity" cacheShape="true" cache="true" />
</GridPane>
<!-- Row 4 -->
<TextFlow GridPane.rowIndex="4" GridPane.columnIndex="0" GridPane.columnSpan="2" cacheShape="true" cache="true">
<GridPane.margin>
<Insets top="24.0"/>
</GridPane.margin>
<children>
<Text fx:id="messageText" cache="true" />
<Hyperlink fx:id="downloadsPageLink" text="%unlock.label.downloadsPageLink" visible="false" onAction="#didClickDownloadsLink" cacheShape="true" cache="true" />
</children>
</TextFlow>
<!-- Row 5-->
<ProgressIndicator progress="-1" fx:id="progressIndicator" GridPane.rowIndex="5" GridPane.columnIndex="0" GridPane.columnSpan="2" GridPane.halignment="CENTER" cacheShape="true" cache="true" cacheHint="SPEED" />
<!-- Row 5 -->
<VBox GridPane.rowIndex="5" GridPane.columnIndex="0" GridPane.columnSpan="2" spacing="12.0" alignment="CENTER" cacheShape="true" cache="true">
<ProgressIndicator progress="-1" fx:id="progressIndicator" cacheShape="true" cache="true" cacheHint="SPEED" />
<Text fx:id="messageText" cache="true" />
</VBox>
</children>
</GridPane>

View File

@@ -7,31 +7,28 @@
Contributors:
Sebastian Stenzel - initial API and implementation
-->
<?import java.net.URL?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Hyperlink?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.ProgressIndicator?>
<?import javafx.scene.control.Button?>
<VBox fx:controller="org.cryptomator.ui.controllers.WelcomeController" fx:id="root" prefWidth="400.0" prefHeight="400.0" spacing="24.0" alignment="CENTER" xmlns:fx="http://javafx.com/fxml" cacheShape="true" cache="true">
<VBox fx:id="checkForUpdatesContainer" spacing="6.0" alignment="CENTER" cacheShape="true" cache="true" prefHeight="64.0">
<HBox alignment="CENTER" spacing="5.0" cacheShape="true" cache="true">
<Label fx:id="checkForUpdatesStatus" cacheShape="true" cache="true" />
<ProgressIndicator fx:id="checkForUpdatesIndicator" progress="-1" prefWidth="15.0" prefHeight="15.0" cacheShape="true" cache="true" cacheHint="SPEED" />
<ProgressIndicator fx:id="checkForUpdatesIndicator" progress="-1" prefWidth="15.0" prefHeight="15.0" visible="false" cacheShape="true" cache="true" cacheHint="SPEED" />
</HBox>
<Hyperlink wrapText="true" textAlignment="CENTER" fx:id="updateLink" onAction="#didClickUpdateLink" cacheShape="true" cache="true" disable="true" />
</VBox>
<ImageView fitHeight="200.0" preserveRatio="true" smooth="true" cache="true" style="-fx-background-color: green;">
<Image url="/bot_welcome.png"/>
</ImageView>
<VBox prefHeight="64.0"/>
</VBox>

View File

@@ -111,11 +111,12 @@ unlock.successLabel.upgraded = Cryptomator was successfully upgraded.
unlock.label.useOwnMountPath = Use Custom Mount Point
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -111,11 +111,12 @@ unlock.successLabel.upgraded = Криптоматор беше обновен
unlock.label.useOwnMountPath = Използвайте собствена точка за монтиране
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -120,4 +120,5 @@ main.gracefulShutdown.dialog.title = Zamčení trezorů se nezdařilo
main.gracefulShutdown.dialog.header = Trezory v používání
main.gracefulShutdown.dialog.content = Jeden nebo více trezorů je stále v používání ostatními programy. Ukončete je aby se Cryptomator mohl správně vypnout a zkuste to znovu.\n\nPokud to nezabere, Cryptomator je možné vypnout vynuceně, ale to může vést ke ztrátě dat a není proto doporučeno.
main.gracefulShutdown.button.tryAgain = Zkusit znovu
main.gracefulShutdown.button.forceShutdown = Vynutit vypnutí
main.gracefulShutdown.button.forceShutdown = Vynutit vypnutí
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -111,11 +111,12 @@ unlock.successLabel.upgraded = Cryptomator was successfully upgraded.
unlock.label.useOwnMountPath = Use Custom Mount Point
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -111,11 +111,12 @@ unlock.successLabel.upgraded = Das Cryptomator Upgrade wurde erfolgreich abgesch
unlock.label.useOwnMountPath = Eigenes Laufwerksverzeichnis nutzen
welcome.askForUpdateCheck.dialog.title = Auf Updates prüfen
welcome.askForUpdateCheck.dialog.header = Eingebaute Update-Prüfung aktivieren?
welcome.askForUpdateCheck.dialog.content = Zur Überprüfung, ob Updates verfügbar sind, lädt Cryptomator die aktuelle Versionsnummer von den Cryptomator-Servern und zeigt Ihnen einen Hinweis an, wenn eine aktuellere Version verfügbar ist.\n\nWir empfehlen, die Update-Prüfung zu aktivieren, damit Sie sicher sein können, dass Sie stets die neueste Cryptomator-Version mit allen Sicherheits-Patches verwenden. Wenn Sie die Update-Prüfung nicht aktivieren können Sie stattdessen auf https\://cryptomator.org/downloads/ selbst die aktuelle Version ermitteln und herunterladen.\n\nDiese Einstellung können Sie jederzeit im Einstellungs-Menü ändern.
welcome.askForUpdateCheck.dialog.content = Empfehlung\: Aktivieren Sie die Update-Prüfung, um sicherzustellen, dass Sie stets die neueste Cryptomator-Version mit allen Sicherheits-Patches verwenden.\n\nDiese Einstellung können Sie jederzeit im Einstellungs-Menü ändern.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individueller Mount-Punkt ist nicht gesetzt.
main.gracefulShutdown.dialog.title = Sperren des Tresors gescheitert
main.gracefulShutdown.dialog.header = Tresor in Gebrauch
main.gracefulShutdown.dialog.content = Ein oder mehrere Tresore werden noch von anderen Programmen genutzt. Bitte schliessen Sie die Programme um es Cryptomator zu ermöglichen richtig herunter zu fahren. Versuchen Sie es danach erneut.\n\nFalls dies nicht klappt, kann Cryptomator das Beenden erzwingen. Dies kann zu einem Datenverlust führen und ist nicht empfohlen.
main.gracefulShutdown.button.tryAgain = Versuchen Sie es erneut
main.gracefulShutdown.button.forceShutdown = Herunterfahren erzwingen
main.gracefulShutdown.button.forceShutdown = Herunterfahren erzwingen
unlock.pendingMessage.unlocking = Entsperre Tresor...

View File

@@ -30,7 +30,7 @@ welcome.checkForUpdates.label.currentlyChecking=Checking for Updates...
welcome.newVersionMessage=Version %1$s can be downloaded.\nThis is %2$s.
welcome.askForUpdateCheck.dialog.title=Update check
welcome.askForUpdateCheck.dialog.header=Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content=To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content=Recommended: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
# initialize.fxml
initialize.label.password=Password
@@ -86,9 +86,10 @@ unlock.savePassword.delete.confirmation.title=Delete Saved Password
unlock.savePassword.delete.confirmation.header=Do you really want to delete the saved password of this vault?
unlock.savePassword.delete.confirmation.content=The saved password of this vault will be immediately deleted from your system keychain. If you'd like to save your password again, you'd have to unlock your vault with the "Save Password" option enabled.
unlock.choicebox.winDriveLetter.auto=Assign automatically
unlock.pendingMessage.unlocking=Unlocking vault...
unlock.errorMessage.wrongPassword=Wrong password
unlock.errorMessage.wrongPassword=Wrong Password
unlock.errorMessage.invalidMountPath=Individual mount path is not set.
unlock.errorMessage.invalidMountPath=Use of custom mount path selected, but no path given.
unlock.errorMessage.unlockFailed=Unlock failed. See log file for details.
unlock.errorMessage.unsupportedVersion.vaultOlderThanSoftware=Unsupported vault. This vault has been created with an older version of Cryptomator.
unlock.errorMessage.unsupportedVersion.softwareOlderThanVault=Unsupported vault. This vault has been created with a newer version of Cryptomator.

View File

@@ -120,4 +120,5 @@ main.gracefulShutdown.dialog.title = No fue posible cerrar la(s) caja(s) fuerte(
main.gracefulShutdown.dialog.header = Caja(s) Fuertes(s) en uso
main.gracefulShutdown.dialog.content = Una o más cajas fuertes están siendo utilizadas por otros programas. Por favor ciérrelos para permitir a Cryptomator cerrarse adecuadamente, e intente de nuevo.\n\nSi esto no funciona, Cryptomator puede cerrarse forzosamente, pero esta vía puede provocar pérdida de información y no es recomendada.
main.gracefulShutdown.button.tryAgain = Intente de nuevo
main.gracefulShutdown.button.forceShutdown = Forzar apagado
main.gracefulShutdown.button.forceShutdown = Forzar apagado
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -121,4 +121,5 @@ main.gracefulShutdown.dialog.title = Échec en fermant le coffre-fort.
main.gracefulShutdown.dialog.header = Coffre-fort est en cours d'utilisation.
main.gracefulShutdown.dialog.content = Un ou plusieurs coffre-forts sont en cours d'utilisation par d'autres logiciels. S'il vous plait, fermer-les pour permettre à Cryptomator de finir proprement.\n\nSi ça ne marche pas, Cryptomator peut fermer par force, mais cela peut résulter d'une perte de vos fichiers (non recommandé).
main.gracefulShutdown.button.tryAgain = Réessayez
main.gracefulShutdown.button.forceShutdown = Arrêt forcé
main.gracefulShutdown.button.forceShutdown = Arrêt forcé
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -111,11 +111,12 @@ unlock.successLabel.upgraded = A Cryptomator sikeresen frissítésre került.
unlock.label.useOwnMountPath = Use Custom Mount Point
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.tryAgain = Próbáld újra
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -111,11 +111,12 @@ unlock.successLabel.upgraded = Cryptomator aggiornato con successo.
unlock.label.useOwnMountPath = Use Custom Mount Point
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -111,11 +111,12 @@ unlock.successLabel.upgraded = Cryptomator が正常にアップグレードさ
unlock.label.useOwnMountPath = Use Custom Mount Point
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -111,11 +111,12 @@ unlock.successLabel.upgraded = Cryptomator was successfully upgraded.
unlock.label.useOwnMountPath = Use Custom Mount Point
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -112,11 +112,12 @@ unlock.successLabel.upgraded = Cryptomator was successfully upgraded.
unlock.label.useOwnMountPath = Use Custom Mount Point
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -120,4 +120,5 @@ main.gracefulShutdown.dialog.title = Vergrendelen kluis/kluizen mislukt
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Probeer opnieuw
main.gracefulShutdown.button.forceShutdown = Geforceerd afsluiten
main.gracefulShutdown.button.forceShutdown = Geforceerd afsluiten
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -118,4 +118,5 @@ main.gracefulShutdown.dialog.title = Nie udało się zablokować porfela(i)
main.gracefulShutdown.dialog.header = Portfel(e) w użyciu
main.gracefulShutdown.dialog.content = Jedna lub więcej porfelii jest nadal używana przez inne programy. Zamknij je, aby umożliwić prawidłowe zamknięcie Cryptomator, a następnie spróbuj ponownie.\n\nJeśli to nie zadziała, Cryptomator może zamknąć na siłę, ale może to spowodować utratę danych i nie jest zalecane.
main.gracefulShutdown.button.tryAgain = Spróbuj ponownie
main.gracefulShutdown.button.forceShutdown = Wymuś zamknięcie
main.gracefulShutdown.button.forceShutdown = Wymuś zamknięcie
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -73,7 +73,7 @@ upgrade.version3to4.msg = Esse cofre tem que ser migrado a um novo formato. Os n
upgrade.version3to4.err.io = Falha na migração devido a um erro de E/S. Veja o arquivo de log para mais detalhes.
# upgrade.fxml
upgrade.confirmation.label = Sim, tenho certeza de que a sincronização foi concluída
unlock.label.savePassword = Armazenar senha
unlock.label.savePassword = Salvar senha
unlock.errorMessage.unauthenticVersionMac = Não foi possível autenticar a versão do MAC.
unlocked.label.mountFailed = Falha ao conectar o drive
unlock.savePassword.delete.confirmation.title = Apagar a senha armazenada
@@ -105,17 +105,18 @@ settings.webdav.prefGvfsScheme.label = WebDAV schema
settings.volume.label = Método de Montagem
settings.volume.webdav = WebDAV
settings.volume.fuse = FUSE
unlock.successLabel.vaultCreated = Vault was successfully created.
unlock.successLabel.passwordChanged = Password was successfully changed.
unlock.successLabel.upgraded = Cryptomator was successfully upgraded.
unlock.label.useOwnMountPath = Use Custom Mount Point
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
unlock.successLabel.vaultCreated = Cofre criado com sucesso
unlock.successLabel.passwordChanged = Senha modificada com sucesso
unlock.successLabel.upgraded = Crytomator atualizado com sucesso
unlock.label.useOwnMountPath = Usar Ponto de Montagem Personalizado
welcome.askForUpdateCheck.dialog.title = Verificação de atualização
welcome.askForUpdateCheck.dialog.header = Habilitar a verificação de atualização integrada?
welcome.askForUpdateCheck.dialog.content = Para verificar atualizações, Cryptomator vai buscar a versão atual dos servidores e exibirá uma dica para você se uma nova versão estiver disponível.\n\nNós recomendamos que habilite a verificação de atualização para que sempre tenha certeza de que está usando a última versão do Crytomator, com todos os pacotes de segurança instalados. Se você não habilitar a verificação de atualização, você pode verificar e baixar a versão atual em https\://cryptomator.org/downloads/.\n\nVocê pode mudar isso a qualquer momento através das configurações.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.errorMessage.invalidMountPath = Caminho individual de montagem não está definido.
main.gracefulShutdown.dialog.title = Falha no bloqueio do(s) cofre(s)
main.gracefulShutdown.dialog.header = Cofre(s) em uso
main.gracefulShutdown.dialog.content = Um ou mais cofres ainda estão em uso por outros programas. Por favor, feche-os para permitir que Cryptomator encerre corretamente, em seguida, tente novamente.\n\nSe isso não funcionar, Cryptomator pode forçar o desligamento, mas isso pode causar perda de dados e não é recomendado.
main.gracefulShutdown.button.tryAgain = Tente novamente
main.gracefulShutdown.button.forceShutdown = Forçar desligamento
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -43,7 +43,7 @@ changePassword.button.change = Alterar senha
changePassword.errorMessage.wrongPassword = Senha errada
changePassword.errorMessage.decryptionFailed = Descriptografia falhou
# unlocked.fxml
unlocked.button.lock = Travar Cofre
unlocked.button.lock = Trancar Cofre
unlocked.moreOptions.reveal = Mostrar volume
unlocked.label.revealFailed = Falha no comando
unlocked.label.unmountFailed = A ejeção do volume falhou
@@ -114,8 +114,9 @@ welcome.askForUpdateCheck.dialog.header = Ativar a checagem por atualizações?
welcome.askForUpdateCheck.dialog.content = Para checar as atualizações, Cryptomator irá verificar a versão mais recente em nossos servidores e avisará se existe uma versão disponível.\n\nRecomendamos ativar a checagem por novas atualizações para ter certeza que se tenha a versão mais recente do Cryptomator, com todas as correções de segurança. Se não ativar as atualizações é possivel checar e baixa-las a versão mais recente em https\://cryptomator.org/downloads/.\n\nVocê pode alterar as configurações a qualquer hora.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Caminho para montagem individual não configurado.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.dialog.title = Falha ao trancar o cofre
main.gracefulShutdown.dialog.header = Cofre(s) em uso
main.gracefulShutdown.dialog.content = Um ou mais cofres ainda estão em uso por outros programas. Por favor feche-os para permitir ao Cryptomator encerrar apropriadamente, então tente novamente.
main.gracefulShutdown.button.tryAgain = Tente novamente
main.gracefulShutdown.button.forceShutdown = Forçar término da execução
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -123,6 +123,7 @@ settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Не установлен индивидуальный путь монтирования.
main.gracefulShutdown.dialog.title = Ошибка блокировки хранилища
main.gracefulShutdown.dialog.header = Используемые хранилища
main.gracefulShutdown.dialog.content = Одно или несколько хранилищ всё ещё используются другими программами. Закройте их, чтобы Cryptomator мог корректно завершить работу, и повторите попытку.\n\nЕсли это не поможет, Cryptomator может завершить работу принудительно, но с риском потери данных, и потому не рекомендуется.
main.gracefulShutdown.dialog.content = Одно или несколько хранилищ всё ещё используются другими программами. Закройте их, чтобы Cryptomator мог корректно завершить работу, и повторите попытку.\n\nЕсли это не поможет, Cryptomator может завершить работу принудительно, но с риском потери данных, и потому это не рекомендуется.
main.gracefulShutdown.button.tryAgain = Попробовать снова
main.gracefulShutdown.button.forceShutdown = Принудительно завершить работу
main.gracefulShutdown.button.forceShutdown = Принудительно завершить работу
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -114,11 +114,12 @@ unlock.successLabel.upgraded = Cryptomator was successfully upgraded.
unlock.label.useOwnMountPath = Use Custom Mount Point
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -111,11 +111,12 @@ unlock.successLabel.upgraded = Cryptomator was successfully upgraded.
unlock.label.useOwnMountPath = Use Custom Mount Point
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -111,11 +111,12 @@ unlock.successLabel.upgraded = Cryptomator was successfully upgraded.
unlock.label.useOwnMountPath = Use Custom Mount Point
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -118,4 +118,5 @@ main.gracefulShutdown.dialog.title = Блокування сховищ(а) не
main.gracefulShutdown.dialog.header = Сховища(е) використовуються
main.gracefulShutdown.dialog.content = Один або декілька сховищ все ще використовуються іншими програмами. Закрийте їх, щоб дозволити Cryptomator безпечно завершити роботу, а потім повторіть спробу.\nЯкщо це не спрацьовує, Cryptomator може примусово завершити роботу, але це може призвести до втрати даних, це нелогічно та не рекомендується.
main.gracefulShutdown.button.tryAgain = Спробуйте ще раз
main.gracefulShutdown.button.forceShutdown = Примусово завершити роботу
main.gracefulShutdown.button.forceShutdown = Примусово завершити роботу
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -119,4 +119,5 @@ main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -111,11 +111,12 @@ unlock.successLabel.upgraded = Cryptomator was successfully upgraded.
unlock.label.useOwnMountPath = Use Custom Mount Point
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...

View File

@@ -111,11 +111,12 @@ unlock.successLabel.upgraded = Cryptomator成功的更新了
unlock.label.useOwnMountPath = 自訂掛載點
welcome.askForUpdateCheck.dialog.title = Update check
welcome.askForUpdateCheck.dialog.header = Enable the integrated update check?
welcome.askForUpdateCheck.dialog.content = To check for updates, Cryptomator will fetch the current version from the Cryptomator servers and display a hint to you if a newer version is available.\n\nWe recommend to enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed. If you do not enable the update check you may check and download the current version from https\://cryptomator.org/downloads/.\n\nYou can change this at any time from within the settings.
welcome.askForUpdateCheck.dialog.content = Recommended\: Enable the update check to always be sure you have the newest version of Cryptomator, with all security patches, installed.\n\nYou can change this from within the settings at any time.
settings.volume.dokany = Dokany
unlock.errorMessage.invalidMountPath = Individual mount path is not set.
unlock.errorMessage.invalidMountPath = Use of custom mount path selected, but no path given.
main.gracefulShutdown.dialog.title = Locking vault(s) failed
main.gracefulShutdown.dialog.header = Vault(s) in use
main.gracefulShutdown.dialog.content = One or more vaults are still in use by other programs. Please close them to allow Cryptomator to shut down properly, then try again.\n\nIf this doesn't work, Cryptomator can shut down forcefully, but this can incur data loss and is not recommended.
main.gracefulShutdown.button.tryAgain = Try again
main.gracefulShutdown.button.forceShutdown = Force shutdown
main.gracefulShutdown.button.forceShutdown = Force shutdown
unlock.pendingMessage.unlocking = Unlocking vault...