Compare commits

..
Author SHA1 Message Date
Sebastian Stenzel 88f83c5cdb Merge branch 'release/1.5.0-beta1' 2019-11-12 13:33:08 +01:00
Sebastian Stenzel c8059bef78 bumped version
[ci skip]
2019-11-12 13:32:51 +01:00
Sebastian Stenzel 638b731cf8 always set version to SNAPSHOT-{commit} for untagged CI builds 2019-11-12 13:23:05 +01:00
Sebastian Stenzel b2b6e304ed updated CI config 2019-11-12 13:13:58 +01:00
Sebastian Stenzel 0748709f40 Updated dependencies 2019-11-11 16:42:56 +01:00
Sebastian StenzelandGitHub d8ee446d37 New Crowdin translations (#987)
* New translations strings.properties
[ci skip]
2019-11-11 16:36:48 +01:00
Sebastian Stenzel 9932185ccc fixed typo
kudos to our translation team
[ci skip]
2019-10-31 22:10:37 +01:00
Sebastian Stenzel 77afd4688a ide settings
[ci skip]
2019-10-31 22:10:09 +01:00
Sebastian Stenzel 9a5ef3f6ff updated cryptofs to 1.9.0-rc1 2019-10-31 01:29:30 +01:00
Sebastian Stenzel c99f23a4c7 Merge branch 'support/1.4.x' into develop
# Conflicts:
#	main/buildkit/pom.xml
#	main/commons/pom.xml
#	main/keychain/pom.xml
#	main/launcher/pom.xml
#	main/pom.xml
#	main/ui/pom.xml
2019-10-31 01:11:02 +01:00
Sebastian Stenzel 274c3886f5 Merge branch 'hotfix/1.4.17' into support/1.4.x 2019-10-31 01:01:24 +01:00
Sebastian Stenzel 95db29158c fixes #997 2019-10-31 00:54:49 +01:00
Sebastian Stenzel 872680a737 updated dependencies, removed commons-io 2019-10-31 00:54:37 +01:00
Sebastian Stenzel 0ba12f6301 bumped version to 1.4.17 2019-10-31 00:54:09 +01:00
Armin Schrenk 248df9da51 TODOs 2019-10-23 14:23:53 +02:00
Armin Schrenk 702408d488 phrasing 2019-10-23 14:23:44 +02:00
Armin Schrenk dd1506f17a windows: fixing that already used drive letters are not shown as such in drop down menu 2019-10-23 13:07:41 +02:00
Sebastian Stenzel 7fb5c741ad get rid of some legacy code with too much if/else 2019-10-18 14:34:48 +02:00
Sebastian Stenzel aa61ab2b6e allow changing of user interface orientation via settings 2019-10-18 12:51:41 +02:00
Armin Schrenk 7a1e20d732 showing custom mountPath if selected 2019-10-16 16:58:50 +02:00
Armin Schrenk c1a5e187b6 localization 2019-10-16 16:49:21 +02:00
Armin Schrenk 57d3f788e6 further improving windows mount options 2019-10-16 16:41:28 +02:00
Armin Schrenk ca73c3ad90 Updating WinDriveLetters since Dokany be installed in version 1.3.x 2019-10-16 15:57:08 +02:00
Armin Schrenk aec367dcc7 adding TODO 2019-10-16 15:49:17 +02:00
Armin Schrenk 56e7c13cb1 including windows mount option for selecting mount point (without functionality) 2019-10-16 14:32:10 +02:00
Sebastian Stenzel 3b4f384bfd there shouldn't be a "."
[ci skip]
2019-10-14 10:51:16 +02:00
Sebastian Stenzel d1a20da7e0 Localization [ci skip] 2019-10-14 10:22:23 +02:00
Tobias HagemannandGitHub 4b3533f717 say my name [ci skip] 2019-10-14 00:31:49 +02:00
Sebastian Stenzel 6535adef44 Merge branch 'master' into develop 2019-10-13 15:42:09 +02:00
38 changed files with 677 additions and 163 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# These are supported funding model platforms # These are supported funding model platforms
github: [overheadhunter] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] github: [overheadhunter, tobihagemann] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username ko_fi: # Replace with a single Ko-fi username
+19 -11
View File
@@ -7,26 +7,34 @@
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" /> <outputRelativeToContentRoot value="true" />
<processorPath useClasspath="false"> <processorPath useClasspath="false">
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-compiler/2.22.1/dagger-compiler-2.22.1.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-compiler/2.25.2/dagger-compiler-2.25.2.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger/2.22.1/dagger-2.22.1.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger/2.25.2/dagger-2.25.2.jar" />
<entry name="$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar" /> <entry name="$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-producers/2.22.1/dagger-producers-2.22.1.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-producers/2.25.2/dagger-producers-2.25.2.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/25.0-jre/guava-25.0-jre.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/27.1-jre/guava-27.1-jre.jar" />
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.1.3/error_prone_annotations-2.1.3.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" />
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-qual/2.5.2/checker-qual-2.5.2.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.2.0/error_prone_annotations-2.2.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.jar" />
<entry name="$MAVEN_REPOSITORY$/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.jar" /> <entry name="$MAVEN_REPOSITORY$/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-spi/2.22.1/dagger-spi-2.22.1.jar" /> <entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-compat-qual/2.5.3/checker-compat-qual-2.5.3.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-spi/2.25.2/dagger-spi-2.25.2.jar" />
<entry name="$MAVEN_REPOSITORY$/com/squareup/javapoet/1.11.1/javapoet-1.11.1.jar" /> <entry name="$MAVEN_REPOSITORY$/com/squareup/javapoet/1.11.1/javapoet-1.11.1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/googlejavaformat/google-java-format/1.5/google-java-format-1.5.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/googlejavaformat/google-java-format/1.5/google-java-format-1.5.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/javac-shaded/9-dev-r4023-3/javac-shaded-9-dev-r4023-3.jar" /> <entry name="$MAVEN_REPOSITORY$/com/google/errorprone/javac-shaded/9-dev-r4023-3/javac-shaded-9-dev-r4023-3.jar" />
<entry name="$MAVEN_REPOSITORY$/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar" /> <entry name="$MAVEN_REPOSITORY$/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar" />
<entry name="$MAVEN_REPOSITORY$/net/ltgt/gradle/incap/incap/0.2/incap-0.2.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-metadata-jvm/0.1.0/kotlinx-metadata-jvm-0.1.0.jar" />
</processorPath> </processorPath>
<module name="keychain" />
<module name="launcher" />
<module name="commons" /> <module name="commons" />
<module name="keychain" />
<module name="ui" /> <module name="ui" />
<module name="launcher" />
</profile> </profile>
</annotationProcessing> </annotationProcessing>
</component> </component>
+11 -10
View File
@@ -1,4 +1,4 @@
dist: xenial dist: bionic
language: java language: java
sudo: false sudo: false
jdk: jdk:
@@ -17,24 +17,25 @@ addons:
- haveged - haveged
install: install:
- curl -o $HOME/.m2/settings.xml https://gist.githubusercontent.com/cryptobot/cf5fbd909c4782aaeeeb7c7f4a1a43da/raw/e60ee486e34ee0c79f89f947abe2c83b4290c6bb/settings.xml - curl -o $HOME/.m2/settings.xml https://gist.githubusercontent.com/cryptobot/cf5fbd909c4782aaeeeb7c7f4a1a43da/raw/e60ee486e34ee0c79f89f947abe2c83b4290c6bb/settings.xml
- mvn -fmain/pom.xml clean install -DskipTests org.codehaus.mojo:versions-maven-plugin:help dependency:go-offline -Pcoverage,release # "clean install" needed until we can exclude artifacts currently in the reactor, see https://maven.apache.org/plugins/maven-dependency-plugin/go-offline-mojo.html#excludeReactor and https://issues.apache.org/jira/browse/MDEP-568 - mvn -fmain/pom.xml clean install -DskipTests -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN org.codehaus.mojo:versions-maven-plugin:help dependency:go-offline -Pcoverage,release # "clean install" needed until we can exclude artifacts currently in the reactor, see https://maven.apache.org/plugins/maven-dependency-plugin/go-offline-mojo.html#excludeReactor and https://issues.apache.org/jira/browse/MDEP-568
before_script:
- |
if [[ -n "$TRAVIS_TAG" ]]; then
mvn -fmain/pom.xml org.codehaus.mojo:versions-maven-plugin:set -DnewVersion=$TRAVIS_TAG
else
mvn -fmain/pom.xml org.codehaus.mojo:versions-maven-plugin:set -DnewVersion=SNAPSHOT-$(echo $TRAVIS_COMMIT | head -c7)
fi
script: script:
- mvn --update-snapshots -fmain/pom.xml clean test verify -Pcoverage - mvn --update-snapshots -fmain/pom.xml clean test verify -Pcoverage
after_success: after_success:
- curl -o ~/codacy-coverage-reporter.jar https://oss.sonatype.org/service/local/repositories/releases/content/com/codacy/codacy-coverage-reporter/4.0.2/codacy-coverage-reporter-4.0.2-assembly.jar - curl -o ~/codacy-coverage-reporter.jar https://oss.sonatype.org/service/local/repositories/releases/content/com/codacy/codacy-coverage-reporter/6.0.7/codacy-coverage-reporter-6.0.7-assembly.jar
- $JAVA_HOME/bin/java -jar ~/codacy-coverage-reporter.jar report -l Java -r main/commons/target/site/jacoco/jacoco.xml --partial - $JAVA_HOME/bin/java -jar ~/codacy-coverage-reporter.jar report -l Java -r main/commons/target/site/jacoco/jacoco.xml --partial
- $JAVA_HOME/bin/java -jar ~/codacy-coverage-reporter.jar report -l Java -r main/keychain/target/site/jacoco/jacoco.xml --partial - $JAVA_HOME/bin/java -jar ~/codacy-coverage-reporter.jar report -l Java -r main/keychain/target/site/jacoco/jacoco.xml --partial
- $JAVA_HOME/bin/java -jar ~/codacy-coverage-reporter.jar report -l Java -r main/ui/target/site/jacoco/jacoco.xml --partial - $JAVA_HOME/bin/java -jar ~/codacy-coverage-reporter.jar report -l Java -r main/ui/target/site/jacoco/jacoco.xml --partial
- $JAVA_HOME/bin/java -jar ~/codacy-coverage-reporter.jar report -l Java -r main/launcher/target/site/jacoco/jacoco.xml --partial - $JAVA_HOME/bin/java -jar ~/codacy-coverage-reporter.jar report -l Java -r main/launcher/target/site/jacoco/jacoco.xml --partial
- $JAVA_HOME/bin/java -jar ~/codacy-coverage-reporter.jar final - $JAVA_HOME/bin/java -jar ~/codacy-coverage-reporter.jar final
before_deploy: before_deploy:
- | - mvn -fmain/pom.xml package -Prelease -DskipTests
if [[ -n "$TRAVIS_TAG" ]]; then
mvn -fmain/pom.xml org.codehaus.mojo:versions-maven-plugin:set -DnewVersion=$TRAVIS_TAG
elif [[ $TRAVIS_BRANCH == "develop" ]] && [[ $TRAVIS_PULL_REQUEST == "false" ]]; then
mvn -fmain/pom.xml org.codehaus.mojo:versions-maven-plugin:set -DnewVersion=SNAPSHOT-$(echo $TRAVIS_COMMIT | head -c7)
fi
- mvn -fmain/pom.xml clean package -Prelease -DskipTests
- export TODAY=`date +'%Y-%m-%d'`; envsubst '$TRAVIS_TAG $TODAY' < .travis-deploy-release.tmpl.json > .travis-deploy-release.json - export TODAY=`date +'%Y-%m-%d'`; envsubst '$TRAVIS_TAG $TODAY' < .travis-deploy-release.tmpl.json > .travis-deploy-release.json
deploy: deploy:
- provider: bintray # SNAPSHOTS - provider: bintray # SNAPSHOTS
+1 -1
View File
@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>org.cryptomator</groupId> <groupId>org.cryptomator</groupId>
<artifactId>main</artifactId> <artifactId>main</artifactId>
<version>1.5.0-alpha2</version> <version>1.5.0-beta1</version>
</parent> </parent>
<artifactId>buildkit</artifactId> <artifactId>buildkit</artifactId>
<packaging>pom</packaging> <packaging>pom</packaging>
+1 -1
View File
@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>org.cryptomator</groupId> <groupId>org.cryptomator</groupId>
<artifactId>main</artifactId> <artifactId>main</artifactId>
<version>1.5.0-alpha2</version> <version>1.5.0-beta1</version>
</parent> </parent>
<artifactId>commons</artifactId> <artifactId>commons</artifactId>
<name>Cryptomator Commons</name> <name>Cryptomator Commons</name>
@@ -17,6 +17,7 @@ import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleObjectProperty;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.geometry.NodeOrientation;
import java.util.function.Consumer; import java.util.function.Consumer;
@@ -30,9 +31,10 @@ public class Settings {
public static final int DEFAULT_PORT = 42427; public static final int DEFAULT_PORT = 42427;
public static final int DEFAULT_NUM_TRAY_NOTIFICATIONS = 3; public static final int DEFAULT_NUM_TRAY_NOTIFICATIONS = 3;
public static final WebDavUrlScheme DEFAULT_GVFS_SCHEME = WebDavUrlScheme.DAV; public static final WebDavUrlScheme DEFAULT_GVFS_SCHEME = WebDavUrlScheme.DAV;
public static final UiTheme DEFAULT_THEME = UiTheme.LIGHT;
public static final boolean DEFAULT_DEBUG_MODE = false; public static final boolean DEFAULT_DEBUG_MODE = false;
public static final VolumeImpl DEFAULT_PREFERRED_VOLUME_IMPL = System.getProperty("os.name").toLowerCase().contains("windows") ? VolumeImpl.DOKANY : VolumeImpl.FUSE; public static final VolumeImpl DEFAULT_PREFERRED_VOLUME_IMPL = System.getProperty("os.name").toLowerCase().contains("windows") ? VolumeImpl.DOKANY : VolumeImpl.FUSE;
public static final UiTheme DEFAULT_THEME = UiTheme.LIGHT;
public static final NodeOrientation DEFAULT_USER_INTERFACE_ORIENTATION = NodeOrientation.LEFT_TO_RIGHT;
private final ObservableList<VaultSettings> directories = FXCollections.observableArrayList(VaultSettings::observables); private final ObservableList<VaultSettings> directories = FXCollections.observableArrayList(VaultSettings::observables);
private final BooleanProperty askedForUpdateCheck = new SimpleBooleanProperty(DEFAULT_ASKED_FOR_UPDATE_CHECK); private final BooleanProperty askedForUpdateCheck = new SimpleBooleanProperty(DEFAULT_ASKED_FOR_UPDATE_CHECK);
@@ -44,6 +46,7 @@ public class Settings {
private final BooleanProperty debugMode = new SimpleBooleanProperty(DEFAULT_DEBUG_MODE); private final BooleanProperty debugMode = new SimpleBooleanProperty(DEFAULT_DEBUG_MODE);
private final ObjectProperty<VolumeImpl> preferredVolumeImpl = new SimpleObjectProperty<>(DEFAULT_PREFERRED_VOLUME_IMPL); private final ObjectProperty<VolumeImpl> preferredVolumeImpl = new SimpleObjectProperty<>(DEFAULT_PREFERRED_VOLUME_IMPL);
private final ObjectProperty<UiTheme> theme = new SimpleObjectProperty<>(DEFAULT_THEME); private final ObjectProperty<UiTheme> theme = new SimpleObjectProperty<>(DEFAULT_THEME);
private final ObjectProperty<NodeOrientation> userInterfaceOrientation = new SimpleObjectProperty<>(DEFAULT_USER_INTERFACE_ORIENTATION);
private Consumer<Settings> saveCmd; private Consumer<Settings> saveCmd;
@@ -61,6 +64,7 @@ public class Settings {
debugMode.addListener(this::somethingChanged); debugMode.addListener(this::somethingChanged);
preferredVolumeImpl.addListener(this::somethingChanged); preferredVolumeImpl.addListener(this::somethingChanged);
theme.addListener(this::somethingChanged); theme.addListener(this::somethingChanged);
userInterfaceOrientation.addListener(this::somethingChanged);
} }
void setSaveCmd(Consumer<Settings> saveCmd) { void setSaveCmd(Consumer<Settings> saveCmd) {
@@ -118,4 +122,8 @@ public class Settings {
public ObjectProperty<UiTheme> theme() { public ObjectProperty<UiTheme> theme() {
return theme; return theme;
} }
public ObjectProperty<NodeOrientation> userInterfaceOrientation() {
return userInterfaceOrientation;
}
} }
@@ -9,6 +9,7 @@ import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import javafx.geometry.NodeOrientation;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -36,6 +37,7 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
out.name("debugMode").value(value.debugMode().get()); out.name("debugMode").value(value.debugMode().get());
out.name("preferredVolumeImpl").value(value.preferredVolumeImpl().get().name()); out.name("preferredVolumeImpl").value(value.preferredVolumeImpl().get().name());
out.name("theme").value(value.theme().get().name()); out.name("theme").value(value.theme().get().name());
out.name("uiOrientation").value(value.userInterfaceOrientation().get().name());
out.endObject(); out.endObject();
} }
@@ -85,6 +87,9 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
case "theme": case "theme":
settings.theme().set(parseUiTheme(in.nextString())); settings.theme().set(parseUiTheme(in.nextString()));
break; break;
case "uiOrientation":
settings.userInterfaceOrientation().set(parseUiOrientation(in.nextString()));
break;
default: default:
LOG.warn("Unsupported vault setting found in JSON: " + name); LOG.warn("Unsupported vault setting found in JSON: " + name);
in.skipValue(); in.skipValue();
@@ -109,7 +114,7 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
try { try {
return WebDavUrlScheme.valueOf(webDavUrlSchemeName.toUpperCase()); return WebDavUrlScheme.valueOf(webDavUrlSchemeName.toUpperCase());
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
LOG.warn("Invalid volume type {}. Defaulting to {}.", webDavUrlSchemeName, Settings.DEFAULT_GVFS_SCHEME); LOG.warn("Invalid WebDAV url scheme {}. Defaulting to {}.", webDavUrlSchemeName, Settings.DEFAULT_GVFS_SCHEME);
return Settings.DEFAULT_GVFS_SCHEME; return Settings.DEFAULT_GVFS_SCHEME;
} }
} }
@@ -118,11 +123,20 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
try { try {
return UiTheme.valueOf(uiThemeName.toUpperCase()); return UiTheme.valueOf(uiThemeName.toUpperCase());
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
LOG.warn("Invalid volume type {}. Defaulting to {}.", uiThemeName, Settings.DEFAULT_THEME); LOG.warn("Invalid ui theme {}. Defaulting to {}.", uiThemeName, Settings.DEFAULT_THEME);
return Settings.DEFAULT_THEME; return Settings.DEFAULT_THEME;
} }
} }
private NodeOrientation parseUiOrientation(String uiOrientationName) {
try {
return NodeOrientation.valueOf(uiOrientationName.toUpperCase());
} catch (IllegalArgumentException e) {
LOG.warn("Invalid ui orientation {}. Defaulting to {}.", uiOrientationName, Settings.DEFAULT_USER_INTERFACE_ORIENTATION);
return Settings.DEFAULT_USER_INTERFACE_ORIENTATION;
}
}
private List<VaultSettings> readVaultSettingsArray(JsonReader in) throws IOException { private List<VaultSettings> readVaultSettingsArray(JsonReader in) throws IOException {
List<VaultSettings> result = new ArrayList<>(); List<VaultSettings> result = new ArrayList<>();
in.beginArray(); in.beginArray();
@@ -69,8 +69,9 @@ public class DokanyVolume implements Volume {
} else { } else {
//auto assign drive letter //auto assign drive letter
if (!windowsDriveLetters.getAvailableDriveLetters().isEmpty()) { if (!windowsDriveLetters.getAvailableDriveLetters().isEmpty()) {
return windowsDriveLetters.getAvailableDriveLetters().iterator().next(); return Path.of(windowsDriveLetters.getAvailableDriveLetters().iterator().next() + ":\\");
} else { } else {
//TODO: Error Handling
throw new VolumeException("No free drive letter available."); throw new VolumeException("No free drive letter available.");
} }
} }
@@ -5,6 +5,7 @@
*******************************************************************************/ *******************************************************************************/
package org.cryptomator.common.vaults; package org.cryptomator.common.vaults;
import com.google.common.collect.Sets;
import org.apache.commons.lang3.SystemUtils; import org.apache.commons.lang3.SystemUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -14,7 +15,6 @@ import javax.inject.Singleton;
import java.nio.file.FileSystems; import java.nio.file.FileSystems;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.Set; import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import java.util.stream.StreamSupport; import java.util.stream.StreamSupport;
@@ -23,11 +23,11 @@ import java.util.stream.StreamSupport;
public final class WindowsDriveLetters { public final class WindowsDriveLetters {
private static final Logger LOG = LoggerFactory.getLogger(WindowsDriveLetters.class); private static final Logger LOG = LoggerFactory.getLogger(WindowsDriveLetters.class);
private static final Set<Path> D_TO_Z; private static final Set<String> A_TO_Z;
static { static {
try (IntStream stream = IntStream.rangeClosed('D', 'Z')) { try (IntStream stream = IntStream.rangeClosed('A', 'Z')) {
D_TO_Z = stream.mapToObj(i -> Path.of(((char) i)+":\\")).collect(Collectors.toSet()); A_TO_Z = stream.mapToObj(i -> String.valueOf((char) i)).collect(Collectors.toSet());
} }
} }
@@ -35,20 +35,22 @@ public final class WindowsDriveLetters {
public WindowsDriveLetters() { public WindowsDriveLetters() {
} }
public Set<Path> getOccupiedDriveLetters() { public Set<String> getAllDriveLetters() {
return A_TO_Z;
}
public Set<String> getOccupiedDriveLetters() {
if (!SystemUtils.IS_OS_WINDOWS) { if (!SystemUtils.IS_OS_WINDOWS) {
LOG.warn("Attempted to get occupied drive letters on non-Windows machine."); LOG.warn("Attempted to get occupied drive letters on non-Windows machine.");
return Set.of(); return Set.of();
} else { } else {
Iterable<Path> rootDirs = FileSystems.getDefault().getRootDirectories(); Iterable<Path> rootDirs = FileSystems.getDefault().getRootDirectories();
return StreamSupport.stream(rootDirs.spliterator(), false).collect(Collectors.toSet()); return StreamSupport.stream(rootDirs.spliterator(), false).map(p -> p.toString().substring(0,1)).collect(Collectors.toSet());
} }
} }
public Set<Path> getAvailableDriveLetters() { public Set<String> getAvailableDriveLetters() {
Set<Path> occupiedDriveLetters = getOccupiedDriveLetters(); return Sets.difference(A_TO_Z, getOccupiedDriveLetters());
Predicate<Path> isOccupiedDriveLetter = occupiedDriveLetters::contains;
return D_TO_Z.stream().filter(isOccupiedDriveLetter.negate()).collect(Collectors.toSet());
} }
} }
+1 -1
View File
@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>org.cryptomator</groupId> <groupId>org.cryptomator</groupId>
<artifactId>main</artifactId> <artifactId>main</artifactId>
<version>1.5.0-alpha2</version> <version>1.5.0-beta1</version>
</parent> </parent>
<artifactId>keychain</artifactId> <artifactId>keychain</artifactId>
<name>System Keychain Access</name> <name>System Keychain Access</name>
+1 -1
View File
@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>org.cryptomator</groupId> <groupId>org.cryptomator</groupId>
<artifactId>main</artifactId> <artifactId>main</artifactId>
<version>1.5.0-alpha2</version> <version>1.5.0-beta1</version>
</parent> </parent>
<artifactId>launcher</artifactId> <artifactId>launcher</artifactId>
<name>Cryptomator Launcher</name> <name>Cryptomator Launcher</name>
+16 -22
View File
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.cryptomator</groupId> <groupId>org.cryptomator</groupId>
<artifactId>main</artifactId> <artifactId>main</artifactId>
<version>1.5.0-alpha2</version> <version>1.5.0-beta1</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<name>Cryptomator</name> <name>Cryptomator</name>
@@ -24,29 +24,28 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- dependency versions --> <!-- dependency versions -->
<cryptomator.cryptofs.version>1.9.0-beta4</cryptomator.cryptofs.version> <cryptomator.cryptofs.version>1.9.0-rc2</cryptomator.cryptofs.version>
<cryptomator.jni.version>2.2.1</cryptomator.jni.version> <cryptomator.jni.version>2.2.1</cryptomator.jni.version>
<cryptomator.fuse.version>1.2.0</cryptomator.fuse.version> <cryptomator.fuse.version>1.2.1</cryptomator.fuse.version>
<cryptomator.dokany.version>1.1.11</cryptomator.dokany.version> <cryptomator.dokany.version>1.1.11</cryptomator.dokany.version>
<cryptomator.webdav.version>1.0.10</cryptomator.webdav.version> <cryptomator.webdav.version>1.0.10</cryptomator.webdav.version>
<javafx.version>13</javafx.version> <javafx.version>13.0.1</javafx.version>
<commons-io.version>2.6</commons-io.version> <commons-lang3.version>3.9</commons-lang3.version>
<commons-lang3.version>3.8.1</commons-lang3.version>
<easybind.version>1.0.3</easybind.version> <easybind.version>1.0.3</easybind.version>
<guava.version>27.1-jre</guava.version> <guava.version>28.1-jre</guava.version>
<dagger.version>2.22.1</dagger.version> <dagger.version>2.25.2</dagger.version>
<gson.version>2.8.5</gson.version> <gson.version>2.8.6</gson.version>
<slf4j.version>1.7.26</slf4j.version> <slf4j.version>1.7.29</slf4j.version>
<logback.version>1.2.3</logback.version> <logback.version>1.2.3</logback.version>
<junit.jupiter.version>5.4.2</junit.jupiter.version> <junit.jupiter.version>5.5.2</junit.jupiter.version>
<mockito.version>2.27.0</mockito.version> <mockito.version>3.1.0</mockito.version>
<hamcrest.version>2.1</hamcrest.version> <hamcrest.version>2.2</hamcrest.version>
</properties> </properties>
<repositories> <repositories>
@@ -152,11 +151,6 @@
</dependency> </dependency>
<!-- Apache Commons --> <!-- Apache Commons -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
@@ -267,7 +261,7 @@
<plugins> <plugins>
<plugin> <plugin>
<artifactId>maven-dependency-plugin</artifactId> <artifactId>maven-dependency-plugin</artifactId>
<version>3.1.0</version> <version>3.1.1</version>
<executions> <executions>
<execution> <execution>
<id>copy-libs</id> <id>copy-libs</id>
@@ -296,7 +290,7 @@
<plugin> <plugin>
<groupId>org.jacoco</groupId> <groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId> <artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.2</version> <version>0.8.5</version>
<executions> <executions>
<execution> <execution>
<id>prepare-agent</id> <id>prepare-agent</id>
@@ -323,7 +317,7 @@
<plugins> <plugins>
<plugin> <plugin>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version> <version>3.8.1</version>
<configuration> <configuration>
<release>11</release> <release>11</release>
<annotationProcessorPaths> <annotationProcessorPaths>
@@ -338,7 +332,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version> <version>2.22.2</version>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
+1 -5
View File
@@ -4,7 +4,7 @@
<parent> <parent>
<groupId>org.cryptomator</groupId> <groupId>org.cryptomator</groupId>
<artifactId>main</artifactId> <artifactId>main</artifactId>
<version>1.5.0-alpha2</version> <version>1.5.0-beta1</version>
</parent> </parent>
<artifactId>ui</artifactId> <artifactId>ui</artifactId>
<name>Cryptomator GUI</name> <name>Cryptomator GUI</name>
@@ -50,10 +50,6 @@
</dependency> </dependency>
<!-- Apache Commons --> <!-- Apache Commons -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId> <artifactId>commons-lang3</artifactId>
@@ -8,6 +8,7 @@ import javafx.scene.input.KeyCombination;
import javafx.stage.Stage; import javafx.stage.Stage;
import javafx.stage.Window; import javafx.stage.Window;
import org.apache.commons.lang3.SystemUtils; import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.ui.fxapp.FxApplicationScoped; import org.cryptomator.ui.fxapp.FxApplicationScoped;
import javax.inject.Inject; import javax.inject.Inject;
@@ -19,16 +20,25 @@ public class DefaultSceneFactory implements Function<Parent, Scene> {
protected static final KeyCodeCombination ALT_F4 = new KeyCodeCombination(KeyCode.F4, KeyCombination.ALT_DOWN); protected static final KeyCodeCombination ALT_F4 = new KeyCodeCombination(KeyCode.F4, KeyCombination.ALT_DOWN);
protected static final KeyCodeCombination SHORTCUT_W = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN); protected static final KeyCodeCombination SHORTCUT_W = new KeyCodeCombination(KeyCode.W, KeyCombination.SHORTCUT_DOWN);
protected final Settings settings;
@Inject @Inject
public DefaultSceneFactory() {} public DefaultSceneFactory(Settings settings) {
this.settings = settings;
}
@Override @Override
public Scene apply(Parent root) { public Scene apply(Parent root) {
Scene scene = new Scene(root); Scene scene = new Scene(root);
configureRoot(root);
configureScene(scene); configureScene(scene);
return scene; return scene;
} }
protected void configureRoot(Parent root) {
root.nodeOrientationProperty().bind(settings.userInterfaceOrientation());
}
protected void configureScene(Scene scene) { protected void configureScene(Scene scene) {
scene.windowProperty().addListener(observable -> { scene.windowProperty().addListener(observable -> {
Window window = scene.getWindow(); Window window = scene.getWindow();
@@ -7,6 +7,7 @@ import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination; import javafx.scene.input.KeyCombination;
import javafx.stage.Stage; import javafx.stage.Stage;
import org.apache.commons.lang3.SystemUtils; import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.ui.common.DefaultSceneFactory; import org.cryptomator.ui.common.DefaultSceneFactory;
import javax.inject.Inject; import javax.inject.Inject;
@@ -20,7 +21,8 @@ public class MainWindowSceneFactory extends DefaultSceneFactory {
private final Lazy<VaultListController> vaultListController; private final Lazy<VaultListController> vaultListController;
@Inject @Inject
public MainWindowSceneFactory(Lazy<MainWindowController> mainWindowController, Lazy<VaultListController> vaultListController) { public MainWindowSceneFactory(Settings settings, Lazy<MainWindowController> mainWindowController, Lazy<VaultListController> vaultListController) {
super(settings);
this.mainWindowController = mainWindowController; this.mainWindowController = mainWindowController;
this.vaultListController = vaultListController; this.vaultListController = vaultListController;
} }
@@ -1,21 +1,33 @@
package org.cryptomator.ui.preferences; package org.cryptomator.ui.preferences;
import javafx.beans.value.ObservableValue;
import javafx.geometry.NodeOrientation;
import javafx.scene.control.CheckBox; import javafx.scene.control.CheckBox;
import javafx.scene.control.ChoiceBox; import javafx.scene.control.ChoiceBox;
import javafx.scene.control.RadioButton;
import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleGroup;
import javafx.util.StringConverter; import javafx.util.StringConverter;
import org.cryptomator.common.settings.Settings; import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.settings.UiTheme; import org.cryptomator.common.settings.UiTheme;
import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject; import javax.inject.Inject;
@PreferencesScoped @PreferencesScoped
public class GeneralPreferencesController implements FxController { public class GeneralPreferencesController implements FxController {
private static final Logger LOG = LoggerFactory.getLogger(GeneralPreferencesController.class);
private final Settings settings; private final Settings settings;
public ChoiceBox<UiTheme> themeChoiceBox; public ChoiceBox<UiTheme> themeChoiceBox;
public CheckBox startHiddenCheckbox; public CheckBox startHiddenCheckbox;
public CheckBox debugModeCheckbox; public CheckBox debugModeCheckbox;
public ToggleGroup nodeOrientation;
public RadioButton nodeOrientationLtr;
public RadioButton nodeOrientationRtl;
@Inject @Inject
GeneralPreferencesController(Settings settings) { GeneralPreferencesController(Settings settings) {
@@ -30,6 +42,20 @@ public class GeneralPreferencesController implements FxController {
startHiddenCheckbox.selectedProperty().bindBidirectional(settings.startHidden()); startHiddenCheckbox.selectedProperty().bindBidirectional(settings.startHidden());
debugModeCheckbox.selectedProperty().bindBidirectional(settings.debugMode()); debugModeCheckbox.selectedProperty().bindBidirectional(settings.debugMode());
nodeOrientation.selectedToggleProperty().addListener(this::toggleNodeOrientation);
nodeOrientationLtr.setSelected(settings.userInterfaceOrientation().get() == NodeOrientation.LEFT_TO_RIGHT);
nodeOrientationRtl.setSelected(settings.userInterfaceOrientation().get() == NodeOrientation.RIGHT_TO_LEFT);
}
private void toggleNodeOrientation(@SuppressWarnings("unused") ObservableValue<? extends Toggle> observable, @SuppressWarnings("unused") Toggle oldValue, Toggle newValue) {
if (nodeOrientationLtr.equals(newValue)) {
settings.userInterfaceOrientation().set(NodeOrientation.LEFT_TO_RIGHT);
} else if (nodeOrientationRtl.equals(newValue)) {
settings.userInterfaceOrientation().set(NodeOrientation.RIGHT_TO_LEFT);
} else {
LOG.warn("Unexpected toggle option {}", newValue);
}
} }
/* Helper classes */ /* Helper classes */
@@ -16,6 +16,9 @@ import org.cryptomator.ui.common.FxController;
import javax.inject.Inject; import javax.inject.Inject;
/**
* TODO: if WebDAV is selected under Windows, show warning that specific mount options (like selecting a directory as mount point) are _not_ supported
*/
@PreferencesScoped @PreferencesScoped
public class VolumePreferencesController implements FxController { public class VolumePreferencesController implements FxController {
@@ -1,34 +1,76 @@
package org.cryptomator.ui.vaultoptions; package org.cryptomator.ui.vaultoptions;
import com.google.common.base.Strings;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanBinding;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.CheckBox; import javafx.scene.control.CheckBox;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleGroup;
import javafx.stage.DirectoryChooser;
import javafx.stage.Stage;
import javafx.util.StringConverter;
import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.settings.VolumeImpl;
import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.Vault;
import org.cryptomator.common.vaults.WindowsDriveLetters;
import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxController;
import javax.inject.Inject; import javax.inject.Inject;
import java.io.File;
import java.nio.file.Path;
import java.util.ResourceBundle;
import java.util.Set;
/**
* TODO: if WebDav is selected on a windows system, custom mount directory is _not_ supported. This is currently not indicated/shown/etc in the ui
*/
@VaultOptionsScoped @VaultOptionsScoped
public class MountOptionsController implements FxController { public class MountOptionsController implements FxController {
private final Stage window;
private final Vault vault; private final Vault vault;
private final BooleanProperty osIsWindows = new SimpleBooleanProperty(SystemUtils.IS_OS_WINDOWS);
private final BooleanBinding webDavAndWindows;
private final WindowsDriveLetters windowsDriveLetters;
private final ResourceBundle resourceBundle;
public TextField driveName; public TextField driveName;
public CheckBox readOnlyCheckbox; public CheckBox readOnlyCheckbox;
public CheckBox customMountFlagsCheckbox; public CheckBox customMountFlagsCheckbox;
public TextField mountFlags; public TextField mountFlags;
public ToggleGroup mountPoint;
public RadioButton mountPointAuto;
public RadioButton mountPointWinDriveLetter;
public RadioButton mountPointCustomDir;
public ChoiceBox<String> driveLetterSelection;
@Inject @Inject
MountOptionsController(@VaultOptionsWindow Vault vault) { MountOptionsController(@VaultOptionsWindow Stage window, @VaultOptionsWindow Vault vault, Settings settings, WindowsDriveLetters windowsDriveLetters, ResourceBundle resourceBundle) {
this.window = window;
this.vault = vault; this.vault = vault;
this.webDavAndWindows = settings.preferredVolumeImpl().isEqualTo(VolumeImpl.WEBDAV).and(osIsWindows);
this.windowsDriveLetters = windowsDriveLetters;
this.resourceBundle = resourceBundle;
} }
@FXML @FXML
public void initialize() { public void initialize() {
driveName.textProperty().bindBidirectional(vault.getVaultSettings().mountName()); driveName.textProperty().bindBidirectional(vault.getVaultSettings().mountName());
// readonly:
readOnlyCheckbox.selectedProperty().bindBidirectional(vault.getVaultSettings().usesReadOnlyMode()); readOnlyCheckbox.selectedProperty().bindBidirectional(vault.getVaultSettings().usesReadOnlyMode());
mountFlags.disableProperty().bind(customMountFlagsCheckbox.selectedProperty().not());
readOnlyCheckbox.disableProperty().bind(customMountFlagsCheckbox.selectedProperty()); readOnlyCheckbox.disableProperty().bind(customMountFlagsCheckbox.selectedProperty());
// custom mount flags:
mountFlags.disableProperty().bind(customMountFlagsCheckbox.selectedProperty().not());
customMountFlagsCheckbox.setSelected(vault.isHavingCustomMountFlags()); customMountFlagsCheckbox.setSelected(vault.isHavingCustomMountFlags());
if (vault.isHavingCustomMountFlags()) { if (vault.isHavingCustomMountFlags()) {
mountFlags.textProperty().bindBidirectional(vault.getVaultSettings().mountFlags()); mountFlags.textProperty().bindBidirectional(vault.getVaultSettings().mountFlags());
@@ -36,6 +78,25 @@ public class MountOptionsController implements FxController {
} else { } else {
mountFlags.textProperty().bind(vault.defaultMountFlagsProperty()); mountFlags.textProperty().bind(vault.defaultMountFlagsProperty());
} }
// mount point options:
mountPoint.selectedToggleProperty().addListener(this::toggleMountPoint);
driveLetterSelection.getItems().addAll(windowsDriveLetters.getAllDriveLetters());
driveLetterSelection.setConverter(new WinDriveLetterLabelConverter(windowsDriveLetters));
driveLetterSelection.setValue(vault.getVaultSettings().winDriveLetter().get());
vault.getVaultSettings().usesIndividualMountPath().bind(mountPoint.selectedToggleProperty().isEqualTo(mountPointCustomDir));
vault.getVaultSettings().winDriveLetter().bind( //
Bindings.when(mountPoint.selectedToggleProperty().isEqualTo(mountPointWinDriveLetter)) //
.then(driveLetterSelection.getSelectionModel().selectedItemProperty()) //
.otherwise((String) null) //
);
if (vault.getVaultSettings().usesIndividualMountPath().get()) {
mountPoint.selectToggle(mountPointCustomDir);
} else if (!Strings.isNullOrEmpty(vault.getVaultSettings().winDriveLetter().get())) {
mountPoint.selectToggle(mountPointWinDriveLetter);
} else {
mountPoint.selectToggle(mountPointAuto);
}
} }
@FXML @FXML
@@ -51,4 +112,81 @@ public class MountOptionsController implements FxController {
mountFlags.textProperty().bind(vault.defaultMountFlagsProperty()); mountFlags.textProperty().bind(vault.defaultMountFlagsProperty());
} }
} }
@FXML
private void chooseCustomMountPoint() {
DirectoryChooser directoryChooser = new DirectoryChooser();
directoryChooser.setTitle(resourceBundle.getString("vaultOptions.mount.winDirChooser"));
try {
directoryChooser.setInitialDirectory(Path.of(System.getProperty("user.home")).toFile());
} catch (Exception e) {
//NO-OP
}
File file = directoryChooser.showDialog(window);
if (file != null) {
vault.getVaultSettings().individualMountPath().set(file.getAbsolutePath());
} else {
vault.getVaultSettings().individualMountPath().set(null);
}
}
private void toggleMountPoint(@SuppressWarnings("unused") ObservableValue<? extends Toggle> observable, @SuppressWarnings("unused") Toggle oldValue, Toggle newValue) {
if (mountPointCustomDir.equals(newValue) && Strings.isNullOrEmpty(vault.getVaultSettings().individualMountPath().get())) {
chooseCustomMountPoint();
}
}
/**
* Converts 'C' to "C:" to translate between model and GUI.
*/
private static class WinDriveLetterLabelConverter extends StringConverter<String> {
private final Set<String> occupiedDriveLetters;
WinDriveLetterLabelConverter(WindowsDriveLetters windowsDriveLetters) {
this.occupiedDriveLetters = windowsDriveLetters.getOccupiedDriveLetters();
}
@Override
public String toString(String driveLetter) {
if (occupiedDriveLetters.contains(driveLetter)) {
return driveLetter + ": (occupied)"; // TODO localize?
} else {
return driveLetter + ":";
}
}
@Override
public String fromString(String string) {
throw new UnsupportedOperationException();
}
}
// Getter & Setter
public BooleanProperty osIsWindowsProperty() {
return osIsWindows;
}
public boolean getOsIsWindows() {
return osIsWindows.get();
}
public BooleanBinding webDavAndWindowsProperty() {
return webDavAndWindows;
}
public boolean isWebDavAndWindows() {
return webDavAndWindows.get();
}
public StringProperty customMountPathProperty() {
return vault.getVaultSettings().individualMountPath();
}
public String getCustomMountPath() {
return vault.getVaultSettings().individualMountPath().get();
}
} }
@@ -6,10 +6,15 @@
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.RadioButton?>
<?import javafx.scene.control.ToggleGroup?>
<VBox xmlns="http://javafx.com/javafx" <VBox xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml" xmlns:fx="http://javafx.com/fxml"
fx:controller="org.cryptomator.ui.preferences.GeneralPreferencesController" fx:controller="org.cryptomator.ui.preferences.GeneralPreferencesController"
spacing="6"> spacing="6">
<fx:define>
<ToggleGroup fx:id="nodeOrientation"/>
</fx:define>
<padding> <padding>
<Insets topRightBottomLeft="12"/> <Insets topRightBottomLeft="12"/>
</padding> </padding>
@@ -18,6 +23,12 @@
<Label text="%preferences.general.theme"/> <Label text="%preferences.general.theme"/>
<ChoiceBox fx:id="themeChoiceBox"/> <ChoiceBox fx:id="themeChoiceBox"/>
</HBox> </HBox>
<HBox spacing="6" alignment="CENTER_LEFT">
<Label text="Interface Orientation" HBox.hgrow="NEVER"/>
<RadioButton fx:id="nodeOrientationLtr" text="Left to Right" alignment="CENTER_LEFT" toggleGroup="${nodeOrientation}"/>
<RadioButton fx:id="nodeOrientationRtl" text="Right to Left" alignment="CENTER_RIGHT" toggleGroup="${nodeOrientation}"/>
</HBox>
<CheckBox fx:id="startHiddenCheckbox" text="%preferences.general.startHidden"/> <CheckBox fx:id="startHiddenCheckbox" text="%preferences.general.startHidden"/>
@@ -2,6 +2,7 @@
<?import javafx.scene.control.Button?> <?import javafx.scene.control.Button?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import org.cryptomator.ui.controls.FontAwesome5IconView?> <?import org.cryptomator.ui.controls.FontAwesome5IconView?>
<?import javafx.scene.control.Label?>
<VBox xmlns="http://javafx.com/javafx" <VBox xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml" xmlns:fx="http://javafx.com/fxml"
fx:controller="org.cryptomator.ui.mainwindow.VaultDetailNeedsMigrationController" fx:controller="org.cryptomator.ui.mainwindow.VaultDetailNeedsMigrationController"
@@ -11,7 +12,8 @@
<Insets topRightBottomLeft="24"/> <Insets topRightBottomLeft="24"/>
</padding> </padding>
<children> <children>
<Button styleClass="button-large" text="TODO Upgrade Vault" minWidth="120" onAction="#showVaultMigrator"> <Label text="%main.vaultDetail.migratePrompt" wrapText="true"/>
<Button styleClass="button-large" text="%main.vaultDetail.migrateButton" minWidth="120" onAction="#showVaultMigrator">
<graphic> <graphic>
<FontAwesome5IconView glyph="FILE_IMPORT" glyphSize="15"/> <FontAwesome5IconView glyph="FILE_IMPORT" glyphSize="15"/>
</graphic> </graphic>
@@ -1,16 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?> <?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.CheckBox?> <?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<?import javafx.scene.control.RadioButton?>
<?import javafx.scene.control.TextField?> <?import javafx.scene.control.TextField?>
<?import javafx.scene.control.ToggleGroup?>
<?import javafx.scene.layout.HBox?> <?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Text?>
<?import org.cryptomator.ui.controls.AlphanumericTextField?> <?import org.cryptomator.ui.controls.AlphanumericTextField?>
<?import org.cryptomator.ui.controls.FontAwesome5IconView?>
<VBox xmlns="http://javafx.com/javafx" <VBox xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml" xmlns:fx="http://javafx.com/fxml"
fx:controller="org.cryptomator.ui.vaultoptions.MountOptionsController" fx:controller="org.cryptomator.ui.vaultoptions.MountOptionsController"
spacing="6"> spacing="6">
<fx:define>
<ToggleGroup fx:id="mountPoint"/>
</fx:define>
<padding> <padding>
<Insets topRightBottomLeft="12"/> <Insets topRightBottomLeft="12"/>
</padding> </padding>
@@ -32,6 +41,26 @@
</children> </children>
</HBox> </HBox>
<!-- TODO windows drive letter, see https://github.com/cryptomator/cryptomator/blob/1.4.16/main/ui/src/main/java/org/cryptomator/ui/model/Vault.java#L283-L298 --> <Text text="TODO Mount Point"/>
<RadioButton toggleGroup="${mountPoint}" fx:id="mountPointAuto" text="TODO Automatically pick a suitable location"/>
<HBox spacing="6" visible="${controller.osIsWindows}" managed="${controller.osIsWindows}">
<RadioButton toggleGroup="${mountPoint}" fx:id="mountPointWinDriveLetter" text="TODO Choose specific drive letter"/>
<ChoiceBox fx:id="driveLetterSelection" disable="${!mountPointWinDriveLetter.selected}"/>
</HBox>
<RadioButton toggleGroup="${mountPoint}" fx:id="mountPointCustomDir" text="TODO Choose empty directory"/>
<HBox visible="${mountPointCustomDir.selected}">
<padding>
<Insets left="24"/>
</padding>
<children>
<TextField text="${controller.customMountPath}" HBox.hgrow="ALWAYS" maxWidth="Infinity" disable="true"/>
<Button text="TODO change" onAction="#chooseCustomMountPoint" contentDisplay="LEFT">
<graphic>
<FontAwesome5IconView glyph="FOLDER_OPEN" glyphSize="15"/>
</graphic>
</Button>
</children>
</HBox>
</children> </children>
</VBox> </VBox>
@@ -37,12 +37,13 @@ addvaultwizard.new.directoryPickerTitle=Select Directory
addvaultwizard.new.enterPassword=Enter a password for the vault addvaultwizard.new.enterPassword=Enter a password for the vault
addvaultwizard.new.fileAlreadyExists=Vault can not be created at this path because some object already exists. addvaultwizard.new.fileAlreadyExists=Vault can not be created at this path because some object already exists.
addvaultwizard.new.invalidName=Invalid vault name. Please consider a regular directory name. addvaultwizard.new.invalidName=Invalid vault name. Please consider a regular directory name.
addvaultwizard.new.ioException=Selected directory failed a basic test. Make sure to have the appropiate access rights and nothing interferes with Cryptomator. addvaultwizard.new.ioException=Selected directory failed a basic test. Make sure to have the appropriate access rights and nothing interferes with Cryptomator.
### Password ### Password
addvaultwizard.new.reenterPassword=Confirm the password addvaultwizard.new.reenterPassword=Confirm the password
addvaultwizard.new.passwordsMatch=Passwords match! addvaultwizard.new.passwordsMatch=Passwords match!
addvaultwizard.new.passwordsDoNotMatch=Passwords do not match addvaultwizard.new.passwordsDoNotMatch=Passwords do not match
addvaultwizard.new.createVaultBtn=Create Vault addvaultwizard.new.createVaultBtn=Create Vault
### Recovery Key
addvaultwizard.new.recoveryKeyInstruction=This is your recovery key. Keep it safe, it is your only chance to recover your data if you lose your password. addvaultwizard.new.recoveryKeyInstruction=This is your recovery key. Keep it safe, it is your only chance to recover your data if you lose your password.
addvaultwizard.new.recoveryKeySavedCheckbox=Yes, I've made a secure backup of this recovery key addvaultwizard.new.recoveryKeySavedCheckbox=Yes, I've made a secure backup of this recovery key
### Information ### Information
@@ -131,10 +132,12 @@ main.vaultlist.emptyList.onboardingInstruction=Click here to add a vault
main.vaultlist.contextMenu.remove=Remove Vault main.vaultlist.contextMenu.remove=Remove Vault
main.vaultlist.addVaultBtn=Add Vault main.vaultlist.addVaultBtn=Add Vault
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=LOCKED main.vaultDetail.lockedStatus=LOCKED
main.vaultDetail.unlockedStatus=UNLOCKED
main.vaultDetail.unlockBtn=Unlock main.vaultDetail.unlockBtn=Unlock
main.vaultDetail.optionsBtn=Vault Options main.vaultDetail.optionsBtn=Vault Options
### Unlocked
main.vaultDetail.unlockedStatus=UNLOCKED
main.vaultDetail.accessLocation=Your vault's contents are accessible here: main.vaultDetail.accessLocation=Your vault's contents are accessible here:
main.vaultDetail.revealBtn=Reveal Drive main.vaultDetail.revealBtn=Reveal Drive
main.vaultDetail.lockBtn=Lock main.vaultDetail.lockBtn=Lock
@@ -143,6 +146,9 @@ main.vaultDetail.bytesPerSecondWritten=written:
main.vaultDetail.throughput.idle=idle main.vaultDetail.throughput.idle=idle
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Needs Migration
main.vaultDetail.migrateButton=Upgrade Vault
main.vaultDetail.migratePrompt=Your vault needs to be upgraded to a new format, before you can access it
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=Unknown File wrongFileAlert.title=Unknown File
@@ -150,13 +156,17 @@ wrongFileAlert.btn=Okay
wrongFileAlert.information=You have tried to add a file or folder that does not seem to be a Cryptomator vault. To encrypt your data, create and unlock a vault. wrongFileAlert.information=You have tried to add a file or folder that does not seem to be a Cryptomator vault. To encrypt your data, create and unlock a vault.
# Vault Options # Vault Options
## General
vaultOptions.general=General vaultOptions.general=General
vaultOptions.general.changePasswordBtn=Change Password vaultOptions.general.changePasswordBtn=Change Password
vaultOptions.general.showRecoveryKeyBtn=Display Recovery Key vaultOptions.general.showRecoveryKeyBtn=Display Recovery Key
## Mount
vaultOptions.mount=Mounting vaultOptions.mount=Mounting
vaultOptions.mount.readonly=Read-Only vaultOptions.mount.readonly=Read-Only
vaultOptions.mount.driveName=Drive Name vaultOptions.mount.driveName=Drive Name
vaultOptions.mount.customMountFlags=Custom Mount Flags vaultOptions.mount.customMountFlags=Custom Mount Flags
vaultOptions.mount.winDriveLetterOccupied=occupied
vaultOptions.mount.winDirChooser=Pick an empty directory
# Recovery Key # Recovery Key
recoveryKey.title=Recovery Key recoveryKey.title=Recovery Key
@@ -0,0 +1,116 @@
# Locale Specific CSS files such as CJK, RTL,...
# Generics
## Button
generic.button.apply=طبّق
generic.button.back=الى الوراء
generic.button.cancel=الغاء
generic.button.change=تغيير
generic.button.done=تم
generic.button.next=التالي
# Tray Menu
traymenu.showMainWindow=اظهار
traymenu.showPreferencesWindow=تفضيلات
traymenu.quitApplication=انهاء
traymenu.vault.unlock=افتح
traymenu.vault.lock=قفل
traymenu.vault.reveal=إظهار
# Add Vault Wizard
addvaultwizard.title=أضِف مخزنًا
## Welcome
addvaultwizard.welcome.newButton=إنشاء مخزن جديد
addvaultwizard.welcome.existingButton=افتح مخزن موجود
## New
### Name
addvaultwizard.new.nameInstruction=اختر اسم للمخزن
addvaultwizard.new.namePrompt=اسم المخزن
### Location
addvaultwizard.new.locationInstruction=أين يجب على Cryptomator تخزين الملفات المشفرة من قبو الخاص بك؟
addvaultwizard.new.locationLabel=موقع التخزين
addvaultwizard.new.locationPrompt=
addvaultwizard.new.directoryPickerLabel=موقع مخصص
addvaultwizard.new.directoryPickerButton=اختر…
addvaultwizard.new.directoryPickerTitle=اختر القاموس
addvaultwizard.new.enterPassword=أدخل كلمة المرور لهذا الحساب
addvaultwizard.new.fileAlreadyExists=لا يمكن إنشاء مخزن على هذا المسار لأن بعض الملفات موجودة مسبقا.
addvaultwizard.new.invalidName=اسم المخزن غير صالح. يرجى النظر في اسم الدليل المعتاد.
### Password
addvaultwizard.new.reenterPassword=تأكيد كلمة المرور
addvaultwizard.new.passwordsMatch=كلمات المرور متطابقة!
addvaultwizard.new.passwordsDoNotMatch=كلمات المرور غير متطابقة
addvaultwizard.new.createVaultBtn=انشئ حافظة
### Recovery Key
### Information
addvault.new.readme.storageLocation.4=لو انك تحتاج مساعدة, جرب "%s".
## Existing
addvaultwizard.existing.chooseBtn=اختر…
## Success
# Remove Vault
removeVault.confirmBtn=احذف الحافظة
# Change Password
changepassword.enterNewPassword=ادخل كلمة المرور الجديدة لحافظتك
changepassword.reenterNewPassword=تأكيد كلمة المرور الجديدة
changepassword.passwordsMatch=كلمات المرور متطابقة!
changepassword.passwordsDoNotMatch=كلمات المرور غير متطابقة
# Forget Password
forgetPassword.title=نسيت كلمة المرور
forgetPassword.confirmBtn=نسيت كلمة المرور
# Unlock
unlock.title=افتح الحافظة
unlock.savePassword=احفظ كلمة المرور
unlock.unlockBtn=افتح
## Success
unlock.success.revealBtn=افتح الحافظة
# Migration
migration.title=ترقية الحافظة
## Start
migration.start.confirm=نعم, محفظتي متزامنة بالكامل
## Run
migration.run.startMigrationBtn=ترقية الحافظة
## Sucess
migration.success.unlockNow=افتح الان
# Preferences
preferences.title=تفضيلات
## General
preferences.general=عام
## Volume
preferences.volume.webdav.port=منفذ WebDav
## Updates
preferences.updates=تحديثات
preferences.updates.autoUpdateCheck=تحقق من التحديثات اوتوماتيكيا
preferences.updates.checkNowBtn=تحقق الان
# Main Window
main.preferencesBtn.tooltip=تفضيلات
## Vault List
main.vaultlist.addVaultBtn=أضِف مخزنًا
## Vault Detail
### Locked
main.vaultDetail.lockedStatus=مغلق
main.vaultDetail.unlockBtn=افتح
### Unlocked
main.vaultDetail.unlockedStatus=مفتوح
main.vaultDetail.lockBtn=قفل
### Needs Migration
main.vaultDetail.migrateButton=ترقية الحافظة
# Wrong File Alert
# Vault Options
## General
vaultOptions.general=عام
## Mount
# Recovery Key
# Misc
# Quit
@@ -41,6 +41,8 @@ addvaultwizard.new.reenterPassword=Potvrďte heslo
addvaultwizard.new.passwordsMatch=Hesla se shodují! addvaultwizard.new.passwordsMatch=Hesla se shodují!
addvaultwizard.new.passwordsDoNotMatch=Hesla se neshodují addvaultwizard.new.passwordsDoNotMatch=Hesla se neshodují
addvaultwizard.new.createVaultBtn=Vytvořit trezor addvaultwizard.new.createVaultBtn=Vytvořit trezor
### Recovery Key
addvaultwizard.new.recoveryKeyInstruction=Toto je tvůj obnovovací klíč. Uchovej jej v bezpečí, je to jediná šance, jak obnovit data, pokud ztratíš heslo.
### Information ### Information
addvault.new.readme.storageLocation.fileName=CO JE TOTO ZA ADRESÁŘ.rtf addvault.new.readme.storageLocation.fileName=CO JE TOTO ZA ADRESÁŘ.rtf
addvault.new.readme.storageLocation.1=\\fs40\\qc ⚠️ OBSAH TREZORU ⚠️ addvault.new.readme.storageLocation.1=\\fs40\\qc ⚠️ OBSAH TREZORU ⚠️
@@ -126,10 +128,12 @@ main.vaultlist.emptyList.onboardingInstruction=Klikněte sem pro přidání nov
main.vaultlist.contextMenu.remove=Odstranit trezor main.vaultlist.contextMenu.remove=Odstranit trezor
main.vaultlist.addVaultBtn=Přidat trezor main.vaultlist.addVaultBtn=Přidat trezor
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=UZAMKNUTO main.vaultDetail.lockedStatus=UZAMKNUTO
main.vaultDetail.unlockedStatus=ODEMKNUTO
main.vaultDetail.unlockBtn=Odemknout main.vaultDetail.unlockBtn=Odemknout
main.vaultDetail.optionsBtn=Možnosti trezoru main.vaultDetail.optionsBtn=Možnosti trezoru
### Unlocked
main.vaultDetail.unlockedStatus=ODEMKNUTO
main.vaultDetail.accessLocation=Obsah vašeho trezoru je dostupný: main.vaultDetail.accessLocation=Obsah vašeho trezoru je dostupný:
main.vaultDetail.revealBtn=Zobrazit jednotku main.vaultDetail.revealBtn=Zobrazit jednotku
main.vaultDetail.lockBtn=Zamknout main.vaultDetail.lockBtn=Zamknout
@@ -138,6 +142,8 @@ main.vaultDetail.bytesPerSecondWritten=zapsáno:
main.vaultDetail.throughput.idle=nečinný main.vaultDetail.throughput.idle=nečinný
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Needs Migration
main.vaultDetail.migrateButton=Upgrade trezoru
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=neznámý soubor wrongFileAlert.title=neznámý soubor
@@ -145,14 +151,22 @@ wrongFileAlert.btn=OK
wrongFileAlert.information=Zkoušíte přidat soubor či adresář, který zřejmě není trezorem Cryptomatoru. Pro zašifrování vašich dat vytvořte a odemkněte trezor. wrongFileAlert.information=Zkoušíte přidat soubor či adresář, který zřejmě není trezorem Cryptomatoru. Pro zašifrování vašich dat vytvořte a odemkněte trezor.
# Vault Options # Vault Options
## General
vaultOptions.general=Obecné vaultOptions.general=Obecné
vaultOptions.general.changePasswordBtn=Změnit heslo vaultOptions.general.changePasswordBtn=Změnit heslo
vaultOptions.general.showRecoveryKeyBtn=Zobrazit klíč k obnově
## Mount
vaultOptions.mount=Připojení vaultOptions.mount=Připojení
vaultOptions.mount.readonly=Pouze pro čtení vaultOptions.mount.readonly=Pouze pro čtení
vaultOptions.mount.driveName=Jméno jednotky vaultOptions.mount.driveName=Jméno jednotky
vaultOptions.mount.customMountFlags=Vlastní parametry vaultOptions.mount.customMountFlags=Vlastní parametry
vaultOptions.mount.winDriveLetterOccupied=obsazené
vaultOptions.mount.winDirChooser=Vyberte prázdný adresář
# Recovery Key # Recovery Key
recoveryKey.title=Klíč k obnově
recoveryKey.enterPassword.prompt=Zadejte své heslo pro zobrazení obnovovacího klíče pro "%s":
recoveryKey.display.message=Klíč k obnově "%s":
# Misc # Misc
passwordStrength.messageLabel.0=velmi slabé passwordStrength.messageLabel.0=velmi slabé
@@ -31,7 +31,7 @@ addvaultwizard.new.locationInstruction=Wo soll Cryptomator die verschlüsselten
addvaultwizard.new.locationLabel=Speicherort addvaultwizard.new.locationLabel=Speicherort
addvaultwizard.new.locationPrompt= addvaultwizard.new.locationPrompt=
addvaultwizard.new.directoryPickerLabel=Eigener Ort addvaultwizard.new.directoryPickerLabel=Eigener Ort
addvaultwizard.new.directoryPickerButton=Durchsuchen… addvaultwizard.new.directoryPickerButton=Durchsuchen 
addvaultwizard.new.directoryPickerTitle=Wähle ein Verzeichnis addvaultwizard.new.directoryPickerTitle=Wähle ein Verzeichnis
addvaultwizard.new.enterPassword=Vergib ein Passwort für den Tresor addvaultwizard.new.enterPassword=Vergib ein Passwort für den Tresor
addvaultwizard.new.fileAlreadyExists=Der Tresor konnte nicht erstellt werden, da der Speicherort bereits belegt ist. addvaultwizard.new.fileAlreadyExists=Der Tresor konnte nicht erstellt werden, da der Speicherort bereits belegt ist.
@@ -40,38 +40,39 @@ addvaultwizard.new.ioException=Auf das ausgewählte Verzeichnis kann nicht zugeg
### Password ### Password
addvaultwizard.new.reenterPassword=Bestätige das Passwort addvaultwizard.new.reenterPassword=Bestätige das Passwort
addvaultwizard.new.passwordsMatch=Passwörter stimmen überein! addvaultwizard.new.passwordsMatch=Passwörter stimmen überein!
addvaultwizard.new.passwordsDoNotMatch=Passwörter unterscheiden sich addvaultwizard.new.passwordsDoNotMatch=Passwörter stimmen nicht überein
addvaultwizard.new.createVaultBtn=Tresor erstellen addvaultwizard.new.createVaultBtn=Tresor erstellen
### Recovery Key
addvaultwizard.new.recoveryKeyInstruction=Dies ist dein Wiederherstellungsschlüssel. Bewahre ihn sicher auf. Ohne ihn gibt es keine Möglichkeit deine Daten wiederherzustellen, wenn du dein Kennwort verloren hast. addvaultwizard.new.recoveryKeyInstruction=Dies ist dein Wiederherstellungsschlüssel. Bewahre ihn sicher auf. Ohne ihn gibt es keine Möglichkeit deine Daten wiederherzustellen, wenn du dein Kennwort verloren hast.
addvaultwizard.new.recoveryKeySavedCheckbox=Ja, ich habe eine Datensicherung diese Wiederherstellungsschlüssels durchgeführt addvaultwizard.new.recoveryKeySavedCheckbox=Ja, ich habe eine Datensicherung dieses Wiederherstellungsschlüssels durchgeführt
### Information ### Information
addvault.new.readme.storageLocation.fileName=WAS BEDEUTET DIESER ORDNER.rtf addvault.new.readme.storageLocation.fileName=WAS BEDEUTET DIESER ORDNER.rtf
addvault.new.readme.storageLocation.1=\\fs40\\qc ⚠️ TRESORDATEIEN ⚠️ addvault.new.readme.storageLocation.1=\\fs40\\qc ⚠️ TRESORDATEIEN ⚠️
addvault.new.readme.storageLocation.2=Dies ist der Speicherort deines Tresor. Ändere {\\b KEINE} Dateien in diesem Verzeichnis. addvault.new.readme.storageLocation.2=Dies ist der Speicherort deines Tresors. Ändere {\\b KEINE} Dateien in diesem Verzeichnis.
addvault.new.readme.storageLocation.3=Wenn du Dateien mit Cryptomator verschlüsseln möchtest, entsperre den Tresor und verwende das zur Verfügung gestellte Laufwerk. addvault.new.readme.storageLocation.3=Wenn du Dateien mit Cryptomator verschlüsseln möchtest, entsperre den Tresor und verwende das zur Verfügung gestellte Laufwerk.
addvault.new.readme.storageLocation.4=Wenn du Hilfe brauchst, versuche %s. addvault.new.readme.storageLocation.4=Falls du Hilfe brauchst, versuche %s.
addvault.new.readme.accessLocation.fileName=WILLKOMMEN ZUM TRESOR.rtf addvault.new.readme.accessLocation.fileName=WILLKOMMEN ZUM TRESOR.rtf
addvault.new.readme.accessLocation.1=\\fs40\\qc 🔐️ VERSCHLÜSSELTES LAUFWERK 🔐️ addvault.new.readme.accessLocation.1=\\fs40\\qc 🔐️ VERSCHLÜSSELTES LAUFWERK 🔐️
addvault.new.readme.accessLocation.2=Dies ist dein Tresorlaufwerk. Alle Dateien, die zu diesem Laufwerk hinzugefügt werden, werden mit Cryptomator verschlüsselt. Um zu einem späteren Zeitpunkt auf dieses Laufwerk zuzugreifen, entsperre es einfach wieder aus der Cryptomator-Anwendung heraus. addvault.new.readme.accessLocation.2=Dies ist dein Tresorlaufwerk. Alle zu diesem Laufwerk hinzugefügten Dateien werden mit Cryptomator verschlüsselt. Um zu einem späteren Zeitpunkt auf dieses Laufwerk zuzugreifen, entsperre es einfach wieder aus der Cryptomator-Anwendung heraus.
addvault.new.readme.accessLocation.3=Diese Datei kannst du löschen. addvault.new.readme.accessLocation.3=Diese Datei kannst du löschen.
## Existing ## Existing
addvaultwizard.existing.instruction=Bitte wähle die Datei "masterkey.cryptomator" des existierenden Tresors aus. addvaultwizard.existing.instruction=Wähle die Datei masterkey.cryptomator deines vorhandenen Tresors aus.
addvaultwizard.existing.chooseBtn=Durchsuchen… addvaultwizard.existing.chooseBtn=Durchsuchen…
addvaultwizard.existing.filePickerTitle=Masterkey-Datei auswählen addvaultwizard.existing.filePickerTitle=Masterkey-Datei auswählen
addvaultwizard.existing.error=Der Tresor „%s“ ist kein gültiger Tresor und kann nicht hinzugefügt werden. Weitere Informationen findest du im Log. addvaultwizard.existing.error=Der Tresor „%s“ ist kein gültiger Tresor und kann nicht hinzugefügt werden. Weitere Informationen findest du im Diagnoseprotokoll.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Tresor "%s" hinzugefügt.\nEntsperre diesen Tresor jetzt, um auf die Inhalte zugreifen oder welche hinzufügen zu können. Andernfalls entsperre diesen Tresor zu einem späteren Zeitpunkt. addvaultwizard.success.nextStepsInstructions=Tresor %s hinzugefügt.\nUm auf Inhalte zuzugreifen oder welche hinzuzufügen, musst du den Tresor entsperren. Du kannst ihn aber auch zu jedem späteren Zeitpunkt entsperren.
addvaultwizard.success.unlockNow=Jetzt entsperren addvaultwizard.success.unlockNow=Jetzt entsperren
# Remove Vault # Remove Vault
removeVault.title=Tresor entfernen removeVault.title=Tresor entfernen
removeVault.information=Dein Tresor wird nicht gelöscht, er wird lediglich aus der Liste entfernt. Falls du dich später umentscheidest, kannst du ihn später einfach wieder hinzufügen. removeVault.information=Dein Tresor wird nicht gelöscht, sondern lediglich aus Cryptomators Tresorliste entfernt. Du kannst ihn daher später jederzeit wieder hinzufügen.
removeVault.confirmBtn=Tresor entfernen removeVault.confirmBtn=Tresor entfernen
# Change Password # Change Password
changepassword.title=Password ändern changepassword.title=Password ändern
changepassword.enterOldPassword=Gib dein derzeitiges Passwort für "%s" ein changepassword.enterOldPassword=Gib dein derzeitiges Passwort für "%s" ein
changepassword.enterNewPassword=Vergib ein neues Passwort changepassword.enterNewPassword=Gib ein neues Tresorpasswort ein
changepassword.reenterNewPassword=Bestätige das neue Passwort changepassword.reenterNewPassword=Bestätige das neue Passwort
changepassword.passwordsMatch=Passwörter stimmen überein! changepassword.passwordsMatch=Passwörter stimmen überein!
changepassword.passwordsDoNotMatch=Passwörter stimmen nicht überein changepassword.passwordsDoNotMatch=Passwörter stimmen nicht überein
@@ -83,7 +84,7 @@ forgetPassword.information=Dies löscht das gespeicherte Passwort dieses Tresors
forgetPassword.confirmBtn=Passwort vergessen forgetPassword.confirmBtn=Passwort vergessen
# Unlock # Unlock
unlock.title=Tresor öffnen unlock.title=Tresor entsperren
unlock.passwordPrompt=Gib das Passwort für "%s" ein: unlock.passwordPrompt=Gib das Passwort für "%s" ein:
unlock.savePassword=Passwort speichern unlock.savePassword=Passwort speichern
unlock.unlockBtn=Entsperren unlock.unlockBtn=Entsperren
@@ -94,13 +95,13 @@ unlock.success.revealBtn=Tresor anzeigen
# Migration # Migration
migration.title=Tresor aktualisieren migration.title=Tresor aktualisieren
## Start ## Start
migration.start.prompt=Dein Tresor "%s" muss auf ein neueres Format aktualisiert werden. Stell bitte sicher, dass dieser Tresor vollständig synchronisiert ist. migration.start.prompt=Dein Tresor %s muss auf ein neueres Format aktualisiert werden. Stell bitte zuvor sicher, dass dieser Tresor vollständig synchronisiert ist.
migration.start.confirm=Ja, mein Tresor ist vollständig synchronisiert migration.start.confirm=Ja, mein Tresor ist vollständig synchronisiert
## Run ## Run
migration.run.enterPassword=Gib das Passwort für "%s" ein migration.run.enterPassword=Gib das Passwort für %s ein
migration.run.startMigrationBtn=Tresor migrieren migration.run.startMigrationBtn=Tresor migrieren
## Sucess ## Sucess
migration.success.nextStepsInstructions="%s" erfolgreich migriert.\nDu kannst den Tresor jetzt entsperren. migration.success.nextStepsInstructions=%s erfolgreich migriert.\nDu kannst deinen Tresor jetzt entsperren.
migration.success.unlockNow=Jetzt entsperren migration.success.unlockNow=Jetzt entsperren
# Preferences # Preferences
@@ -109,7 +110,7 @@ preferences.title=Einstellungen
preferences.general=Allgemein preferences.general=Allgemein
preferences.general.theme=Erscheinungsbild preferences.general.theme=Erscheinungsbild
preferences.general.startHidden=Cryptomator im Hintergrund starten preferences.general.startHidden=Cryptomator im Hintergrund starten
preferences.general.debugLogging=Debug-Protokollierung preferences.general.debugLogging=Diagnoseprotokoll aktivieren
## Volume ## Volume
preferences.volume=Tresorlaufwerk preferences.volume=Tresorlaufwerk
preferences.volume.type=Laufwerkstyp preferences.volume.type=Laufwerkstyp
@@ -119,7 +120,7 @@ preferences.volume.webdav.scheme=WebDAV-Schema
preferences.updates=Updates preferences.updates=Updates
preferences.updates.currentVersion=Aktuelle Version: %s preferences.updates.currentVersion=Aktuelle Version: %s
preferences.updates.autoUpdateCheck=Automatisch nach Updates suchen preferences.updates.autoUpdateCheck=Automatisch nach Updates suchen
preferences.updates.checkNowBtn=Jetzt prüfen preferences.updates.checkNowBtn=Jetzt suchen
preferences.updates.updateAvailable=Update auf Version %s verfügbar. preferences.updates.updateAvailable=Update auf Version %s verfügbar.
# Main Window # Main Window
@@ -130,10 +131,12 @@ main.vaultlist.emptyList.onboardingInstruction=Klicke hier, um einen Tresor hinz
main.vaultlist.contextMenu.remove=Tresor entfernen main.vaultlist.contextMenu.remove=Tresor entfernen
main.vaultlist.addVaultBtn=Tresor hinzufügen main.vaultlist.addVaultBtn=Tresor hinzufügen
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=GESPERRT main.vaultDetail.lockedStatus=GESPERRT
main.vaultDetail.unlockedStatus=ENTSPERRT
main.vaultDetail.unlockBtn=Entsperren main.vaultDetail.unlockBtn=Entsperren
main.vaultDetail.optionsBtn=Tresoroptionen main.vaultDetail.optionsBtn=Tresoroptionen
### Unlocked
main.vaultDetail.unlockedStatus=ENTSPERRT
main.vaultDetail.accessLocation=Dein Tresorinhalt ist hier erreichbar: main.vaultDetail.accessLocation=Dein Tresorinhalt ist hier erreichbar:
main.vaultDetail.revealBtn=Laufwerk anzeigen main.vaultDetail.revealBtn=Laufwerk anzeigen
main.vaultDetail.lockBtn=Sperren main.vaultDetail.lockBtn=Sperren
@@ -142,6 +145,9 @@ main.vaultDetail.bytesPerSecondWritten=geschrieben:
main.vaultDetail.throughput.idle=Leerlauf main.vaultDetail.throughput.idle=Leerlauf
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Needs Migration
main.vaultDetail.migrateButton=Tresor aktualisieren
main.vaultDetail.migratePrompt=Dein Tresor muss auf ein neues Format aktualisiert werden, bevor Du auf ihn zugreifen kannst
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=Unbekannte Datei wrongFileAlert.title=Unbekannte Datei
@@ -149,17 +155,21 @@ wrongFileAlert.btn=OK
wrongFileAlert.information=Du hast versucht, eine Datei oder einen Ordner hinzuzufügen, der scheinbar kein Cryptomator-Tresor ist. Um Dateien zu verschlüsseln, erstelle und entsperre einen Tresor. wrongFileAlert.information=Du hast versucht, eine Datei oder einen Ordner hinzuzufügen, der scheinbar kein Cryptomator-Tresor ist. Um Dateien zu verschlüsseln, erstelle und entsperre einen Tresor.
# Vault Options # Vault Options
## General
vaultOptions.general=Allgemein vaultOptions.general=Allgemein
vaultOptions.general.changePasswordBtn=Passwort ändern vaultOptions.general.changePasswordBtn=Passwort ändern
vaultOptions.general.showRecoveryKeyBtn=Wiederherstellungsschlüssel anzeigen vaultOptions.general.showRecoveryKeyBtn=Wiederherstellungsschlüssel anzeigen
## Mount
vaultOptions.mount=Laufwerk vaultOptions.mount=Laufwerk
vaultOptions.mount.readonly=Schreibgeschützt vaultOptions.mount.readonly=Schreibgeschützt
vaultOptions.mount.driveName=Laufwerksname vaultOptions.mount.driveName=Laufwerksname
vaultOptions.mount.customMountFlags=Benutzerdefinierte Mount-Flags vaultOptions.mount.customMountFlags=Benutzerdefinierte Mount-Flags
vaultOptions.mount.winDriveLetterOccupied=belegt
vaultOptions.mount.winDirChooser=Wähle ein leeres Verzeichnis
# Recovery Key # Recovery Key
recoveryKey.title=Wiederherstellungsschlüssel recoveryKey.title=Wiederherstellungsschlüssel
recoveryKey.enterPassword.prompt=Gib Dein Kennwort ein um den Wiederherstellungsschlüssel für „%s“ anzuzeigen: recoveryKey.enterPassword.prompt=Gib dein Kennwort ein, um den Wiederherstellungsschlüssel für „%s“ anzuzeigen:
recoveryKey.display.message=Wiederherstellungsschlüssel für „%s“: recoveryKey.display.message=Wiederherstellungsschlüssel für „%s“:
# Misc # Misc
@@ -11,6 +11,7 @@
### Name ### Name
### Location ### Location
### Password ### Password
### Recovery Key
### Information ### Information
## Existing ## Existing
## Success ## Success
@@ -37,10 +38,15 @@
# Main Window # Main Window
## Vault List ## Vault List
## Vault Detail ## Vault Detail
### Locked
### Unlocked
### Needs Migration
# Wrong File Alert # Wrong File Alert
# Vault Options # Vault Options
## General
## Mount
# Recovery Key # Recovery Key
@@ -36,12 +36,13 @@ addvaultwizard.new.directoryPickerTitle=Seleccionar directorio
addvaultwizard.new.enterPassword=Ingresar una contraseña para la bóveda addvaultwizard.new.enterPassword=Ingresar una contraseña para la bóveda
addvaultwizard.new.fileAlreadyExists=La bóveda no puede crearse en esta ruta porque ya existe un objeto. addvaultwizard.new.fileAlreadyExists=La bóveda no puede crearse en esta ruta porque ya existe un objeto.
addvaultwizard.new.invalidName=Nombre de bóveda inválido. Considere un nombre de directorio regular. addvaultwizard.new.invalidName=Nombre de bóveda inválido. Considere un nombre de directorio regular.
addvaultwizard.new.ioException=El directorio seleccionado falló una prueba básica. Asegurarse de tener los derechos de acceso apropiados y que nada interfiere con Cryptomator. addvaultwizard.new.ioException=El directorio seleccionado falló una prueba básica. Asegúrese de tener los derechos de acceso apropiados y que nada interfiere con Cryptomator.
### Password ### Password
addvaultwizard.new.reenterPassword=Confirmar la contraseña addvaultwizard.new.reenterPassword=Confirmar la contraseña
addvaultwizard.new.passwordsMatch=¡Las contraseñas coinciden! addvaultwizard.new.passwordsMatch=¡Las contraseñas coinciden!
addvaultwizard.new.passwordsDoNotMatch=Las contraseñas no coinciden addvaultwizard.new.passwordsDoNotMatch=Las contraseñas no coinciden
addvaultwizard.new.createVaultBtn=Crear bóveda addvaultwizard.new.createVaultBtn=Crear bóveda
### Recovery Key
addvaultwizard.new.recoveryKeyInstruction=Esta es la clave de recuperación. Se debe mantener segura, es la única oportunidad de recuperar los datos si se pierde la contraseña. addvaultwizard.new.recoveryKeyInstruction=Esta es la clave de recuperación. Se debe mantener segura, es la única oportunidad de recuperar los datos si se pierde la contraseña.
addvaultwizard.new.recoveryKeySavedCheckbox=Sí, he hecho una copia de seguridad de esta clave de recuperación addvaultwizard.new.recoveryKeySavedCheckbox=Sí, he hecho una copia de seguridad de esta clave de recuperación
### Information ### Information
@@ -130,10 +131,12 @@ main.vaultlist.emptyList.onboardingInstruction=Hacer clic aquí para añadir una
main.vaultlist.contextMenu.remove=Eliminar bóveda main.vaultlist.contextMenu.remove=Eliminar bóveda
main.vaultlist.addVaultBtn=Añadir bóveda main.vaultlist.addVaultBtn=Añadir bóveda
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=BLOQUEADO main.vaultDetail.lockedStatus=BLOQUEADO
main.vaultDetail.unlockedStatus=DESBLOQUEADO
main.vaultDetail.unlockBtn=Desbloquear main.vaultDetail.unlockBtn=Desbloquear
main.vaultDetail.optionsBtn=Opciones de la bóveda main.vaultDetail.optionsBtn=Opciones de la bóveda
### Unlocked
main.vaultDetail.unlockedStatus=DESBLOQUEADO
main.vaultDetail.accessLocation=El contenido de la bóveda es accesible aquí: main.vaultDetail.accessLocation=El contenido de la bóveda es accesible aquí:
main.vaultDetail.revealBtn=Revelar unidad main.vaultDetail.revealBtn=Revelar unidad
main.vaultDetail.lockBtn=Bloquear main.vaultDetail.lockBtn=Bloquear
@@ -142,6 +145,9 @@ main.vaultDetail.bytesPerSecondWritten=escrito:
main.vaultDetail.throughput.idle=inactivo main.vaultDetail.throughput.idle=inactivo
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Needs Migration
main.vaultDetail.migrateButton=Mejorar bóveda
main.vaultDetail.migratePrompt=Su bóveda necesita ser actualizada a un formato nuevo antes de poder acceder a ella
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=Archivo desconocido wrongFileAlert.title=Archivo desconocido
@@ -149,13 +155,17 @@ wrongFileAlert.btn=Ok
wrongFileAlert.information=Se ha intentado añadir un archivo o carpeta que no parece ser una bóveda de Cryptomator. Para cifrar los datos, crear y desbloquear una bóveda. wrongFileAlert.information=Se ha intentado añadir un archivo o carpeta que no parece ser una bóveda de Cryptomator. Para cifrar los datos, crear y desbloquear una bóveda.
# Vault Options # Vault Options
## General
vaultOptions.general=General vaultOptions.general=General
vaultOptions.general.changePasswordBtn=Cambiar contraseña vaultOptions.general.changePasswordBtn=Cambiar contraseña
vaultOptions.general.showRecoveryKeyBtn=Mostrar la clave de recuperación vaultOptions.general.showRecoveryKeyBtn=Mostrar la clave de recuperación
## Mount
vaultOptions.mount=Montaje vaultOptions.mount=Montaje
vaultOptions.mount.readonly=Sólo lectura vaultOptions.mount.readonly=Sólo lectura
vaultOptions.mount.driveName=Nombre de la unidad vaultOptions.mount.driveName=Nombre de la unidad
vaultOptions.mount.customMountFlags=Opciones de montaje personalizadas vaultOptions.mount.customMountFlags=Opciones de montaje personalizadas
vaultOptions.mount.winDriveLetterOccupied=ocupado
vaultOptions.mount.winDirChooser=Elija un directorio vacío
# Recovery Key # Recovery Key
recoveryKey.title=Clave de recuperación recoveryKey.title=Clave de recuperación
@@ -24,7 +24,7 @@ addvaultwizard.welcome.newButton=Créer un nouveau coffre
addvaultwizard.welcome.existingButton=Ouvrir un coffre existant addvaultwizard.welcome.existingButton=Ouvrir un coffre existant
## New ## New
### Name ### Name
addvaultwizard.new.nameInstruction=Choisissez un nom pour le coffre addvaultwizard.new.nameInstruction=Choisir un nom pour le coffre
addvaultwizard.new.namePrompt=Nom du coffre addvaultwizard.new.namePrompt=Nom du coffre
### Location ### Location
addvaultwizard.new.locationInstruction=Où Cryptomator doit-il stocker les fichiers chiffrés de votre coffre ? addvaultwizard.new.locationInstruction=Où Cryptomator doit-il stocker les fichiers chiffrés de votre coffre ?
@@ -36,12 +36,13 @@ addvaultwizard.new.directoryPickerTitle=Choisissez le répertoire
addvaultwizard.new.enterPassword=Saisissez un mot de passe pour le coffre addvaultwizard.new.enterPassword=Saisissez un mot de passe pour le coffre
addvaultwizard.new.fileAlreadyExists=Le coffre ne peut pas être créé sur ce chemin car un objet existe déjà. addvaultwizard.new.fileAlreadyExists=Le coffre ne peut pas être créé sur ce chemin car un objet existe déjà.
addvaultwizard.new.invalidName=Nom de coffre invalide. Préférez un nom de répertoire habituel. addvaultwizard.new.invalidName=Nom de coffre invalide. Préférez un nom de répertoire habituel.
addvaultwizard.new.ioException=Le répertoire sélectionné a échoué à un test basique. Assurez-vous d'avoir les droits d'accès appropriés et que rien n'interfère avec Cryptomator. addvaultwizard.new.ioException=Le répertoire sélectionné a échoué un test de base. Assurez-vous d'avoir les droits d'accès appropriés et que rien n'interfère avec Cryptomator.
### Password ### Password
addvaultwizard.new.reenterPassword=Confirmez le mot de passe addvaultwizard.new.reenterPassword=Confirmez le mot de passe
addvaultwizard.new.passwordsMatch=Mots de passe identiques ! addvaultwizard.new.passwordsMatch=Mots de passe identiques !
addvaultwizard.new.passwordsDoNotMatch=Les mots de passe ne correspondent pas addvaultwizard.new.passwordsDoNotMatch=Les mots de passe ne correspondent pas
addvaultwizard.new.createVaultBtn=Créer un coffre addvaultwizard.new.createVaultBtn=Créer un coffre
### Recovery Key
addvaultwizard.new.recoveryKeyInstruction=C'est votre clé de récupération. Gardez-la en sécurité, c'est votre seule chance de récupérer vos données si vous perdez votre mot de passe. addvaultwizard.new.recoveryKeyInstruction=C'est votre clé de récupération. Gardez-la en sécurité, c'est votre seule chance de récupérer vos données si vous perdez votre mot de passe.
addvaultwizard.new.recoveryKeySavedCheckbox=Oui, j'ai fait une sauvegarde sécurisée de cette clé de récupération addvaultwizard.new.recoveryKeySavedCheckbox=Oui, j'ai fait une sauvegarde sécurisée de cette clé de récupération
### Information ### Information
@@ -130,10 +131,12 @@ main.vaultlist.emptyList.onboardingInstruction=Cliquez ici pour ajouter un coffr
main.vaultlist.contextMenu.remove=Supprimer le coffre main.vaultlist.contextMenu.remove=Supprimer le coffre
main.vaultlist.addVaultBtn=Ajouter un coffre main.vaultlist.addVaultBtn=Ajouter un coffre
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=VERROUILLÉ main.vaultDetail.lockedStatus=VERROUILLÉ
main.vaultDetail.unlockedStatus=DÉVERROUILLÉ
main.vaultDetail.unlockBtn=Déverrouiller main.vaultDetail.unlockBtn=Déverrouiller
main.vaultDetail.optionsBtn=Option du coffre main.vaultDetail.optionsBtn=Option du coffre
### Unlocked
main.vaultDetail.unlockedStatus=DÉVERROUILLÉ
main.vaultDetail.accessLocation=Le contenu de votre coffre est accessible ici : main.vaultDetail.accessLocation=Le contenu de votre coffre est accessible ici :
main.vaultDetail.revealBtn=Révéler le lecteur main.vaultDetail.revealBtn=Révéler le lecteur
main.vaultDetail.lockBtn=Verrouiller main.vaultDetail.lockBtn=Verrouiller
@@ -142,6 +145,9 @@ main.vaultDetail.bytesPerSecondWritten=écriture :
main.vaultDetail.throughput.idle=inactif main.vaultDetail.throughput.idle=inactif
main.vaultDetail.throughput.kbps=%.1fkB/s main.vaultDetail.throughput.kbps=%.1fkB/s
main.vaultDetail.throughput.mbps=%.1fMB/s main.vaultDetail.throughput.mbps=%.1fMB/s
### Needs Migration
main.vaultDetail.migrateButton=Mettre à jour le coffre
main.vaultDetail.migratePrompt=Votre coffre doit être converti dans un nouveau format avant d'y accéder
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=Fichier inconnu wrongFileAlert.title=Fichier inconnu
@@ -149,13 +155,17 @@ wrongFileAlert.btn=Ok
wrongFileAlert.information=Vous avez essayé dajouter un fichier ou un dossier qui ne semble pas être un coffre Cryptomator. Pour chiffrer vos données, créez un coffre et déverrouillez-le. wrongFileAlert.information=Vous avez essayé dajouter un fichier ou un dossier qui ne semble pas être un coffre Cryptomator. Pour chiffrer vos données, créez un coffre et déverrouillez-le.
# Vault Options # Vault Options
## General
vaultOptions.general=Général vaultOptions.general=Général
vaultOptions.general.changePasswordBtn=Modifier le mot de passe vaultOptions.general.changePasswordBtn=Modifier le mot de passe
vaultOptions.general.showRecoveryKeyBtn=Afficher la clé de récupération vaultOptions.general.showRecoveryKeyBtn=Afficher la clé de récupération
## Mount
vaultOptions.mount=Montage vaultOptions.mount=Montage
vaultOptions.mount.readonly=Lecture seule vaultOptions.mount.readonly=Lecture seule
vaultOptions.mount.driveName=Nom du lecteur vaultOptions.mount.driveName=Nom du lecteur
vaultOptions.mount.customMountFlags=Drapeau de montage personnalisé vaultOptions.mount.customMountFlags=Drapeau de montage personnalisé
vaultOptions.mount.winDriveLetterOccupied=occupé
vaultOptions.mount.winDirChooser=Choisir un répertoire vide
# Recovery Key # Recovery Key
recoveryKey.title=Clé de récupération recoveryKey.title=Clé de récupération
@@ -11,6 +11,7 @@
### Name ### Name
### Location ### Location
### Password ### Password
### Recovery Key
### Information ### Information
## Existing ## Existing
## Success ## Success
@@ -37,10 +38,15 @@
# Main Window # Main Window
## Vault List ## Vault List
## Vault Detail ## Vault Detail
### Locked
### Unlocked
### Needs Migration
# Wrong File Alert # Wrong File Alert
# Vault Options # Vault Options
## General
## Mount
# Recovery Key # Recovery Key
@@ -36,12 +36,13 @@ addvaultwizard.new.directoryPickerTitle=Seleziona cartella
addvaultwizard.new.enterPassword=Inserisci una password per la cassaforte addvaultwizard.new.enterPassword=Inserisci una password per la cassaforte
addvaultwizard.new.fileAlreadyExists=La cassaforte non può essere creata in questo percorso perché un oggetto esiste già. addvaultwizard.new.fileAlreadyExists=La cassaforte non può essere creata in questo percorso perché un oggetto esiste già.
addvaultwizard.new.invalidName=Nome della cassaforte non valido. Si prega di considerare un nome di directory regolare. addvaultwizard.new.invalidName=Nome della cassaforte non valido. Si prega di considerare un nome di directory regolare.
addvaultwizard.new.ioException=La cartella selezionata non ha avuto successo per un test di base. Assicurati di avere i diritti di accesso adeguati e che nulla interferisca con Cryptomator. addvaultwizard.new.ioException=La cartella selezionata non ha superato un test di base. Assicurati di avere i diritti di accesso adeguati e che nulla interferisca con Cryptomator.
### Password ### Password
addvaultwizard.new.reenterPassword=Conferma Password addvaultwizard.new.reenterPassword=Conferma Password
addvaultwizard.new.passwordsMatch=Le password corrispondono! addvaultwizard.new.passwordsMatch=Le password corrispondono!
addvaultwizard.new.passwordsDoNotMatch=Le password non corrispondono addvaultwizard.new.passwordsDoNotMatch=Le password non corrispondono
addvaultwizard.new.createVaultBtn=Crea Cassaforte addvaultwizard.new.createVaultBtn=Crea Cassaforte
### Recovery Key
addvaultwizard.new.recoveryKeyInstruction=Questa è la tua chiave di recupero. Tienilo al sicuro, è la tua unica possibilità di recuperare i tuoi dati se perdi la password. addvaultwizard.new.recoveryKeyInstruction=Questa è la tua chiave di recupero. Tienilo al sicuro, è la tua unica possibilità di recuperare i tuoi dati se perdi la password.
addvaultwizard.new.recoveryKeySavedCheckbox=Sì, ho fatto un backup sicuro di questa chiave di recupero addvaultwizard.new.recoveryKeySavedCheckbox=Sì, ho fatto un backup sicuro di questa chiave di recupero
### Information ### Information
@@ -130,10 +131,12 @@ main.vaultlist.emptyList.onboardingInstruction=Clicca qui per aggiungere una cas
main.vaultlist.contextMenu.remove=Rimuovi Cassaforte main.vaultlist.contextMenu.remove=Rimuovi Cassaforte
main.vaultlist.addVaultBtn=Aggiungi Cassaforte main.vaultlist.addVaultBtn=Aggiungi Cassaforte
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=BLOCCATO main.vaultDetail.lockedStatus=BLOCCATO
main.vaultDetail.unlockedStatus=SBLOCCATO
main.vaultDetail.unlockBtn=Sblocca main.vaultDetail.unlockBtn=Sblocca
main.vaultDetail.optionsBtn=Opzioni Cassaforte main.vaultDetail.optionsBtn=Opzioni Cassaforte
### Unlocked
main.vaultDetail.unlockedStatus=SBLOCCATO
main.vaultDetail.accessLocation=I contenuti della tua cassaforte sono accessibili qui: main.vaultDetail.accessLocation=I contenuti della tua cassaforte sono accessibili qui:
main.vaultDetail.revealBtn=Visualizza disco main.vaultDetail.revealBtn=Visualizza disco
main.vaultDetail.lockBtn=Blocca main.vaultDetail.lockBtn=Blocca
@@ -142,6 +145,9 @@ main.vaultDetail.bytesPerSecondWritten=scrittura:
main.vaultDetail.throughput.idle=inattivo main.vaultDetail.throughput.idle=inattivo
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Needs Migration
main.vaultDetail.migrateButton=Aggiorna la cassaforte
main.vaultDetail.migratePrompt=Prima di potervi accedere la tua cassaforte deve essere aggiornata al nuovo formato
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=File sconosciuto wrongFileAlert.title=File sconosciuto
@@ -149,13 +155,17 @@ wrongFileAlert.btn=OK
wrongFileAlert.information=Hai provato ad aggiungere un file o una cartella che non sembra essere una cassaforte di Cryptomator. Per crittografare i tuoi dati, creare e sbloccare una cassaforte. wrongFileAlert.information=Hai provato ad aggiungere un file o una cartella che non sembra essere una cassaforte di Cryptomator. Per crittografare i tuoi dati, creare e sbloccare una cassaforte.
# Vault Options # Vault Options
## General
vaultOptions.general=Generali vaultOptions.general=Generali
vaultOptions.general.changePasswordBtn=Modifica password vaultOptions.general.changePasswordBtn=Modifica password
vaultOptions.general.showRecoveryKeyBtn=Visualizza la chiave di recupero vaultOptions.general.showRecoveryKeyBtn=Visualizza la chiave di recupero
## Mount
vaultOptions.mount=Montaggio vaultOptions.mount=Montaggio
vaultOptions.mount.readonly=Sola lettura vaultOptions.mount.readonly=Sola lettura
vaultOptions.mount.driveName=Nome drive vaultOptions.mount.driveName=Nome drive
vaultOptions.mount.customMountFlags=Opzioni personalizzate vaultOptions.mount.customMountFlags=Opzioni personalizzate
vaultOptions.mount.winDriveLetterOccupied=occupato
vaultOptions.mount.winDirChooser=Scegli una directory vuota
# Recovery Key # Recovery Key
recoveryKey.title=Chiave di recupero recoveryKey.title=Chiave di recupero
@@ -42,6 +42,7 @@ addvaultwizard.new.reenterPassword=パスワードの確認
addvaultwizard.new.passwordsMatch=パスワードが一致しました! addvaultwizard.new.passwordsMatch=パスワードが一致しました!
addvaultwizard.new.passwordsDoNotMatch=パスワードが一致しません addvaultwizard.new.passwordsDoNotMatch=パスワードが一致しません
addvaultwizard.new.createVaultBtn=金庫を作成 addvaultwizard.new.createVaultBtn=金庫を作成
### Recovery Key
addvaultwizard.new.recoveryKeyInstruction=これは、あなたの回復キーです。大切に保管してください、パスワードを忘れてしまった場合でもデータを復元できる唯一の方法です。 addvaultwizard.new.recoveryKeyInstruction=これは、あなたの回復キーです。大切に保管してください、パスワードを忘れてしまった場合でもデータを復元できる唯一の方法です。
addvaultwizard.new.recoveryKeySavedCheckbox=はい、回復キーを大切に保管しました addvaultwizard.new.recoveryKeySavedCheckbox=はい、回復キーを大切に保管しました
### Information ### Information
@@ -130,10 +131,12 @@ main.vaultlist.emptyList.onboardingInstruction=ここをクリックして金庫
main.vaultlist.contextMenu.remove=金庫を削除 main.vaultlist.contextMenu.remove=金庫を削除
main.vaultlist.addVaultBtn=金庫を追加 main.vaultlist.addVaultBtn=金庫を追加
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=施錠済み main.vaultDetail.lockedStatus=施錠済み
main.vaultDetail.unlockedStatus=解錠済み
main.vaultDetail.unlockBtn=解錠 main.vaultDetail.unlockBtn=解錠
main.vaultDetail.optionsBtn=金庫のオプション main.vaultDetail.optionsBtn=金庫のオプション
### Unlocked
main.vaultDetail.unlockedStatus=解錠済み
main.vaultDetail.accessLocation=アクセス可能な金庫のコンテンツ: main.vaultDetail.accessLocation=アクセス可能な金庫のコンテンツ:
main.vaultDetail.revealBtn=ドライブを表示 main.vaultDetail.revealBtn=ドライブを表示
main.vaultDetail.lockBtn=施錠 main.vaultDetail.lockBtn=施錠
@@ -142,6 +145,9 @@ main.vaultDetail.bytesPerSecondWritten=書き込み:
main.vaultDetail.throughput.idle=アイドル main.vaultDetail.throughput.idle=アイドル
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Needs Migration
main.vaultDetail.migrateButton=金庫をアップグレード
main.vaultDetail.migratePrompt=金庫にアクセスする前に、 金庫を新しい形式にアップグレードする必要があります
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=不明なファイル wrongFileAlert.title=不明なファイル
@@ -149,13 +155,17 @@ wrongFileAlert.btn=Ok
wrongFileAlert.information=Cryptomator の金庫ではない、ファイルかフォルダーを追加しようとしました。データを暗号化するには、金庫を作成して施錠してください。 wrongFileAlert.information=Cryptomator の金庫ではない、ファイルかフォルダーを追加しようとしました。データを暗号化するには、金庫を作成して施錠してください。
# Vault Options # Vault Options
## General
vaultOptions.general=基本設定 vaultOptions.general=基本設定
vaultOptions.general.changePasswordBtn=パスワードの変更 vaultOptions.general.changePasswordBtn=パスワードの変更
vaultOptions.general.showRecoveryKeyBtn=回復キーを表示 vaultOptions.general.showRecoveryKeyBtn=回復キーを表示
## Mount
vaultOptions.mount=マウント vaultOptions.mount=マウント
vaultOptions.mount.readonly=読み取り専用 vaultOptions.mount.readonly=読み取り専用
vaultOptions.mount.driveName=ドライブ名 vaultOptions.mount.driveName=ドライブ名
vaultOptions.mount.customMountFlags=カスタム マウント フラグ vaultOptions.mount.customMountFlags=カスタム マウント フラグ
vaultOptions.mount.winDriveLetterOccupied=使用中
vaultOptions.mount.winDirChooser=空のディレクトリを選択してください
# Recovery Key # Recovery Key
recoveryKey.title=回復キー recoveryKey.title=回復キー
@@ -36,12 +36,13 @@ addvaultwizard.new.directoryPickerTitle=디렉터리 선택
addvaultwizard.new.enterPassword=Vault의 비밀번호를 입력하십시요. addvaultwizard.new.enterPassword=Vault의 비밀번호를 입력하십시요.
addvaultwizard.new.fileAlreadyExists=이미 다른 객체가 존재하고 있어 해당 경로에 Vault를 생성할 수 없습니다. addvaultwizard.new.fileAlreadyExists=이미 다른 객체가 존재하고 있어 해당 경로에 Vault를 생성할 수 없습니다.
addvaultwizard.new.invalidName=유효하지 않은 Vault 이름입니다. 일반적인 디렉터리 이름으로 지정해주십시요. addvaultwizard.new.invalidName=유효하지 않은 Vault 이름입니다. 일반적인 디렉터리 이름으로 지정해주십시요.
addvaultwizard.new.ioException=선택된 디렉터리가 기본테스트에 실패하였습니다. Cryptomator가 적절한 권한을 가지고 있는지, 간섭을 받는 것은 없는지 확인하여 주십시요. addvaultwizard.new.ioException=선택된 디렉터리가 기본테스트에 실패하였습니다. Cryptomator가 적절한 권한을 가지고 있 간섭을 받는 것은 없는지 확인하여 주십시요.
### Password ### Password
addvaultwizard.new.reenterPassword=비밀번호 확인 addvaultwizard.new.reenterPassword=비밀번호 확인
addvaultwizard.new.passwordsMatch=비밀번호 일치! addvaultwizard.new.passwordsMatch=비밀번호 일치!
addvaultwizard.new.passwordsDoNotMatch=비밀번호가 일치하지 않습니다. addvaultwizard.new.passwordsDoNotMatch=비밀번호가 일치하지 않습니다.
addvaultwizard.new.createVaultBtn=Vault 생성 addvaultwizard.new.createVaultBtn=Vault 생성
### Recovery Key
addvaultwizard.new.recoveryKeyInstruction=이것은 복구키입니다. 만일 비밀번호를 분실하셨을 때,데이터를 복구 할 수 있는 유일한 방법이므로, 안전하게 보관하시기 바랍니다. addvaultwizard.new.recoveryKeyInstruction=이것은 복구키입니다. 만일 비밀번호를 분실하셨을 때,데이터를 복구 할 수 있는 유일한 방법이므로, 안전하게 보관하시기 바랍니다.
addvaultwizard.new.recoveryKeySavedCheckbox=예, 이 복구키를 안전하게 백업해두었습니다. addvaultwizard.new.recoveryKeySavedCheckbox=예, 이 복구키를 안전하게 백업해두었습니다.
### Information ### Information
@@ -130,10 +131,12 @@ main.vaultlist.emptyList.onboardingInstruction=Vault를 추가하기 위해 이
main.vaultlist.contextMenu.remove=Vault 제거 main.vaultlist.contextMenu.remove=Vault 제거
main.vaultlist.addVaultBtn=Vault 추가 main.vaultlist.addVaultBtn=Vault 추가
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=잠김 main.vaultDetail.lockedStatus=잠김
main.vaultDetail.unlockedStatus=잠금해제됨
main.vaultDetail.unlockBtn=잠금해제 main.vaultDetail.unlockBtn=잠금해제
main.vaultDetail.optionsBtn=Vault 옵션 main.vaultDetail.optionsBtn=Vault 옵션
### Unlocked
main.vaultDetail.unlockedStatus=잠금해제됨
main.vaultDetail.accessLocation=이 Vault의 내용은 다음의 경로에서 접근할 수 있습니다: main.vaultDetail.accessLocation=이 Vault의 내용은 다음의 경로에서 접근할 수 있습니다:
main.vaultDetail.revealBtn=드라이브 표시 main.vaultDetail.revealBtn=드라이브 표시
main.vaultDetail.lockBtn=잠금 main.vaultDetail.lockBtn=잠금
@@ -142,6 +145,9 @@ main.vaultDetail.bytesPerSecondWritten=쓰기:
main.vaultDetail.throughput.idle=대기 main.vaultDetail.throughput.idle=대기
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Needs Migration
main.vaultDetail.migrateButton=Vault 업그레이드
main.vaultDetail.migratePrompt=Vault에 접근하기 전, 새로운 포멧으로 업그레이드가 필요합니다.
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=알 수 없는 파일 wrongFileAlert.title=알 수 없는 파일
@@ -149,13 +155,17 @@ wrongFileAlert.btn=확인
wrongFileAlert.information=Cryptomator vault에 없는 파일이나 폴더를 추가하려고 하신 것 같습니다. 데이터를 암호화하기 위해 Vault를 생성하시고 잠금해제하시기 바랍니다. wrongFileAlert.information=Cryptomator vault에 없는 파일이나 폴더를 추가하려고 하신 것 같습니다. 데이터를 암호화하기 위해 Vault를 생성하시고 잠금해제하시기 바랍니다.
# Vault Options # Vault Options
## General
vaultOptions.general=일반 vaultOptions.general=일반
vaultOptions.general.changePasswordBtn=비밀번호 변경 vaultOptions.general.changePasswordBtn=비밀번호 변경
vaultOptions.general.showRecoveryKeyBtn=복구 키 출력 vaultOptions.general.showRecoveryKeyBtn=복구 키 출력
## Mount
vaultOptions.mount=드라이브 구성 vaultOptions.mount=드라이브 구성
vaultOptions.mount.readonly=읽기 전용 vaultOptions.mount.readonly=읽기 전용
vaultOptions.mount.driveName=드라이브 이름 vaultOptions.mount.driveName=드라이브 이름
vaultOptions.mount.customMountFlags=사용자 정의 매개변수 사용 vaultOptions.mount.customMountFlags=사용자 정의 매개변수 사용
vaultOptions.mount.winDriveLetterOccupied=사용됨
vaultOptions.mount.winDirChooser=빈 디렉터리를 선택해 주십시요
# Recovery Key # Recovery Key
recoveryKey.title=복구 키 recoveryKey.title=복구 키
@@ -36,12 +36,13 @@ addvaultwizard.new.directoryPickerTitle=Selecteer map
addvaultwizard.new.enterPassword=Voer een wachtwoord voor de kluis in addvaultwizard.new.enterPassword=Voer een wachtwoord voor de kluis in
addvaultwizard.new.fileAlreadyExists=Er kan op deze locatie geen kluis aangemaakt worden, omdat er een bepaald object bestaat. addvaultwizard.new.fileAlreadyExists=Er kan op deze locatie geen kluis aangemaakt worden, omdat er een bepaald object bestaat.
addvaultwizard.new.invalidName=Ongeldige kluisnaam. Overweeg een standaard mapnaam. addvaultwizard.new.invalidName=Ongeldige kluisnaam. Overweeg een standaard mapnaam.
addvaultwizard.new.ioException=De geselecteerde map heeft een basistest niet gehaald. Zorg dat de map de juiste rechten heeft, en dat er niets conflicteert met Cryptomator. addvaultwizard.new.ioException=De geselecteerde map heeft een basistest niet gehaald. Zorg dat de map de juiste rechten heeft, en dat er niet conflicteert met Cryptomator.
### Password ### Password
addvaultwizard.new.reenterPassword=Bevestig het wachtwoord addvaultwizard.new.reenterPassword=Bevestig het wachtwoord
addvaultwizard.new.passwordsMatch=Wachtwoorden komen overeen! addvaultwizard.new.passwordsMatch=Wachtwoorden komen overeen!
addvaultwizard.new.passwordsDoNotMatch=Wachtwoorden komen niet overeen addvaultwizard.new.passwordsDoNotMatch=Wachtwoorden komen niet overeen
addvaultwizard.new.createVaultBtn=Kluis aanmaken addvaultwizard.new.createVaultBtn=Kluis aanmaken
### Recovery Key
addvaultwizard.new.recoveryKeyInstruction=Dit is uw herstelsleutel. Bewaar deze goed, het is de enige mogelijkheid om uw data te herstellen als u uw wachtwoord verliest. addvaultwizard.new.recoveryKeyInstruction=Dit is uw herstelsleutel. Bewaar deze goed, het is de enige mogelijkheid om uw data te herstellen als u uw wachtwoord verliest.
addvaultwizard.new.recoveryKeySavedCheckbox=Ja, ik heb een beveiligde back-up gemaakt van deze herstelsleutel addvaultwizard.new.recoveryKeySavedCheckbox=Ja, ik heb een beveiligde back-up gemaakt van deze herstelsleutel
### Information ### Information
@@ -130,10 +131,12 @@ main.vaultlist.emptyList.onboardingInstruction=Klik hier om een kluis toe te voe
main.vaultlist.contextMenu.remove=Verwijder Kluis main.vaultlist.contextMenu.remove=Verwijder Kluis
main.vaultlist.addVaultBtn=Kluis toevoegen main.vaultlist.addVaultBtn=Kluis toevoegen
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=VERGRENDELD main.vaultDetail.lockedStatus=VERGRENDELD
main.vaultDetail.unlockedStatus=ONTGRENDELD
main.vaultDetail.unlockBtn=Ontgrendel main.vaultDetail.unlockBtn=Ontgrendel
main.vaultDetail.optionsBtn=Kluis-instellingen main.vaultDetail.optionsBtn=Kluis-instellingen
### Unlocked
main.vaultDetail.unlockedStatus=ONTGRENDELD
main.vaultDetail.accessLocation=De inhoud van uw kluis is hier toegankelijk: main.vaultDetail.accessLocation=De inhoud van uw kluis is hier toegankelijk:
main.vaultDetail.revealBtn=Toon Schijf main.vaultDetail.revealBtn=Toon Schijf
main.vaultDetail.lockBtn=Vergrendel main.vaultDetail.lockBtn=Vergrendel
@@ -142,6 +145,9 @@ main.vaultDetail.bytesPerSecondWritten=schrijven:
main.vaultDetail.throughput.idle=inactief main.vaultDetail.throughput.idle=inactief
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Needs Migration
main.vaultDetail.migrateButton=Kluis upgraden
main.vaultDetail.migratePrompt=Uw kluis moet worden bijgewerkt naar een nieuw formaat, voordat u deze kunt openen
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=Onbekend bestand wrongFileAlert.title=Onbekend bestand
@@ -149,13 +155,17 @@ wrongFileAlert.btn=Oké
wrongFileAlert.information=U hebt geprobeerd om een bestand of een map toe te voegen die geen Cryptomator kluis is. Maak en ontgrendel een kluis om uw gegevens te versleutelen. wrongFileAlert.information=U hebt geprobeerd om een bestand of een map toe te voegen die geen Cryptomator kluis is. Maak en ontgrendel een kluis om uw gegevens te versleutelen.
# Vault Options # Vault Options
## General
vaultOptions.general=Algemeen vaultOptions.general=Algemeen
vaultOptions.general.changePasswordBtn=Wijzig wachtwoord vaultOptions.general.changePasswordBtn=Wijzig wachtwoord
vaultOptions.general.showRecoveryKeyBtn=Toon herstelsleutel vaultOptions.general.showRecoveryKeyBtn=Toon herstelsleutel
## Mount
vaultOptions.mount=Aankoppelen vaultOptions.mount=Aankoppelen
vaultOptions.mount.readonly=Alleen-Lezen vaultOptions.mount.readonly=Alleen-Lezen
vaultOptions.mount.driveName=Schijfnaam vaultOptions.mount.driveName=Schijfnaam
vaultOptions.mount.customMountFlags=Aangepaste Aankoppel Parameters vaultOptions.mount.customMountFlags=Aangepaste Aankoppel Parameters
vaultOptions.mount.winDriveLetterOccupied=in gebruik
vaultOptions.mount.winDirChooser=Kies een lege map
# Recovery Key # Recovery Key
recoveryKey.title=Herstelsleutel recoveryKey.title=Herstelsleutel
@@ -11,6 +11,7 @@
### Name ### Name
### Location ### Location
### Password ### Password
### Recovery Key
### Information ### Information
## Existing ## Existing
## Success ## Success
@@ -37,10 +38,15 @@
# Main Window # Main Window
## Vault List ## Vault List
## Vault Detail ## Vault Detail
### Locked
### Unlocked
### Needs Migration
# Wrong File Alert # Wrong File Alert
# Vault Options # Vault Options
## General
## Mount
# Recovery Key # Recovery Key
@@ -36,12 +36,12 @@ addvaultwizard.new.directoryPickerTitle=Selecionar Diretório
addvaultwizard.new.enterPassword=Digite uma senha para o cofre addvaultwizard.new.enterPassword=Digite uma senha para o cofre
addvaultwizard.new.fileAlreadyExists=O cofre não pode ser criado neste local porque algum objeto já existe. addvaultwizard.new.fileAlreadyExists=O cofre não pode ser criado neste local porque algum objeto já existe.
addvaultwizard.new.invalidName=Nome de cofre inválido. Por favor considere usar um nome de diretório comum. addvaultwizard.new.invalidName=Nome de cofre inválido. Por favor considere usar um nome de diretório comum.
addvaultwizard.new.ioException=O diretório selecionado falhou em um teste básico. Certifique-se de ter os direitos de acesso apropriados e que nada interfira com o Cryptomator.
### Password ### Password
addvaultwizard.new.reenterPassword=Confirme a senha addvaultwizard.new.reenterPassword=Confirme a senha
addvaultwizard.new.passwordsMatch=As senhas são idênticas! addvaultwizard.new.passwordsMatch=As senhas são idênticas!
addvaultwizard.new.passwordsDoNotMatch=As senhas são diferentes addvaultwizard.new.passwordsDoNotMatch=As senhas são diferentes
addvaultwizard.new.createVaultBtn=Criar Cofre addvaultwizard.new.createVaultBtn=Criar Cofre
### Recovery Key
addvaultwizard.new.recoveryKeyInstruction=Esta é a sua chave de recuperação. Mantenha-a segura, é sua única chance de recuperar seus dados se você perder sua senha. addvaultwizard.new.recoveryKeyInstruction=Esta é a sua chave de recuperação. Mantenha-a segura, é sua única chance de recuperar seus dados se você perder sua senha.
addvaultwizard.new.recoveryKeySavedCheckbox=Sim, fiz um backup seguro desta chave de recuperação addvaultwizard.new.recoveryKeySavedCheckbox=Sim, fiz um backup seguro desta chave de recuperação
### Information ### Information
@@ -130,10 +130,12 @@ main.vaultlist.emptyList.onboardingInstruction=Clique aqui para adicionar um cof
main.vaultlist.contextMenu.remove=Remover Cofre main.vaultlist.contextMenu.remove=Remover Cofre
main.vaultlist.addVaultBtn=Adicionar Cofre main.vaultlist.addVaultBtn=Adicionar Cofre
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=BLOQUEADO main.vaultDetail.lockedStatus=BLOQUEADO
main.vaultDetail.unlockedStatus=DESBLOQUEADO
main.vaultDetail.unlockBtn=Desbloquear main.vaultDetail.unlockBtn=Desbloquear
main.vaultDetail.optionsBtn=Opções de Cofre main.vaultDetail.optionsBtn=Opções de Cofre
### Unlocked
main.vaultDetail.unlockedStatus=DESBLOQUEADO
main.vaultDetail.accessLocation=O conteúdo do seu cofre está disponível aqui: main.vaultDetail.accessLocation=O conteúdo do seu cofre está disponível aqui:
main.vaultDetail.revealBtn=Revelar Volume main.vaultDetail.revealBtn=Revelar Volume
main.vaultDetail.lockBtn=Bloquear main.vaultDetail.lockBtn=Bloquear
@@ -142,6 +144,8 @@ main.vaultDetail.bytesPerSecondWritten=gravação:
main.vaultDetail.throughput.idle=ocioso main.vaultDetail.throughput.idle=ocioso
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Needs Migration
main.vaultDetail.migrateButton=Atualizar Cofre
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=Arquivo Desconhecido wrongFileAlert.title=Arquivo Desconhecido
@@ -149,9 +153,11 @@ wrongFileAlert.btn=Ok
wrongFileAlert.information=Você tentou adicionar um arquivo ou diretório que não aparenta ser um cofre do Cryptomator. Para criptografar seus dados, crie e desbloqueie um cofre. wrongFileAlert.information=Você tentou adicionar um arquivo ou diretório que não aparenta ser um cofre do Cryptomator. Para criptografar seus dados, crie e desbloqueie um cofre.
# Vault Options # Vault Options
## General
vaultOptions.general=Geral vaultOptions.general=Geral
vaultOptions.general.changePasswordBtn=Alterar Senha vaultOptions.general.changePasswordBtn=Alterar Senha
vaultOptions.general.showRecoveryKeyBtn=Exibir chave de recuperação vaultOptions.general.showRecoveryKeyBtn=Exibir chave de recuperação
## Mount
vaultOptions.mount=Montagem vaultOptions.mount=Montagem
vaultOptions.mount.readonly=Somente Leitura vaultOptions.mount.readonly=Somente Leitura
vaultOptions.mount.driveName=Nome do Volume vaultOptions.mount.driveName=Nome do Volume
@@ -171,4 +177,3 @@ passwordStrength.messageLabel.4=Muito forte
# Quit # Quit
quit.prompt=Sair da aplicação? Existem cofres desbloqueados. quit.prompt=Sair da aplicação? Existem cofres desbloqueados.
quit.lockAndQuit=Bloquear e Sair
@@ -4,10 +4,10 @@
## Button ## Button
generic.button.apply=Применить generic.button.apply=Применить
generic.button.back=Назад generic.button.back=Назад
generic.button.cancel=Отменить generic.button.cancel=Отмена
generic.button.change=Изменить generic.button.change=Изменить
generic.button.done=Готово generic.button.done=Готово
generic.button.next=Вперед generic.button.next=Далее
# Tray Menu # Tray Menu
traymenu.showMainWindow=Показать traymenu.showMainWindow=Показать
@@ -21,7 +21,7 @@ traymenu.vault.reveal=Показать
addvaultwizard.title=Добавить хранилище addvaultwizard.title=Добавить хранилище
## Welcome ## Welcome
addvaultwizard.welcome.newButton=Создать хранилище addvaultwizard.welcome.newButton=Создать хранилище
addvaultwizard.welcome.existingButton=Открыть существующее хранилище addvaultwizard.welcome.existingButton=Открыть имеющееся хранилище
## New ## New
### Name ### Name
addvaultwizard.new.nameInstruction=Выберите имя для хранилища addvaultwizard.new.nameInstruction=Выберите имя для хранилища
@@ -30,42 +30,43 @@ addvaultwizard.new.namePrompt=Имя хранилища
addvaultwizard.new.locationInstruction=Где Cryptomator должен хранить зашифрованные файлы вашего хранилища? addvaultwizard.new.locationInstruction=Где Cryptomator должен хранить зашифрованные файлы вашего хранилища?
addvaultwizard.new.locationLabel=Место хранения addvaultwizard.new.locationLabel=Место хранения
addvaultwizard.new.locationPrompt= addvaultwizard.new.locationPrompt=
addvaultwizard.new.directoryPickerLabel=Пользовательское расположение addvaultwizard.new.directoryPickerLabel=Своё место
addvaultwizard.new.directoryPickerButton=Выбрать… addvaultwizard.new.directoryPickerButton=Выбрать…
addvaultwizard.new.directoryPickerTitle=Выберите каталог addvaultwizard.new.directoryPickerTitle=Выберите каталог
addvaultwizard.new.enterPassword=Введите пароль для хранилища addvaultwizard.new.enterPassword=Введите пароль для хранилища
addvaultwizard.new.fileAlreadyExists=Хранилище не может быть создано по этому пути, потому что некоторые объекты уже существуют. addvaultwizard.new.fileAlreadyExists=Хранилище не может быть создано по этому пути, потому что некоторые объекты уже существуют.
addvaultwizard.new.invalidName=Неверное имя хранилища. Пожалуйста, выберите стандартное название каталога. addvaultwizard.new.invalidName=Неверное имя хранилища. Укажите корректное имя каталога.
addvaultwizard.new.ioException=Выбранный каталог не прошел начальную проверку. Убедитесь, что у вас есть права доступа и ничего не мешает Cryptomator. addvaultwizard.new.ioException=Выбранный каталог не прошел начальную проверку. Убедитесь, что у вас есть права доступа и ничего не мешает Cryptomator.
### Password ### Password
addvaultwizard.new.reenterPassword=Подтвердите пароль addvaultwizard.new.reenterPassword=Подтвердите пароль
addvaultwizard.new.passwordsMatch=Пароли совпадают! addvaultwizard.new.passwordsMatch=Пароли совпадают
addvaultwizard.new.passwordsDoNotMatch=Пароли не совпадают addvaultwizard.new.passwordsDoNotMatch=Пароли не совпадают
addvaultwizard.new.createVaultBtn=Создать хранилище addvaultwizard.new.createVaultBtn=Создать хранилище
addvaultwizard.new.recoveryKeyInstruction=Это ваш ключ восстановления. Держите его в безопасности, это единственный шанс восстановить ваши данные, если вы потеряете пароль. ### Recovery Key
addvaultwizard.new.recoveryKeySavedCheckbox=Да, я сделал резервную копию этого ключа восстановления addvaultwizard.new.recoveryKeyInstruction=Это ключ восстановления. Держите его в надёжном месте - это единственный шанс восстановить данные, если вы потеряете пароль.
addvaultwizard.new.recoveryKeySavedCheckbox=Да, у меня есть резервная копия этого ключа восстановления
### Information ### Information
addvault.new.readme.storageLocation.fileName=ЧТО ЗА КАТАЛОГ.rtf addvault.new.readme.storageLocation.fileName=ЧТО ЗА КАТАЛОГ.rtf
addvault.new.readme.storageLocation.1=\\fs40\\qc ⚠️ ФАЙЛЫ ХРАНИЛИЩА ⚠️ addvault.new.readme.storageLocation.1=\\fs40\\qc ⚠️ ФАЙЛЫ ХРАНИЛИЩ ⚠️
addvault.new.readme.storageLocation.2=Это место хранения вашего хранилища. {\\b НЕ} изменяйте никакие файлы в этом каталоге. addvault.new.readme.storageLocation.2=Это место, где находится ваше хранилище. {\\b НЕ} изменяйте никакие файлы в этом каталоге.
addvault.new.readme.storageLocation.3=Если вы хотите зашифровать файлы с помощью Cryptomator, разблокируйте хранилище и используйте предоставленный диск. addvault.new.readme.storageLocation.3=Если вы хотите зашифровать файлы с помощью Cryptomator, разблокируйте хранилище и используйте предоставленный диск.
addvault.new.readme.storageLocation.4=Если вам нужна помощь, попробуйте %s. addvault.new.readme.storageLocation.4=Нужна помощь? Попробуйте %s.
addvault.new.readme.accessLocation.fileName=ДОБРО ПОЖАЛОВАТЬ В ВАШЕ ХРАНИЛИЩЕ.rtf addvault.new.readme.accessLocation.fileName=ДОБРО ПОЖАЛОВАТЬ В ХРАНИЛИЩЕ.rtf
addvault.new.readme.accessLocation.1=\\fs40\\qc 🔐️ ЗАШИФРОВАННОЕ ХРАНИЛИЩЕ 🔐️ addvault.new.readme.accessLocation.1=\\fs40\\qc 🔐️ ЗАШИФРОВАННЫЙ ТОМ 🔐️
addvault.new.readme.accessLocation.2=Это место доступа в хранилище. Любые файлы, добавленные в этот том, будут зашифрованы Cryptomator. Чтобы получить доступ к этому тому позже, просто разблокируйте его из приложения Cryptomator. addvault.new.readme.accessLocation.2=Это место доступа в хранилище. Любые файлы, добавленные в этот том, будут зашифрованы Cryptomator. Чтобы получить доступ к этому тому позже, просто разблокируйте его из приложения Cryptomator.
addvault.new.readme.accessLocation.3=Можете удалить этот файл. addvault.new.readme.accessLocation.3=Этот файл можно удалить.
## Existing ## Existing
addvaultwizard.existing.instruction=Выберите файл "masterkey.cryptomator" от существующего хранилища. addvaultwizard.existing.instruction=Выберите файл "masterkey.cryptomator" из имеющегося хранилища.
addvaultwizard.existing.chooseBtn=Выбрать… addvaultwizard.existing.chooseBtn=Выбрать…
addvaultwizard.existing.filePickerTitle=Выберите файл MasterKey addvaultwizard.existing.filePickerTitle=Выберите файл мастер-ключа
addvaultwizard.existing.error=Не удается добавить хранилище "%s": Недопустимое хранилище. Пожалуйста, просмотрите журнал событий для получения дополнительной информации. addvaultwizard.existing.error=Невозможно добавить хранилище "%s": оно некорректное. См. информацию в журнале событий.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Добавлено хранилище "%s".\nДля добавления или доступа к контенту вам необходимо разблокировать хранилище. Кроме того, вы можете разблокировать его в любое время позже. addvaultwizard.success.nextStepsInstructions=Добавлено хранилище "%s".\nДля добавления данных или доступа к содержимому нужно разблокировать хранилище. Его можно разблокировать и позже.
addvaultwizard.success.unlockNow=Разблокировать сейчас addvaultwizard.success.unlockNow=Разблокировать
# Remove Vault # Remove Vault
removeVault.title=Удалить хранилище removeVault.title=Удалить хранилище
removeVault.information=Cryptomator просто забудет это хранилище. Вы можете добавить его снова позже. Зашифрованные файлы не будут удалены с жесткого диска. removeVault.information=Cryptomator просто забудет это хранилище. Позже вы можете добавить его снова. Зашифрованные файлы не будут удалены с жёсткого диска.
removeVault.confirmBtn=Удалить хранилище removeVault.confirmBtn=Удалить хранилище
# Change Password # Change Password
@@ -73,43 +74,43 @@ changepassword.title=Изменить пароль
changepassword.enterOldPassword=Введите текущий пароль для "%s" changepassword.enterOldPassword=Введите текущий пароль для "%s"
changepassword.enterNewPassword=Введите новый пароль для хранилища changepassword.enterNewPassword=Введите новый пароль для хранилища
changepassword.reenterNewPassword=Подтвердите новый пароль changepassword.reenterNewPassword=Подтвердите новый пароль
changepassword.passwordsMatch=Пароли совпадают! changepassword.passwordsMatch=Пароли совпадают
changepassword.passwordsDoNotMatch=Пароли не совпадают changepassword.passwordsDoNotMatch=Пароли не совпадают
changepassword.finalConfirmation=Я понимаю, что не смогу восстановить свои данные, если забуду свой пароль changepassword.finalConfirmation=Я понимаю, что не смогу восстановить свои данные, если забуду пароль
# Forget Password # Forget Password
forgetPassword.title=Забыл пароль forgetPassword.title=Не помню пароль
forgetPassword.information=Это удалит сохраненный пароль от этого хранилища из вашего хранилища ключей. forgetPassword.information=Сохранённый пароль от этого хранилища будет удалён из вашей связки ключей.
forgetPassword.confirmBtn=Забыл пароль forgetPassword.confirmBtn=Не помню пароль
# Unlock # Unlock
unlock.title=Разблокировать хранилище unlock.title=Разблокировать хранилище
unlock.passwordPrompt=Введите пароль для %s unlock.passwordPrompt=Введите пароль для "%s"
unlock.savePassword=Сохранить пароль unlock.savePassword=Сохранить пароль
unlock.unlockBtn=Разблокировать unlock.unlockBtn=Разблокировать
## Success ## Success
unlock.success.message="%s" успешно разблокировано! Ваше хранилище теперь доступно. unlock.success.message=Разблокировка "%s" успешно выполнена! Доступ в хранилище открыт.
unlock.success.revealBtn=Показать хранилище unlock.success.revealBtn=Показать хранилище
# Migration # Migration
migration.title=Обновить хранилище migration.title=Обновить хранилище
## Start ## Start
migration.start.prompt=Ваше хранилище "%s" должно быть обновлено до более нового формата. Перед тем, как продолжить, убедитесь в отсутствии отложенной синхронизации, которая может повлиять на хранилище. migration.start.prompt=Хранилище "%s" нужно обновить до более нового формата. Прежде чем продолжить, убедитесь, что нет отложенной синхронизации, которая может повлиять на хранилище.
migration.start.confirm=Да, мое хранилище полностью синхронизировано migration.start.confirm=Да, моё хранилище полностью синхронизировано
## Run ## Run
migration.run.enterPassword=Введите пароль для %s migration.run.enterPassword=Введите пароль для "%s"
migration.run.startMigrationBtn=Перенести хранилище migration.run.startMigrationBtn=Перенести хранилище
## Sucess ## Sucess
migration.success.nextStepsInstructions="%s" перенесено успешно.\nТеперь вы можете разблокировать хранилище. migration.success.nextStepsInstructions=Перенос "%s" успешно выполнен.\nТеперь можно разблокировать хранилище.
migration.success.unlockNow=Разблокировать сейчас migration.success.unlockNow=Разблокировать
# Preferences # Preferences
preferences.title=Настройки preferences.title=Настройки
## General ## General
preferences.general=Общее preferences.general=Общие
preferences.general.theme=Внешний вид preferences.general.theme=Оформление
preferences.general.startHidden=Скрыть окно при запуске Cryptomator preferences.general.startHidden=Скрывать окно при запуске Cryptomator
preferences.general.debugLogging=Включить ведение журнала отладки preferences.general.debugLogging=Вести журнал отладки
## Volume ## Volume
preferences.volume=Виртуальный диск preferences.volume=Виртуальный диск
preferences.volume.type=Тип тома preferences.volume.type=Тип тома
@@ -119,47 +120,56 @@ preferences.volume.webdav.scheme=Схема WebDAV
preferences.updates=Обновления preferences.updates=Обновления
preferences.updates.currentVersion=Текущая версия: %s preferences.updates.currentVersion=Текущая версия: %s
preferences.updates.autoUpdateCheck=Автоматически проверять наличие обновлений preferences.updates.autoUpdateCheck=Автоматически проверять наличие обновлений
preferences.updates.checkNowBtn=Проверить сейчас preferences.updates.checkNowBtn=Проверить
preferences.updates.updateAvailable=Доступно обновление до версии %s. preferences.updates.updateAvailable=Доступно обновление до версии %s.
# Main Window # Main Window
main.closeBtn.tooltip=Закрыть main.closeBtn.tooltip=Закрыть
main.preferencesBtn.tooltip=Настройки main.preferencesBtn.tooltip=Настройки
## Vault List ## Vault List
main.vaultlist.emptyList.onboardingInstruction=Нажмите здесь для добавления хранилища main.vaultlist.emptyList.onboardingInstruction=Нажмите здесь, чтобы добавить хранилище
main.vaultlist.contextMenu.remove=Удалить хранилище main.vaultlist.contextMenu.remove=Удалить хранилище
main.vaultlist.addVaultBtn=Добавить хранилище main.vaultlist.addVaultBtn=Добавить хранилище
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=ЗАБЛОКИРОВАНО main.vaultDetail.lockedStatus=ЗАБЛОКИРОВАНО
main.vaultDetail.unlockedStatus=РАЗБЛОКИРОВАНО
main.vaultDetail.unlockBtn=Разблокировать main.vaultDetail.unlockBtn=Разблокировать
main.vaultDetail.optionsBtn=Параметры хранилища main.vaultDetail.optionsBtn=Параметры хранилища
main.vaultDetail.accessLocation=Содержимое вашего хранилища доступно здесь: ### Unlocked
main.vaultDetail.unlockedStatus=РАЗБЛОКИРОВАНО
main.vaultDetail.accessLocation=Содержимое хранилища доступно здесь:
main.vaultDetail.revealBtn=Показать диск main.vaultDetail.revealBtn=Показать диск
main.vaultDetail.lockBtn=Заблокировать main.vaultDetail.lockBtn=Заблокировать
main.vaultDetail.bytesPerSecondRead=прочитано: main.vaultDetail.bytesPerSecondRead=чтение:
main.vaultDetail.bytesPerSecondWritten=записано: main.vaultDetail.bytesPerSecondWritten=запись:
main.vaultDetail.throughput.idle=бездействие main.vaultDetail.throughput.idle=бездействие
main.vaultDetail.throughput.kbps=%.1f Кб/с main.vaultDetail.throughput.kbps=%.1f КиБ/с
main.vaultDetail.throughput.mbps=%.1f Мб/с main.vaultDetail.throughput.mbps=%.1f МиБ/с
### Needs Migration
main.vaultDetail.migrateButton=Обновить хранилище
main.vaultDetail.migratePrompt=Хранилище должно быть обновлено до нового формата, прежде чем вы сможете получить к нему доступ
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=Неизвестный файл wrongFileAlert.title=Неизвестный файл
wrongFileAlert.btn=ОК wrongFileAlert.btn=OK
wrongFileAlert.information=Вы пытались добавить файл или папку, которые, похоже, не являются хранилищем Cryptomator. Чтобы зашифровать ваши данные, создайте и разблокируйте хранилище. wrongFileAlert.information=Вы пытались добавить файл или папку, которые, похоже, не являются хранилищем Cryptomator. Чтобы зашифровать данные, создайте и разблокируйте хранилище.
# Vault Options # Vault Options
vaultOptions.general=Общее ## General
vaultOptions.general=Общие
vaultOptions.general.changePasswordBtn=Изменить пароль vaultOptions.general.changePasswordBtn=Изменить пароль
vaultOptions.general.showRecoveryKeyBtn=Отобразить ключ восстановления vaultOptions.general.showRecoveryKeyBtn=Показать ключ восстановления
## Mount
vaultOptions.mount=Монтирование vaultOptions.mount=Монтирование
vaultOptions.mount.readonly=Только чтение vaultOptions.mount.readonly=Только чтение
vaultOptions.mount.driveName=Имя диска vaultOptions.mount.driveName=Имя диска
vaultOptions.mount.customMountFlags=Пользовательские флаги монтирования vaultOptions.mount.customMountFlags=Свои флаги монтирования
vaultOptions.mount.winDriveLetterOccupied=занято
vaultOptions.mount.winDirChooser=Выберите пустой каталог
# Recovery Key # Recovery Key
recoveryKey.title=Ключ восстановления recoveryKey.title=Ключ восстановления
recoveryKey.enterPassword.prompt=Введите пароль для отображения ключа восстановления для "%s": recoveryKey.enterPassword.prompt=Введите пароль, чтобы показать ключ для "%s":
recoveryKey.display.message=Ключ восстановления для "%s": recoveryKey.display.message=Ключ восстановления для "%s":
# Misc # Misc
@@ -36,12 +36,12 @@ addvaultwizard.new.directoryPickerTitle=Välj katalog
addvaultwizard.new.enterPassword=Ange ett lösenord för valvet addvaultwizard.new.enterPassword=Ange ett lösenord för valvet
addvaultwizard.new.fileAlreadyExists=Valvet kan inte skapas på denna plats då vissa filer redan finns. addvaultwizard.new.fileAlreadyExists=Valvet kan inte skapas på denna plats då vissa filer redan finns.
addvaultwizard.new.invalidName=Felaktigt namn på valvet. Vänligen ange ett vanligt katalognamn. addvaultwizard.new.invalidName=Felaktigt namn på valvet. Vänligen ange ett vanligt katalognamn.
addvaultwizard.new.ioException=En inledande kontroll av angiven katalog misslyckades. Kontrollera att du har tillräcklig åtkomst till den, och att inget stör Cryptomator.
### Password ### Password
addvaultwizard.new.reenterPassword=Bekräfta lösenordet addvaultwizard.new.reenterPassword=Bekräfta lösenordet
addvaultwizard.new.passwordsMatch=Lösenorden stämmer överens! addvaultwizard.new.passwordsMatch=Lösenorden stämmer överens!
addvaultwizard.new.passwordsDoNotMatch=Lösenorden stämmer inte överens addvaultwizard.new.passwordsDoNotMatch=Lösenorden stämmer inte överens
addvaultwizard.new.createVaultBtn=Skapa Valv addvaultwizard.new.createVaultBtn=Skapa Valv
### Recovery Key
addvaultwizard.new.recoveryKeyInstruction=Detta är din återställningsnyckel. Förvara den väl, den är din enda chans att återställa din data om du tappar bort ditt lösenord. addvaultwizard.new.recoveryKeyInstruction=Detta är din återställningsnyckel. Förvara den väl, den är din enda chans att återställa din data om du tappar bort ditt lösenord.
addvaultwizard.new.recoveryKeySavedCheckbox=Ja, jag har säkerhetskopierat återställningsnyckeln addvaultwizard.new.recoveryKeySavedCheckbox=Ja, jag har säkerhetskopierat återställningsnyckeln
### Information ### Information
@@ -58,6 +58,7 @@ addvault.new.readme.accessLocation.3=Du kan ta bort denna fil.
addvaultwizard.existing.instruction=Välj "masterkey.cryptomator" för ditt befintliga valv. addvaultwizard.existing.instruction=Välj "masterkey.cryptomator" för ditt befintliga valv.
addvaultwizard.existing.chooseBtn=Välj… addvaultwizard.existing.chooseBtn=Välj…
addvaultwizard.existing.filePickerTitle=Välj Masterkey-fil addvaultwizard.existing.filePickerTitle=Välj Masterkey-fil
addvaultwizard.existing.error=Kunde inte lägga till valv "%s": Inget giltigt valv. Vänligen kolla i loggen för mer information.
## Success ## Success
addvaultwizard.success.nextStepsInstructions=Lade till valv "%s".\nDu behöver låsa upp detta valv för att komma åt eller lägga till innehåll. Du kan även låsa upp det vid ett senare tillfälle. addvaultwizard.success.nextStepsInstructions=Lade till valv "%s".\nDu behöver låsa upp detta valv för att komma åt eller lägga till innehåll. Du kan även låsa upp det vid ett senare tillfälle.
addvaultwizard.success.unlockNow=Lås upp nu addvaultwizard.success.unlockNow=Lås upp nu
@@ -129,10 +130,12 @@ main.vaultlist.emptyList.onboardingInstruction=Klicka här för att lägga till
main.vaultlist.contextMenu.remove=Ta bort valv main.vaultlist.contextMenu.remove=Ta bort valv
main.vaultlist.addVaultBtn=Lägg till valv main.vaultlist.addVaultBtn=Lägg till valv
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=LÅST main.vaultDetail.lockedStatus=LÅST
main.vaultDetail.unlockedStatus=UPPLÅST
main.vaultDetail.unlockBtn=Lås upp main.vaultDetail.unlockBtn=Lås upp
main.vaultDetail.optionsBtn=Valv-inställningar main.vaultDetail.optionsBtn=Valv-inställningar
### Unlocked
main.vaultDetail.unlockedStatus=UPPLÅST
main.vaultDetail.accessLocation=Ditt valv's innehåll kan nås härifrån: main.vaultDetail.accessLocation=Ditt valv's innehåll kan nås härifrån:
main.vaultDetail.revealBtn=Visa enhet main.vaultDetail.revealBtn=Visa enhet
main.vaultDetail.lockBtn=Lås main.vaultDetail.lockBtn=Lås
@@ -141,6 +144,9 @@ main.vaultDetail.bytesPerSecondWritten=skrivet:
main.vaultDetail.throughput.idle=inaktiv main.vaultDetail.throughput.idle=inaktiv
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Needs Migration
main.vaultDetail.migrateButton=Uppgradera valv
main.vaultDetail.migratePrompt=Ditt valv behöver uppgraderas till ett nytt format innan du kan använda det
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=Okänd fil wrongFileAlert.title=Okänd fil
@@ -148,13 +154,17 @@ wrongFileAlert.btn=Ok
wrongFileAlert.information=Du försöker lägga till en fil eller katalog som inte verkar vara ett Cryptomator-valv. För att kryptera din data, skapa och lås upp ett valv. wrongFileAlert.information=Du försöker lägga till en fil eller katalog som inte verkar vara ett Cryptomator-valv. För att kryptera din data, skapa och lås upp ett valv.
# Vault Options # Vault Options
## General
vaultOptions.general=Allmänt vaultOptions.general=Allmänt
vaultOptions.general.changePasswordBtn=Ändra lösenord vaultOptions.general.changePasswordBtn=Ändra lösenord
vaultOptions.general.showRecoveryKeyBtn=Visa Återsällningsnyckel vaultOptions.general.showRecoveryKeyBtn=Visa Återsällningsnyckel
## Mount
vaultOptions.mount=Montering vaultOptions.mount=Montering
vaultOptions.mount.readonly=Skrivskyddad vaultOptions.mount.readonly=Skrivskyddad
vaultOptions.mount.driveName=Enhetsnamn vaultOptions.mount.driveName=Enhetsnamn
vaultOptions.mount.customMountFlags=Egna monterings-flaggor vaultOptions.mount.customMountFlags=Egna monterings-flaggor
vaultOptions.mount.winDriveLetterOccupied=upptagen
vaultOptions.mount.winDirChooser=Välj en tom katalog
# Recovery Key # Recovery Key
recoveryKey.title=Återställningsnyckel recoveryKey.title=Återställningsnyckel
@@ -36,11 +36,13 @@ addvaultwizard.new.directoryPickerTitle=Dizin Seç
addvaultwizard.new.enterPassword=Kasa için bir şifre girin addvaultwizard.new.enterPassword=Kasa için bir şifre girin
addvaultwizard.new.fileAlreadyExists=Bazı nesneler varolduğu için kasa bu yolda oluşturulamıyor. addvaultwizard.new.fileAlreadyExists=Bazı nesneler varolduğu için kasa bu yolda oluşturulamıyor.
addvaultwizard.new.invalidName=Geçersiz kasa adı. Lütfen normal bir dizin adı kullanın. addvaultwizard.new.invalidName=Geçersiz kasa adı. Lütfen normal bir dizin adı kullanın.
addvaultwizard.new.ioException=Seçilen dizin temel bir testte başarısız oldu. Uygun erişim haklarına sahip olduğunuzdan ve hiçbir şeyin Cryptomator'u engellemediğinden emin olun.
### Password ### Password
addvaultwizard.new.reenterPassword=Şifreyi onayla addvaultwizard.new.reenterPassword=Şifreyi onayla
addvaultwizard.new.passwordsMatch=Şifreler eşleşti! addvaultwizard.new.passwordsMatch=Şifreler eşleşti!
addvaultwizard.new.passwordsDoNotMatch=Şifreler eşleşmiyor addvaultwizard.new.passwordsDoNotMatch=Şifreler eşleşmiyor
addvaultwizard.new.createVaultBtn=Kasa Oluştur addvaultwizard.new.createVaultBtn=Kasa Oluştur
### Recovery Key
addvaultwizard.new.recoveryKeyInstruction=111/5000\nBu senin kurtarma anahtarın. Güvende tutun, şifrenizi kaybederseniz verilerinizi kurtarmak için tek şansınız bu. addvaultwizard.new.recoveryKeyInstruction=111/5000\nBu senin kurtarma anahtarın. Güvende tutun, şifrenizi kaybederseniz verilerinizi kurtarmak için tek şansınız bu.
addvaultwizard.new.recoveryKeySavedCheckbox=Evet, bu kurtarma anahtarının güvenli bir şekilde yedeğini aldım addvaultwizard.new.recoveryKeySavedCheckbox=Evet, bu kurtarma anahtarının güvenli bir şekilde yedeğini aldım
### Information ### Information
@@ -57,6 +59,7 @@ addvault.new.readme.accessLocation.3=Bu dosyayı silmeye çekinmeyin.
addvaultwizard.existing.instruction=Varolan kasanızın "masterkey.cryptomator" dosyasını seçin. addvaultwizard.existing.instruction=Varolan kasanızın "masterkey.cryptomator" dosyasını seçin.
addvaultwizard.existing.chooseBtn=Seç… addvaultwizard.existing.chooseBtn=Seç…
addvaultwizard.existing.filePickerTitle=Masterkey Dosyasını Seç addvaultwizard.existing.filePickerTitle=Masterkey Dosyasını Seç
addvaultwizard.existing.error="%s" kasası eklenemiyor: Geçerli bir kasa değil. Daha fazla bilgi için lütfen hata günlüğüne bakınız.
## Success ## Success
addvaultwizard.success.nextStepsInstructions="%s" kasası eklendi.\nİçeriğe erişmek veya içerik eklemek için bu kasanın kilidini açmanız gerekir. Alternatif olarak, daha sonra herhangi bir zamanda kilidini açabilirsiniz. addvaultwizard.success.nextStepsInstructions="%s" kasası eklendi.\nİçeriğe erişmek veya içerik eklemek için bu kasanın kilidini açmanız gerekir. Alternatif olarak, daha sonra herhangi bir zamanda kilidini açabilirsiniz.
addvaultwizard.success.unlockNow=Kilidi Şimdi Aç addvaultwizard.success.unlockNow=Kilidi Şimdi Aç
@@ -128,10 +131,12 @@ main.vaultlist.emptyList.onboardingInstruction=Kasa eklemek için buraya tıklay
main.vaultlist.contextMenu.remove=Kasayı Sil main.vaultlist.contextMenu.remove=Kasayı Sil
main.vaultlist.addVaultBtn=Kasa Ekle main.vaultlist.addVaultBtn=Kasa Ekle
## Vault Detail ## Vault Detail
### Locked
main.vaultDetail.lockedStatus=KİLİTLİ main.vaultDetail.lockedStatus=KİLİTLİ
main.vaultDetail.unlockedStatus=KİLİDİ AÇIK
main.vaultDetail.unlockBtn=Kilidi Aç main.vaultDetail.unlockBtn=Kilidi Aç
main.vaultDetail.optionsBtn=Kasa Ayarları main.vaultDetail.optionsBtn=Kasa Ayarları
### Unlocked
main.vaultDetail.unlockedStatus=KİLİDİ AÇIK
main.vaultDetail.accessLocation=Kasa içeriğinize buradan erişilebilir: main.vaultDetail.accessLocation=Kasa içeriğinize buradan erişilebilir:
main.vaultDetail.revealBtn=Sürücüyü Göster main.vaultDetail.revealBtn=Sürücüyü Göster
main.vaultDetail.lockBtn=Kilitle main.vaultDetail.lockBtn=Kilitle
@@ -140,6 +145,9 @@ main.vaultDetail.bytesPerSecondWritten=yazma:
main.vaultDetail.throughput.idle=boşta main.vaultDetail.throughput.idle=boşta
main.vaultDetail.throughput.kbps=%.1f kiB/s main.vaultDetail.throughput.kbps=%.1f kiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s main.vaultDetail.throughput.mbps=%.1f MiB/s
### Needs Migration
main.vaultDetail.migrateButton=Kasayı Güncelle
main.vaultDetail.migratePrompt=Kasaya erişmeden önce kasanızın yeni bir formata yükseltilmesi gerekiyor
# Wrong File Alert # Wrong File Alert
wrongFileAlert.title=Bilinmeyen Dosya wrongFileAlert.title=Bilinmeyen Dosya
@@ -147,14 +155,22 @@ wrongFileAlert.btn=Tamam
wrongFileAlert.information=Cryptomator kasası gibi görünmeyen bir dosya veya klasör eklemeye çalıştınız. Verilerinizi şifrelemek için bir kasa oluşturun ve kilidini açın. wrongFileAlert.information=Cryptomator kasası gibi görünmeyen bir dosya veya klasör eklemeye çalıştınız. Verilerinizi şifrelemek için bir kasa oluşturun ve kilidini açın.
# Vault Options # Vault Options
## General
vaultOptions.general=Genel vaultOptions.general=Genel
vaultOptions.general.changePasswordBtn=Şifreyi Değiştir vaultOptions.general.changePasswordBtn=Şifreyi Değiştir
vaultOptions.general.showRecoveryKeyBtn=Kurtarma Anahtarını Göster
## Mount
vaultOptions.mount=Bağlantı vaultOptions.mount=Bağlantı
vaultOptions.mount.readonly=Salt-Okunur vaultOptions.mount.readonly=Salt-Okunur
vaultOptions.mount.driveName=Sürücü Adı vaultOptions.mount.driveName=Sürücü Adı
vaultOptions.mount.customMountFlags=Özel Bağlantı Parametreleri vaultOptions.mount.customMountFlags=Özel Bağlantı Parametreleri
vaultOptions.mount.winDriveLetterOccupied=meşgul
vaultOptions.mount.winDirChooser=Boş bir dizin seçin
# Recovery Key # Recovery Key
recoveryKey.title=Kurtarma Anahtarı
recoveryKey.enterPassword.prompt="%s" için kurtarma anahtarını göstermek üzere şifrenizi girin:
recoveryKey.display.message="%s" için Kurtarma Anahtarı:
# Misc # Misc
passwordStrength.messageLabel.0=Çok zayıf passwordStrength.messageLabel.0=Çok zayıf