diff --git a/dist/linux/appimage/.gitignore b/dist/linux/appimage/.gitignore
index 1ed40c771..3e0cd2a39 100644
--- a/dist/linux/appimage/.gitignore
+++ b/dist/linux/appimage/.gitignore
@@ -1,4 +1,6 @@
-# created during build
+# downloaded/created during build
+openjfx-jmods.zip
+*.jmod
Cryptomator.AppDir
*.AppImage
*.AppImage.zsync
\ No newline at end of file
diff --git a/dist/linux/appimage/build.sh b/dist/linux/appimage/build.sh
index a8775292a..e0af3999a 100755
--- a/dist/linux/appimage/build.sh
+++ b/dist/linux/appimage/build.sh
@@ -12,31 +12,31 @@ command -v unzip >/dev/null 2>&1 || { echo >&2 "unzip not found."; exit 1; }
VERSION=$(mvn -f ../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout)
SEMVER_STR=${VERSION}
-MACHINE_TYPE=$(uname -m)
+CPU_ARCH=$(uname -p)
-if [[ ! "${MACHINE_TYPE}" =~ x86_64|aarch64 ]]; then echo "Platform ${MACHINE_TYPE} not supported"; exit 1; fi
+if [[ ! "${CPU_ARCH}" =~ x86_64|aarch64 ]]; then echo "Platform ${CPU_ARCH} not supported"; exit 1; fi
mvn -f ../../../pom.xml versions:set -DnewVersion=${SEMVER_STR}
# compile
-mvn -B -f ../../../pom.xml clean package -Plinux -DskipTests
+mvn -B -f ../../../pom.xml clean package -Plinux -DskipTests -Djavafx.platform=linux
cp ../../../LICENSE.txt ../../../target
cp ../../../target/cryptomator-*.jar ../../../target/mods
-
-# download javaFX jmods
-OPENJFX_URL='https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_linux-x64_bin-jmods.zip'
-OPENJFX_SHA='7baed11ca56d5fee85995fa6612d4299f1e8b7337287228f7f12fd50407c56f8'
-OPENJFX_URL_aarch64='https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_linux-aarch64_bin-jmods.zip'
-OPENJFX_SHA_aarch64='871e7b9d7af16aef2e55c1b7830d0e0b2503b13dd8641374ba7e55ecb81d2ef9'
-
-if [[ "${MACHINE_TYPE}" = "aarch64" ]]; then
- OPENJFX_URL="${OPENJFX_URL_aarch64}";
- OPENJFX_SHA="${OPENJFX_SHA_aarch64}";
+JAVAFX_VERSION=22.0.1
+JAVAFX_ARCH="x64"
+JAVAFX_JMODS_SHA256='fbb22f35951c2e049cc2554dd03c2c56b4f5adc4b2ae9248872f46175ac103d8'
+if [ "${CPU_ARCH}" = "aarch64" ]; then
+ JAVAFX_ARCH="aarch64"
+ JAVAFX_JMODS_SHA256='1982ad168a5e8d7cf4a9458a7d088b4f0552d0ac3f24f23fb88f8bc7e8d69a13'
fi
-curl -L ${OPENJFX_URL} -o openjfx-jmods.zip
-echo "${OPENJFX_SHA} openjfx-jmods.zip" | shasum -a256 --check
+# download javaFX jmods
+JAVAFX_JMODS_URL="https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-21.0.1_linux-${JAVAFX_ARCH}_bin-jmods.zip"
+
+
+curl -L ${JAVAFX_JMODS_URL} -o openjfx-jmods.zip
+echo "${JAVAFX_JMODS_SHA256} openjfx-jmods.zip" | shasum -a256 --check
mkdir -p openjfx-jmods
unzip -o -j openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
JMOD_VERSION=$(jmod describe ./openjfx-jmods/javafx.base.jmod | head -1)
@@ -56,7 +56,7 @@ ${JAVA_HOME}/bin/jlink \
--verbose \
--output runtime \
--module-path "${JAVA_HOME}/jmods:openjfx-jmods" \
- --add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net \
+ --add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net \
--strip-native-commands \
--no-header-files \
--no-man-pages \
@@ -114,17 +114,17 @@ ln -s usr/share/applications/org.cryptomator.Cryptomator.desktop Cryptomator.App
ln -s bin/cryptomator.sh Cryptomator.AppDir/AppRun
# load AppImageTool
-curl -L https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-${MACHINE_TYPE}.AppImage -o /tmp/appimagetool.AppImage
+curl -L https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-${CPU_ARCH}.AppImage -o /tmp/appimagetool.AppImage
chmod +x /tmp/appimagetool.AppImage
# create AppImage
/tmp/appimagetool.AppImage \
Cryptomator.AppDir \
- cryptomator-${SEMVER_STR}-${MACHINE_TYPE}.AppImage \
- -u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-${MACHINE_TYPE}.AppImage.zsync'
+ cryptomator-${SEMVER_STR}-${CPU_ARCH}.AppImage \
+ -u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-${CPU_ARCH}.AppImage.zsync'
echo ""
-echo "Done. AppImage successfully created: cryptomator-${SEMVER_STR}-${MACHINE_TYPE}.AppImage"
+echo "Done. AppImage successfully created: cryptomator-${SEMVER_STR}-${CPU_ARCH}.AppImage"
echo ""
echo >&2 "To clean up, run: rm -rf Cryptomator.AppDir appdir runtime squashfs-root openjfx-jmods; rm /tmp/appimagetool.AppImage openjfx-jmods.zip"
echo ""
diff --git a/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml b/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml
index 39c4d092c..4f6981e62 100644
--- a/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml
+++ b/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml
@@ -53,6 +53,11 @@
+
+ #EBF5EB
+ #2F4858
+
+
https://cryptomator.org/https://github.com/cryptomator/cryptomator/issues/https://cryptomator.org/donate
@@ -70,6 +75,9 @@
+
+ https://github.com/cryptomator/cryptomator/releases/1.13.0
+ https://github.com/cryptomator/cryptomator/releases/1.12.4
diff --git a/dist/linux/debian/control b/dist/linux/debian/control
index 86b397101..2a9bbae69 100644
--- a/dist/linux/debian/control
+++ b/dist/linux/debian/control
@@ -2,7 +2,7 @@ Source: cryptomator
Maintainer: Cryptobot
Section: utils
Priority: optional
-Build-Depends: debhelper (>=10), coffeelibs-jdk-21 (>= 21.0.2+12-0ppa1), libgtk-3-0, libxxf86vm1, libgl1
+Build-Depends: debhelper (>=10), coffeelibs-jdk-22 (>= 22.0.1+8-0ppa1), libgtk-3-0, libxxf86vm1, libgl1
Standards-Version: 4.5.0
Homepage: https://cryptomator.org
Vcs-Git: https://github.com/cryptomator/cryptomator.git
diff --git a/dist/linux/debian/rules b/dist/linux/debian/rules
index 11650598d..1de6f7f6b 100755
--- a/dist/linux/debian/rules
+++ b/dist/linux/debian/rules
@@ -4,7 +4,7 @@
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
-JAVA_HOME = /usr/lib/jvm/java-21-coffeelibs
+JAVA_HOME = /usr/lib/jvm/java-22-coffeelibs
DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
ifeq ($(DEB_BUILD_ARCH),amd64)
JMODS_PATH = jmods/amd64:${JAVA_HOME}/jmods
@@ -28,7 +28,7 @@ override_dh_auto_build:
$(JAVA_HOME)/bin/jlink \
--output runtime \
--module-path "${JMODS_PATH}" \
- --add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net \
+ --add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net \
--strip-native-commands \
--no-header-files \
--no-man-pages \
diff --git a/dist/mac/dmg/.gitignore b/dist/mac/dmg/.gitignore
index cdc73d89b..ebc5e2c5e 100644
--- a/dist/mac/dmg/.gitignore
+++ b/dist/mac/dmg/.gitignore
@@ -1,6 +1,8 @@
-# created during build
+# downloaded/created during build
Cryptomator.app/
runtime/
dmg/
*.dmg
-license.rtf
\ No newline at end of file
+license.rtf
+openjfx-jmods.zip
+*.jmod
\ No newline at end of file
diff --git a/dist/mac/dmg/build.sh b/dist/mac/dmg/build.sh
index df699aad1..ae15557df 100755
--- a/dist/mac/dmg/build.sh
+++ b/dist/mac/dmg/build.sh
@@ -29,13 +29,17 @@ REVISION_NO=`git rev-list --count HEAD`
VERSION_NO=`mvn -f../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout | sed -rn 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p'`
FUSE_LIB="FUSE-T"
-ARCH="undefined"
+JAVAFX_VERISON=22.0.1
+JAVAFX_ARCH="undefined"
+JAVAFX_JMODS_SHA256="undefined"
if [ "$(machine)" = "arm64e" ]; then
- ARCH="aarch64"
+ JAVAFX_ARCH="aarch64"
+ JAVAFX_JMODS_SHA256="572fce94b9b09d316b960a49e3c2b5d35231ed0463e3b1c4020b8de89783b51d"
else
- ARCH="x64"
+ JAVAFX_ARCH="x64"
+ JAVAFX_JMODS_SHA256="e07a11c112abbdebe7c058b44c151e1e475de748671d896aef3d73f32453c248"
fi
-OPENJFX_JMODS="https://download2.gluonhq.com/openjfx/21.0.1/openjfx-21.0.1_osx-${ARCH}_bin-jmods.zip"
+JAVAFX_JMODS_URL="https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_osx-${JAVAFX_ARCH}_bin-jmods.zip"
# check preconditions
if [ -z "${JAVA_HOME}" ]; then echo "JAVA_HOME not set. Run using JAVA_HOME=/path/to/jdk ./build.sh"; exit 1; fi
@@ -47,7 +51,8 @@ if [ -n "${CODESIGN_IDENTITY}" ]; then
fi
# download and check jmods
-curl -L ${OPENJFX_JMODS} -o openjfx-jmods.zip
+curl -L ${JAVAFX_JMODS_URL} -o openjfx-jmods.zip
+echo "${JAVAFX_JMODS_SHA256} openjfx-jmods.zip" | shasum -a256 --check
mkdir -p openjfx-jmods/
unzip -jo openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
@@ -63,7 +68,7 @@ if [ "${POM_JFX_VERSION}" -ne "${JMOD_VERSION}" ]; then
fi
# compile
-mvn -B -f../../../pom.xml clean package -DskipTests -Pmac
+mvn -B -Djavafx.platform=mac -f../../../pom.xml clean package -DskipTests -Pmac
cp ../../../LICENSE.txt ../../../target
cp ../../../target/${MAIN_JAR_GLOB} ../../../target/mods
@@ -71,7 +76,7 @@ cp ../../../target/${MAIN_JAR_GLOB} ../../../target/mods
${JAVA_HOME}/bin/jlink \
--output runtime \
--module-path "${JAVA_HOME}/jmods:openjfx-jmods" \
- --add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.security.auth,jdk.accessibility,jdk.management.jfr \
+ --add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr \
--strip-native-commands \
--no-header-files \
--no-man-pages \
@@ -118,7 +123,7 @@ sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NO}|g" ${APP_NAME}.app/
sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" ${APP_NAME}.app/Contents/Info.plist
# generate license
-mvn -B -f../../../pom.xml license:add-third-party \
+mvn -B -Djavafx.platform=mac -f../../../pom.xml license:add-third-party \
-Dlicense.thirdPartyFilename=license.rtf \
-Dlicense.outputDirectory=dist/mac/dmg/resources \
-Dlicense.fileTemplate=resources/licenseTemplate.ftl \
diff --git a/dist/win/.gitignore b/dist/win/.gitignore
index 32316fd59..7b2faa4b5 100644
--- a/dist/win/.gitignore
+++ b/dist/win/.gitignore
@@ -6,4 +6,5 @@ installer
*.msi
*.exe
*.jmod
+resources/jfxJmods.zip
license.rtf
\ No newline at end of file
diff --git a/dist/win/build.ps1 b/dist/win/build.ps1
index d48f2bce3..7c5e85d58 100644
--- a/dist/win/build.ps1
+++ b/dist/win/build.ps1
@@ -41,7 +41,7 @@ Write-Output "`$Env:JAVA_HOME=$Env:JAVA_HOME"
$copyright = "(C) $CopyrightStartYear - $((Get-Date).Year) $Vendor"
# compile
-&mvn -B -f $buildDir/../../pom.xml clean package -DskipTests -Pwin
+&mvn -B -f $buildDir/../../pom.xml clean package -DskipTests -Pwin -Djavafx.platform=win
Copy-Item "$buildDir\..\..\target\$MainJarGlob.jar" -Destination "$buildDir\..\..\target\mods"
# add runtime
@@ -51,21 +51,22 @@ if ($clean -and (Test-Path -Path $runtimeImagePath)) {
}
## download jfx jmods
-$jmodsVersion='21.0.1'
-$jmodsUrl = "https://download2.gluonhq.com/openjfx/${jmodsVersion}/openjfx-${jmodsVersion}_windows-x64_bin-jmods.zip"
-$jfxJmodsChecksum = 'daf8acae631c016c24cfe23f88469400274d3441dd890615a42dfb501f3eb94a'
-$jfxJmodsZip = '.\resources\jfxJmods.zip'
-if( !(Test-Path -Path $jfxJmodsZip) ) {
- Write-Output "Downloading ${jmodsUrl}..."
- Invoke-WebRequest $jmodsUrl -OutFile $jfxJmodsZip # redirects are followed by default
+$javaFxVersion='22.0.1'
+$javaFxJmodsUrl = "https://download2.gluonhq.com/openjfx/${javaFxVersion}/openjfx-${javaFxVersion}_windows-x64_bin-jmods.zip"
+$javaFxJmodsSHA256 = 'de82e53179032a49bec005deb4438e8f261d08c4b58864a5c17e1d87286b09dd'
+$javaFxJmods = '.\resources\jfxJmods.zip'
+if( !(Test-Path -Path $javaFxJmods) ) {
+ Write-Output "Downloading ${javaFxJmodsUrl}..."
+ Invoke-WebRequest $javaFxJmodsUrl -OutFile $javaFxJmods # redirects are followed by default
}
-$jmodsChecksumActual = $(Get-FileHash -Path $jfxJmodsZip -Algorithm SHA256).Hash
-if( $jmodsChecksumActual -ne $jfxJmodsChecksum ) {
- Write-Error "Checksum mismatch for jfxJmods.zip. Expected: $jfxJmodsChecksum, actual: $jmodsChecksumActual"
+$jmodsChecksumActual = $(Get-FileHash -Path $javaFxJmods -Algorithm SHA256).Hash
+if( $jmodsChecksumActual -ne $javaFxJmodsSHA256 ) {
+ Write-Error "Checksum mismatch for jfxJmods.zip. Expected: $javaFxJmodsSHA256
+, actual: $jmodsChecksumActual"
exit 1;
}
-Expand-Archive -Path $jfxJmodsZip -Force -DestinationPath ".\resources\"
+Expand-Archive -Path $javaFxJmods -Force -DestinationPath ".\resources\"
Remove-Item -Recurse -Force -Path ".\resources\javafx-jmods"
Move-Item -Force -Path ".\resources\javafx-jmods-*" -Destination ".\resources\javafx-jmods" -ErrorAction Stop
@@ -74,7 +75,7 @@ Move-Item -Force -Path ".\resources\javafx-jmods-*" -Destination ".\resources\ja
--verbose `
--output runtime `
--module-path "$Env:JAVA_HOME/jmods;$buildDir/resources/javafx-jmods" `
- --add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr,javafx.base,javafx.graphics,javafx.controls,javafx.fxml `
+ --add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.accessibility,jdk.management.jfr,javafx.base,javafx.graphics,javafx.controls,javafx.fxml `
--strip-native-commands `
--no-header-files `
--no-man-pages `
@@ -121,7 +122,7 @@ if ($clean -and (Test-Path -Path $appPath)) {
--icon resources/$AppName.ico
#Create RTF license for msi
-&mvn -B -f $buildDir/../../pom.xml license:add-third-party `
+&mvn -B -f $buildDir/../../pom.xml license:add-third-party -Djavafx.platform=win `
"-Dlicense.thirdPartyFilename=license.rtf" `
"-Dlicense.fileTemplate=$buildDir\resources\licenseTemplate.ftl" `
"-Dlicense.outputDirectory=$buildDir\resources\" `
@@ -166,7 +167,7 @@ $Env:JP_WIXHELPER_DIR = "."
--file-associations resources/FAvaultFile.properties
#Create RTF license for bundle
-&mvn -B -f $buildDir/../../pom.xml license:add-third-party `
+&mvn -B -f $buildDir/../../pom.xml license:add-third-party -Djavafx.platform=win `
"-Dlicense.thirdPartyFilename=license.rtf" `
"-Dlicense.fileTemplate=$buildDir\bundle\resources\licenseTemplate.ftl" `
"-Dlicense.outputDirectory=$buildDir\bundle\resources\" `
diff --git a/dist/win/contrib/version170-migrate-settings.bat b/dist/win/contrib/version170-migrate-settings.bat
deleted file mode 100644
index d94e062a1..000000000
--- a/dist/win/contrib/version170-migrate-settings.bat
+++ /dev/null
@@ -1,5 +0,0 @@
-@echo off
-:: see comments in file ./version170-migrate-settings.ps1
-
-cd %~dp0
-powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -Command .\version170-migrate-settings.ps1
diff --git a/dist/win/contrib/version170-migrate-settings.ps1 b/dist/win/contrib/version170-migrate-settings.ps1
deleted file mode 100644
index 8e019fe66..000000000
--- a/dist/win/contrib/version170-migrate-settings.ps1
+++ /dev/null
@@ -1,35 +0,0 @@
-# This script migrates Cryptomator settings for all local users on Windows in case the users uses custom directories as mountpoint
-# See also https://github.com/cryptomator/cryptomator/pull/2654.
-#
-# TODO: This script should be evaluated in a yearly interval if it is still needed and if not, should be removed
-#
-#Requires -RunAsAdministrator
-
-#Get all active, local user profiles
-$profileList = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
-Get-ChildItem $profileList | ForEach-Object {
- $profilePath = $_.GetValue("ProfileImagePath")
- $settingsPath = "$profilePath\AppData\Roaming\Cryptomator\settings.json"
- if(!(Test-Path -Path $settingsPath -PathType Leaf)) {
- #No settings file, nothing to do.
- return;
- }
- $settings = Get-Content -Path $settingsPath | ConvertFrom-Json
- if($settings.preferredVolumeImpl -ne "FUSE") {
- #Fuse not used, nothing to do
- return;
- }
-
- #check if customMountPoints are used
- $atLeastOneCustomPath = $false;
- foreach ($vault in $settings.directories){
- $atLeastOneCustomPath = $atLeastOneCustomPath -or ($vault.useCustomMountPath -eq "True")
- }
-
- #if so, use WinFsp Local Drive
- if( $atLeastOneCustomPath ) {
- Add-Member -Force -InputObject $settings -Name "mountService" -Value "org.cryptomator.frontend.fuse.mount.WinFspMountProvider" -MemberType NoteProperty
- $newSettings = $settings | Select-Object * -ExcludeProperty "preferredVolumeImpl"
- ConvertTo-Json $newSettings | Set-Content -Path $settingsPath
- }
-}
diff --git a/dist/win/resources/main.wxs b/dist/win/resources/main.wxs
index 2fe2eb348..335dd3511 100644
--- a/dist/win/resources/main.wxs
+++ b/dist/win/resources/main.wxs
@@ -139,11 +139,6 @@
Sequence="execute" Before="PatchWebDAV" />
-
-
-
-
NOT Installed OR REINSTALL
- NOT Installed OR REINSTALL
diff --git a/pom.xml b/pom.xml
index 010020ec0..6fb45d9d7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0org.cryptomatorcryptomator
- 1.12.4
+ 1.13.0Cryptomator Desktop App
@@ -26,7 +26,7 @@
UTF-8
- 21
+ 22
@@ -36,46 +36,50 @@
2.6.91.3.11.2.5
- 1.2.3
- 1.4.4
- 4.0.0
- 2.0.0
+ 1.2.4
+ 1.4.5
+ 5.0.02.0.63.14.0
- 2.50
+ 2.51.12.2
- 33.0.0-jre
- 2.16.1
- 21.0.1
+ 33.2.1-jre
+ 2.17.1
+ 22.0.14.4.09.37.3
- 1.5.0
- 2.0.12
+ 1.5.6
+ 2.0.130.8.0
- 1.8.2
+ 1.9.05.10.2
- 5.10.0
+ 5.12.02.224.1.0
- 9.0.9
- 0.8.11
+ 9.2.0
+ 0.8.122.4.01.2.1
- 3.12.1
+ 3.13.03.3.1
- 3.6.1
- 3.2.5
- 3.3.0
+ 3.7.0
+ 3.3.0
+ 3.4.1
+
+ org.cryptomator
+ cryptolib
+ 2.2.0
+ org.cryptomatorcryptofs
@@ -86,11 +90,6 @@
fuse-nio-adapter${cryptomator.fuse.version}
-
- org.cryptomator
- dokany-nio-adapter
- ${cryptomator.dokany.version}
- org.cryptomatorwebdav-nio-adapter
@@ -164,11 +163,18 @@
nimbus-jose-jwt${nimbus-jose.version}
+
+
com.fasterxml.jackson.corejackson-databind${jackson.version}
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+ ${jackson.version}
+
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
index b353b7a8a..cae32b384 100644
--- a/src/main/java/module-info.java
+++ b/src/main/java/module-info.java
@@ -21,7 +21,6 @@ open module org.cryptomator.desktop {
requires org.cryptomator.cryptolib;
requires org.cryptomator.cryptofs;
- requires org.cryptomator.frontend.dokany;
requires org.cryptomator.frontend.fuse;
requires org.cryptomator.frontend.webdav;
requires org.cryptomator.integrations.api;
@@ -32,13 +31,13 @@ open module org.cryptomator.desktop {
requires javafx.graphics;
requires javafx.controls;
requires javafx.fxml;
- requires jdk.crypto.ec;
// 3rd party:
requires ch.qos.logback.classic;
requires ch.qos.logback.core;
requires com.auth0.jwt;
requires com.google.common;
requires com.fasterxml.jackson.databind;
+ requires com.fasterxml.jackson.datatype.jsr310;
requires com.nimbusds.jose.jwt;
requires com.nulabinc.zxcvbn;
requires com.tobiasdiez.easybind;
diff --git a/src/main/java/org/cryptomator/common/SubstitutingProperties.java b/src/main/java/org/cryptomator/common/SubstitutingProperties.java
index 8ba98a2b6..0536e3554 100644
--- a/src/main/java/org/cryptomator/common/SubstitutingProperties.java
+++ b/src/main/java/org/cryptomator/common/SubstitutingProperties.java
@@ -5,6 +5,7 @@ import org.slf4j.LoggerFactory;
import java.util.Map;
import java.util.Properties;
+import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SubstitutingProperties extends PropertiesDecorator {
@@ -58,7 +59,7 @@ public class SubstitutingProperties extends PropertiesDecorator {
LoggerFactory.getLogger(SubstitutingProperties.class).warn("Variable {} used for substitution not found in {}. Replaced with empty string.", key, src);
return "";
} else {
- return val.replace("\\", "\\\\");
+ return Matcher.quoteReplacement(val);
}
}
diff --git a/src/main/java/org/cryptomator/common/settings/Settings.java b/src/main/java/org/cryptomator/common/settings/Settings.java
index 4e0e0df97..a54e71a4f 100644
--- a/src/main/java/org/cryptomator/common/settings/Settings.java
+++ b/src/main/java/org/cryptomator/common/settings/Settings.java
@@ -25,6 +25,7 @@ import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.NodeOrientation;
+import java.time.Instant;
import java.util.function.Consumer;
public class Settings {
@@ -44,8 +45,7 @@ public class Settings {
static final String DEFAULT_KEYCHAIN_PROVIDER = SystemUtils.IS_OS_WINDOWS ? "org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess" : SystemUtils.IS_OS_MAC ? "org.cryptomator.macos.keychain.MacSystemKeychainAccess" : "org.cryptomator.linux.keychain.SecretServiceKeychainAccess";
static final String DEFAULT_USER_INTERFACE_ORIENTATION = NodeOrientation.LEFT_TO_RIGHT.name();
static final boolean DEFAULT_SHOW_MINIMIZE_BUTTON = false;
- static final String DEFAULT_LAST_UPDATE_CHECK = "2000-01-01";
-
+ public static final Instant DEFAULT_TIMESTAMP = Instant.parse("2000-01-01T00:00:00Z");
public final ObservableList directories;
public final BooleanProperty askedForUpdateCheck;
public final BooleanProperty checkForUpdates;
@@ -67,7 +67,7 @@ public class Settings {
public final IntegerProperty windowHeight;
public final StringProperty language;
public final StringProperty mountService;
- public final StringProperty lastUpdateCheck;
+ public final ObjectProperty lastSuccessfulUpdateCheck;
private Consumer saveCmd;
@@ -104,7 +104,7 @@ public class Settings {
this.windowHeight = new SimpleIntegerProperty(this, "windowHeight", json.windowHeight);
this.language = new SimpleStringProperty(this, "language", json.language);
this.mountService = new SimpleStringProperty(this, "mountService", json.mountService);
- this.lastUpdateCheck = new SimpleStringProperty(this, "lastUpdateCheck", json.lastUpdateCheck);
+ this.lastSuccessfulUpdateCheck = new SimpleObjectProperty<>(this, "lastSuccessfulUpdateCheck", json.lastSuccessfulUpdateCheck);
this.directories.addAll(json.directories.stream().map(VaultSettings::new).toList());
@@ -131,7 +131,7 @@ public class Settings {
windowHeight.addListener(this::somethingChanged);
language.addListener(this::somethingChanged);
mountService.addListener(this::somethingChanged);
- lastUpdateCheck.addListener(this::somethingChanged);
+ lastSuccessfulUpdateCheck.addListener(this::somethingChanged);
}
@SuppressWarnings("deprecation")
@@ -185,7 +185,7 @@ public class Settings {
json.windowHeight = windowHeight.get();
json.language = language.get();
json.mountService = mountService.get();
- json.lastUpdateCheck = lastUpdateCheck.get();
+ json.lastSuccessfulUpdateCheck = lastSuccessfulUpdateCheck.get();
return json;
}
diff --git a/src/main/java/org/cryptomator/common/settings/SettingsJson.java b/src/main/java/org/cryptomator/common/settings/SettingsJson.java
index 2c7c963da..2ded82885 100644
--- a/src/main/java/org/cryptomator/common/settings/SettingsJson.java
+++ b/src/main/java/org/cryptomator/common/settings/SettingsJson.java
@@ -1,9 +1,11 @@
package org.cryptomator.common.settings;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
+import java.time.Instant;
import java.util.List;
@JsonIgnoreProperties(ignoreUnknown = true)
@@ -80,7 +82,8 @@ class SettingsJson {
@JsonProperty(value = "preferredVolumeImpl", access = JsonProperty.Access.WRITE_ONLY) // WRITE_ONLY means value is "written" into the java object during deserialization. Upvote this: https://github.com/FasterXML/jackson-annotations/issues/233
String preferredVolumeImpl;
- @JsonProperty("lastUpdateCheck")
- String lastUpdateCheck = Settings.DEFAULT_LAST_UPDATE_CHECK;
+ @JsonProperty("lastSuccessfulUpdateCheck")
+ @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'", timezone = "UTC")
+ Instant lastSuccessfulUpdateCheck = Settings.DEFAULT_TIMESTAMP;
}
diff --git a/src/main/java/org/cryptomator/common/settings/SettingsProvider.java b/src/main/java/org/cryptomator/common/settings/SettingsProvider.java
index 586708ed1..a33b51027 100644
--- a/src/main/java/org/cryptomator/common/settings/SettingsProvider.java
+++ b/src/main/java/org/cryptomator/common/settings/SettingsProvider.java
@@ -10,6 +10,7 @@ package org.cryptomator.common.settings;
import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.google.common.base.Suppliers;
import org.cryptomator.common.Environment;
import org.slf4j.Logger;
@@ -36,7 +37,7 @@ import java.util.stream.Stream;
@Singleton
public class SettingsProvider implements Supplier {
- private static final ObjectMapper JSON = new ObjectMapper().setDefaultLeniency(true);
+ private static final ObjectMapper JSON = new ObjectMapper().setDefaultLeniency(true).registerModule(new JavaTimeModule());
private static final Logger LOG = LoggerFactory.getLogger(SettingsProvider.class);
private static final long SAVE_DELAY_MS = 1000;
diff --git a/src/main/java/org/cryptomator/ui/common/FxmlFile.java b/src/main/java/org/cryptomator/ui/common/FxmlFile.java
index 1a2374f85..938f93687 100644
--- a/src/main/java/org/cryptomator/ui/common/FxmlFile.java
+++ b/src/main/java/org/cryptomator/ui/common/FxmlFile.java
@@ -12,6 +12,7 @@ public enum FxmlFile {
CONVERTVAULT_HUBTOPASSWORD_START("/fxml/convertvault_hubtopassword_start.fxml"), //
CONVERTVAULT_HUBTOPASSWORD_CONVERT("/fxml/convertvault_hubtopassword_convert.fxml"), //
CONVERTVAULT_HUBTOPASSWORD_SUCCESS("/fxml/convertvault_hubtopassword_success.fxml"), //
+ DOKANY_SUPPORT_END("/fxml/dokany_support_end.fxml"), //
ERROR("/fxml/error.fxml"), //
FORGET_PASSWORD("/fxml/forget_password.fxml"), //
HEALTH_START("/fxml/health_start.fxml"), //
diff --git a/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndComponent.java b/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndComponent.java
new file mode 100644
index 000000000..48a5ab36c
--- /dev/null
+++ b/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndComponent.java
@@ -0,0 +1,34 @@
+package org.cryptomator.ui.dokanysupportend;
+
+import dagger.Lazy;
+import dagger.Subcomponent;
+import org.cryptomator.ui.common.FxmlFile;
+import org.cryptomator.ui.common.FxmlScene;
+
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+@DokanySupportEndScoped
+@Subcomponent(modules = {DokanySupportEndModule.class})
+public interface DokanySupportEndComponent {
+
+ @DokanySupportEndWindow
+ Stage window();
+
+ @FxmlScene(FxmlFile.DOKANY_SUPPORT_END)
+ Lazy dokanySupportEndScene();
+
+
+ default void showDokanySupportEndWindow() {
+ Stage stage = window();
+ stage.setScene(dokanySupportEndScene().get());
+ stage.sizeToScene();
+ stage.show();
+ }
+
+ @Subcomponent.Factory
+ interface Factory {
+
+ DokanySupportEndComponent create();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndController.java b/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndController.java
new file mode 100644
index 000000000..a1d626402
--- /dev/null
+++ b/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndController.java
@@ -0,0 +1,34 @@
+package org.cryptomator.ui.dokanysupportend;
+
+import org.cryptomator.ui.common.FxController;
+import org.cryptomator.ui.fxapp.FxApplicationWindows;
+import org.cryptomator.ui.preferences.SelectedPreferencesTab;
+
+import javax.inject.Inject;
+import javafx.fxml.FXML;
+import javafx.stage.Stage;
+
+
+@DokanySupportEndScoped
+public class DokanySupportEndController implements FxController {
+
+ private final Stage window;
+ private final FxApplicationWindows applicationWindows;
+
+ @Inject
+ DokanySupportEndController(@DokanySupportEndWindow Stage window, FxApplicationWindows applicationWindows) {
+ this.window = window;
+ this.applicationWindows = applicationWindows;
+ }
+
+ @FXML
+ public void close() {
+ window.close();
+ }
+
+ public void openVolumePreferences() {
+ applicationWindows.showPreferencesWindow(SelectedPreferencesTab.VOLUME);
+ window.close();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndModule.java b/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndModule.java
new file mode 100644
index 000000000..64689eb26
--- /dev/null
+++ b/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndModule.java
@@ -0,0 +1,57 @@
+package org.cryptomator.ui.dokanysupportend;
+
+import dagger.Binds;
+import dagger.Module;
+import dagger.Provides;
+import dagger.multibindings.IntoMap;
+import org.cryptomator.ui.common.DefaultSceneFactory;
+import org.cryptomator.ui.common.FxController;
+import org.cryptomator.ui.common.FxControllerKey;
+import org.cryptomator.ui.common.FxmlFile;
+import org.cryptomator.ui.common.FxmlLoaderFactory;
+import org.cryptomator.ui.common.FxmlScene;
+import org.cryptomator.ui.common.StageFactory;
+
+import javax.inject.Provider;
+import javafx.scene.Scene;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+import java.util.Map;
+import java.util.ResourceBundle;
+
+@Module
+abstract class DokanySupportEndModule {
+
+ @Provides
+ @DokanySupportEndWindow
+ @DokanySupportEndScoped
+ static FxmlLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) {
+ return new FxmlLoaderFactory(factories, sceneFactory, resourceBundle);
+ }
+
+ @Provides
+ @DokanySupportEndWindow
+ @DokanySupportEndScoped
+ static Stage provideStage(StageFactory factory, ResourceBundle resourceBundle) {
+ Stage stage = factory.create();
+ stage.setTitle(resourceBundle.getString("dokanySupportEnd.title"));
+ stage.setMinWidth(500);
+ stage.setMinHeight(100);
+ stage.initModality(Modality.APPLICATION_MODAL);
+ return stage;
+ }
+
+ @Provides
+ @FxmlScene(FxmlFile.DOKANY_SUPPORT_END)
+ @DokanySupportEndScoped
+ static Scene provideDokanySupportEndScene(@DokanySupportEndWindow FxmlLoaderFactory fxmlLoaders) {
+ return fxmlLoaders.createScene(FxmlFile.DOKANY_SUPPORT_END);
+ }
+
+
+ @Binds
+ @IntoMap
+ @FxControllerKey(DokanySupportEndController.class)
+ abstract FxController bindDokanySupportEndController(DokanySupportEndController controller);
+
+}
diff --git a/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndScoped.java b/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndScoped.java
new file mode 100644
index 000000000..967e6f86f
--- /dev/null
+++ b/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndScoped.java
@@ -0,0 +1,13 @@
+package org.cryptomator.ui.dokanysupportend;
+
+import javax.inject.Scope;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Scope
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@interface DokanySupportEndScoped {
+
+}
diff --git a/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndWindow.java b/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndWindow.java
new file mode 100644
index 000000000..bb9b1617c
--- /dev/null
+++ b/src/main/java/org/cryptomator/ui/dokanysupportend/DokanySupportEndWindow.java
@@ -0,0 +1,14 @@
+package org.cryptomator.ui.dokanysupportend;
+
+import javax.inject.Qualifier;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+@Qualifier
+@Documented
+@Retention(RUNTIME)
+@interface DokanySupportEndWindow {
+
+}
diff --git a/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java b/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java
index 711a0fa44..30e40ea8c 100644
--- a/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java
+++ b/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java
@@ -3,6 +3,7 @@ package org.cryptomator.ui.fxapp;
import dagger.Lazy;
import org.cryptomator.common.Environment;
import org.cryptomator.common.settings.Settings;
+import org.cryptomator.common.settings.VaultSettings;
import org.cryptomator.ui.traymenu.TrayMenuComponent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -75,7 +76,27 @@ public class FxApplication {
appWindows.checkAndShowUpdateReminderWindow();
}
+ migrateAndInformDokanyRemoval();
+
launchEventHandler.startHandlingLaunchEvents();
autoUnlocker.tryUnlockForTimespan(2, TimeUnit.MINUTES);
}
+
+ private void migrateAndInformDokanyRemoval() {
+ var dokanyProviderId = "org.cryptomator.frontend.dokany.mount.DokanyMountProvider";
+ boolean dokanyFound = false;
+ if (settings.mountService.getValueSafe().equals(dokanyProviderId)) {
+ dokanyFound = true;
+ settings.mountService.set(null);
+ }
+ for (VaultSettings vaultSettings : settings.directories) {
+ if (vaultSettings.mountService.getValueSafe().equals(dokanyProviderId)) {
+ dokanyFound = true;
+ vaultSettings.mountService.set(null);
+ }
+ }
+ if (dokanyFound) {
+ appWindows.showDokanySupportEndWindow();
+ }
+ }
}
diff --git a/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java
index af98e284c..0b8b6c70f 100644
--- a/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java
+++ b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java
@@ -7,6 +7,7 @@ package org.cryptomator.ui.fxapp;
import dagger.Module;
import dagger.Provides;
+import org.cryptomator.ui.dokanysupportend.DokanySupportEndComponent;
import org.cryptomator.ui.error.ErrorComponent;
import org.cryptomator.ui.health.HealthCheckComponent;
import org.cryptomator.ui.lock.LockComponent;
@@ -33,6 +34,7 @@ import java.io.InputStream;
ErrorComponent.class, //
HealthCheckComponent.class, //
UpdateReminderComponent.class, //
+ DokanySupportEndComponent.class, //
ShareVaultComponent.class})
abstract class FxApplicationModule {
diff --git a/src/main/java/org/cryptomator/ui/fxapp/FxApplicationWindows.java b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationWindows.java
index 41a7ca785..33d8491a7 100644
--- a/src/main/java/org/cryptomator/ui/fxapp/FxApplicationWindows.java
+++ b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationWindows.java
@@ -5,6 +5,7 @@ import dagger.Lazy;
import org.cryptomator.common.vaults.Vault;
import org.cryptomator.common.vaults.VaultState;
import org.cryptomator.integrations.tray.TrayIntegrationProvider;
+import org.cryptomator.ui.dokanysupportend.DokanySupportEndComponent;
import org.cryptomator.ui.error.ErrorComponent;
import org.cryptomator.ui.lock.LockComponent;
import org.cryptomator.ui.mainwindow.MainWindowComponent;
@@ -48,6 +49,7 @@ public class FxApplicationWindows {
private final QuitComponent.Builder quitWindowBuilder;
private final UnlockComponent.Factory unlockWorkflowFactory;
private final UpdateReminderComponent.Factory updateReminderWindowBuilder;
+ private final DokanySupportEndComponent.Factory dokanySupportEndWindowBuilder;
private final LockComponent.Factory lockWorkflowFactory;
private final ErrorComponent.Factory errorWindowFactory;
private final ExecutorService executor;
@@ -56,13 +58,14 @@ public class FxApplicationWindows {
private final FilteredList visibleWindows;
@Inject
- public FxApplicationWindows(@PrimaryStage Stage primaryStage,
+ public FxApplicationWindows(@PrimaryStage Stage primaryStage, //
Optional trayIntegration, //
Lazy mainWindow, //
Lazy preferencesWindow, //
QuitComponent.Builder quitWindowBuilder, //
UnlockComponent.Factory unlockWorkflowFactory, //
UpdateReminderComponent.Factory updateReminderWindowBuilder, //
+ DokanySupportEndComponent.Factory dokanySupportEndWindowBuilder, //
LockComponent.Factory lockWorkflowFactory, //
ErrorComponent.Factory errorWindowFactory, //
VaultOptionsComponent.Factory vaultOptionsWindow, //
@@ -75,6 +78,7 @@ public class FxApplicationWindows {
this.quitWindowBuilder = quitWindowBuilder;
this.unlockWorkflowFactory = unlockWorkflowFactory;
this.updateReminderWindowBuilder = updateReminderWindowBuilder;
+ this.dokanySupportEndWindowBuilder = dokanySupportEndWindowBuilder;
this.lockWorkflowFactory = lockWorkflowFactory;
this.errorWindowFactory = errorWindowFactory;
this.executor = executor;
@@ -142,6 +146,11 @@ public class FxApplicationWindows {
CompletableFuture.runAsync(() -> updateReminderWindowBuilder.create().checkAndShowUpdateReminderWindow(), Platform::runLater);
}
+ public void showDokanySupportEndWindow() {
+ CompletableFuture.runAsync(() -> dokanySupportEndWindowBuilder.create().showDokanySupportEndWindow(), Platform::runLater);
+ }
+
+
public CompletionStage startUnlockWorkflow(Vault vault, @Nullable Stage owner) {
return CompletableFuture.supplyAsync(() -> {
Preconditions.checkState(vault.stateProperty().transition(VaultState.Value.LOCKED, VaultState.Value.PROCESSING), "Vault not locked.");
diff --git a/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java b/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java
index 709eb2fe7..b857adcae 100644
--- a/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java
+++ b/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java
@@ -1,45 +1,57 @@
package org.cryptomator.ui.fxapp;
import org.cryptomator.common.Environment;
+import org.cryptomator.common.SemVerComparator;
import org.cryptomator.common.settings.Settings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
-import javax.inject.Named;
+import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanBinding;
+import javafx.beans.property.ObjectProperty;
import javafx.beans.property.ReadOnlyStringProperty;
+import javafx.beans.property.SimpleObjectProperty;
+import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.concurrent.ScheduledService;
import javafx.concurrent.Worker;
import javafx.concurrent.WorkerStateEvent;
import javafx.util.Duration;
+import java.time.Instant;
import java.util.Comparator;
@FxApplicationScoped
public class UpdateChecker {
private static final Logger LOG = LoggerFactory.getLogger(UpdateChecker.class);
- private static final Duration AUTOCHECK_DELAY = Duration.seconds(5);
+ private static final Duration AUTO_CHECK_DELAY = Duration.seconds(5);
private final Environment env;
private final Settings settings;
- private final StringProperty latestVersionProperty;
- private final Comparator semVerComparator;
+ private final StringProperty latestVersion = new SimpleStringProperty();
private final ScheduledService updateCheckerService;
+ private final ObjectProperty state = new SimpleObjectProperty<>(UpdateCheckState.NOT_CHECKED);
+ private final ObjectProperty lastSuccessfulUpdateCheck;
+ private final Comparator versionComparator = new SemVerComparator();
+ private final BooleanBinding updateAvailable;
+ private final BooleanBinding checkFailed;
@Inject
- UpdateChecker(Settings settings, Environment env, @Named("latestVersion") StringProperty latestVersionProperty, @Named("SemVer") Comparator semVerComparator, ScheduledService updateCheckerService) {
+ UpdateChecker(Settings settings, //
+ Environment env, //
+ ScheduledService updateCheckerService) {
this.env = env;
this.settings = settings;
- this.latestVersionProperty = latestVersionProperty;
- this.semVerComparator = semVerComparator;
this.updateCheckerService = updateCheckerService;
+ this.lastSuccessfulUpdateCheck = settings.lastSuccessfulUpdateCheck;
+ this.updateAvailable = Bindings.createBooleanBinding(this::isUpdateAvailable, latestVersion);
+ this.checkFailed = Bindings.equal(UpdateCheckState.CHECK_FAILED, state);
}
public void automaticallyCheckForUpdatesIfEnabled() {
if (!env.disableUpdateCheck() && settings.checkForUpdates.get()) {
- startCheckingForUpdates(AUTOCHECK_DELAY);
+ startCheckingForUpdates(AUTO_CHECK_DELAY);
}
}
@@ -59,36 +71,65 @@ public class UpdateChecker {
private void checkStarted(WorkerStateEvent event) {
LOG.debug("Checking for updates...");
+ state.set(UpdateCheckState.IS_CHECKING);
}
private void checkSucceeded(WorkerStateEvent event) {
- String latestVersion = updateCheckerService.getValue();
- LOG.info("Current version: {}, lastest version: {}", getCurrentVersion(), latestVersion);
-
- if (semVerComparator.compare(getCurrentVersion(), latestVersion) < 0) {
- // update is available
- latestVersionProperty.set(latestVersion);
- } else {
- latestVersionProperty.set(null);
- }
+ var latestVersionString = updateCheckerService.getValue();
+ LOG.info("Current version: {}, latest version: {}", getCurrentVersion(), latestVersionString);
+ lastSuccessfulUpdateCheck.set(Instant.now());
+ latestVersion.set(latestVersionString);
+ state.set(UpdateCheckState.CHECK_SUCCESSFUL);
}
private void checkFailed(WorkerStateEvent event) {
- LOG.warn("Error checking for updates", event.getSource().getException());
+ state.set(UpdateCheckState.CHECK_FAILED);
+ }
+
+ public enum UpdateCheckState {
+ NOT_CHECKED,
+ IS_CHECKING,
+ CHECK_SUCCESSFUL,
+ CHECK_FAILED;
}
/* Observable Properties */
-
public BooleanBinding checkingForUpdatesProperty() {
return updateCheckerService.stateProperty().isEqualTo(Worker.State.RUNNING);
}
public ReadOnlyStringProperty latestVersionProperty() {
- return latestVersionProperty;
+ return latestVersion;
+ }
+
+ public BooleanBinding updateAvailableProperty() {
+ return updateAvailable;
+ }
+
+ public BooleanBinding checkFailedProperty() {
+ return checkFailed;
+ }
+
+ public boolean isUpdateAvailable() {
+ String currentVersion = getCurrentVersion();
+ String latestVersionString = latestVersion.get();
+
+ if (currentVersion == null || latestVersionString == null) {
+ return false;
+ } else {
+ return versionComparator.compare(currentVersion, latestVersionString) < 0;
+ }
+ }
+
+ public ObjectProperty lastSuccessfulUpdateCheckProperty() {
+ return lastSuccessfulUpdateCheck;
+ }
+
+ public ObjectProperty updateCheckStateProperty() {
+ return state;
}
public String getCurrentVersion() {
return env.getAppVersion();
}
-
}
diff --git a/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java b/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java
index b5f06d7e5..585180662 100644
--- a/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java
+++ b/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java
@@ -11,8 +11,6 @@ import org.slf4j.LoggerFactory;
import javax.inject.Named;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.ObjectBinding;
-import javafx.beans.property.SimpleStringProperty;
-import javafx.beans.property.StringProperty;
import javafx.concurrent.ScheduledService;
import javafx.concurrent.Task;
import javafx.util.Duration;
@@ -32,13 +30,6 @@ public abstract class UpdateCheckerModule {
private static final Duration UPDATE_CHECK_INTERVAL = Duration.hours(3);
private static final Duration DISABLED_UPDATE_CHECK_INTERVAL = Duration.hours(100000); // Duration.INDEFINITE leads to overflows...
- @Provides
- @Named("latestVersion")
- @FxApplicationScoped
- static StringProperty provideLatestVersion() {
- return new SimpleStringProperty();
- }
-
@Provides
@FxApplicationScoped
static Optional provideHttpClient() {
diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java
index 479a2d860..f3c92790d 100644
--- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java
+++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java
@@ -46,7 +46,7 @@ public class MainWindowTitleController implements FxController {
this.appWindows = appWindows;
this.trayMenuInitialized = trayMenu.isInitialized();
this.updateChecker = updateChecker;
- this.updateAvailable = updateChecker.latestVersionProperty().isNotNull();
+ this.updateAvailable = updateChecker.updateAvailableProperty();
this.licenseHolder = licenseHolder;
this.settings = settings;
this.showMinimizeButton = Bindings.createBooleanBinding(this::isShowMinimizeButton, settings.showMinimizeButton, settings.showTrayIcon);
diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java
index 644f361cb..e8ea21fe4 100644
--- a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java
+++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java
@@ -7,6 +7,7 @@ import org.cryptomator.cryptofs.CryptoFileSystemProvider;
import org.cryptomator.cryptofs.DirStructure;
import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent;
import org.cryptomator.ui.common.FxController;
+import org.cryptomator.ui.common.VaultService;
import org.cryptomator.ui.fxapp.FxApplicationWindows;
import org.cryptomator.ui.removevault.RemoveVaultComponent;
import org.slf4j.Logger;
@@ -58,6 +59,7 @@ public class VaultListController implements FxController {
private final Stage mainWindow;
private final ObservableList vaults;
+ private final VaultService vaultService;
private final ObjectProperty selectedVault;
private final VaultListCellFactory cellFactory;
private final AddVaultWizardComponent.Builder addVaultWizard;
@@ -79,6 +81,7 @@ public class VaultListController implements FxController {
ObservableList vaults, //
ObjectProperty selectedVault, //
VaultListCellFactory cellFactory, //
+ VaultService vaultService, //
AddVaultWizardComponent.Builder addVaultWizard, //
RemoveVaultComponent.Builder removeVaultDialogue, //
VaultListManager vaultListManager, //
@@ -88,6 +91,7 @@ public class VaultListController implements FxController {
this.vaults = vaults;
this.selectedVault = selectedVault;
this.cellFactory = cellFactory;
+ this.vaultService = vaultService;
this.addVaultWizard = addVaultWizard;
this.removeVaultDialogue = removeVaultDialogue;
this.vaultListManager = vaultListManager;
@@ -119,6 +123,9 @@ public class VaultListController implements FxController {
Optional.ofNullable(selectedVault.get())
.filter(Vault::isLocked)
.ifPresent(vault -> appWindows.startUnlockWorkflow(vault, mainWindow));
+ Optional.ofNullable(selectedVault.get())
+ .filter(Vault::isUnlocked)
+ .ifPresent(vaultService::reveal);
}
});
diff --git a/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java
index 630b82776..afa05cc8c 100644
--- a/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java
+++ b/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java
@@ -1,18 +1,33 @@
package org.cryptomator.ui.preferences;
+import org.cryptomator.common.Environment;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.fxapp.UpdateChecker;
import javax.inject.Inject;
+import javafx.animation.PauseTransition;
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.beans.binding.BooleanBinding;
import javafx.beans.binding.ObjectBinding;
+import javafx.beans.binding.StringBinding;
+import javafx.beans.property.BooleanProperty;
import javafx.beans.property.ReadOnlyStringProperty;
+import javafx.beans.property.SimpleBooleanProperty;
+import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ContentDisplay;
+import java.time.Duration;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.time.format.FormatStyle;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
@PreferencesScoped
public class UpdatesPreferencesController implements FxController {
@@ -20,29 +35,55 @@ public class UpdatesPreferencesController implements FxController {
private static final String DOWNLOADS_URI = "https://cryptomator.org/downloads";
private final Application application;
+ private final Environment environment;
+ private final ResourceBundle resourceBundle;
private final Settings settings;
private final UpdateChecker updateChecker;
private final ObjectBinding checkForUpdatesButtonState;
private final ReadOnlyStringProperty latestVersion;
+ private final ObservableValue lastSuccessfulUpdateCheck;
+ private final StringBinding lastUpdateCheckMessage;
+ private final ObservableValue timeDifferenceMessage;
private final String currentVersion;
private final BooleanBinding updateAvailable;
+ private final BooleanBinding checkFailed;
+ private final BooleanProperty upToDateLabelVisible = new SimpleBooleanProperty(false);
+ private final DateTimeFormatter formatter;
+ private final BooleanBinding upToDate;
/* FXML */
public CheckBox checkForUpdatesCheckbox;
@Inject
- UpdatesPreferencesController(Application application, Settings settings, UpdateChecker updateChecker) {
+ UpdatesPreferencesController(Application application, Environment environment, ResourceBundle resourceBundle, Settings settings, UpdateChecker updateChecker) {
this.application = application;
+ this.environment = environment;
+ this.resourceBundle = resourceBundle;
this.settings = settings;
this.updateChecker = updateChecker;
this.checkForUpdatesButtonState = Bindings.when(updateChecker.checkingForUpdatesProperty()).then(ContentDisplay.LEFT).otherwise(ContentDisplay.TEXT_ONLY);
this.latestVersion = updateChecker.latestVersionProperty();
- this.updateAvailable = latestVersion.isNotNull();
+ this.lastSuccessfulUpdateCheck = updateChecker.lastSuccessfulUpdateCheckProperty();
+ this.timeDifferenceMessage = Bindings.createStringBinding(this::getTimeDifferenceMessage, lastSuccessfulUpdateCheck);
this.currentVersion = updateChecker.getCurrentVersion();
+ this.updateAvailable = updateChecker.updateAvailableProperty();
+ this.formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(Locale.getDefault());
+ this.upToDate = updateChecker.updateCheckStateProperty().isEqualTo(UpdateChecker.UpdateCheckState.CHECK_SUCCESSFUL).and(latestVersion.isEqualTo(currentVersion));
+ this.checkFailed = updateChecker.checkFailedProperty();
+ this.lastUpdateCheckMessage = Bindings.createStringBinding(this::getLastUpdateCheckMessage, lastSuccessfulUpdateCheck);
}
public void initialize() {
checkForUpdatesCheckbox.selectedProperty().bindBidirectional(settings.checkForUpdates);
+
+ upToDate.addListener((_, _, newVal) -> {
+ if (newVal) {
+ upToDateLabelVisible.set(true);
+ PauseTransition delay = new PauseTransition(javafx.util.Duration.seconds(5));
+ delay.setOnFinished(_ -> upToDateLabelVisible.set(false));
+ delay.play();
+ }
+ });
}
@FXML
@@ -55,6 +96,11 @@ public class UpdatesPreferencesController implements FxController {
application.getHostServices().showDocument(DOWNLOADS_URI);
}
+ @FXML
+ public void showLogfileDirectory() {
+ environment.getLogDir().ifPresent(logDirPath -> application.getHostServices().showDocument(logDirPath.toUri().toString()));
+ }
+
/* Observable Properties */
public ObjectBinding checkForUpdatesButtonStateProperty() {
@@ -77,6 +123,46 @@ public class UpdatesPreferencesController implements FxController {
return currentVersion;
}
+ public StringBinding lastUpdateCheckMessageProperty() {
+ return lastUpdateCheckMessage;
+ }
+
+ public String getLastUpdateCheckMessage() {
+ Instant lastCheck = lastSuccessfulUpdateCheck.getValue();
+ if (lastCheck != null && !lastCheck.equals(Settings.DEFAULT_TIMESTAMP)) {
+ return formatter.format(LocalDateTime.ofInstant(lastCheck, ZoneId.systemDefault()));
+ } else {
+ return "-";
+ }
+ }
+
+ public ObservableValue timeDifferenceMessageProperty() {
+ return timeDifferenceMessage;
+ }
+
+ public String getTimeDifferenceMessage() {
+ var lastSuccessCheck = lastSuccessfulUpdateCheck.getValue();
+ var duration = Duration.between(lastSuccessCheck, Instant.now());
+ var hours = duration.toHours();
+ if (lastSuccessCheck.equals(Settings.DEFAULT_TIMESTAMP)) {
+ return resourceBundle.getString("preferences.updates.lastUpdateCheck.never");
+ } else if (hours < 1) {
+ return resourceBundle.getString("preferences.updates.lastUpdateCheck.recently");
+ } else if (hours < 24) {
+ return String.format(resourceBundle.getString("preferences.updates.lastUpdateCheck.hoursAgo"), hours);
+ } else {
+ return String.format(resourceBundle.getString("preferences.updates.lastUpdateCheck.daysAgo"), duration.toDays());
+ }
+ }
+
+ public BooleanProperty upToDateLabelVisibleProperty() {
+ return upToDateLabelVisible;
+ }
+
+ public boolean isUpToDateLabelVisible() {
+ return upToDateLabelVisible.get();
+ }
+
public BooleanBinding updateAvailableProperty() {
return updateAvailable;
}
@@ -84,4 +170,13 @@ public class UpdatesPreferencesController implements FxController {
public boolean isUpdateAvailable() {
return updateAvailable.get();
}
+
+ public BooleanBinding checkFailedProperty() {
+ return checkFailed;
+ }
+
+ public boolean isCheckFailed() {
+ return checkFailed.getValue();
+ }
+
}
diff --git a/src/main/java/org/cryptomator/ui/updatereminder/UpdateReminderComponent.java b/src/main/java/org/cryptomator/ui/updatereminder/UpdateReminderComponent.java
index aa13f30da..d2c10f8fd 100644
--- a/src/main/java/org/cryptomator/ui/updatereminder/UpdateReminderComponent.java
+++ b/src/main/java/org/cryptomator/ui/updatereminder/UpdateReminderComponent.java
@@ -8,7 +8,8 @@ import org.cryptomator.ui.common.FxmlScene;
import javafx.scene.Scene;
import javafx.stage.Stage;
-import java.time.LocalDate;
+import java.time.Duration;
+import java.time.Instant;
@UpdateReminderScoped
@Subcomponent(modules = {UpdateReminderModule.class})
@@ -23,7 +24,8 @@ public interface UpdateReminderComponent {
Settings settings();
default void checkAndShowUpdateReminderWindow() {
- if (LocalDate.parse(settings().lastUpdateCheck.get()).isBefore(LocalDate.now().minusDays(14)) && !settings().checkForUpdates.getValue()) {
+ var now = Instant.now();
+ if (!settings().checkForUpdates.getValue() && settings().lastSuccessfulUpdateCheck.get().isBefore(now.minus(Duration.ofDays(14)))) {
Stage stage = window();
stage.setScene(updateReminderScene().get());
stage.sizeToScene();
@@ -33,6 +35,7 @@ public interface UpdateReminderComponent {
@Subcomponent.Factory
interface Factory {
+
UpdateReminderComponent create();
}
}
\ No newline at end of file
diff --git a/src/main/java/org/cryptomator/ui/updatereminder/UpdateReminderController.java b/src/main/java/org/cryptomator/ui/updatereminder/UpdateReminderController.java
index 28ae0b5c6..183298c44 100644
--- a/src/main/java/org/cryptomator/ui/updatereminder/UpdateReminderController.java
+++ b/src/main/java/org/cryptomator/ui/updatereminder/UpdateReminderController.java
@@ -7,8 +7,6 @@ import org.cryptomator.ui.fxapp.UpdateChecker;
import javax.inject.Inject;
import javafx.fxml.FXML;
import javafx.stage.Stage;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
@UpdateReminderScoped
public class UpdateReminderController implements FxController {
@@ -27,20 +25,17 @@ public class UpdateReminderController implements FxController {
@FXML
public void cancel() {
- settings.lastUpdateCheck.set(LocalDate.now().format(DateTimeFormatter.ISO_DATE));
window.close();
}
@FXML
public void once() {
- settings.lastUpdateCheck.set(LocalDate.now().format(DateTimeFormatter.ISO_DATE));
updateChecker.checkForUpdatesNow();
window.close();
}
@FXML
public void automatically() {
- settings.lastUpdateCheck.set(LocalDate.now().format(DateTimeFormatter.ISO_DATE));
updateChecker.checkForUpdatesNow();
settings.checkForUpdates.set(true);
window.close();
diff --git a/src/main/resources/fxml/dokany_support_end.fxml b/src/main/resources/fxml/dokany_support_end.fxml
new file mode 100644
index 000000000..423a54c72
--- /dev/null
+++ b/src/main/resources/fxml/dokany_support_end.fxml
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/fxml/preferences_updates.fxml b/src/main/resources/fxml/preferences_updates.fxml
index 3156d1c3c..d0910949b 100644
--- a/src/main/resources/fxml/preferences_updates.fxml
+++ b/src/main/resources/fxml/preferences_updates.fxml
@@ -1,13 +1,19 @@
+
+
+
+
-
+
+
+
-
-
+
-
+
-
-
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/i18n/strings.properties b/src/main/resources/i18n/strings.properties
index 1585448e5..cd15d12dd 100644
--- a/src/main/resources/i18n/strings.properties
+++ b/src/main/resources/i18n/strings.properties
@@ -321,6 +321,14 @@ preferences.updates.currentVersion=Current Version: %s
preferences.updates.autoUpdateCheck=Check for updates automatically
preferences.updates.checkNowBtn=Check Now
preferences.updates.updateAvailable=Update to version %s available.
+preferences.updates.lastUpdateCheck=Last check: %s
+preferences.updates.lastUpdateCheck.never=never
+preferences.updates.lastUpdateCheck.recently=recently
+preferences.updates.lastUpdateCheck.daysAgo=%s days ago
+preferences.updates.lastUpdateCheck.hoursAgo=%s hours ago
+preferences.updates.checkFailed=Looking for updates failed. Please check your internet connection or try again later.
+preferences.updates.upToDate=Cryptomator is up-to-date.
+
## Contribution
preferences.contribute=Support Us
preferences.contribute.registeredFor=Supporter certificate registered for %s
@@ -533,6 +541,12 @@ updateReminder.notNow=Not Now
updateReminder.yesOnce=Yes, Once
updateReminder.yesAutomatically=Yes, Automatically
+#Dokany Support End
+dokanySupportEnd.title=Deprecation notice
+dokanySupportEnd.message=Support end for Dokany
+dokanySupportEnd.description=The volume type Dokany is no longer supported by Cryptomator. Your settings are adjusted to use the default volume type now. You can view the default type in the preferences.
+dokanySupportEnd.preferencesBtn=Open Preferences
+
# Share Vault
shareVault.title=Share Vault
shareVault.message=Would you like to share your vault with others?
diff --git a/src/main/resources/i18n/strings_ar.properties b/src/main/resources/i18n/strings_ar.properties
index 6b59f1718..95e6403e6 100644
--- a/src/main/resources/i18n/strings_ar.properties
+++ b/src/main/resources/i18n/strings_ar.properties
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=اختر اسم للمخزن
addvaultwizard.new.namePrompt=اسم الخزينة
### Location
addvaultwizard.new.locationInstruction=أين يجب على Cryptomator تخزين الملفات المشفرة للمخزن الخاص بك؟
+addvaultwizard.new.locationLoading=جاري التحقق من وجود مسارات تخزين سحابية افتراضية في نظام الملفات المحلية…
addvaultwizard.new.locationLabel=موقع التخزين
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=موقع مخصص
@@ -141,6 +142,9 @@ unlock.error.customPath.description.hideawayNotDir=لا يمكن إزالة ال
unlock.error.customPath.description.couldNotBeCleaned=لا يمكن تركيب خزانتك على المسار "%s". الرجاء المحاولة مرة أخرى أو اختيار مسار مختلف.
unlock.error.customPath.description.notEmptyDir=مسار التركيب المخصص "%s" ليس مجلد فارغ. الرجاء اختيار مجلد فارغ وحاول مرة أخرى.
unlock.error.customPath.description.generic=لقد اخترت مسار تركيب مخصص لهذه الخزانة، ولكن استخدامه فشل مع الرسالة: %2$s
+unlock.error.restartRequired.message=غير قادر على فتح الخزنة
+unlock.error.restartRequired.description=اختر نوع قرص آخر في خيارات المخزن أو اعد تشغيل Cryptomator.
+unlock.error.title=فشل فتح "%s"
## Hub
hub.noKeychain.message=غير قادر على الوصول إلى مفتاح الجهاز
hub.noKeychain.description=من أجل فتح مركز مخازن، مطلوب مفتاح جهاز، يتم تأمينه باستخدام سلسلة مفاتيح. للمضي قدما، قم بتمكين "%s" واختر سلسلة مفاتيح في التفضيلات.
@@ -153,11 +157,22 @@ hub.auth.loginLink=لم يتم إعادة توجيهك؟ انقر هنا لفت
hub.receive.message=معالجة الاستجابة…
hub.receive.description=Cryptomator يتلقى ويعالج الاستجابة من المركز. الرجاء الانتظار.
### Register Device
+hub.register.message=جهاز جديد
+hub.register.description=هذا هو أول وصول مركزي من هذا الجهاز. الرجاء تسجيله باستخدام مفتاح الحساب الخاص بك.
hub.register.nameLabel=اسم الجهاز
+hub.register.invalidAccountKeyLabel=مفتاح الحساب غير صحيح
+hub.register.registerBtn=تسجيل
### Register Device Legacy
+hub.register.legacy.occupiedMsg=الاسم قيد الاستخدام
+hub.register.legacy.description=هذا هو أول وصول للمركز من هذا الجهاز. الرجاء تسجيله.
### Registration Success
+hub.registerSuccess.message=تم تسجيل الجهاز
+hub.registerSuccess.description=تم تسجيل جهازك بنجاح. يمكنك الآن المتابعة لفتح الخزنة.
hub.registerSuccess.unlockBtn=افتح
+hub.registerSuccess.legacy.description=للدخول إلى الخزينة، يحتاج جهازك كذالك إلى إذن من مالك الخزينة.
### Registration Failed
+hub.registerFailed.message=فشل تسجيل الجهاز
+hub.registerFailed.description.generic=حدث خطأ في عملية تسجيل الاسم. لمزيد من التفاصيل، راجع سجل التطبيق.
### Unauthorized
hub.unauthorized.message=تم رفض الوصول
hub.unauthorized.description=لم يتم بعد منح الإذن لجهازك بالوصول إلى هذا المخزن. اطلب من مالك المخزن أن يأذن بذلك.
@@ -283,16 +298,21 @@ preferences.interface.showMinimizeButton=إظهار زر التصغير
preferences.interface.showTrayIcon=إظهار أيقونة اللوحة (يتطلب إعادة تشغيل)
## Volume
preferences.volume=القرص الإفتراضي
+preferences.volume.type=نوع القرص الافتراضي
preferences.volume.type.automatic=تلقائي
preferences.volume.docsTooltip=افتح الوثائق لمعرفة المزيد عن مختلف أنواع وحدة التخزين.
preferences.volume.fuseRestartRequired=لتطبيق التغييرات، يحتاج Cryptomator إلى إعادة التشغيل.
+preferences.volume.tcp.port=منفذ TCP الافتراضي
preferences.volume.supportedFeatures=يدعم نوع وحدة تخزين المختار الميزات التالية:
+preferences.volume.feature.mountAuto=اختيار نقطة البَدْء التلقائية
+preferences.volume.feature.readOnly=تحميل للقراءة فقط
## Updates
preferences.updates=تحديثات
preferences.updates.currentVersion=الإصدار الحالي: %s
preferences.updates.autoUpdateCheck=تحقق من التحديثات اوتوماتيكيا
preferences.updates.checkNowBtn=تحقق الان
preferences.updates.updateAvailable=التحديث إلى الإصدار %s متاح.
+
## Contribution
preferences.contribute=ادعمنا
preferences.contribute.registeredFor=شهادة الداعم مسجلة لـ %s
@@ -309,6 +329,8 @@ stats.title=إحصائيات عن %s
stats.cacheHitRate=معدل استخدام الكاش
## Read
stats.read.throughput.idle=قراءة: خامل
+stats.read.throughput.kibs=القراءة: %.2f KiB/s
+stats.read.throughput.mibs=القراءة: %.2f MiB/s
stats.decr.total.data.none=تم فك تشفير البيانات:-
## Write
stats.write.total.data.mib=البيانات المكتوبة: %.1f م.ب
@@ -443,4 +465,7 @@ quit.lockAndQuitBtn=قفل و خروج
# Update Reminder
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=فتح التفضيلات
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_ba.properties b/src/main/resources/i18n/strings_ba.properties
index beb68ca61..a25ecb814 100644
--- a/src/main/resources/i18n/strings_ba.properties
+++ b/src/main/resources/i18n/strings_ba.properties
@@ -308,6 +308,7 @@ preferences.updates.currentVersion=Ағымдағы версия: %s
preferences.updates.autoUpdateCheck=Яңыртыуҙарҙы автоматик рәүештә тикшереү
preferences.updates.checkNowBtn=Хәҙер тикшер
preferences.updates.updateAvailable=%s версияһына тиклем яңыртыу бар.
+
## Contribution
preferences.contribute=Ярҙам
preferences.contribute.registeredFor=%s өсөн теркәлгән ярҙамсы сертификаты
@@ -518,4 +519,7 @@ updateReminder.notNow=Хәҙер түгел
updateReminder.yesOnce=Эйе, бер тапҡыр
updateReminder.yesAutomatically=Эйе, автоматик рәүештә
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Көйләүҙәрҙе ас
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_be.properties b/src/main/resources/i18n/strings_be.properties
index a654885ff..349e50361 100644
--- a/src/main/resources/i18n/strings_be.properties
+++ b/src/main/resources/i18n/strings_be.properties
@@ -295,6 +295,7 @@ preferences.updates.currentVersion=Бягучая версія: %s
preferences.updates.autoUpdateCheck=Правяраць наяўнасць абнаўленняў аўтаматычна
preferences.updates.checkNowBtn=Праверыць зараз
preferences.updates.updateAvailable=Даступна абнаўленне да версіі %s
+
## Contribution
preferences.contribute=Падтрымай нас
preferences.contribute.registeredFor=Сэртыфікат ахвяравальніка зарэгістраваны на %s
@@ -498,4 +499,7 @@ updateReminder.notNow=Не цяпер
updateReminder.yesOnce=Так, аднойчы
updateReminder.yesAutomatically=Так, аўтаматычна
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Адчыніць налады
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_bg.properties b/src/main/resources/i18n/strings_bg.properties
index bd6ca5f72..a1e0926a2 100644
--- a/src/main/resources/i18n/strings_bg.properties
+++ b/src/main/resources/i18n/strings_bg.properties
@@ -308,6 +308,7 @@ preferences.updates.currentVersion=Текущо издание: %s
preferences.updates.autoUpdateCheck=Автоматична проверка за издания
preferences.updates.checkNowBtn=Проверяване
preferences.updates.updateAvailable=Налично е ново издание %s.
+
## Contribution
preferences.contribute=Подкрепете ни
preferences.contribute.registeredFor=Сертификатът за дарение е регистриран на %s
@@ -518,4 +519,7 @@ updateReminder.notNow=Не сега
updateReminder.yesOnce=Да, веднъж
updateReminder.yesAutomatically=Да, автоматично
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Към настройките
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_bn.properties b/src/main/resources/i18n/strings_bn.properties
index ed80cefdd..1960b7e83 100644
--- a/src/main/resources/i18n/strings_bn.properties
+++ b/src/main/resources/i18n/strings_bn.properties
@@ -122,6 +122,7 @@ lock.forced.retryBtn=পুনরায় চেষ্টা করুন
## Interface
## Volume
## Updates
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -175,4 +176,6 @@ vaultOptions.mount.mountPoint.directoryPickerButton=নির্বাচন ক
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_bs.properties b/src/main/resources/i18n/strings_bs.properties
index a12a02244..ebd780f9e 100644
--- a/src/main/resources/i18n/strings_bs.properties
+++ b/src/main/resources/i18n/strings_bs.properties
@@ -171,6 +171,7 @@ preferences.updates.currentVersion=Trenutna verzija: %s
preferences.updates.autoUpdateCheck=Automatski provjeri ima li ažuriranja
preferences.updates.checkNowBtn=Provjeri sada
preferences.updates.updateAvailable=Dostupno ažuriranje na verziju %s.
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -317,4 +318,6 @@ quit.lockAndQuitBtn=Zaključaj i zatvori
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_ca.properties b/src/main/resources/i18n/strings_ca.properties
index 9e576ca4b..6c4812546 100644
--- a/src/main/resources/i18n/strings_ca.properties
+++ b/src/main/resources/i18n/strings_ca.properties
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Introduiu el nom de la caixa forta
addvaultwizard.new.namePrompt=Nom de la caixa forta
### Location
addvaultwizard.new.locationInstruction=On deu emmagatzemar Cryptomator els fitxers xifrats de la vostra caixa forta?
+addvaultwizard.new.locationLoading=Comprovació del sistema de fitxers locals per a trobar directoris habituals d'emmagatzematge al núvol…
addvaultwizard.new.locationLabel=Ubicació de l'emmagatzematge
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Ubicació personalitzada
@@ -141,6 +142,9 @@ unlock.error.customPath.description.hideawayNotDir=El fitxer temporal "%3$s" uti
unlock.error.customPath.description.couldNotBeCleaned=La caixa forta no es pot muntar en "%s". Intenteu-ho de nou o escolliu un destí diferent, si us plau.
unlock.error.customPath.description.notEmptyDir=El punt de muntatge "%s" no és una carpeta buida. Trieu una carpeta buida i proveu-ho de nou.
unlock.error.customPath.description.generic=Al anar a desar la caixa forta en el lloc indicat ha fallat amb el missatge: %2$s
+unlock.error.restartRequired.message=No ha estat possible desblocar la caixa forta
+unlock.error.restartRequired.description=Canvieu el tipus de volum en les opcions de la caixa forta o reinicieu Criptovalor.
+unlock.error.title=El desblocatge de "%s" ha fallat
## Hub
hub.noKeychain.message=No es pot accedir a la clau del dispositiu
hub.noKeychain.description=Per poder desblocar caixes fortes del Hub es requereix la clau d'un dispositiu, que s'emmagatzema de forma segura en un clauer. Per continuar, habiliti "%s" i seleccioni un clauer en les Preferències.
@@ -154,15 +158,30 @@ hub.receive.message=S'està processant la resposta…
hub.receive.description=Cryptomator està rebent i processant la resposta del Hub. Espereu, si us plau.
### Register Device
hub.register.message=Nou dispositiu
+hub.register.description=Aquest és el primer accés a Hub d'aquest dispositiu. Si us plau, registreu-vos-hi amb la vostra Account Key.
hub.register.nameLabel=Nom del dispositiu
+hub.register.invalidAccountKeyLabel=Account Key no és vàlida
+hub.register.registerBtn=Registre
### Register Device Legacy
+hub.register.legacy.occupiedMsg=El nom ja està en ús
+hub.register.legacy.description=Aquest és el primer accés a Hub d'aquest dispositiu. Si us plau, registreu-lo.
### Registration Success
+hub.registerSuccess.message=Dispositiu registrat
+hub.registerSuccess.description=El vostre dispositiu ha estat registrat correctament. Ara podeu desblocar la caixa forta.
hub.registerSuccess.unlockBtn=Desbloqueja
+hub.registerSuccess.legacy.description=Per a accedir a la caixa forta, el vostre dispositiu ha de ser autoritzat pel propietari de la caixa.
### Registration Failed
+hub.registerFailed.message=El registre del dispositiu ha fallat
+hub.registerFailed.description.generic=S'ha produït un error en el procés de registre. Per a obtindre'n més detalls vegeu els registres de l'aplicació.
+hub.registerFailed.description.deviceAlreadyExists=El dispositiu ja ha estat registrat per un altre usuari. Mireu de canviar el compte d'usuari o feu servir un dispositiu diferent.
### Unauthorized
hub.unauthorized.message=Accés denegat
hub.unauthorized.description=El vostre dispositiu no ha estat encara autoritzat a accedir a aquesta caixa forta. Demaneu autorització al propietari.
### Requires Account Initialization
+hub.requireAccountInit.message=Acció necessària
+hub.requireAccountInit.description.0=Per a continuar, si us plau, seguiu els passos necessaris en el vostre
+hub.requireAccountInit.description.1=perfil d'usuari de Hub
+hub.requireAccountInit.description.2=.
### License Exceeded
hub.invalidLicense.message=La llicència del Hub no és vàlida
hub.invalidLicense.description=Aquest Cryptomator Hub no té una llicència vàlida. Informa si us plau a l'administrador perquè actualitzi o renovi la llicència.
@@ -284,9 +303,11 @@ preferences.interface.showMinimizeButton=Mostra el botó 'minimitzar'
preferences.interface.showTrayIcon=Mostra la icona en la barra (cal reiniciar)
## Volume
preferences.volume=Unitat virtual
+preferences.volume.type=Tipus de volum per defecte
preferences.volume.type.automatic=Automàtic
preferences.volume.docsTooltip=Obre la documentació per aprendre més sobre els diferents tipus de volums.
preferences.volume.fuseRestartRequired=Per aplicar els canvis Cryptomator necessita reiniciar-se.
+preferences.volume.tcp.port=Port TCP per defecte
preferences.volume.supportedFeatures=El tipus de volum escollit suporta les següents característiques:
preferences.volume.feature.mountAuto=Selecció automàtica del punt de muntatge
preferences.volume.feature.mountToDir=Directori personalitzat com a punt de muntatge
@@ -299,6 +320,7 @@ preferences.updates.currentVersion=Versió actual: %s
preferences.updates.autoUpdateCheck=Comprova automàticament si hi ha actualitzacions
preferences.updates.checkNowBtn=Comprova-ho ara
preferences.updates.updateAvailable=L'actualització a la versió %s es troba disponible.
+
## Contribution
preferences.contribute=Doneu-nos suport
preferences.contribute.registeredFor=Certificat de col·laborador registrat per a %s
@@ -371,6 +393,7 @@ main.vaultDetail.unlockBtn=Desbloca…
main.vaultDetail.unlockNowBtn=Desbloqueja ara
main.vaultDetail.optionsBtn=Opcions de la caixa forta
main.vaultDetail.passwordSavedInKeychain=Contrasenya desada
+main.vaultDetail.share=Compateix…
### Unlocked
main.vaultDetail.unlockedStatus=DESBLOQUEJADA
main.vaultDetail.accessLocation=Els continguts de la vostra caixa forta són accessibles aquí:
@@ -425,6 +448,7 @@ vaultOptions.general.startHealthCheckBtn=Inicia la comprovació
## Mount
vaultOptions.mount=Muntatge
+vaultOptions.mount.info=Obriu les preferències de la unitat virtual per a canviar les preferències per defecte.
vaultOptions.mount.readonly=Només lectura
vaultOptions.mount.customMountFlags=Senyaladors de muntatge personalitzats
vaultOptions.mount.winDriveLetterOccupied=ocupat
@@ -434,6 +458,10 @@ vaultOptions.mount.mountPoint.driveLetter=Utilitza la lletra de la unitat assign
vaultOptions.mount.mountPoint.custom=Faci servir el directori escollit
vaultOptions.mount.mountPoint.directoryPickerButton=Trieu…
vaultOptions.mount.mountPoint.directoryPickerTitle=Triï un directori
+vaultOptions.mount.volumeType.default=Per defecte (%s)
+vaultOptions.mount.volumeType.restartRequired=Per a fer servir aquest tipus de volum cal reiniciar Cryptomator.
+vaultOptions.mount.volume.tcp.port=Port TCP
+vaultOptions.mount.volume.type=Tipus de volum
## Master Key
vaultOptions.masterkey=Contrasenya
vaultOptions.masterkey.changePasswordBtn=Canvi de contrasenya
@@ -505,4 +533,25 @@ updateReminder.notNow=Ara no
updateReminder.yesOnce=Sí, una vegada
updateReminder.yesAutomatically=Sí, automàticament
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Obrir les Preferències
+
# Share Vault
+shareVault.title=Comparteix la caixa forta
+shareVault.message=Voleu compartir la vostra caixa forta amb altres persones?
+shareVault.description=Aneu amb molt de compte quan compartiu la vostra caixa forta amb altres persones. En resum, seguiu aquests passos:
+shareVault.instruction.1=1. Compartiu l'accés a la carpeta via emmagatzematge en el núvol.
+shareVault.instruction.2=2. Compartiu la contrasenya de la caixa forta per un mitjà segur.
+shareVault.remarkBestPractices=Si en voleu més informació, feu una ullada als suggeriments que trobareu a la nostra documentació.
+shareVault.docsTooltip=Obre la documentació per aprendre més sobre compartir caixes fortes.
+shareVault.hubAd.description=La forma segura de treballar en equip
+shareVault.hubAd.keyManagement=* Gestió sense divulgació de mots de pas
+shareVault.hubAd.authentication=* Autenticació forta
+shareVault.hubAd.encryption=Xifratge d'extrem a extrem
+shareVault.visitHub=Visita Cryptomator Hub
+
+shareVault.hub.message=Com compartir una caixa forta al Hub
+shareVault.hub.description=Per tal de compartir el contingut de la caixa forta amb un altre membre de l'equip, heu de seguir dos passos:
+shareVault.hub.instruction.1=1. Compartiu l'accés a la carpeta via emmagatzematge en el núvol.
+shareVault.hub.instruction.2=2. Doneu accés al membre de l'equip a Cryptomator Hub.
+shareVault.hub.openHub=Obre Cryptomator Hub
\ No newline at end of file
diff --git a/src/main/resources/i18n/strings_cs.properties b/src/main/resources/i18n/strings_cs.properties
index 1a5d7ff5d..4f1634af2 100644
--- a/src/main/resources/i18n/strings_cs.properties
+++ b/src/main/resources/i18n/strings_cs.properties
@@ -24,6 +24,7 @@ error.existingSolutionDescription=Cryptomator neočekával, že se tak stane. Na
error.hyperlink.solution=Podívejte se na řešení
error.lookupPermissionMessage=Cryptomator může najít řešení tohoto problému online. To odešle žádost do naší databáze problémů z vaší IP adresy.
error.dismiss=Zrušit
+error.lookUpSolution=Vyhledat řešení
# Defaults
defaults.vault.vaultName=Trezor
@@ -46,6 +47,7 @@ addvaultwizard.new.nameInstruction=Zvolte jméno trezoru
addvaultwizard.new.namePrompt=Název trezoru
### Location
addvaultwizard.new.locationInstruction=Kde by měl Cryptomator ukládat šifrované soubory vašeho trezoru?
+addvaultwizard.new.locationLoading=Kontroluji lokální souborový systém pro výchozí cloudové úložiště…
addvaultwizard.new.locationLabel=Umístění úložiště
addvaultwizard.new.locationPrompt=...
addvaultwizard.new.directoryPickerLabel=Vlastní umístění
@@ -135,8 +137,12 @@ unlock.success.revealBtn=Zobrazit jednotku
unlock.error.customPath.message=Nelze připojit trezor k vlastní cestě
unlock.error.customPath.description.notSupported=Pokud chcete pokračovat v používání vlastní cesty, přejděte do nastavení a vyberte typ hlasitosti, který ji podporuje. V opačném případě přejděte do možností trezoru a vyberte podporovaný přípojný bod.
unlock.error.customPath.description.notExists=Cesta k připojení neexistuje. Buď ji vytvořte ve vašem lokálním souborovém systému, nebo ji změňte v možnostech trezoru.
+unlock.error.restartRequired.message=Nelze odemknout trezor
+unlock.error.restartRequired.description=Změňte typ svazku v možnostech trezoru nebo restartujte Cryptomator.
+unlock.error.title=Odemknutí "%s" selhalo
## Hub
hub.noKeychain.message=Nelze získat přístup ke klíči zařízení
+hub.noKeychain.description=Chcete-li odemknout Hub trezory, je potřeba použít klíč zařízení, který je zabezpečen pomocí klíčenky. Chcete-li pokračovat, povolte „%s“ a vyberte klíčenku v nastavení.
hub.noKeychain.openBtn=Otevřít předvolby
### Waiting
hub.auth.message=Čekání na ověření…
@@ -144,19 +150,33 @@ hub.auth.description=Měli byste být automaticky přesměrováni na přihlašov
hub.auth.loginLink=Nebyli jste přesměrováni? Klikněte zde pro otevření.
### Receive Key
hub.receive.message=Zpracovávání odezvy…
+hub.receive.description=Cryptomator přijímá a zpracovává odpověď od Hubu. Počkejte prosím.
### Register Device
hub.register.message=Nové zařízení
+hub.register.description=Toto je první přístup k Hub z tohoto zařízení. Zaregistrujte ho pomocí vašeho Account Key.
hub.register.nameLabel=Název zařízení
+hub.register.invalidAccountKeyLabel=Neplatný Account Key
hub.register.registerBtn=Registrovat
### Register Device Legacy
+hub.register.legacy.occupiedMsg=Jméno je již používáno
+hub.register.legacy.description=Toto je první přístup k Hubu z tohoto zařízení. Zaregistrujte ho.
### Registration Success
+hub.registerSuccess.message=Zařízení registrováno
+hub.registerSuccess.description=Vaše zařízení je úspěšně zaregistrováno. Nyní můžete pokračovat v odemknutí trezoru.
hub.registerSuccess.unlockBtn=Odemknout
+hub.registerSuccess.legacy.description=Pro přístup k trezoru musí být vaše zařízení autorizováno majitelem trezoru.
### Registration Failed
+hub.registerFailed.message=Registrace zařízení se nezdařila
+hub.registerFailed.description.generic=Došlo k chybě v registračním procesu. Pro více detailů se podívejte do logu aplikace.
+hub.registerFailed.description.deviceAlreadyExists=Toto zařízení je již registrováno pro jiného uživatele. Zkuste změnit uživatelský účet nebo použijte jiné zařízení.
### Unauthorized
hub.unauthorized.message=Přístup odepřen
hub.unauthorized.description=Vaše zařízení dosud nebylo oprávněno k přístupu k tomuto trezoru. Požádejte vlastníka trezoru, aby jej autorizoval.
### Requires Account Initialization
hub.requireAccountInit.message=Požadována akce
+hub.requireAccountInit.description.0=Chcete-li pokračovat, vyplňte prosím požadované kroky ve vašem
+hub.requireAccountInit.description.1=Uživatelský profil Hubu
+hub.requireAccountInit.description.2=.
### License Exceeded
hub.invalidLicense.message=Licence Hubu je neplatná
@@ -236,6 +256,7 @@ health.result.severityFilter.good=Dobré
health.result.severityFilter.info=Informace
health.result.severityFilter.warn=Varování
health.result.severityFilter.crit=Kritické
+health.result.fixStateFilter.all=Stav opravy - Vše
health.result.fixStateFilter.fixable=Opravitelné
health.result.fixStateFilter.notFixable=Ne opravitelné
health.result.fixStateFilter.fixing=Opravování…
@@ -251,6 +272,7 @@ preferences.title=Nastavení
## General
preferences.general=Obecné
preferences.general.startHidden=Skrýt okno Cryptomatoru při spuštění
+preferences.general.autoCloseVaults=Zamknout trezory automaticky při ukončení aplikace
preferences.general.debugLogging=Ladicí režim
preferences.general.debugDirectory=Ukázat soubory se záznamy událostí (log)
preferences.general.autoStart=Spustit Cryptomator při spuštění systému
@@ -273,6 +295,10 @@ preferences.interface.showTrayIcon=Zobrazit ikonu v liště (vyžaduje restart)
preferences.volume=Virtuální jednotky
preferences.volume.type=Výchozí typ jednotky
preferences.volume.type.automatic=Automatické
+preferences.volume.docsTooltip=Otevřete dokumentaci, abyste se dozvěděli více o různých typech svazků.
+preferences.volume.fuseRestartRequired=Chcete-li použít změny, Cryptomator musí být restartován.
+preferences.volume.tcp.port=Výchozí TCP port
+preferences.volume.supportedFeatures=Zvolený typ svazku podporuje následující funkce:
preferences.volume.feature.mountFlags=Vlastní možnosti připojení disku
preferences.volume.feature.readOnly=Připojení disku pouze pro čtení
## Updates
@@ -281,6 +307,7 @@ preferences.updates.currentVersion=Aktuální verze: %s
preferences.updates.autoUpdateCheck=Automaticky kontrolovat aktualizace
preferences.updates.checkNowBtn=Zkontrolovat nyní
preferences.updates.updateAvailable=Dostupná nová verze %s.
+
## Contribution
preferences.contribute=Podpořte nás
preferences.contribute.registeredFor=Certifikát podporovatele byl registrován pro %s
@@ -353,6 +380,7 @@ main.vaultDetail.unlockBtn=Odemknout…
main.vaultDetail.unlockNowBtn=Odemknout nyní
main.vaultDetail.optionsBtn=Možnosti trezoru
main.vaultDetail.passwordSavedInKeychain=Heslo uloženo
+main.vaultDetail.share=Sdílet…
### Unlocked
main.vaultDetail.unlockedStatus=ODEMKNUTO
main.vaultDetail.accessLocation=Obsah vašeho trezoru je dostupný:
@@ -366,7 +394,9 @@ main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/s
main.vaultDetail.stats=Statistiky trezoru
main.vaultDetail.locateEncryptedFileBtn=Najít šifrovaný soubor
+main.vaultDetail.locateEncryptedFileBtn.tooltip=Vyberte soubor z vašeho trezoru, abyste našli jeho šifrovaný protějšek
main.vaultDetail.encryptedPathsCopied=Cesta souboru byla zkopírována do schránky!
+main.vaultDetail.filePickerTitle=Vyberte soubor uvnitř trezoru
### Missing
main.vaultDetail.missing.info=Cryptomator nemohl najít trezor na této cestě.
main.vaultDetail.missing.recheck=Znovu zkontrolovat
@@ -411,8 +441,10 @@ vaultOptions.mount.winDriveLetterOccupied=obsazeno
vaultOptions.mount.mountPoint=Přípojný bod
vaultOptions.mount.mountPoint.auto=Automaticky vybrat vhodné místo
vaultOptions.mount.mountPoint.driveLetter=Použít zvolenou jednotku
+vaultOptions.mount.mountPoint.custom=Použít vybraný adresář
vaultOptions.mount.mountPoint.directoryPickerButton=Vybrat...
vaultOptions.mount.mountPoint.directoryPickerTitle=Vyberte složku
+vaultOptions.mount.volumeType.default=Výchozí (%s)
vaultOptions.mount.volume.tcp.port=TCP port
vaultOptions.mount.volume.type=Typ jednotky
## Master Key
@@ -437,18 +469,23 @@ recoveryKey.display.StorageHints=Uchovejte ho někde velmi bezpečně, např.\n
## Reset Password
### Enter Recovery Key
recoveryKey.recover.title=Resetovat heslo
+recoveryKey.recover.prompt=Zadejte obnovovací klíč pro "%s":
recoveryKey.recover.correctKey=Toto je platný obnovovací klíč
+recoveryKey.recover.wrongKey=Tento klíč pro obnovení partří k jinému trezoru
+recoveryKey.recover.invalidKey=Tento klíč pro obnovení není platný
recoveryKey.printout.heading=Obnovovací klíč Cryptomator\n"%s"\n
### Reset Password
recoveryKey.recover.resetBtn=Resetovat
### Recovery Key Password Reset Success
recoveryKey.recover.resetSuccess.message=Resetování hesla bylo úspěšné
+recoveryKey.recover.resetSuccess.description=Můžete odemknout váš trezor pomocí nového hesla.
# Convert Vault
convertVault.title=Převést trezor
convertVault.convert.convertBtn.before=Převést
convertVault.convert.convertBtn.processing=Převádění…
convertVault.success.message=Konverze byla úspěšná
+convertVault.hubToPassword.success.description=Nyní můžete odemknout trezor zvoleným heslem bez nutnosti přístupu k Hubu.
# New Password
newPassword.promptText=Zadejte nové heslo
@@ -479,4 +516,26 @@ updateReminder.notNow=Nyní ne
updateReminder.yesOnce=Ano, jednou
updateReminder.yesAutomatically=Ano, automaticky
+#Dokany Support End
+dokanySupportEnd.title=Oznámení o zastaralosti
+dokanySupportEnd.message=Konec podpory pro Dokany
+dokanySupportEnd.preferencesBtn=Otevřít předvolby
+
# Share Vault
+shareVault.title=Sdílet trezor
+shareVault.message=Chcete sdílet svůj trezor s ostatními?
+shareVault.description=Vždy buďte opatrní při sdílení vašeho trezoru s ostatními lidmi. Stručně řečeno, postupujte podle těchto kroků:
+shareVault.instruction.1=1. Sdílejte přístup ke šifrované složce trezoru prostřednictvím cloudového úložiště.
+shareVault.instruction.2=2. Sdílejte heslo trezoru bezpečným způsobem.
+shareVault.remarkBestPractices=Pro více informací se podívejte na návrhy osvědčených postupů v našich dokumentech.
+shareVault.docsTooltip=Otevřete dokumentaci a dozvíte se více o sdílení trezorů.
+shareVault.hubAd.description=Bezpečný způsob práce v týmech
+shareVault.hubAd.authentication=• Silné ověření
+shareVault.hubAd.encryption=• End-to-end šifrování
+shareVault.visitHub=Navštivte Cryptomator Hub
+
+shareVault.hub.message=Jak sdílet Hub trezor
+shareVault.hub.description=Chcete-li sdílet obsah trezoru s jiným členem týmu, musíte provést dva kroky:
+shareVault.hub.instruction.1=1. Sdílejte přístup ke šifrované složce trezoru prostřednictvím cloudového úložiště.
+shareVault.hub.instruction.2=2. Udělte přístup členovi týmu v Cryptomator Hubu.
+shareVault.hub.openHub=Otevřít Cryptomator Hub
\ No newline at end of file
diff --git a/src/main/resources/i18n/strings_da.properties b/src/main/resources/i18n/strings_da.properties
index cf557cb29..7c7a62cbb 100644
--- a/src/main/resources/i18n/strings_da.properties
+++ b/src/main/resources/i18n/strings_da.properties
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Vælg et navn til boksen
addvaultwizard.new.namePrompt=Boks-navn
### Location
addvaultwizard.new.locationInstruction=Hvor skal Cryptomator gemme de krypterede filer af din boks?
+addvaultwizard.new.locationLoading=Tjekker lokalt filsystem for standard mappe til opbevaring i skyen…
addvaultwizard.new.locationLabel=Dataplacering
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Vælg placering
@@ -141,6 +142,9 @@ unlock.error.customPath.description.hideawayNotDir=Den midlertidige, skjulte fil
unlock.error.customPath.description.couldNotBeCleaned=Din boks kunne ikke monteres på stien "%s". Prøv venligst igen eller vælg en anden sti.
unlock.error.customPath.description.notEmptyDir=Den brugerdefinerede monteringssti "%s" er ikke en tom mappe. Vælg venligst en tom mappe og prøv igen.
unlock.error.customPath.description.generic=Du har valgt en brugerdefineret monteringssti til denne boks, men det mislykkedes med følgende besked: %2$s
+unlock.error.restartRequired.message=Kan ikke låse boks op
+unlock.error.restartRequired.description=Skift drev typen i boksindstillinger eller genstart Cryptomator.
+unlock.error.title=Oplåsning af "%s" mislykkedes
## Hub
hub.noKeychain.message=Kan ikke tilgå enhedsnøgle
hub.noKeychain.description=En enhedsnøgle er påkrævet for at låse Hub bokse op. Enhedsnøglen er sikret i en nøglering. For at fortsætte, aktivér “%s” og vælg en nøglering i indstillingerne.
@@ -154,15 +158,30 @@ hub.receive.message=Behandler svar…
hub.receive.description=Cryptomator modtager og behandler svaret fra hubben. Vent venligst.
### Register Device
hub.register.message=Ny Enhed
+hub.register.description=Det er første gang Hub tilgås fra denne enhed. Registrer den venligst ved at anvende din Account Key.
hub.register.nameLabel=Enheds-navn
+hub.register.invalidAccountKeyLabel=Ugyldig Account Key
+hub.register.registerBtn=Registrer
### Register Device Legacy
+hub.register.legacy.occupiedMsg=Navnet er allerede i brug
+hub.register.legacy.description=Det er første gang Hub tilgås fra denne enhed. Registrer den venligst.
### Registration Success
+hub.registerSuccess.message=Enhed registreret
+hub.registerSuccess.description=Din enhed er registreret. Du kan nu fortsætte med at låse boksen op.
hub.registerSuccess.unlockBtn=Lås op
+hub.registerSuccess.legacy.description=For at få adgang til boksen, skal din enhed desuden være godkendt af boksens ejer.
### Registration Failed
+hub.registerFailed.message=Enheds registrering mislykkedes
+hub.registerFailed.description.generic=Der opstod en fejl i registreringsprocessen. Kig i applikations-loggen for flere detaljer.
+hub.registerFailed.description.deviceAlreadyExists=Denne enhed er allerede registreret af en anden bruger. Prøv at ændre brugerkontoen eller brug en anden enhed.
### Unauthorized
hub.unauthorized.message=Adgang nægtet
hub.unauthorized.description=Din enhed er endnu ikke blevet godkendt til at få adgang til denne boks. Spørg boks-ejeren om godkendelse.
### Requires Account Initialization
+hub.requireAccountInit.message=Handling påkrævet
+hub.requireAccountInit.description.0=For at fortsætte, skal du fuldføre de nødvendige trin i din
+hub.requireAccountInit.description.1=Hub brugerprofil
+hub.requireAccountInit.description.2=.
### License Exceeded
hub.invalidLicense.message=Ugyldig Hub-licens
hub.invalidLicense.description=Din Cryptomator Hub har en ugyldig licens. Få venligst en Hub administrator til at opgradere eller forny licensen.
@@ -284,9 +303,11 @@ preferences.interface.showMinimizeButton=Vis knap til minimering
preferences.interface.showTrayIcon=Vis ikon i system-bakken (kræver genstart)
## Volume
preferences.volume=Virtuelt drev
+preferences.volume.type=Standard Drev Type
preferences.volume.type.automatic=Automatisk
preferences.volume.docsTooltip=Åbn dokumentationen for at lære mere om de forskellige typer drev.
preferences.volume.fuseRestartRequired=For at anvende ændringerne skal Cryptomator genstartes.
+preferences.volume.tcp.port=Standard TCP- Port
preferences.volume.supportedFeatures=Den valgte type drev understøtter følgende funktioner:
preferences.volume.feature.mountAuto=Automatisk valg af monteringspunkt
preferences.volume.feature.mountToDir=Brugerdefineret mappe som monteringspunkt
@@ -299,6 +320,7 @@ preferences.updates.currentVersion=Nuværende version: %s
preferences.updates.autoUpdateCheck=Søg automatisk efter opdateringer
preferences.updates.checkNowBtn=Kontrollér nu
preferences.updates.updateAvailable=Opdatering til version %s er tilgængelig.
+
## Contribution
preferences.contribute=Støt os
preferences.contribute.registeredFor=Registreret supporter-certifikat for %s
@@ -371,6 +393,7 @@ main.vaultDetail.unlockBtn=Lås op…
main.vaultDetail.unlockNowBtn=Lås op nu
main.vaultDetail.optionsBtn=Boksindstillinger
main.vaultDetail.passwordSavedInKeychain=Adgangskode gemt
+main.vaultDetail.share=Del…
### Unlocked
main.vaultDetail.unlockedStatus=LÅST OP
main.vaultDetail.accessLocation=Boksens indhold er tilgængeligt her:
@@ -425,6 +448,7 @@ vaultOptions.general.startHealthCheckBtn=Start sunhedstjek
## Mount
vaultOptions.mount=Montering
+vaultOptions.mount.info=Åbn indstillinger for virtuelle drev for at ændre standardindstillinger.
vaultOptions.mount.readonly=Skrivebeskyttet
vaultOptions.mount.customMountFlags=Brugerdefinerede monterings-flag
vaultOptions.mount.winDriveLetterOccupied=optaget
@@ -434,6 +458,10 @@ vaultOptions.mount.mountPoint.driveLetter=Brug et ledigt drevbogstav
vaultOptions.mount.mountPoint.custom=Brug en valgt mappe
vaultOptions.mount.mountPoint.directoryPickerButton=Vælg…
vaultOptions.mount.mountPoint.directoryPickerTitle=Vælg en mappe
+vaultOptions.mount.volumeType.default=Standard (%s)
+vaultOptions.mount.volumeType.restartRequired=For bruge denne drev type skal Cryptomator genstartes.
+vaultOptions.mount.volume.tcp.port=TCP Port
+vaultOptions.mount.volume.type=Drev Type
## Master Key
vaultOptions.masterkey=Adgangskode
vaultOptions.masterkey.changePasswordBtn=Skift adgangskode
@@ -505,4 +533,25 @@ updateReminder.notNow=Ikke nu
updateReminder.yesOnce=Ja, én gang
updateReminder.yesAutomatically=Ja, automatisk
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Åbn Indstillinger
+
# Share Vault
+shareVault.title=Del Boks
+shareVault.message=Vil du dele din boks med andre?
+shareVault.description=Vær altid forsigtig, når du deler din boks med andre. Kort sagt, følg disse trin:
+shareVault.instruction.1=1. Del adgang til den krypterede boks-mappe via opbevaring i skyen.
+shareVault.instruction.2=2. Del boksens adgangskode på en sikker måde.
+shareVault.remarkBestPractices=For mere information, tjek best practice forslag i vores dokumenter.
+shareVault.docsTooltip=Åbn dokumentationen for at lære mere om deling af bokse.
+shareVault.hubAd.description=Den sikre måde at arbejde i hold
+shareVault.hubAd.keyManagement=Zero-knowledge nøgle håndtering
+shareVault.hubAd.authentication=Stærk autentifikation
+shareVault.hubAd.encryption=End-to-end-kryptering
+shareVault.visitHub=Besøg Kryptomator Hub
+
+shareVault.hub.message=Sådan deler du en Hub boks
+shareVault.hub.description=For at dele indholdet i boksen med et andet holdmedlem skal du udføre to trin:
+shareVault.hub.instruction.1=1. Del adgang til den krypterede boks-mappe vha. opbevaring i skyen.
+shareVault.hub.instruction.2=2. Giv adgang til holdmedlem i Cryptomator Hub.
+shareVault.hub.openHub=Åben Cryptomator Hub
\ No newline at end of file
diff --git a/src/main/resources/i18n/strings_de.properties b/src/main/resources/i18n/strings_de.properties
index 76415faf5..aa51d6d45 100644
--- a/src/main/resources/i18n/strings_de.properties
+++ b/src/main/resources/i18n/strings_de.properties
@@ -47,7 +47,7 @@ addvaultwizard.new.nameInstruction=Wähle einen Namen für den Tresor
addvaultwizard.new.namePrompt=Tresorname
### Location
addvaultwizard.new.locationInstruction=Wo soll Cryptomator die verschlüsselten Dateien deines Tresors ablegen?
-addvaultwizard.new.locationLoading=Überprüfen des lokalen Dateisystems auf Standard-Cloud-Verzeichnisse…
+addvaultwizard.new.locationLoading=Lokales Dateisystem wird auf Standard-Cloud-Verzeichnisse überprüft …
addvaultwizard.new.locationLabel=Speicherort
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Eigener Ort
@@ -169,9 +169,9 @@ hub.register.legacy.description=Dies ist der erste Hub-Zugriff von diesem Gerät
hub.registerSuccess.message=Gerät registriert
hub.registerSuccess.description=Dein Gerät ist erfolgreich registriert. Du kannst den Tresor jetzt entsperren.
hub.registerSuccess.unlockBtn=Entsperren
-hub.registerSuccess.legacy.description=Um den Tresor zu öffnen muss dein Gerät zusätzlich vom Tresorbesitzer autorisiert werden.
+hub.registerSuccess.legacy.description=Für den Zugriff auf den Tresor muss dein Gerät zusätzlich vom Tresoreigentümer autorisiert werden.
### Registration Failed
-hub.registerFailed.message=Geräteregistrierung fehlgeschlagen
+hub.registerFailed.message=Gerät konnte nicht registriert werden
hub.registerFailed.description.generic=Im Registrierungsprozess ist ein Fehler aufgetreten. Weitere Details findest du im Anwendungsprotokoll.
hub.registerFailed.description.deviceAlreadyExists=Dieses Gerät ist bereits für einen anderen Benutzer registriert. Ändere das Benutzerkonto oder verwende ein anderes Gerät.
### Unauthorized
@@ -320,6 +320,14 @@ preferences.updates.currentVersion=Aktuelle Version: %s
preferences.updates.autoUpdateCheck=Automatisch nach Updates suchen
preferences.updates.checkNowBtn=Jetzt prüfen
preferences.updates.updateAvailable=Update auf Version %s verfügbar.
+preferences.updates.lastUpdateCheck=Letzte Überprüfung: %s
+preferences.updates.lastUpdateCheck.never=nie
+preferences.updates.lastUpdateCheck.recently=kürzlich
+preferences.updates.lastUpdateCheck.daysAgo=vor %s Tagen
+preferences.updates.lastUpdateCheck.hoursAgo=vor %s Stunden
+preferences.updates.checkFailed=Die Suche nach Updates ist fehlgeschlagen. Bitte überprüfe deine Internetverbindung oder versuche es später erneut.
+preferences.updates.upToDate=Cryptomator ist aktuell.
+
## Contribution
preferences.contribute=Unterstütze uns
preferences.contribute.registeredFor=Supporter-Zertifikat registriert für %s
@@ -392,7 +400,7 @@ main.vaultDetail.unlockBtn=Entsperren …
main.vaultDetail.unlockNowBtn=Jetzt entsperren
main.vaultDetail.optionsBtn=Tresoroptionen
main.vaultDetail.passwordSavedInKeychain=Passwort gespeichert
-main.vaultDetail.share=Teilen…
+main.vaultDetail.share=Teilen …
### Unlocked
main.vaultDetail.unlockedStatus=ENTSPERRT
main.vaultDetail.accessLocation=Deine Tresorinhalte sind hier erreichbar:
@@ -532,22 +540,25 @@ updateReminder.notNow=Nicht jetzt
updateReminder.yesOnce=Ja, einmalig
updateReminder.yesAutomatically=Ja, automatisch
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Einstellungen öffnen
+
# Share Vault
shareVault.title=Tresor teilen
shareVault.message=Möchtest du deinen Tresor mit anderen teilen?
-shareVault.description=Seien immer vorsichtig, wenn du deinen Tresor mit anderen teilst. Um den Tresor zu teilen, muss du folgendes tun:
-shareVault.instruction.1=1. Teile den Zugriff auf den verschlüsselten Tresorordner in deinem Cloud-Speicher.
+shareVault.description=Sei immer vorsichtig, wenn du deinen Tresor mit anderen Personen teilst. Kurz gesagt, befolge diese Schritte:
+shareVault.instruction.1=1. Teile den Zugriff auf den verschlüsselten Tresorordner über den Cloud-Speicher.
shareVault.instruction.2=2. Teile das Tresorpasswort auf einem sicheren Weg.
-shareVault.remarkBestPractices=Für mehr Informationen lies dir unsere Vorschläge für bewährte Praktiken in unserer Dokumentation durch.
+shareVault.remarkBestPractices=Weitere Informationen findest du in den Vorschlägen für bewährte Verfahren in unserer Dokumentation.
shareVault.docsTooltip=Öffne die Dokumentation, um mehr über das Teilen von Tresoren zu erfahren.
-shareVault.hubAd.description=Der sichere Weg in Teams zu arbeiten
-shareVault.hubAd.keyManagement=• Zero-knowledge Schlüsselverwaltung
+shareVault.hubAd.description=Die sichere Art der Teamarbeit
+shareVault.hubAd.keyManagement=• Zero-knowledge-Schlüsselverwaltung
shareVault.hubAd.authentication=• Starke Authentifizierung
shareVault.hubAd.encryption=• Ende-zu-Ende-Verschlüsselung
shareVault.visitHub=Besuche Cryptomator Hub
-shareVault.hub.message=Wie man einen Hub Tresor teilt
-shareVault.hub.description=Um den Tresor mit einem anderen Teammitglied zu teilen, musst du zwei Schritte ausführen:
-shareVault.hub.instruction.1=1. Teile den Zugriff auf den verschlüsselten Tresorordner in deinem Cloud-Speicher.
+shareVault.hub.message=Teilen eines Hub-Tresors
+shareVault.hub.description=Zur Freigabe des Tresorinhalts für ein anderes Teammitglied sind zwei Schritte erforderlich:
+shareVault.hub.instruction.1=1. Teile den Zugriff auf den verschlüsselten Tresorordner über den Cloud-Speicher.
shareVault.hub.instruction.2=2. Füge das Teammitglied in Cryptomator Hub als Tresormitglied hinzu.
shareVault.hub.openHub=Cryptomator Hub öffnen
\ No newline at end of file
diff --git a/src/main/resources/i18n/strings_el.properties b/src/main/resources/i18n/strings_el.properties
index 2e07391b1..aee61cd50 100644
--- a/src/main/resources/i18n/strings_el.properties
+++ b/src/main/resources/i18n/strings_el.properties
@@ -320,6 +320,14 @@ preferences.updates.currentVersion=Τρέχουσα έκδοση: %s
preferences.updates.autoUpdateCheck=Αυτόματος έλεγχος για ενημερώσεις
preferences.updates.checkNowBtn=Έλεγχος τώρα
preferences.updates.updateAvailable=Η ενημέρωση για την έκδοση %s είναι διαθέσιμη.
+preferences.updates.lastUpdateCheck=Τελευταίος έλεγχος: %s
+preferences.updates.lastUpdateCheck.never=ποτέ
+preferences.updates.lastUpdateCheck.recently=πρόσφατα
+preferences.updates.lastUpdateCheck.daysAgo=%s ημέρες πριν
+preferences.updates.lastUpdateCheck.hoursAgo=%s ώρες πριν
+preferences.updates.checkFailed=Η αναζήτηση ενημερώσεων απέτυχε. Ελέγξτε τη σύνδεσή σας στο διαδίκτυο ή δοκιμάστε ξανά αργότερα.
+preferences.updates.upToDate=Το Cryptomator είναι ενημερωμένο.
+
## Contribution
preferences.contribute=Υποστηρίξτε μας
preferences.contribute.registeredFor=Το πιστοποιητικό υποστήριξης καταχωρήθηκε για %s
@@ -532,6 +540,12 @@ updateReminder.notNow=Όχι Τώρα
updateReminder.yesOnce=Ναι, Μία Φορά
updateReminder.yesAutomatically=Ναι, Αυτόματα
+#Dokany Support End
+dokanySupportEnd.title=Ειδοποίηση κατάργησης
+dokanySupportEnd.message=Τέλος υποστήριξης για Dokany
+dokanySupportEnd.description=Ο τύπος τόμου Dokany δεν υποστηρίζεται πλέον από το Cryptomator. Οι ρυθμίσεις σας έχουν προσαρμοστεί για να χρησιμοποιούν τον προεπιλεγμένο τύπο τόμου. Μπορείτε να δείτε τον προεπιλεγμένο τύπο στις προτιμήσεις.
+dokanySupportEnd.preferencesBtn=Άνοιγμα Προτιμήσεων
+
# Share Vault
shareVault.title=Κοινή χρήση Κρύπτης
shareVault.message=Θα θέλατε να μοιραστείτε την κρύπτη σας με άλλους;
diff --git a/src/main/resources/i18n/strings_es.properties b/src/main/resources/i18n/strings_es.properties
index 728348d39..b008c7926 100644
--- a/src/main/resources/i18n/strings_es.properties
+++ b/src/main/resources/i18n/strings_es.properties
@@ -24,7 +24,7 @@ error.existingSolutionDescription=Cryptomator no esperaba que esto ocurriera, pe
error.hyperlink.solution=Buscar la solución
error.lookupPermissionMessage=Cryptomator puede buscar una solución en línea para este problema. Esto enviará una solicitud a nuestra base de datos de problemas desde su dirección IP.
error.dismiss=Descartar
-error.lookUpSolution=Buscar solución
+error.lookUpSolution=Buscar una solución
# Defaults
defaults.vault.vaultName=Bóveda
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Elegir un nombre para la bóveda
addvaultwizard.new.namePrompt=Nombre de la bóveda
### Location
addvaultwizard.new.locationInstruction=¿Dónde se deben almacenar los archivos cifrados de la bóveda?
+addvaultwizard.new.locationLoading=Comprobando el sistema de archivos local en busca de los directorios de almacenamiento en la nube por defecto…
addvaultwizard.new.locationLabel=Lugar de almacenamiento
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Ubicación personalizada
@@ -61,7 +62,7 @@ addvaultwizard.new.validName=Nombre de bóveda válido
addvaultwizard.new.validCharacters.message=El nombre de la bóveda puede contener los siguientes caracteres:
addvaultwizard.new.validCharacters.chars=Caracteres de la palabra (por ejemplo, a, ж o 수)
addvaultwizard.new.validCharacters.numbers=Números
-addvaultwizard.new.validCharacters.dashes=Guion (%s) o subrayado (%s)
+addvaultwizard.new.validCharacters.dashes=Guion (%s) o guion bajo (%s)
### Expert Settings
addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=Habilitar ajustes expertos
addvaultwizard.new.expertSettings.shorteningThreshold.invalid=Ingrese un valor entre 36 y 220 (por defecto 220)
@@ -71,7 +72,7 @@ addvaultwizard.new.expertSettings.shorteningThreshold.valid=Válido
### Password
addvaultwizard.new.createVaultBtn=Crear bóveda
addvaultwizard.new.generateRecoveryKeyChoice=No podrá acceder a sus datos sin su contraseña. ¿Desea una clave de recuperación en caso de que pierda su contraseña?
-addvaultwizard.new.generateRecoveryKeyChoice.yes=Sí, por favor
+addvaultwizard.new.generateRecoveryKeyChoice.yes=Sí, por favor. Más vale prevenir que curar
addvaultwizard.new.generateRecoveryKeyChoice.no=No, gracias
### Information
addvault.new.readme.storageLocation.fileName=IMPORTANTE.rtf
@@ -129,7 +130,7 @@ unlock.chooseMasterkey.filePickerTitle=Seleccione el archivo de la clave maestra
unlock.chooseMasterkey.filePickerMimeDesc=Clave maestra de Cryptomator
## Success
unlock.success.message=Desbloqueo exitoso
-unlock.success.description=El contenido de la bóveda "%s" ahora es accesible a través de su punto de montaje.
+unlock.success.description=El contenido de la caja fuerte "%s" ahora es accesible a través de su punto de montaje.
unlock.success.rememberChoice=Recordar opción y no mostrar de nuevo
unlock.success.revealBtn=Revelar unidad
## Failure
@@ -141,6 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=El archivo oculto temporal "%
unlock.error.customPath.description.couldNotBeCleaned=Su bóveda no se pudo montar en la ruta "%s". Intente de nuevo o elija una ruta diferente.
unlock.error.customPath.description.notEmptyDir=La ruta de montaje personalizada "%s" no es una carpeta vacía. Elija una carpeta vacía y vuelva a intentarlo.
unlock.error.customPath.description.generic=Seleccionó una ruta de montaje personalizada para esta bóveda, pero falló al usarla con el mensaje: %2$s
+unlock.error.restartRequired.message=No se puede desbloquear la bóveda
+unlock.error.restartRequired.description=Cambie el tipo de volumen en las opciones de la bóveda o reinicie Cryptomator.
unlock.error.title=Error al desbloquear "%s"
## Hub
hub.noKeychain.message=No se puede acceder a la clave del dispositivo
@@ -155,13 +158,22 @@ hub.receive.message=Procesando la respuesta…
hub.receive.description=Cryptomator está recibiendo y procesando la respuesta del Hub. Por favor espere.
### Register Device
hub.register.message=Nuevo dispositivo
+hub.register.description=Este es el primer acceso al Hub desde este dispositivo. Por favor, regístrelo usando su Account Key.
hub.register.nameLabel=Nombre del dispositivo
hub.register.invalidAccountKeyLabel=Account Key no válida
hub.register.registerBtn=Registrarse
### Register Device Legacy
+hub.register.legacy.occupiedMsg=El nombre ya está en uso
+hub.register.legacy.description=Este es el primer acceso al Hub desde este dispositivo. Por favor, regístrelo.
### Registration Success
+hub.registerSuccess.message=Dispositivo registrado
+hub.registerSuccess.description=Tu dispositivo se ha registrado correctamente. Ahora puede proceder a desbloquear la bóveda.
hub.registerSuccess.unlockBtn=Desbloquear
+hub.registerSuccess.legacy.description=Para acceder a la bóveda, su dispositivo debe estar autorizado por el propietario de la bóveda.
### Registration Failed
+hub.registerFailed.message=El registro del dispositivo ha fallado
+hub.registerFailed.description.generic=Ha ocurrido un error al intentar registrarse. Para más detalles, consulte el registro de la aplicación.
+hub.registerFailed.description.deviceAlreadyExists=Este dispositivo ya se ha registrado para otro usuario. Intente cambiar la cuenta de usuario o utilice un dispositivo diferente.
### Unauthorized
hub.unauthorized.message=Acceso denegado
hub.unauthorized.description=Su dispositivo aún no ha sido autorizado para acceder a esta bóveda. Pídale al propietario de la bóveda que lo autorice.
@@ -181,8 +193,8 @@ lock.forced.description=El bloqueo de "%s" fue bloqueado por operaciones pendien
lock.forced.retryBtn=Reintentar
lock.forced.forceBtn=Forzar bloqueo
## Failure
-lock.fail.message=Error al bloquear la bóveda
-lock.fail.description=No se pudo bloquear la bóveda "%s". Asegúrese de que el trabajo no guardado se ha guardado en otro lugar y las operaciones de lectura/escritura importantes han finalizado. Para cerrar la bóveda termine el proceso de Cryptomator.
+lock.fail.message=Error al bloquear la caja fuerte
+lock.fail.description=No se pudo bloquear la caja fuerte "%s". Asegúrese de que el trabajo no guardado se ha guardado en otro lugar y las operaciones de lectura/escritura importantes han finalizado. Para cerrar la bóveda termine el proceso de Cryptomator.
# Migration
migration.title=Actualizar bóveda
@@ -308,6 +320,14 @@ preferences.updates.currentVersion=Versión actual: %s
preferences.updates.autoUpdateCheck=Buscar actualizaciones automáticamente
preferences.updates.checkNowBtn=Buscar ahora
preferences.updates.updateAvailable=Actualización a la versión %s disponible.
+preferences.updates.lastUpdateCheck=Última comprobación: %s
+preferences.updates.lastUpdateCheck.never=nunca
+preferences.updates.lastUpdateCheck.recently=recientemente
+preferences.updates.lastUpdateCheck.daysAgo=hace %s días
+preferences.updates.lastUpdateCheck.hoursAgo=hace %s horas
+preferences.updates.checkFailed=La comprobación de actualizaciones ha fallado. Compruebe su conexión a Internet o inténtelo más tarde.
+preferences.updates.upToDate=Cryptomator está actualizado.
+
## Contribution
preferences.contribute=Apóyenos
preferences.contribute.registeredFor=Certificado de soporte registrado para %s
@@ -380,6 +400,7 @@ main.vaultDetail.unlockBtn=Desbloquear…
main.vaultDetail.unlockNowBtn=Desbloquear ahora
main.vaultDetail.optionsBtn=Opciones de la bóveda
main.vaultDetail.passwordSavedInKeychain=Contraseña guardada
+main.vaultDetail.share=Compartir…
### Unlocked
main.vaultDetail.unlockedStatus=DESBLOQUEADO
main.vaultDetail.accessLocation=El contenido de la bóveda es accesible aquí:
@@ -445,6 +466,7 @@ vaultOptions.mount.mountPoint.custom=Usar directorio seleccionado
vaultOptions.mount.mountPoint.directoryPickerButton=Elegir…
vaultOptions.mount.mountPoint.directoryPickerTitle=Seleccionar un directorio
vaultOptions.mount.volumeType.default=Predeterminado (%s)
+vaultOptions.mount.volumeType.restartRequired=Para utilizar este tipo de volumen debe reiniciar Cryptomator.
vaultOptions.mount.volume.tcp.port=Puerto TCP
vaultOptions.mount.volume.type=Tipo de volumen
## Master Key
@@ -518,4 +540,28 @@ updateReminder.notNow=Ahora no
updateReminder.yesOnce=Sí, una vez
updateReminder.yesAutomatically=Sí, automáticamente
+#Dokany Support End
+dokanySupportEnd.title=Aviso de obsolescencia
+dokanySupportEnd.message=Fin de soporte para Dokany
+dokanySupportEnd.description=El tipo de volumen Dokany ya no está soportado por Cryptomator. Su configuración se ajusta para utilizar el tipo de volumen predeterminado ahora. Puede ver el tipo predeterminado en las preferencias.
+dokanySupportEnd.preferencesBtn=Abrir preferencias
+
# Share Vault
+shareVault.title=Compartir bóveda
+shareVault.message=¿Le gustaría compartir su bóveda con alguien más?
+shareVault.description=Siempre tenga cuidado cuando comparta su bóveda con otras personas. En resumen, siga estos pasos:
+shareVault.instruction.1=1. Comparta el acceso a la carpeta de la bóveda cifrada a través del almacenamiento en la nube.
+shareVault.instruction.2=2. Comparta la contraseña de la bóveda de manera segura.
+shareVault.remarkBestPractices=Para más información, consulte las sugerencias de buenas prácticas en nuestros documentos.
+shareVault.docsTooltip=Abra la documentación para conocer más sobre cómo compartir sus bóvedas.
+shareVault.hubAd.description=Una manera segura de trabajar en equipos
+shareVault.hubAd.keyManagement=• Administración de claves de cero conocimiento
+shareVault.hubAd.authentication=• Autenticación fuerte
+shareVault.hubAd.encryption=• Cifrado de extremo a extremo
+shareVault.visitHub=Visite Cryptomator Hub
+
+shareVault.hub.message=Cómo compartir una bóveda de Hub
+shareVault.hub.description=Para compartir el contenido de la bóveda con otro miembro del equipo, tiene que realizar dos pasos:
+shareVault.hub.instruction.1=1. Comparta el acceso a la carpeta de la bóveda cifrada a través del almacenamiento en la nube.
+shareVault.hub.instruction.2=2. Conceda el acceso al miembro del equipo en Cryptomator Hub.
+shareVault.hub.openHub=Abrir Cryptomator Hub
\ No newline at end of file
diff --git a/src/main/resources/i18n/strings_fa.properties b/src/main/resources/i18n/strings_fa.properties
index 745c33200..312965093 100644
--- a/src/main/resources/i18n/strings_fa.properties
+++ b/src/main/resources/i18n/strings_fa.properties
@@ -95,6 +95,13 @@ lock.forced.retryBtn=تلاش مجدد
## Interface
## Volume
## Updates
+preferences.updates.lastUpdateCheck=آخرین بررسی: %s
+preferences.updates.lastUpdateCheck.never=هرگز
+preferences.updates.lastUpdateCheck.recently=به تازگی
+preferences.updates.lastUpdateCheck.daysAgo=%s روز پیش
+preferences.updates.lastUpdateCheck.hoursAgo=%s ساعت قبل
+preferences.updates.upToDate=Cryptomator به روز می باشد.
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -149,4 +156,6 @@ vaultOptions.mount.mountPoint.directoryPickerButton=انتخاب کنید…
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_fi.properties b/src/main/resources/i18n/strings_fi.properties
index 2c47dcd8d..59b463cb2 100644
--- a/src/main/resources/i18n/strings_fi.properties
+++ b/src/main/resources/i18n/strings_fi.properties
@@ -206,6 +206,7 @@ preferences.title=Asetukset
## Interface
## Volume
## Updates
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -267,4 +268,7 @@ vaultOptions.masterkey.changePasswordBtn=Vaihda salasana
# Update Reminder
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Avaa asetukset
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_fil.properties b/src/main/resources/i18n/strings_fil.properties
index db6945569..844491c97 100644
--- a/src/main/resources/i18n/strings_fil.properties
+++ b/src/main/resources/i18n/strings_fil.properties
@@ -305,6 +305,7 @@ preferences.updates.currentVersion=Kasalukuyang Bersyon: %s
preferences.updates.autoUpdateCheck=Awtomatikong suriin ang mga update
preferences.updates.checkNowBtn=Tingnan ngayon
preferences.updates.updateAvailable=Available ang update sa bersyong %s.
+
## Contribution
preferences.contribute=Suportahan Kami
preferences.contribute.registeredFor=Nakarehistro ang sertipiko ng tagasuporta para sa %s
@@ -511,4 +512,7 @@ updateReminder.notNow=Hindi ngayon
updateReminder.yesOnce=Oo, Minsan
updateReminder.yesAutomatically=Oo, Awtomatiko
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Buksan ang Mga Kagustuhan
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_fr.properties b/src/main/resources/i18n/strings_fr.properties
index c9cc7caa8..a55a1ce71 100644
--- a/src/main/resources/i18n/strings_fr.properties
+++ b/src/main/resources/i18n/strings_fr.properties
@@ -320,6 +320,14 @@ preferences.updates.currentVersion=Version actuelle : “%s”
preferences.updates.autoUpdateCheck=Vérifier automatiquement si des mises à jour sont disponibles
preferences.updates.checkNowBtn=Vérifier maintenant
preferences.updates.updateAvailable=Mise à jour “%s” disponible.
+preferences.updates.lastUpdateCheck=Dernière vérification : %s
+preferences.updates.lastUpdateCheck.never=jamais
+preferences.updates.lastUpdateCheck.recently=récemment
+preferences.updates.lastUpdateCheck.daysAgo=Il y a %s jours
+preferences.updates.lastUpdateCheck.hoursAgo=il y a %s heures
+preferences.updates.checkFailed=La recherche de mises à jour a échoué. Veuillez vérifier votre connexion internet ou réessayez plus tard.
+preferences.updates.upToDate=Cryptomator est à jour.
+
## Contribution
preferences.contribute=Nous soutenir
preferences.contribute.registeredFor=Certificat de soutien enregistré pour %s
@@ -477,7 +485,7 @@ vaultOptions.hub.convertBtn=Convertir en coffre-fort basé sur mot de passe
## Display Recovery Key
recoveryKey.display.title=Montrer la clé de récupération
recoveryKey.create.message=Mot de passe requis
-recoveryKey.create.description=Entrer le mot de passe de "%s" pour afficher sa clé de récupération.
+recoveryKey.create.description=Entrez le mot de passe de "%s" pour afficher sa clé de récupération.
recoveryKey.display.description=La clé de récupération suivante peut être utilisée pour restaurer l'accès à "%s " :
recoveryKey.display.StorageHints=Gardez-la dans un endroit sûr, par ex. :\n • Stockez-la en utilisant un gestionnaire de mots de passe\n • Enregistrez-la sur une clé USB\n • Imprimez-la
## Reset Password
@@ -532,6 +540,12 @@ updateReminder.notNow=Plus tard
updateReminder.yesOnce=Cette fois seulement
updateReminder.yesAutomatically=Oui, automatiquement
+#Dokany Support End
+dokanySupportEnd.title=Avis d'obsolescence
+dokanySupportEnd.message=Fin de la prise en charge de Dokany
+dokanySupportEnd.description=Le type de volume Dokany n'est plus pris en charge par Cryptomator. Vos paramètres sont à présent ajustés pour utiliser le type de volume par défaut. Vous pouvez voir le type par défaut dans les préférences.
+dokanySupportEnd.preferencesBtn=Ouvrir les préférences
+
# Share Vault
shareVault.title=Partager le coffre
shareVault.message=Vous aimeriez partager votre coffre avec d'autres personnes ?
diff --git a/src/main/resources/i18n/strings_gl.properties b/src/main/resources/i18n/strings_gl.properties
index ff5696509..51002434e 100644
--- a/src/main/resources/i18n/strings_gl.properties
+++ b/src/main/resources/i18n/strings_gl.properties
@@ -77,6 +77,7 @@ lock.forced.retryBtn=Tentar de novo
## Interface
## Volume
## Updates
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -126,4 +127,6 @@ main.closeBtn.tooltip=Pechar
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_he.properties b/src/main/resources/i18n/strings_he.properties
index 6e5d00d4a..abb944574 100644
--- a/src/main/resources/i18n/strings_he.properties
+++ b/src/main/resources/i18n/strings_he.properties
@@ -297,6 +297,7 @@ preferences.updates.currentVersion=הגרסה הנוכחית: %s
preferences.updates.autoUpdateCheck=בצע בדיקת עדכונים אוטומטית
preferences.updates.checkNowBtn=בדוק כעת
preferences.updates.updateAvailable=שדרוג לגרסה %s זמין.
+
## Contribution
preferences.contribute=תמוך בנו
preferences.contribute.registeredFor=אישור על תמיכה על שם %s
@@ -493,4 +494,7 @@ updateReminder.title=בדיקת עדכון
updateReminder.message=חפש עדכונים?
updateReminder.notNow=לא עכשיו
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=פתח העדפות
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_hi.properties b/src/main/resources/i18n/strings_hi.properties
index efe740688..c5933bd02 100644
--- a/src/main/resources/i18n/strings_hi.properties
+++ b/src/main/resources/i18n/strings_hi.properties
@@ -216,6 +216,7 @@ preferences.updates=नवीनीकरण
preferences.updates.currentVersion=वर्तमान संस्करण: %s
preferences.updates.checkNowBtn=अभी जाँचें
preferences.updates.updateAvailable=संस्करण %s की तरफ नवीनीकरण उपलब्ध है।
+
## Contribution
preferences.contribute=हमें सपोर्ट करें
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -311,4 +312,7 @@ quit.forced.message=कुछ वॉल्ट्स लॉक नहीं ह
# Update Reminder
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=प्राथमिकताएँ खोलें
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_hr.properties b/src/main/resources/i18n/strings_hr.properties
index 461322f2d..12c4dc346 100644
--- a/src/main/resources/i18n/strings_hr.properties
+++ b/src/main/resources/i18n/strings_hr.properties
@@ -224,6 +224,7 @@ preferences.updates.currentVersion=Trenutna verzija: %s
preferences.updates.autoUpdateCheck=Automatski provjeri nadogradnje
preferences.updates.checkNowBtn=Provjeri sada
preferences.updates.updateAvailable=Nadogradnja na verziju %s dostupna.
+
## Contribution
preferences.contribute=Podržite nas
preferences.contribute.registeredFor=Certifikat podržavatelja registriran za %s
@@ -382,4 +383,6 @@ quit.lockAndQuitBtn=Zaključaj i napusti
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_hu.properties b/src/main/resources/i18n/strings_hu.properties
index af448c2b4..a7e92dd5a 100644
--- a/src/main/resources/i18n/strings_hu.properties
+++ b/src/main/resources/i18n/strings_hu.properties
@@ -303,6 +303,7 @@ preferences.updates.currentVersion=Jelenlegi verzió: %s
preferences.updates.autoUpdateCheck=Frissítések autómatikus keresése
preferences.updates.checkNowBtn=Ellenőrzés most
preferences.updates.updateAvailable=Frissítés a %s verzióra elérhető.
+
## Contribution
preferences.contribute=Támogasson bennünket
preferences.contribute.registeredFor=Támogatói igazolás regisztrálva neki: %s
@@ -509,4 +510,10 @@ updateReminder.notNow=Most nem
updateReminder.yesOnce=Igen, egyszer
updateReminder.yesAutomatically=Igen, automatikusan
+#Dokany Support End
+dokanySupportEnd.title=Értesítés elavulásról
+dokanySupportEnd.message=Vége a Dokany támogatásának
+dokanySupportEnd.description=A Cryptomator nem támogatja tovább a Dokany kötettípust. A beállítások az alapértelmezett kötettípus használatára lettek állítva. Az alapértelmezett típust a beállítások közt tekintheted meg.
+dokanySupportEnd.preferencesBtn=Beállítások megnyitása
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_id.properties b/src/main/resources/i18n/strings_id.properties
index 65205f0cd..67be64e34 100644
--- a/src/main/resources/i18n/strings_id.properties
+++ b/src/main/resources/i18n/strings_id.properties
@@ -20,6 +20,11 @@ error.description=Ups! Cryptomator tidak menyangka hal ini terjadi. Anda dapat m
error.hyperlink.lookup=Cari error berikut
error.hyperlink.report=Laporkan error berikut
error.technicalDetails=Rincian:
+error.existingSolutionDescription=Maaf, Cryptomator tiba-tiba berhenti. Tapi telah ditemukan sebuah jawaban untuk masalah ini. Silahkan lihat tautan berikut.
+error.hyperlink.solution=Cari tahu solusinya
+error.lookupPermissionMessage=Cryptomator bisa mencari solusinya secara daring. Ini akan meneruskan pesan ke direktori masalah kami dengan alamat IP Anda.
+error.dismiss=Tutup
+error.lookUpSolution=Cari tahu solusinya
# Defaults
defaults.vault.vaultName=Vault
@@ -34,13 +39,15 @@ traymenu.vault.lock=Kunci
traymenu.vault.reveal=Perlihatkan
# Add Vault Wizard
-addvaultwizard.title=Tambah Vault
+addvaultwizard.title=Tambah Brankas
## New
+addvaultwizard.new.title=Tambah Vault baru
### Name
-addvaultwizard.new.nameInstruction=Beri nama untuk vault berikut
-addvaultwizard.new.namePrompt=Nama Vault
+addvaultwizard.new.nameInstruction=Buat sebuah nama untuk brankas
+addvaultwizard.new.namePrompt=Nama Brankas
### Location
addvaultwizard.new.locationInstruction=Dimana Cryptomator seharusnya menyimpan vault berisi file enkripsi Anda?
+addvaultwizard.new.locationLoading=Memeriksa sistem file lokal untuk direktori default penyimpanan cloud…
addvaultwizard.new.locationLabel=Lokasi penyimpanan
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Lokasi khusus
@@ -50,7 +57,18 @@ addvaultwizard.new.fileAlreadyExists=Sudah ada file atau direktori dengan nama v
addvaultwizard.new.locationDoesNotExist=Direktori pada path yang dipilih tidak tersedia atau tidak dapat diakses
addvaultwizard.new.locationIsNotWritable=Anda tidak memiliki hak akses untuk menulis pada path yang dipilih
addvaultwizard.new.locationIsOk=Lokasi yang sesuai dengan vault Anda
+addvaultwizard.new.invalidName=Nama Vault tidak valid
+addvaultwizard.new.validName=Nama vault yang valid
+addvaultwizard.new.validCharacters.message=Nama vault mungkin berisi karakter berikut:
+addvaultwizard.new.validCharacters.chars=Karakter kata (mis. a, ж or 수)
+addvaultwizard.new.validCharacters.numbers=Angka
+addvaultwizard.new.validCharacters.dashes=Tanda hubung (%s) atau garis bawah (%s)
### Expert Settings
+addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=Aktifkan pengaturan ahli
+addvaultwizard.new.expertSettings.shorteningThreshold.invalid=Masukkan nilai antara 36 dan 220 (default 220)
+addvaultwizard.new.expertSettings.shorteningThreshold.tooltip=Buka dokumentasi untuk mempelajari lebih lanjut.
+addvaultwizard.new.expertSettings.shorteningThreshold.title=Panjang maksimum nama file terenkripsi
+addvaultwizard.new.expertSettings.shorteningThreshold.valid=Valid
### Password
addvaultwizard.new.createVaultBtn=Buat Vault
addvaultwizard.new.generateRecoveryKeyChoice=Anda tidak dapat mengakses data tanpa kata sandi yang Anda miliki. Apa Anda ingin sebuah kunci pemulihan untuk berjaga-jaga jika seandainya Anda kehilangan kata sandi?
@@ -74,6 +92,7 @@ addvault.new.readme.accessLocation.2=Ini adalah lokasi akses dari vault Anda.
addvault.new.readme.accessLocation.3=Seluruh file yang ditambahkan ke volume ini akan dienkripsi oleh Cryptomator. Anda dapat mempergunakan isi vault seperti dalam folder/drive lain pada umumnya. Tampilan yang saat ini Anda lihat adalah tampilan dalam bentuk terdekripsi, yang sebenarnya terjadi adalah file-file Anda selalu dalam kondisi terenkripsi di dalam hard drive Anda.
addvault.new.readme.accessLocation.4=Anda dapat menghapus file ini.
## Existing
+addvaultwizard.existing.title=Tambahkan Vault yang Ada
addvaultwizard.existing.instruction=Pilih file "vault.cryptomator" Anda dari vault yang ada. Jika hanya ada file bernama "masterkey.cryptomator", pilih file tersebut.
addvaultwizard.existing.chooseBtn=Pilih…
addvaultwizard.existing.filePickerTitle=Pilih File Vault
@@ -84,6 +103,7 @@ addvaultwizard.success.unlockNow=Buka Kunci Sekarang
# Remove Vault
removeVault.title=Hapus Vault
+removeVault.message=Hapus vault?
removeVault.description=Tindakan ini hanya akan membuat Cryptomator melupakan vault ini. Anda dapat menambahkan vault ini lagi nanti. File yang telah dienkripsi tidak akan dihapus dari hard drive Anda.
removeVault.confirmBtn=Hapus Vault
@@ -94,6 +114,7 @@ changepassword.finalConfirmation=Saya mengerti bahwa saya tidak akan dapat menga
# Forget Password
forgetPassword.title=Lupa Kata Sandi
+forgetPassword.message=Lupakan kata sandi yang disimpan?
forgetPassword.description=Tindakan ini akan menghapus kata sandi vault berikut yang tersimpan dari sistem keychain Anda.
forgetPassword.confirmBtn=Lupa Kata Sandi
@@ -103,25 +124,67 @@ unlock.passwordPrompt=Masukkan kata sandi "%s":
unlock.savePassword=Ingat Kata Sandi
unlock.unlockBtn=Buka Kunci
## Select
+unlock.chooseMasterkey.message=File masterkey tidak ditemukan
unlock.chooseMasterkey.description=Tidak dapat menemukan file masterkey untuk vault ini pada lokasi yang dicari. Mohon pilih file kunci secara manual.
unlock.chooseMasterkey.filePickerTitle=Pilih File Masterkey
unlock.chooseMasterkey.filePickerMimeDesc=MasterKey Cryptomator
## Success
+unlock.success.message=Buka kunci berhasil
unlock.success.description="%s" berhasil dibuka! Vault Anda sekarang dapat diakses melalui drive virtual.
unlock.success.rememberChoice=Ingat pilihan saya, jangan perlihatkan lagi
unlock.success.revealBtn=Tampilkan Drive
## Failure
+unlock.error.customPath.message=Tidak dapat memasang vault ke path kustom
+unlock.error.customPath.description.notSupported=Jika Anda ingin tetap menggunakan path kustom, silakan buka preferensi dan pilih jenis volume yang mendukungnya. Jika tidak, buka opsi vault dan pilih titik mount yang didukung.
+unlock.error.customPath.description.notExists=Jalur pemasangan kustom tidak ada. Baik membuatnya di sistem file lokal Anda atau mengubahnya di opsi vault.
+unlock.error.customPath.description.inUse=Huruf drive atau jalur pemasangan kustom "%s" sudah digunakan.
+unlock.error.customPath.description.hideawayNotDir=File sementara dan tersembunyi "%3$s" yang digunakan untuk membuka kunci tidak dapat dihapus. Silakan periksa file dan kemudian hapus secara manual.
+unlock.error.customPath.description.couldNotBeCleaned=Vault Anda tidak dapat dipasang ke path "%s". Silakan coba lagi atau pilih path yang berbeda.
+unlock.error.customPath.description.notEmptyDir=Path kustom pemasangan "%s" bukan folder kosong. Silakan pilih folder kosong dan coba lagi.
+unlock.error.customPath.description.generic=Anda telah memilih kustom path pemasangan untuk vault ini, tetapi gagal menggunakannya dengan pesan:%2$s
+unlock.error.restartRequired.message=Tidak dapat membuka kunci vault
+unlock.error.restartRequired.description=Ubah jenis volume di opsi vault atau restart Cryptomator.
+unlock.error.title=Gagal membuka kunci "%s"
## Hub
+hub.noKeychain.message=Tidak dapat mengakses perangkat kunci
+hub.noKeychain.description=Untuk membuka kunci Hub vault, diperlukan perangkat kunci, yang diamankan menggunakan keychain. Untuk melanjutkan, aktifkan “%s” dan pilih keychain di preferensi.
+hub.noKeychain.openBtn=Buka Preferensi
### Waiting
+hub.auth.message=Menunggu otentikasi…
+hub.auth.description=Anda secara otomatis akan diarahkan ke halaman login.
+hub.auth.loginLink=Tidak diarahkan? Klik di sini untuk membukanya.
### Receive Key
+hub.receive.message=Respons pemrosesan…
+hub.receive.description=Cryptomator menerima dan memproses respons dari Hub. Harap tunggu.
### Register Device
+hub.register.message=Perangkat Baru
+hub.register.description=Ini adalah akses Hub pertama dari perangkat ini. Silakan daftarkan menggunakan Kunci Akun Anda.
+hub.register.nameLabel=Nama Perangkat
+hub.register.invalidAccountKeyLabel=Kunci Akun Tidak Valid
+hub.register.registerBtn=Daftar
### Register Device Legacy
+hub.register.legacy.occupiedMsg=Nama sudah digunakan
+hub.register.legacy.description=Ini adalah akses Hub pertama dari perangkat ini. Silakan daftarkan.
### Registration Success
+hub.registerSuccess.message=Perangkat terdaftar
+hub.registerSuccess.description=Perangkat Anda berhasil terdaftar. Sekarang Anda dapat membuka kunci vault.
hub.registerSuccess.unlockBtn=Buka Kunci
+hub.registerSuccess.legacy.description=Untuk mengakses vault, perangkat Anda harus diberi wewenang tambahan oleh pemilik vault.
### Registration Failed
+hub.registerFailed.message=Registrasi perangkat gagal
+hub.registerFailed.description.generic=Kesalahan terjadi dalam proses pendaftaran. Untuk detail lebih lanjut, lihat log aplikasi.
+hub.registerFailed.description.deviceAlreadyExists=Perangkat ini sudah terdaftar untuk pengguna lain. Cobalah menggunakan akun pengguna atau perangkat yang berbeda.
### Unauthorized
+hub.unauthorized.message=Akses ditolak
+hub.unauthorized.description=Perangkat Anda belum diizinkan mengakses vault ini. Mintalah pemilik vault untuk mengizinkannya.
### Requires Account Initialization
+hub.requireAccountInit.message=Tindakan diperlukan
+hub.requireAccountInit.description.0=Untuk melanjutkan, silakan lengkapi langkah-langkah yang diperlukan
+hub.requireAccountInit.description.1=Hub profil pengguna
+hub.requireAccountInit.description.2=.
### License Exceeded
+hub.invalidLicense.message=Lisensi Hub tidak valid
+hub.invalidLicense.description=Instans Cryptomator Hub Anda memiliki lisensi yang tidak valid. Harap informasikan kepada administrator Hub untuk meningkatkan atau memperbarui lisensi.
# Lock
## Force
@@ -137,6 +200,11 @@ lock.fail.description=Vault "%s" tidak dapat dikunci. Pastikan bahwa file yang b
migration.title=Tingkatkan Vault
## Start
migration.start.header=Tingkatkan Vault
+migration.start.text=Untuk membuka vault Anda "%s" di Cryptomator versi baru ini, vault harus ditingkatkan ke format yang lebih baru. Sebelum melakukan ini, Anda harus tahu hal berikut:
+migration.start.remarkUndone=Pembaruan ini tidak dapat dibatalkan.
+migration.start.remarkVersions=Cryptomator versi yang lebih lama tidak akan dapat membuka vault yang ditingkatkan.
+migration.start.remarkCanRun=Anda harus yakin bahwa setiap perangkat tempat Anda mengakses vault dapat menjalankan versi Cryptomator ini.
+migration.start.remarkSynced=Anda harus yakin bahwa vault Anda sepenuhnya disinkronkan pada perangkat ini, dan pada perangkat Anda yang lain, sebelum memutakhirkannya.
migration.start.confirm=Saya telah membaca dan memahami informasi di atas
## Run
migration.run.enterPassword=Masukkan kata sandi untuk "%s"
@@ -185,8 +253,25 @@ health.check.detail.checkFinished=Pemeriksaan berhasil dilakukan.
health.check.detail.checkFinishedAndFound=Pemeriksaan selesai. Silahkan tinjau hasilnya.
health.check.detail.checkFailed=Pemeriksaan terhenti karena terjadi kesalahan.
health.check.detail.checkCancelled=Pemeriksaan dibatalkan.
+health.check.detail.listFilters.label=Filter
+health.check.detail.fixAllSpecificBtn=Pemulihan semua jenis
health.check.exportBtn=Ekspor Laporan
## Result view
+health.result.severityFilter.all=Tingkat Keparahan - Semua
+health.result.severityFilter.good=Baik
+health.result.severityFilter.info=Info
+health.result.severityFilter.warn=Peringatan
+health.result.severityFilter.crit=Kritikal
+health.result.severityTip.good=Keparahan: Baik\nStruktur vault normal.
+health.result.severityTip.info=Keparahan: Info\nStruktur vault utuh, perbaikan disarankan.
+health.result.severityTip.warn=Keparahan: Peringatan\nStruktur vault rusak, sangat disarankan untuk perbaikan.
+health.result.severityTip.crit=Keparahan: Kritkal\nStruktur vault rusak, kemungkinan kehilangan data.
+health.result.fixStateFilter.all=Status pemulihan - Semua
+health.result.fixStateFilter.fixable=Dapat dipulihkan
+health.result.fixStateFilter.notFixable=Tidak dapat dipulihkan
+health.result.fixStateFilter.fixing=Memulihkan…
+health.result.fixStateFilter.fixed=Dipulihkan
+health.result.fixStateFilter.fixFailed=Pemulihan gagal
## Fix Application
health.fix.fixBtn=Perbaiki
health.fix.successTip=Perbaikan berhasil
@@ -197,6 +282,7 @@ preferences.title=Preferensi
## General
preferences.general=Umum
preferences.general.startHidden=Sembunyikan jendela saat memulai Cryptomator
+preferences.general.autoCloseVaults=Kunci vault yang terbuka secara otomatis saat aplikasi dihentikan
preferences.general.debugLogging=Aktifkan pencatatan debug
preferences.general.debugDirectory=Perlihatkan file log
preferences.general.autoStart=Jalankan Cryptomator saat sistem dimulai
@@ -217,13 +303,24 @@ preferences.interface.showMinimizeButton=Tampilkan tombol perkecil
preferences.interface.showTrayIcon=Tampilkan ikon tray (aplikasi perlu dimuat ulang)
## Volume
preferences.volume=Drive Virtual
+preferences.volume.type=Jenis Default Volume
preferences.volume.type.automatic=Otomatis
+preferences.volume.docsTooltip=Buka dokumentasi untuk mempelajari lebih lanjut tentang berbagai jenis volume.
+preferences.volume.fuseRestartRequired=Untuk menerapkan perubahan, Cryptomator perlu dimulai kembali.
+preferences.volume.tcp.port=TCP Port Default
+preferences.volume.supportedFeatures=Jenis volume yang dipilih mendukung fitur-fitur berikut ini:
+preferences.volume.feature.mountAuto=Pemilihan titik pemasangan secara otomatis
+preferences.volume.feature.mountToDir=Direktori kustom sebagai titik pemasangan
+preferences.volume.feature.mountToDriveLetter=Huruf drive sebagai titik pemasangan
+preferences.volume.feature.mountFlags=Opsi pemasangan kustom
+preferences.volume.feature.readOnly=Pemasangan hanya baca saja
## Updates
preferences.updates=Pembaharuan
preferences.updates.currentVersion=Versi Saat Ini: %s
preferences.updates.autoUpdateCheck=Otomatis periksa update
preferences.updates.checkNowBtn=Periksa Sekarang
preferences.updates.updateAvailable=Pembaharuan ke versi %s tersedia.
+
## Contribution
preferences.contribute=Dukung Kami
preferences.contribute.registeredFor=Sertifikat supporter terdaftar atas nama %s
@@ -240,26 +337,34 @@ stats.title=Statistik untuk %s
stats.cacheHitRate=Tingkat Hit Cache
## Read
stats.read.throughput.idle=Baca: diam
+stats.read.throughput.kibs=Membaca: %.2f KiB/s
stats.read.throughput.mibs=Baca: %.2f MiB/detik
stats.read.total.data.none=Data dibaca: -
+stats.read.total.data.kib=Data yang dibaca: %.1f KiB
stats.read.total.data.mib=Data dibaca: %.1f MiB
stats.read.total.data.gib=Data dibaca: %.1f GiB
stats.decr.total.data.none=Data terdekripsi: -
+stats.decr.total.data.kib=Data yang didekripsi: %.1f KiB
stats.decr.total.data.mib=Data terdeksripsi: %.1f MiB
stats.decr.total.data.gib=Data terdeksripsi: %.1f GiB
stats.read.accessCount=Total dibaca: %d
## Write
stats.write.throughput.idle=Tulis: diam
+stats.write.throughput.kibs=Menulis: %.2f KiB/s
stats.write.throughput.mibs=Tulis: %.2f MiB/detik
stats.write.total.data.none=Data tertulis: -
+stats.write.total.data.kib=Data yang ditulis: %.1f KiB
stats.write.total.data.mib=Data tertulis: %.1f MiB
stats.write.total.data.gib=Data tertulis: %.1f GiB
stats.encr.total.data.none=Data terenkripsi: -
+stats.encr.total.data.kib=Data yang dienkripsi: %.1f KiB
stats.encr.total.data.mib=Data terenkripsi: %.1f MiB
stats.encr.total.data.gib=Data terenkripsi: %.1f GiB
stats.write.accessCount=Total ditulis: %d
## Accesses
+stats.access.current=Akses: %d
+stats.access.total=Total yang akses: %d
# Main Window
@@ -276,6 +381,9 @@ main.vaultlist.contextMenu.unlock=Buka Kunci…
main.vaultlist.contextMenu.unlockNow=Buka Kunci Sekarang
main.vaultlist.contextMenu.vaultoptions=Tampilkan Opsi Vault
main.vaultlist.contextMenu.reveal=Buka Drive
+main.vaultlist.addVaultBtn=Tambah
+main.vaultlist.addVaultBtn.menuItemNew=Vault Baru...
+main.vaultlist.addVaultBtn.menuItemExisting=Vault yang ada...
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Terima kasih telah memilih Cryptomator untuk melindungi file Anda. Jika Anda memerlukan bantuan, lihat panduan awal kami:
@@ -285,16 +393,23 @@ main.vaultDetail.unlockBtn=Buka Kunci…
main.vaultDetail.unlockNowBtn=Buka Kunci Sekarang
main.vaultDetail.optionsBtn=Opsi Vault
main.vaultDetail.passwordSavedInKeychain=Kata Sandi tersimpan
+main.vaultDetail.share=Bagikan…
### Unlocked
main.vaultDetail.unlockedStatus=TERBUKA
main.vaultDetail.accessLocation=Konten vault Anda dapat diakses di sini:
main.vaultDetail.revealBtn=Buka Drive
+main.vaultDetail.copyUri=Salin URI
main.vaultDetail.lockBtn=Gembok
main.vaultDetail.bytesPerSecondRead=Read:
main.vaultDetail.bytesPerSecondWritten=Write:
main.vaultDetail.throughput.idle=idle
+main.vaultDetail.throughput.kbps=%.1f KiB/s
main.vaultDetail.throughput.mbps=%.1f MiB/detik
main.vaultDetail.stats=Statistik Vault
+main.vaultDetail.locateEncryptedFileBtn=Temukan File yang Dienkripsi
+main.vaultDetail.locateEncryptedFileBtn.tooltip=Pilih file dari vault Anda untuk menemukan mitra enkripsinya
+main.vaultDetail.encryptedPathsCopied=Path Disalin ke Clipboard!
+main.vaultDetail.filePickerTitle=Pilih File Didalam Vault
### Missing
main.vaultDetail.missing.info=Cryptomator tidak dapat menemukan vault di path ini.
main.vaultDetail.missing.recheck=Periksa kembali
@@ -333,34 +448,59 @@ vaultOptions.general.startHealthCheckBtn=Mulai Pemeriksaan Kesehatan
## Mount
vaultOptions.mount=Pemasangan
+vaultOptions.mount.info=Buka preferensi drive virtual untuk mengubah pengaturan default.
vaultOptions.mount.readonly=Read-Only
vaultOptions.mount.customMountFlags=Custom Mount Flags
vaultOptions.mount.winDriveLetterOccupied=terpakai
vaultOptions.mount.mountPoint=Titik Pasang
vaultOptions.mount.mountPoint.auto=Secara otomatis memilih lokasi yang sesuai
vaultOptions.mount.mountPoint.driveLetter=Gunakan drive letter yang sudah ditetapkan
+vaultOptions.mount.mountPoint.custom=Gunakan direktori yang dipilih
vaultOptions.mount.mountPoint.directoryPickerButton=Pilih…
+vaultOptions.mount.mountPoint.directoryPickerTitle=Pilih directori
+vaultOptions.mount.volumeType.default=Default (%s)
+vaultOptions.mount.volumeType.restartRequired=Untuk menggunakan tipe volume ini, Cryptomator perlu dimulai ulang.
+vaultOptions.mount.volume.tcp.port=Port TCP
+vaultOptions.mount.volume.type=Jenis Volume
## Master Key
vaultOptions.masterkey=Kata Sandi
vaultOptions.masterkey.changePasswordBtn=Ubah Kata Sandi
vaultOptions.masterkey.forgetSavedPasswordBtn=Lupa Kata Sandi
vaultOptions.masterkey.recoveryKeyExplanation=Kunci pemulihan adalah satu-satunya cara Anda untuk memulihkan akses ke vault jika Anda kehilangan kata sandi.
vaultOptions.masterkey.showRecoveryKeyBtn=Tampilkan Kunci Pemulihan
+vaultOptions.masterkey.recoverPasswordBtn=Atur Ulang Kata Sandi
## Hub
+vaultOptions.hub=Pemulihan
+vaultOptions.hub.convertInfo=Anda dapat menggunakan kunci pemulihan untuk mengonversi Hub vault ini ke vault berbasis kata sandi dalam keadaan darurat.
+vaultOptions.hub.convertBtn=Konversi ke Vault Berbasis Kata Sandi
# Recovery Key
## Display Recovery Key
+recoveryKey.display.title=Tampilkan Kunci Pemulihan
+recoveryKey.create.message=Diperlukan kata sandi
recoveryKey.create.description=Masukkan kata sandi untuk menampilkan kunci pemulikan untuk "%s":
recoveryKey.display.description=Kunci pemulihan berikut dapat digunakan untuk memulihkan akses ke "%s":
recoveryKey.display.StorageHints=Simpan di tempat yang sangat aman, misal.:\n • Simpan menggunakan password manager\n • Simpan di USB\n • cetak di kertas
## Reset Password
### Enter Recovery Key
+recoveryKey.recover.title=Atur Ulang Kata Sandi
+recoveryKey.recover.prompt=Masukkan kunci pemulihan untuk "%s":
recoveryKey.recover.correctKey=Ini adalah kunci pemulihan yang valid
+recoveryKey.recover.wrongKey=Kunci pemulihan ini milik vault yang lain
+recoveryKey.recover.invalidKey=Kunci pemulihan ini tidak valid
recoveryKey.printout.heading=Kunci Pemulihan Cryptomator\n"%s"\n
### Reset Password
+recoveryKey.recover.resetBtn=Atur ulang
### Recovery Key Password Reset Success
+recoveryKey.recover.resetSuccess.message=Atur ulang kata sandi berhasil
+recoveryKey.recover.resetSuccess.description=Anda dapat membuka kunci vault Anda dengan kata sandi baru.
# Convert Vault
+convertVault.title=Konversi Vault
+convertVault.convert.convertBtn.before=Konversi
+convertVault.convert.convertBtn.processing=Mengonversi…
+convertVault.success.message=Konversi berhasil
+convertVault.hubToPassword.success.description=Anda sekarang dapat membuka kunci vault dengan kata sandi yang dipilih tanpa memerlukan akses Hub.
# New Password
newPassword.promptText=Masukkan kata sandi baru
@@ -375,10 +515,43 @@ passwordStrength.messageLabel.3=Kuat
passwordStrength.messageLabel.4=Sangat kuat
# Quit
+quit.title=Hentikan Aplikasi
+quit.message=Ada vault yang tidak dikunci
+quit.description=Beri konfirmasi bila Anda ingin berhenti. Cryptomator akan mengunci semua vault yang terbuka agar mencegah kehilangan data.
quit.lockAndQuitBtn=Kunci dan Keluar
# Forced Quit
+quit.forced.message=Beberapa vault tidak bisa dikunci
+quit.forced.description=Penguncian vault diblokir oleh operasi yang tertunda atau file yang terbuka. Anda bisa memaksa mengunci brankas yang tersisa, namun mengganggu I/O dapat mengakibatkan hilangnya data yang belum disimpan.
+quit.forced.forceAndQuitBtn=Paksa dan Berhenti
# Update Reminder
+updateReminder.title=Periksa Pembaruan
+updateReminder.message=Periksa Pembaruan?
+updateReminder.description=Tetap perbarui dengan fitur baru, perbaikan bug, dan peningkatan keamanan. Kami sarankan untuk memeriksa pembaruan secara otomatis.
+updateReminder.notNow=Jangan Sekarang
+updateReminder.yesOnce=Ya, Sekali
+updateReminder.yesAutomatically=Ya, Secara Otomatis
+
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Buka Preferensi
# Share Vault
+shareVault.title=Bagikan Vault
+shareVault.message=Apakah Anda ingin berbagi vault dengan orang lain?
+shareVault.description=Selalu berhati-hati saat berbagi vault dengan orang lain. Singkatnya, ikuti langkah-langkah ini:
+shareVault.instruction.1=1. Bagikan akses folder vault terenkripsi melalui penyimpanan cloud.
+shareVault.instruction.2=2. Bagikan kata sandi vault dengan cara yang aman.
+shareVault.remarkBestPractices=Untuk informasi lebih lanjut, lihat saran praktik terbaik di dokumentasi kami.
+shareVault.docsTooltip=Buka dokumentasi untuk mempelajari lebih lanjut tentang berbagi vault.
+shareVault.hubAd.description=Cara aman untuk bekerja dalam tim
+shareVault.hubAd.keyManagement=• Manajemen kunci tanpa pengetahuan
+shareVault.hubAd.authentication=• Otentikasi yang kuat
+shareVault.hubAd.encryption=• Enkripsi end-to-end
+shareVault.visitHub=Kunjungi Cryptomator Hub
+
+shareVault.hub.message=Cara berbagi Hub vault
+shareVault.hub.description=Untuk berbagi isi vault dengan anggota tim lain, Anda harus melakukan dua langkah:
+shareVault.hub.instruction.1=1. Bagikan akses folder vault terenkripsi melalui penyimpanan cloud.
+shareVault.hub.instruction.2=2. Berikan akses ke anggota tim di Cryptomator Hub.
+shareVault.hub.openHub=Buka Cryptomator Hub
\ No newline at end of file
diff --git a/src/main/resources/i18n/strings_it.properties b/src/main/resources/i18n/strings_it.properties
index 3a9652746..de660cbe1 100644
--- a/src/main/resources/i18n/strings_it.properties
+++ b/src/main/resources/i18n/strings_it.properties
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Scegli un nome per la cassaforte
addvaultwizard.new.namePrompt=Nome della Cassaforte
### Location
addvaultwizard.new.locationInstruction=Dove dovrebbe memorizzare Cryptomator i file crittografati della tua cassaforte?
+addvaultwizard.new.locationLoading=Controllo del filesystem locale per le cartelle predefinite di archiviazione cloud…
addvaultwizard.new.locationLabel=Posizione archivio
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Posizione personalizzata
@@ -88,7 +89,7 @@ addvault.new.readme.storageLocation.10=Se hai bisogno di aiuto, leggi la documen
addvault.new.readme.accessLocation.fileName=BENVENUTO.rtf
addvault.new.readme.accessLocation.1=🔐 VOLUME CRITTOGRAFATO 🔐
addvault.new.readme.accessLocation.2=Questa è la posizione d'accesso della tua cassaforte.
-addvault.new.readme.accessLocation.3=Ogni file aggiunto a questo volume sarà crittografato da Cryptomator. Puoi lavorarci come su ogni altra unità/cartella. Questa è solo una vista decrittografata del suo contenuto, i tuoi file restano sempre crittografati sul tuo disco rigido.
+addvault.new.readme.accessLocation.3=Ogni file aggiunto a questo volume sarà crittografato da Cryptomator. Puoi lavorarci come su ogni altro disco/cartella. Questa è solo una vista decrittografata del suo contenuto, i tuoi file restano sempre crittografati sul tuo disco rigido.
addvault.new.readme.accessLocation.4=Sentiti libero di rimuovere questo file.
## Existing
addvaultwizard.existing.title=Aggiungi una Cassaforte Esistente
@@ -131,7 +132,7 @@ unlock.chooseMasterkey.filePickerMimeDesc=Chiave principale di Cryptomator
unlock.success.message=Sbloccato con successo
unlock.success.description="%s" sbloccato correttamente! La tua cassaforte è ora accessibile tramite la sua unità virtuale.
unlock.success.rememberChoice=Ricorda la scelta, non mostrarmelo più
-unlock.success.revealBtn=Rivela l'Unità
+unlock.success.revealBtn=Rivela Unità
## Failure
unlock.error.customPath.message=Impossibile montare la cassaforte sul percorso personalizzato
unlock.error.customPath.description.notSupported=Se desideri continuare a utilizzare il percorso personalizzato, vai alle preferenze e seleziona un tipo di volume che lo supporta. Altrimenti, vai alle opzioni della cassaforte e scegli un punto di montaggio supportato.
@@ -141,6 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=Impossibile rimuovere il file
unlock.error.customPath.description.couldNotBeCleaned=La tua cassaforte non può essere montata sul percorso "%s". Riprova o scegli un percorso diverso.
unlock.error.customPath.description.notEmptyDir=Il percorso di montaggio selezionato "%s" non è una cartella vuota. Scegli una cartella vuota e riprova.
unlock.error.customPath.description.generic=Hai selezionato un percorso di montaggio personalizzato per questa cassaforte, ma il suo utilizzo non è riuscito con il messaggio: %2$s
+unlock.error.restartRequired.message=Impossibile sbloccare la cassaforte
+unlock.error.restartRequired.description=Cambia il tipo di unità nelle opzioni della cassaforte o riavvia Cryptomator.
unlock.error.title=Sblocco "%s" non riuscito
## Hub
hub.noKeychain.message=Impossibile accedere alla chiave del dispositivo
@@ -155,13 +158,22 @@ hub.receive.message=Elaborazione della risposta…
hub.receive.description=Cryptomator sta ricevendo ed elaborando la risposta da Hub. Attendere prego.
### Register Device
hub.register.message=Nuovo dispositivo
+hub.register.description=Questo è il primo accesso all'Hub da questo dispositivo. Per favore autorizzalo utilizzando la tua chiave dell'account.
hub.register.nameLabel=Nome Del Dispositivo
hub.register.invalidAccountKeyLabel=Chiave dell'account non valida
hub.register.registerBtn=Registrati
### Register Device Legacy
+hub.register.legacy.occupiedMsg=Nome già in uso
+hub.register.legacy.description=Questo è il primo accesso all'Hub da questo dispositivo. Per favore autorizzalo utilizzando la tua chiave dell'account.
### Registration Success
+hub.registerSuccess.message=Dispositivo autorizzato
+hub.registerSuccess.description=Il tuo dispositivo è stato autorizzato correttamente. Ora puoi continuare a sbloccare la cassaforte.
hub.registerSuccess.unlockBtn=Sblocca
+hub.registerSuccess.legacy.description=Per accedere alla cassaforte, il tuo dispositivo deve essere anche autorizzato dal proprietario.
### Registration Failed
+hub.registerFailed.message=Registrazione dispositivo fallita
+hub.registerFailed.description.generic=Si è verificato un errore nel processo di registrazione. Per maggiori dettagli, consulta il registro delle applicazioni.
+hub.registerFailed.description.deviceAlreadyExists=Questo dispositivo è già registrato per un utente diverso. Prova a cambiare l'account utente o usa un altro dispositivo.
### Unauthorized
hub.unauthorized.message=Accesso negato
hub.unauthorized.description=Il tuo dispositivo non è ancora stato autorizzato ad accedere a questa cassaforte. Chiedi al proprietario della cassaforte di autorizzarlo.
@@ -308,6 +320,14 @@ preferences.updates.currentVersion=Versione Corrente: %s
preferences.updates.autoUpdateCheck=Cerca automaticamente gli aggiornamenti
preferences.updates.checkNowBtn=Controlla Ora
preferences.updates.updateAvailable=Aggiornamento alla versione %s disponibile.
+preferences.updates.lastUpdateCheck=Ultimo controllo: %s
+preferences.updates.lastUpdateCheck.never=mai
+preferences.updates.lastUpdateCheck.recently=recentemente
+preferences.updates.lastUpdateCheck.daysAgo=%s giorni fa
+preferences.updates.lastUpdateCheck.hoursAgo=%s ore fa
+preferences.updates.checkFailed=Ricerca aggiornamenti non riuscita. Controlla la tua connessione internet o riprova più tardi.
+preferences.updates.upToDate=Cryptomator è aggiornato.
+
## Contribution
preferences.contribute=Supportaci
preferences.contribute.registeredFor=Certificato del sostenitore registrato per %s
@@ -380,6 +400,7 @@ main.vaultDetail.unlockBtn=Sblocca…
main.vaultDetail.unlockNowBtn=Sblocca Ora
main.vaultDetail.optionsBtn=Opzioni della Cassaforte
main.vaultDetail.passwordSavedInKeychain=Password salvata
+main.vaultDetail.share=Condividi…
### Unlocked
main.vaultDetail.unlockedStatus=SBLOCCATA
main.vaultDetail.accessLocation=I contenuti della tua cassaforte sono accessibili qui:
@@ -399,7 +420,7 @@ main.vaultDetail.filePickerTitle=Seleziona File Nella Cassaforte
### Missing
main.vaultDetail.missing.info=Cryptomator non è riuscito a trovare una cassaforte in questo percorso.
main.vaultDetail.missing.recheck=Ricontrolla
-main.vaultDetail.missing.remove=Rimuovi dall'Elenco di Cassaforti…
+main.vaultDetail.missing.remove=Rimuovi dall'elenco delle casseforti…
main.vaultDetail.missing.changeLocation=Cambia la Posizione della Cassaforte…
### Needs Migration
main.vaultDetail.migrateButton=Aggiorna la Cassaforte
@@ -445,8 +466,9 @@ vaultOptions.mount.mountPoint.custom=Usa la directory scelta
vaultOptions.mount.mountPoint.directoryPickerButton=Scegli…
vaultOptions.mount.mountPoint.directoryPickerTitle=Scegli una directory
vaultOptions.mount.volumeType.default=Predefinito (%s)
+vaultOptions.mount.volumeType.restartRequired=Per utilizzare questo tipo di volume, Cryptomator deve essere riavviato.
vaultOptions.mount.volume.tcp.port=Porta TCP
-vaultOptions.mount.volume.type=Tipo di Unità
+vaultOptions.mount.volume.type=Tipo di Volume
## Master Key
vaultOptions.masterkey=Password
vaultOptions.masterkey.changePasswordBtn=Modifica password
@@ -465,7 +487,7 @@ recoveryKey.display.title=Mostra Chiave Di Recupero
recoveryKey.create.message=Password richiesta
recoveryKey.create.description=Inserisci la password per visualizzare la chiave di recupero per "%s":
recoveryKey.display.description=La seguente chiave di recupero può essere utilizzata per ripristinare l'accesso a %s":
-recoveryKey.display.StorageHints=Mantienilo da qualche parte molto sicuro, ad es.\n • Archivialo usando un gestore di password\n • Salvarlo su un'unità flash USB\n • Stamparlo su carta
+recoveryKey.display.StorageHints=Conservala da qualche parte in modo sicuro, es.\n • Archiviarla usando un gestore di password\n • Salvarla su un'unità flash USB\n • Stamparla su carta
## Reset Password
### Enter Recovery Key
recoveryKey.recover.title=Reimposta Password
@@ -518,4 +540,28 @@ updateReminder.notNow=Non adesso
updateReminder.yesOnce=Sì, una volta
updateReminder.yesAutomatically=Sì, automaticamente
+#Dokany Support End
+dokanySupportEnd.title=Avviso di obsolescenza
+dokanySupportEnd.message=Supporto terminato per Dokany
+dokanySupportEnd.description=Il tipo di volume Dokany non è più supportato da Cryptomator. Le impostazioni sono state aggiornate per utilizzare il tipo di volume ora predefinito. È possibile visualizzare il tipo predefinito nelle preferenze.
+dokanySupportEnd.preferencesBtn=Apri Preferenze
+
# Share Vault
+shareVault.title=Condividi cassaforte
+shareVault.message=Vuoi condividere la tua cassaforte con altri?
+shareVault.description=Fai sempre attenzione quando condividi la tua cassaforte con altre persone. In breve, segui questi passaggi:
+shareVault.instruction.1=1. Condividi l'accesso alla cartella della cassaforte crittografata tramite l'archiviazione cloud.
+shareVault.instruction.2=2. Condividi la password della cassaforte in modo sicuro.
+shareVault.remarkBestPractices=Per ulteriori informazioni, dai un'occhiata ai documenti con i consigli sulle le migliori pratiche.
+shareVault.docsTooltip=Apri la documentazione per saperne di più circa la condivisione delle casseforti.
+shareVault.hubAd.description=Il modo sicuro di lavorare in gruppi
+shareVault.hubAd.keyManagement=Gestione delle chiavi a Conoscenza-Zero
+shareVault.hubAd.authentication=• Autenticazione forte
+shareVault.hubAd.encryption=• Crittografia end-to-end
+shareVault.visitHub=Visita Hub Cryptomator
+
+shareVault.hub.message=Come condividere una cassaforte Hub
+shareVault.hub.description=Per condividere il contenuto della cassaforte con un altro membro del gruppo, è necessario eseguire due passaggi:
+shareVault.hub.instruction.1=1. Condividi l'accesso alla cartella della cassaforte crittografata tramite l'archiviazione cloud.
+shareVault.hub.instruction.2=2. Concedi l'accesso ai membri del gruppo nell'Hub Cryptomator.
+shareVault.hub.openHub=Apri l'Hub Cryptomator
\ No newline at end of file
diff --git a/src/main/resources/i18n/strings_ja.properties b/src/main/resources/i18n/strings_ja.properties
index 7b74a5a74..9006dc0eb 100644
--- a/src/main/resources/i18n/strings_ja.properties
+++ b/src/main/resources/i18n/strings_ja.properties
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=金庫の名前を入力してください
addvaultwizard.new.namePrompt=金庫の名前
### Location
addvaultwizard.new.locationInstruction=金庫の暗号化済みファイルをどの場所に保存しますか?
+addvaultwizard.new.locationLoading=デフォルトのクラウド・ストレージ・ディレクトリについてローカル・ファイルシステムをチェックする...
addvaultwizard.new.locationLabel=保存場所
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=ユーザー設定
@@ -143,6 +144,7 @@ unlock.error.customPath.description.notEmptyDir=カスタムマウントパス
unlock.error.customPath.description.generic=この金庫に対してカスタムマウントパスを選択しましたが、以下のメッセージとともに失敗しました:%2$s
unlock.error.restartRequired.message=金庫を解錠できません
unlock.error.restartRequired.description=金庫のオプションからボリュームタイプを変更するか、Cryptomatorを再起動してください。
+unlock.error.title=ロック解除 "%s" に失敗しました。
## Hub
hub.noKeychain.message=デバイス キーにアクセスできません
hub.noKeychain.description=ハブ金庫を解錠するには、キーチェーンが保護するデバイス キーが必要です。続行するには、"%s" を有効にし環境設定からキーチェーンを選択します。
@@ -158,6 +160,7 @@ hub.receive.description=Cryptomator が Hub からの応答を受信、処理中
hub.register.message=新しいデバイス
hub.register.description=このデバイスからの最初のハブアクセスです。アカウントキーを使用して登録してください。
hub.register.nameLabel=デバイス名
+hub.register.invalidAccountKeyLabel=無効なアカウントキー
hub.register.registerBtn=登録
### Register Device Legacy
hub.register.legacy.occupiedMsg=この名前は既に使われています
@@ -300,9 +303,11 @@ preferences.interface.showMinimizeButton=最小化ボタンを表示
preferences.interface.showTrayIcon=トレイアイコンを表示 (再起動が必要)
## Volume
preferences.volume=仮想ドライブ
+preferences.volume.type=デフォルトのボリュームタイプ
preferences.volume.type.automatic=自動
preferences.volume.docsTooltip=異なるボリュームタイプの詳細については、ドキュメントを確認してください。
preferences.volume.fuseRestartRequired=変更を適用するには、Cryptomator を再起動する必要があります。
+preferences.volume.tcp.port=既定のTCPポート
preferences.volume.supportedFeatures=選択したボリューム形式は、次の機能をサポートしています:
preferences.volume.feature.mountAuto=マウント先の自動選択
preferences.volume.feature.mountToDir=カスタム ディレクトリをマウント先に指定
@@ -315,6 +320,14 @@ preferences.updates.currentVersion=現在のバージョン: %s
preferences.updates.autoUpdateCheck=自動的に更新を確認する
preferences.updates.checkNowBtn=今すぐ確認
preferences.updates.updateAvailable=利用可能なバージョン %s に更新します。
+preferences.updates.lastUpdateCheck=最終確認: %s
+preferences.updates.lastUpdateCheck.never=未確認
+preferences.updates.lastUpdateCheck.recently=最近
+preferences.updates.lastUpdateCheck.daysAgo=%s 日前
+preferences.updates.lastUpdateCheck.hoursAgo=%s 時間前
+preferences.updates.checkFailed=アップデートを探すのに失敗しました。インターネット接続を確認するか、後でもう一度お試しください。
+preferences.updates.upToDate=Cryptomator は最新です。
+
## Contribution
preferences.contribute=支援する
preferences.contribute.registeredFor=サポート証明書 (%s) が登録されました
@@ -387,6 +400,7 @@ main.vaultDetail.unlockBtn=解錠...
main.vaultDetail.unlockNowBtn=今すぐ解錠
main.vaultDetail.optionsBtn=金庫のオプション
main.vaultDetail.passwordSavedInKeychain=パスワードを保存しました
+main.vaultDetail.share=共有…
### Unlocked
main.vaultDetail.unlockedStatus=解錠済み
main.vaultDetail.accessLocation=金庫の内容はこちらからアクセスできます:
@@ -441,6 +455,7 @@ vaultOptions.general.startHealthCheckBtn=正常性チェックを開始
## Mount
vaultOptions.mount=マウント
+vaultOptions.mount.info=仮想ドライブの環境設定を開き、デフォルト設定を変更します。
vaultOptions.mount.readonly=読み取り専用
vaultOptions.mount.customMountFlags=カスタム マウント フラグ
vaultOptions.mount.winDriveLetterOccupied=使用中
@@ -450,6 +465,10 @@ vaultOptions.mount.mountPoint.driveLetter=割り当てられるドライブ文
vaultOptions.mount.mountPoint.custom=選択したディレクトリを使う
vaultOptions.mount.mountPoint.directoryPickerButton=選択...
vaultOptions.mount.mountPoint.directoryPickerTitle=ディレクトリを選択
+vaultOptions.mount.volumeType.default=既定値 (%s)
+vaultOptions.mount.volumeType.restartRequired=このボリュームタイプを使用するには、Cryptomatorを再起動する必要があります。
+vaultOptions.mount.volume.tcp.port=TCPポート
+vaultOptions.mount.volume.type=ボリュームタイプ
## Master Key
vaultOptions.masterkey=パスワード
vaultOptions.masterkey.changePasswordBtn=パスワードの変更
@@ -521,4 +540,25 @@ updateReminder.notNow=また後で
updateReminder.yesOnce=はい、一度だけ
updateReminder.yesAutomatically=自動的に行う
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=環境設定を開く
+
# Share Vault
+shareVault.title=保管庫を共有する
+shareVault.message=保管庫を他の人と共有しますか?
+shareVault.description=あなたの保管庫を他の人と共有するときは、常に注意してください。要するに、以下の手順に従ってください:
+shareVault.instruction.1=1. クラウドストレージ経由で暗号化された保管庫フォルダへのアクセスを共有します。
+shareVault.instruction.2=2. 保管庫のパスワードを安全な方法で共有する。
+shareVault.remarkBestPractices=詳しくは、ドキュメントにあるベストプラクティスの提案をご覧ください。
+shareVault.docsTooltip=保管庫の共有についての詳細は、ドキュメントをご覧ください。
+shareVault.hubAd.description=チームワークの安全な方法
+shareVault.hubAd.keyManagement=• ゼロ知識キー管理
+shareVault.hubAd.authentication=• 強固な認証
+shareVault.hubAd.encryption=• エンドツーエンドの暗号化
+shareVault.visitHub=Cryptomator Hubを訪問
+
+shareVault.hub.message=ハブ保管庫の共有方法
+shareVault.hub.description=データ保管庫のコンテンツを他のチームメンバーと共有するには、2つの手順を実行する必要があります:
+shareVault.hub.instruction.1=1. クラウドストレージ経由で暗号化された保管庫フォルダへのアクセスを共有します。
+shareVault.hub.instruction.2=2. Cryptomator Hubでチームメンバーにアクセスを許可する。
+shareVault.hub.openHub=Cryptomator Hubを開く
\ No newline at end of file
diff --git a/src/main/resources/i18n/strings_ko.properties b/src/main/resources/i18n/strings_ko.properties
index 46ac590ec..31b5cc4e9 100644
--- a/src/main/resources/i18n/strings_ko.properties
+++ b/src/main/resources/i18n/strings_ko.properties
@@ -254,6 +254,7 @@ preferences.updates.currentVersion=현재 버전: %s
preferences.updates.autoUpdateCheck=자동으로 업데이트 확인
preferences.updates.checkNowBtn=지금 확인
preferences.updates.updateAvailable=버전 %s의 업데이트가 가능합니다.
+
## Contribution
preferences.contribute=후원하기
preferences.contribute.registeredFor=%s (으)로 후원자 인증 등록됨
@@ -444,4 +445,7 @@ quit.forced.forceAndQuitBtn=Vault 강제 잠금 후 종료하기
updateReminder.title=업데이트 확인
updateReminder.notNow=나중에
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=설정 열기
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_lv.properties b/src/main/resources/i18n/strings_lv.properties
index 1432cce07..07d109838 100644
--- a/src/main/resources/i18n/strings_lv.properties
+++ b/src/main/resources/i18n/strings_lv.properties
@@ -167,6 +167,7 @@ preferences.updates.currentVersion=Pašreizējā versija: %s
preferences.updates.autoUpdateCheck=Automātiski pārbaudīt atjauninājumus
preferences.updates.checkNowBtn=Pārbaudīt tagad
preferences.updates.updateAvailable=Pieejams atjauninājums uz versiju %s.
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -279,4 +280,6 @@ quit.lockAndQuitBtn=Aizslēgt un aizvērt
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_mk.properties b/src/main/resources/i18n/strings_mk.properties
index ba00e450d..a366f0a09 100644
--- a/src/main/resources/i18n/strings_mk.properties
+++ b/src/main/resources/i18n/strings_mk.properties
@@ -106,6 +106,7 @@ preferences.title=Поставки
## Interface
## Volume
## Updates
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -160,4 +161,6 @@ vaultOptions.mount.mountPoint.directoryPickerButton=Избор…
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_mr.properties b/src/main/resources/i18n/strings_mr.properties
index b33411dc7..050c78dc7 100644
--- a/src/main/resources/i18n/strings_mr.properties
+++ b/src/main/resources/i18n/strings_mr.properties
@@ -64,6 +64,7 @@
## Interface
## Volume
## Updates
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -112,4 +113,6 @@
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_nb.properties b/src/main/resources/i18n/strings_nb.properties
index 559107eb1..84bee3bca 100644
--- a/src/main/resources/i18n/strings_nb.properties
+++ b/src/main/resources/i18n/strings_nb.properties
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Navngi hvelvet
addvaultwizard.new.namePrompt=Navn på hvelvet
### Location
addvaultwizard.new.locationInstruction=Hvor skal Cryptomator lagre de krypterte filene dine?
+addvaultwizard.new.locationLoading=Sjekker lokalt filsystem for standard skylagringskatalog…
addvaultwizard.new.locationLabel=Lagringssted
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Tilpasset lagringssted
@@ -141,6 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=Den midlertidige, skjulte fil
unlock.error.customPath.description.couldNotBeCleaned=Hvelvet ditt kan ikke monteres i banen "%s". Prøv igjen eller velg en annen sti.
unlock.error.customPath.description.notEmptyDir=Tilpasset monterings sti "%s" er ikke en tom mappe. Velg en tom mappe og prøv igjen.
unlock.error.customPath.description.generic=Du har valgt en egendefinert monterings sti for dette hvelvet, men bruk av den mislyktes med meldingen: %2$s
+unlock.error.restartRequired.message=Kan ikke låse opp hvelvet
+unlock.error.restartRequired.description=Endre volumtype i innstillinger for hvelvet eller start Cryptomator på nytt.
unlock.error.title=Lås opp "%s" mislyktes
## Hub
hub.noKeychain.message=Får ikke tilgang til enhetsnøkkel
@@ -155,13 +158,22 @@ hub.receive.message=Prosesserer svar…
hub.receive.description=Cryptomator mottar og behandler svaret fra Hub. Vennligst vent.
### Register Device
hub.register.message=Ny Enhet
+hub.register.description=Dette er første hub tilgang fra denne enheten. Vennligst registrert dette med din kontonøkkel.
hub.register.nameLabel=Enhetsnavn
hub.register.invalidAccountKeyLabel=Ugyldig kontonøkkel
hub.register.registerBtn=Registrer
### Register Device Legacy
+hub.register.legacy.occupiedMsg=Navnet er allerede i bruk
+hub.register.legacy.description=Dette er første gang Hub blir benyttet fra denne enheten. Vennligst registrer den.
### Registration Success
+hub.registerSuccess.message=Enhet registrert
+hub.registerSuccess.description=Enheten din er registrert. Du kan nå fortsette å låse opp hvelvet.
hub.registerSuccess.unlockBtn=Lås opp
+hub.registerSuccess.legacy.description=For å få tilgangen til hvelvet, må enheten din i tillegg godkjennes av hvelv eier.
### Registration Failed
+hub.registerFailed.message=Enhetsregistrering mislyktes
+hub.registerFailed.description.generic=En feil ble gjort under registreringsprossen. For mer detaljer, se i applikasjonsloggen.
+hub.registerFailed.description.deviceAlreadyExists=Denne enheten er allerede registrert for en annen bruker. Prøv å endre brukerkontoen eller bruk en annen enhet.
### Unauthorized
hub.unauthorized.message=Ingen tilgang
hub.unauthorized.description=Enheten din har ikke blitt autorisert til å få tilgang til dette hvelvet ennå. Spør hvelveieren om å tillate det.
@@ -308,6 +320,14 @@ preferences.updates.currentVersion=Gjeldende versjon: %s
preferences.updates.autoUpdateCheck=Se automatisk etter oppdateringer
preferences.updates.checkNowBtn=Sjekk nå
preferences.updates.updateAvailable=Oppdatering til versjon %s er tilgjengelig.
+preferences.updates.lastUpdateCheck=Siste sjekk: %s
+preferences.updates.lastUpdateCheck.never=aldri
+preferences.updates.lastUpdateCheck.recently=nylig
+preferences.updates.lastUpdateCheck.daysAgo=%s dager siden
+preferences.updates.lastUpdateCheck.hoursAgo=%s timer siden
+preferences.updates.checkFailed=Kunne ikke lete etter oppdateringer. Sjekk internett tilkoblingen din og prøv igjen senere.
+preferences.updates.upToDate=Cryptomator er oppdatert.
+
## Contribution
preferences.contribute=Støtt oss
preferences.contribute.registeredFor=Supporter sertifikat registrert for %s
@@ -380,6 +400,7 @@ main.vaultDetail.unlockBtn=Lås opp…
main.vaultDetail.unlockNowBtn=Lås opp nå
main.vaultDetail.optionsBtn=Alternativer for hvelvet
main.vaultDetail.passwordSavedInKeychain=Passordet er lagret
+main.vaultDetail.share=Del…
### Unlocked
main.vaultDetail.unlockedStatus=ULÅST
main.vaultDetail.accessLocation=Innholdet i hvelvet ditt er tilgjengelig her:
@@ -445,6 +466,7 @@ vaultOptions.mount.mountPoint.custom=Bruk valgt mappe
vaultOptions.mount.mountPoint.directoryPickerButton=Velg…
vaultOptions.mount.mountPoint.directoryPickerTitle=Velg en mappe
vaultOptions.mount.volumeType.default=Standard (%s)
+vaultOptions.mount.volumeType.restartRequired=For å bruke denne volumtypen, må Cryptomator startes på nytt.
vaultOptions.mount.volume.tcp.port=TCP Port
vaultOptions.mount.volume.type=Volumtype
## Master Key
@@ -518,4 +540,22 @@ updateReminder.notNow=Ikke nå
updateReminder.yesOnce=Ja, en gang
updateReminder.yesAutomatically=Ja, automatisk
+#Dokany Support End
+dokanySupportEnd.title=Avskrivingsvarsel
+dokanySupportEnd.message=Støtte for Dokany er avsluttet
+dokanySupportEnd.description=Volumtypen Dokany støttes ikke lenger av Cryptomator. Innstillingene dine er justert for å bruke standard volumtype nå. Du kan se standardtypen i innstillingene.
+dokanySupportEnd.preferencesBtn=Åpne innstillinger
+
# Share Vault
+shareVault.title=Del hvelv
+shareVault.message=Vil du dele hvelvet ditt med andre?
+shareVault.hubAd.description=Den sikre måten å jobbe i et lag på
+shareVault.hubAd.authentication=• Sterk autentisering
+shareVault.hubAd.encryption=• Ende-til-ende kryptering
+shareVault.visitHub=Besøk Cryptomator hub
+
+shareVault.hub.message=Hvordan dele et Hub-hvelv
+shareVault.hub.description=For å dele hvelvets innhold med et annet lagmedlem må du utføre to trinn:
+shareVault.hub.instruction.1=1. Del tilgang til den krypterte hvelvmappen via skylagring.
+shareVault.hub.instruction.2=2. Gi tilgang til lagmedlem i Cryptomator Hub.
+shareVault.hub.openHub=Åpne Cryptomator hub
\ No newline at end of file
diff --git a/src/main/resources/i18n/strings_nl.properties b/src/main/resources/i18n/strings_nl.properties
index bc4faba4c..4971fbd90 100644
--- a/src/main/resources/i18n/strings_nl.properties
+++ b/src/main/resources/i18n/strings_nl.properties
@@ -320,6 +320,14 @@ preferences.updates.currentVersion=Huidige Versie: "%s"
preferences.updates.autoUpdateCheck=Automatisch controleren op updates
preferences.updates.checkNowBtn=Controleer nu
preferences.updates.updateAvailable=Update naar versie "%s" beschikbaar.
+preferences.updates.lastUpdateCheck=Laatst gecontroleerd: %s
+preferences.updates.lastUpdateCheck.never=nooit
+preferences.updates.lastUpdateCheck.recently=recent
+preferences.updates.lastUpdateCheck.daysAgo=%s dagen geleden
+preferences.updates.lastUpdateCheck.hoursAgo=%s uur geleden
+preferences.updates.checkFailed=Zoeken naar updates is mislukt. Controleer je internetverbinding of probeer het later opnieuw.
+preferences.updates.upToDate=Cryptomator is up-to-date.
+
## Contribution
preferences.contribute=Steun ons
preferences.contribute.registeredFor=Supporter certificaat geregistreerd voor %s
@@ -532,6 +540,12 @@ updateReminder.notNow=Niet nu
updateReminder.yesOnce=Ja, Eenmaal
updateReminder.yesAutomatically=Ja, automatisch
+#Dokany Support End
+dokanySupportEnd.title=Kennisgeving van beëindiging
+dokanySupportEnd.message=Ondersteuning beëindigd voor Dokany
+dokanySupportEnd.description=Het volumetype Dokany wordt niet langer ondersteund door Cryptomator. Uw instellingen zijn aangepast om nu het standaard volumetype te gebruiken. U kunt het standaardtype bekijken in de voorkeuren.
+dokanySupportEnd.preferencesBtn=Open Voorkeuren
+
# Share Vault
shareVault.title=Kluis delen
shareVault.message=Wilt u uw kluis met anderen delen?
diff --git a/src/main/resources/i18n/strings_nn.properties b/src/main/resources/i18n/strings_nn.properties
index c34fc2322..452cc6a55 100644
--- a/src/main/resources/i18n/strings_nn.properties
+++ b/src/main/resources/i18n/strings_nn.properties
@@ -159,6 +159,7 @@ preferences.updates.currentVersion=Gjeldande versjon: %s
preferences.updates.autoUpdateCheck=Sjå etter oppdateringar automatisk
preferences.updates.checkNowBtn=Sjekk no
preferences.updates.updateAvailable=Oppdatering til versjon %s er tilgjengeleg.
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -277,4 +278,6 @@ quit.lockAndQuitBtn=Lås og avslutt
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_pa.properties b/src/main/resources/i18n/strings_pa.properties
index 3ac890f46..3ad3f8ec3 100644
--- a/src/main/resources/i18n/strings_pa.properties
+++ b/src/main/resources/i18n/strings_pa.properties
@@ -168,6 +168,7 @@ preferences.updates.currentVersion=ਮੌਜੂਦਾ ਵਰਜ਼ਨ: %s
preferences.updates.autoUpdateCheck=ਅੱਪਡੇਟ ਲਈ ਆਪਣੇ-ਆਪ ਜਾਂਚ ਕਰੋ
preferences.updates.checkNowBtn=ਹੁਣੇ ਜਾਂਚ ਕਰੋ
preferences.updates.updateAvailable=ਉਪਲੱਬਧ %s ਵਰਜ਼ਨ ਲਈ ਅੱਪਡੇਟ ਕਰੋ।
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -316,4 +317,6 @@ quit.lockAndQuitBtn=ਲਾਕ ਕਰੋ ਤੇ ਬਾਹਰ ਜਾਓ
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_pl.properties b/src/main/resources/i18n/strings_pl.properties
index 549844d94..c1f1b4433 100644
--- a/src/main/resources/i18n/strings_pl.properties
+++ b/src/main/resources/i18n/strings_pl.properties
@@ -320,6 +320,12 @@ preferences.updates.currentVersion=Obecna wersja: %s
preferences.updates.autoUpdateCheck=Automatycznie sprawdzaj aktualizacje
preferences.updates.checkNowBtn=Sprawdź teraz
preferences.updates.updateAvailable=Dostępna jest aktualizacja do wersji %s.
+preferences.updates.lastUpdateCheck=Ostatnio sprawdzano: %s
+preferences.updates.lastUpdateCheck.never=nigdy
+preferences.updates.lastUpdateCheck.recently=niedawno
+preferences.updates.lastUpdateCheck.daysAgo=%s dni temu
+preferences.updates.lastUpdateCheck.hoursAgo=%s godzin temu
+
## Contribution
preferences.contribute=Wesprzyj nas
preferences.contribute.registeredFor=Certyfikat darczyńcy zarejestrowany dla %s
@@ -532,6 +538,9 @@ updateReminder.notNow=Nie teraz
updateReminder.yesOnce=Tak, raz
updateReminder.yesAutomatically=Tak, automatycznie
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Otwórz ustawienia
+
# Share Vault
shareVault.title=Udostępnij sejf
shareVault.message=Czy chcesz udostępnić swój sejf innym?
diff --git a/src/main/resources/i18n/strings_pt.properties b/src/main/resources/i18n/strings_pt.properties
index c1ece11dd..9c7a30a2e 100644
--- a/src/main/resources/i18n/strings_pt.properties
+++ b/src/main/resources/i18n/strings_pt.properties
@@ -47,7 +47,7 @@ addvaultwizard.new.nameInstruction=Escolha um nome para o cofre
addvaultwizard.new.namePrompt=Nome do Cofre
### Location
addvaultwizard.new.locationInstruction=Onde deve o Cryptomator armazenar os arquivos criptografados do cofre?
-addvaultwizard.new.locationLoading=Verificando o sistema de arquivos por diretórios padrão de armazenamento na nuvem…
+addvaultwizard.new.locationLoading=Verificando o sistema de ficheiros local para directórios de armazenamento predefinidos na nuvem…
addvaultwizard.new.locationLabel=Local de armazenamento
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Outro Local
@@ -320,6 +320,14 @@ preferences.updates.currentVersion=Versão atual: %s
preferences.updates.autoUpdateCheck=Verificar automaticamente por atualizações
preferences.updates.checkNowBtn=Verificar Agora
preferences.updates.updateAvailable=Atualização para a versão %s disponível.
+preferences.updates.lastUpdateCheck=Última verificação: %s
+preferences.updates.lastUpdateCheck.never=nunca
+preferences.updates.lastUpdateCheck.recently=recentemente
+preferences.updates.lastUpdateCheck.daysAgo=%s dias atrás
+preferences.updates.lastUpdateCheck.hoursAgo=%s horas atrás
+preferences.updates.checkFailed=A procura de actualizações falhou. Verifique a sua ligação à Internet ou tente novamente mais tarde.
+preferences.updates.upToDate=Cryptomator está atualizado.
+
## Contribution
preferences.contribute=Apoie-nos
preferences.contribute.registeredFor=Certificado de apoiador registado para %s
@@ -532,6 +540,12 @@ updateReminder.notNow=Agora não
updateReminder.yesOnce=Sim, Uma Vez
updateReminder.yesAutomatically=Sim, Automaticamente
+#Dokany Support End
+dokanySupportEnd.title=Aviso de descontinuação
+dokanySupportEnd.message=Suporte termina para o Dokany
+dokanySupportEnd.description=O tipo de volume Dokany não é mais suportado pelo Cryptomator. As configurações serão ajustadas para usar o tipo de volume padrão por agora. Pode ver o tipo padrão nas preferências.
+dokanySupportEnd.preferencesBtn=Abrir preferências
+
# Share Vault
shareVault.title=Partilhar cofre
shareVault.message=Quer partilhar o seu cofre com outros?
diff --git a/src/main/resources/i18n/strings_pt_BR.properties b/src/main/resources/i18n/strings_pt_BR.properties
index 9efefedd7..54ecc3fac 100644
--- a/src/main/resources/i18n/strings_pt_BR.properties
+++ b/src/main/resources/i18n/strings_pt_BR.properties
@@ -320,6 +320,14 @@ preferences.updates.currentVersion=Versão atual: %s
preferences.updates.autoUpdateCheck=Buscar atualizações automaticamente
preferences.updates.checkNowBtn=Buscar Agora
preferences.updates.updateAvailable=Atualizar para versão %s disponível.
+preferences.updates.lastUpdateCheck=Última verificação: %s
+preferences.updates.lastUpdateCheck.never=nunca
+preferences.updates.lastUpdateCheck.recently=recentemente
+preferences.updates.lastUpdateCheck.daysAgo=%s dia atrás
+preferences.updates.lastUpdateCheck.hoursAgo=%s horas atrás
+preferences.updates.checkFailed=Procurando por atualizações falhou. Por favor, verifique sua conexão com a internet ou tente novamente mais tarde.
+preferences.updates.upToDate=O Cryptomator está atualizado.
+
## Contribution
preferences.contribute=Nos Apoie
preferences.contribute.registeredFor=Certificado de apoiador registrado para %s
@@ -371,7 +379,7 @@ main.closeBtn.tooltip=Fechar
main.minimizeBtn.tooltip=Minimizar
main.preferencesBtn.tooltip=Preferências
main.debugModeEnabled.tooltip=Modo de depuração ativado
-main.supporterCertificateMissing.tooltip=Por favor doe
+main.supporterCertificateMissing.tooltip=Apoie-nos
## Vault List
main.vaultlist.emptyList.onboardingInstruction=Clique aqui para adicionar um cofre
main.vaultlist.contextMenu.remove=Remover…
@@ -532,6 +540,12 @@ updateReminder.notNow=Agora Não
updateReminder.yesOnce=Sim, Uma Vez
updateReminder.yesAutomatically=Sim, Automaticamente
+#Dokany Support End
+dokanySupportEnd.title=Aviso de descontinuação
+dokanySupportEnd.message=Fim do suporte para o Dokany
+dokanySupportEnd.description=O volume do tipo Dokany não é mais suportado pelo Cryptomator. Suas configurações serão ajustadas para usar o tipo de volume padrão agora. Você pode ver o tipo padrão nas preferências.
+dokanySupportEnd.preferencesBtn=Abrir Preferências
+
# Share Vault
shareVault.title=Compartilhar Cofre
shareVault.message=Gostaria de compartilhar o seu cofre com outras pessoas?
diff --git a/src/main/resources/i18n/strings_ro.properties b/src/main/resources/i18n/strings_ro.properties
index 1695b723f..87dfd1fbf 100644
--- a/src/main/resources/i18n/strings_ro.properties
+++ b/src/main/resources/i18n/strings_ro.properties
@@ -303,6 +303,7 @@ preferences.updates.currentVersion=Versiunea actuală: %s
preferences.updates.autoUpdateCheck=Verificare automată actualizări
preferences.updates.checkNowBtn=Verifică acum
preferences.updates.updateAvailable=Actualizare la versiunea %s disponibilă.
+
## Contribution
preferences.contribute=Susțineți-ne
preferences.contribute.registeredFor=Certificat de suporter înregistrat pentru %s
@@ -509,4 +510,7 @@ updateReminder.notNow=Nu acum
updateReminder.yesOnce=Da, o dată
updateReminder.yesAutomatically=Da, automat
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Deschideţi preferinţele
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_ru.properties b/src/main/resources/i18n/strings_ru.properties
index d5afe47e2..f0875d488 100644
--- a/src/main/resources/i18n/strings_ru.properties
+++ b/src/main/resources/i18n/strings_ru.properties
@@ -320,6 +320,14 @@ preferences.updates.currentVersion=Текущая версия: %s
preferences.updates.autoUpdateCheck=Автоматически проверять наличие обновлений
preferences.updates.checkNowBtn=Проверить
preferences.updates.updateAvailable=Доступно обновление до версии %s.
+preferences.updates.lastUpdateCheck=Последняя проверка: %s
+preferences.updates.lastUpdateCheck.never=никогда
+preferences.updates.lastUpdateCheck.recently=недавно
+preferences.updates.lastUpdateCheck.daysAgo=%s дн. назад
+preferences.updates.lastUpdateCheck.hoursAgo=%s часов назад
+preferences.updates.checkFailed=Ошибка поиска обновлений. Проверьте подключение к Интернету и повторите попытку.
+preferences.updates.upToDate=У вас новейшая версия Cryptomator.
+
## Contribution
preferences.contribute=Поддержите нас
preferences.contribute.registeredFor=Сертификат мецената зарегистрирован на имя %s
@@ -532,6 +540,12 @@ updateReminder.notNow=Не сейчас
updateReminder.yesOnce=Да, один раз
updateReminder.yesAutomatically=Да, автоматически
+#Dokany Support End
+dokanySupportEnd.title=Уведомление об устаревании
+dokanySupportEnd.message=Заканчивается поддержка для Dokany
+dokanySupportEnd.description=Cryptomator больше не поддерживает тома Dokany. Параметры будут изменены на использование типа томов по умолчанию. Тип по умолчанию см. в настройках.
+dokanySupportEnd.preferencesBtn=Открыть настройки
+
# Share Vault
shareVault.title=Поделиться хранилищем
shareVault.message=Хотите поделиться хранилищем с другими?
diff --git a/src/main/resources/i18n/strings_si.properties b/src/main/resources/i18n/strings_si.properties
index 23bdb5ffc..1798623e3 100644
--- a/src/main/resources/i18n/strings_si.properties
+++ b/src/main/resources/i18n/strings_si.properties
@@ -81,6 +81,7 @@ hub.registerSuccess.unlockBtn=අගුළුහරින්න
## Interface
## Volume
## Updates
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -130,4 +131,6 @@ main.closeBtn.tooltip=වසන්න
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_sk.properties b/src/main/resources/i18n/strings_sk.properties
index 81d169727..774cb463b 100644
--- a/src/main/resources/i18n/strings_sk.properties
+++ b/src/main/resources/i18n/strings_sk.properties
@@ -312,6 +312,14 @@ preferences.updates.currentVersion=Aktuálna verzia: %s
preferences.updates.autoUpdateCheck=Automatická kontrola aktualizácii
preferences.updates.checkNowBtn=Skontroluj teraz
preferences.updates.updateAvailable=Možnosť aktualizácie na verziu %s.
+preferences.updates.lastUpdateCheck=Posledná kontrola: %s
+preferences.updates.lastUpdateCheck.never=nikdy
+preferences.updates.lastUpdateCheck.recently=nedávno
+preferences.updates.lastUpdateCheck.daysAgo=pred %s dňami
+preferences.updates.lastUpdateCheck.hoursAgo=pred %s hodinami
+preferences.updates.checkFailed=Kontrola aktualizácie zlyhala. Prosím skontrolujte pripojenie k internetu a skúste znovu.
+preferences.updates.upToDate=Cryptomator je aktuálny.
+
## Contribution
preferences.contribute=Podporte nás
preferences.contribute.registeredFor=Certifikát podporovateľa registrovaný na %s
@@ -523,6 +531,12 @@ updateReminder.notNow=Teraz nie
updateReminder.yesOnce=Áno, raz
updateReminder.yesAutomatically=Áno, automaticky
+#Dokany Support End
+dokanySupportEnd.title=Oznámenie o neschválení
+dokanySupportEnd.message=Ukončenie podpory pre Dokany
+dokanySupportEnd.description=Typ média Dokany už Cryptomator viac nepodporuje. Vaše nastavenia sú nastavené používať základný typ média. Základný typ môžete vidieť v nastaveniach.
+dokanySupportEnd.preferencesBtn=Otvoriť predvoľby
+
# Share Vault
shareVault.title=Zdielať trezor
shareVault.hubAd.authentication=* Silná autentifikácia
diff --git a/src/main/resources/i18n/strings_sl.properties b/src/main/resources/i18n/strings_sl.properties
index eaab3aba4..489278ecc 100644
--- a/src/main/resources/i18n/strings_sl.properties
+++ b/src/main/resources/i18n/strings_sl.properties
@@ -47,13 +47,16 @@ addvaultwizard.new.validCharacters.numbers=Številke
### Expert Settings
addvaultwizard.new.expertSettings.shorteningThreshold.valid=Veljavno
### Password
+addvaultwizard.new.createVaultBtn=Ustvari trezor
### Information
## Existing
addvaultwizard.existing.title=Dodaj obstoječi trezor
addvaultwizard.existing.chooseBtn=Izberi…
## Success
+addvaultwizard.success.unlockNow=Odkleni zdaj
# Remove Vault
+removeVault.title=Odstrani "%s"
# Change Password
@@ -85,6 +88,7 @@ lock.forced.retryBtn=Poizkusi znova
## Start
## Run
## Success
+migration.success.unlockNow=Odkleni zdaj
## Missing file system capabilities
## Impossible
@@ -103,6 +107,11 @@ preferences.title=Nastavitve
## Volume
preferences.volume.docsTooltip=Informacije o različnih podatkovnih nosilcih najdete v navodilih.
## Updates
+preferences.updates.lastUpdateCheck=Zadnjič preverjeno: %s
+preferences.updates.lastUpdateCheck.never=nikoli
+preferences.updates.lastUpdateCheck.recently=nedavno
+preferences.updates.lastUpdateCheck.daysAgo=%s dni nazaj
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -120,10 +129,13 @@ main.closeBtn.tooltip=Zapri
main.preferencesBtn.tooltip=Nastavitve
## Vault List
main.vaultlist.contextMenu.lock=Zakleni
+main.vaultlist.contextMenu.unlockNow=Odkleni zdaj
main.vaultlist.addVaultBtn=Dodaj
## Vault Detail
### Welcome
### Locked
+main.vaultDetail.unlockNowBtn=Odkleni zdaj
+main.vaultDetail.share=Deli…
### Unlocked
main.vaultDetail.lockBtn=Zakleni
main.vaultDetail.locateEncryptedFileBtn=Poišči šifrirano datoteko
@@ -162,4 +174,6 @@ recoveryKey.recover.invalidKey=Obnovitveni ključ ni pravilen
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_sr.properties b/src/main/resources/i18n/strings_sr.properties
index 08186da0c..e5684c8cb 100644
--- a/src/main/resources/i18n/strings_sr.properties
+++ b/src/main/resources/i18n/strings_sr.properties
@@ -170,6 +170,7 @@ preferences.updates.currentVersion=Trenutna verzija: %s
preferences.updates.autoUpdateCheck=Automatska provera dostupnih ažuriranja
preferences.updates.checkNowBtn=Proveri sada
preferences.updates.updateAvailable=Ažuriranje na verziju %s je dostupno.
+
## Contribution
preferences.contribute=Podržite Nas
preferences.contribute.registeredFor=Sertifikat "Prijatelj Projekta" registrovan je na %s
@@ -321,4 +322,6 @@ quit.lockAndQuitBtn=Zaključaj i Izađi
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_sr_Latn.properties b/src/main/resources/i18n/strings_sr_Latn.properties
index 6c51d331c..ebcdbc866 100644
--- a/src/main/resources/i18n/strings_sr_Latn.properties
+++ b/src/main/resources/i18n/strings_sr_Latn.properties
@@ -160,6 +160,7 @@ preferences.updates.currentVersion=Trenutna verzija: %s
preferences.updates.autoUpdateCheck=Automatska provera dostupnih ažuriranja
preferences.updates.checkNowBtn=Proveri sada
preferences.updates.updateAvailable=Ažuriranje na verziju %s je dostupno.
+
## Contribution
preferences.contribute=Podržite Nas
preferences.contribute.registeredFor=Sertifikat "Prijatelj Projekta" registrovan je na %s
@@ -238,4 +239,6 @@ vaultOptions.masterkey.changePasswordBtn=Promena lozinke
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_sv.properties b/src/main/resources/i18n/strings_sv.properties
index d81406d02..3af501f5d 100644
--- a/src/main/resources/i18n/strings_sv.properties
+++ b/src/main/resources/i18n/strings_sv.properties
@@ -320,6 +320,14 @@ preferences.updates.currentVersion=Nuvarande version: %s
preferences.updates.autoUpdateCheck=Sök efter uppdateringar automatiskt
preferences.updates.checkNowBtn=Kontrollera nu
preferences.updates.updateAvailable=Uppdatering till version %s finns tillgänglig.
+preferences.updates.lastUpdateCheck=Senast kontrollerad: %s
+preferences.updates.lastUpdateCheck.never=aldrig
+preferences.updates.lastUpdateCheck.recently=nyligen
+preferences.updates.lastUpdateCheck.daysAgo=%s dagar sedan
+preferences.updates.lastUpdateCheck.hoursAgo=%s timmar sedan
+preferences.updates.checkFailed=Det gick inte att söka efter uppdateringar. Kontrollera din internetanslutning eller försök igen senare.
+preferences.updates.upToDate=Cryptomator är uppdaterad.
+
## Contribution
preferences.contribute=Stöd oss
preferences.contribute.registeredFor=Supportercertifikat registrerat till %s
@@ -532,6 +540,12 @@ updateReminder.notNow=Inte nu
updateReminder.yesOnce=Ja, en gång
updateReminder.yesAutomatically=Ja, automatiskt
+#Dokany Support End
+dokanySupportEnd.title=Avvecklingmeddelande
+dokanySupportEnd.message=Dokany stöds inte längre
+dokanySupportEnd.description=Volymtypen Dokany stöds inte längre av Cryptomator. Dina inställningar justeras för att använda standardvolymtypen nu. Du kan visa standardtypen i inställningarna.
+dokanySupportEnd.preferencesBtn=Gå till inställningarna
+
# Share Vault
shareVault.title=Dela valv
shareVault.message=Vill du dela ditt valv med andra?
diff --git a/src/main/resources/i18n/strings_sw.properties b/src/main/resources/i18n/strings_sw.properties
index d01befc1b..af5a501c9 100644
--- a/src/main/resources/i18n/strings_sw.properties
+++ b/src/main/resources/i18n/strings_sw.properties
@@ -280,6 +280,7 @@ preferences.updates.currentVersion=Toleo la Sasa: %s
preferences.updates.autoUpdateCheck=Kagua sasishi otomatiki
preferences.updates.checkNowBtn=Angalia Sasa
preferences.updates.updateAvailable=Sasisha hadi toleo %s inapatikana.
+
## Contribution
preferences.contribute=Tusaidie
preferences.contribute.registeredFor=Cheti cha kiungaji mkono kimesajiliwa kwa %s
@@ -469,4 +470,7 @@ quit.forced.forceAndQuitBtn=Lazimisha na Uache
# Update Reminder
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Fungua Mapendeleo
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_ta.properties b/src/main/resources/i18n/strings_ta.properties
index c3ebd244b..ca08e3be1 100644
--- a/src/main/resources/i18n/strings_ta.properties
+++ b/src/main/resources/i18n/strings_ta.properties
@@ -186,6 +186,7 @@ preferences.interface.theme.dark=இருள்
preferences.interface.theme.light=வெளிச்சம்
## Volume
## Updates
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -304,4 +305,6 @@ quit.forced.forceAndQuitBtn=கட்டாயப்படுத்தி வெ
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_te.properties b/src/main/resources/i18n/strings_te.properties
index 3a7173d9b..3b550621e 100644
--- a/src/main/resources/i18n/strings_te.properties
+++ b/src/main/resources/i18n/strings_te.properties
@@ -67,6 +67,7 @@ preferences.interface.theme.dark=నలుపు
preferences.interface.theme.light=కాంతి
## Volume
## Updates
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -115,4 +116,6 @@ preferences.interface.theme.light=కాంతి
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_th.properties b/src/main/resources/i18n/strings_th.properties
index 1d19fa808..d3c960820 100644
--- a/src/main/resources/i18n/strings_th.properties
+++ b/src/main/resources/i18n/strings_th.properties
@@ -123,6 +123,7 @@ preferences.title=การตั้งค่า
## Interface
## Volume
## Updates
+
## Contribution
#<-- Add entries for donations and code/translation/documentation contribution -->
@@ -178,4 +179,6 @@ vaultOptions.mount.mountPoint.directoryPickerButton=เลือก...
# Update Reminder
+#Dokany Support End
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_tr.properties b/src/main/resources/i18n/strings_tr.properties
index 06dd25296..43a837261 100644
--- a/src/main/resources/i18n/strings_tr.properties
+++ b/src/main/resources/i18n/strings_tr.properties
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Kasa için bir isim seç
addvaultwizard.new.namePrompt=Kasa Adı
### Location
addvaultwizard.new.locationInstruction=Cryptomator kasanızın şifreli dosyalarını nerede depolasın?
+addvaultwizard.new.locationLoading=Varsayılan bulut depolama dizinleri için yerel dosya sistemi denetleniyor…
addvaultwizard.new.locationLabel=Depolama konumu
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Diğer konum
@@ -141,6 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=Kilidi açmak için kullanıl
unlock.error.customPath.description.couldNotBeCleaned=Kasanız "%s" yoluna monte edilemedi. Lütfen tekrar deneyin veya farklı bir montaj yolu seçin.
unlock.error.customPath.description.notEmptyDir=Özel montaj yolu "%s" boş bir klasör değil. Lütfen boş bir klasör seçip tekrar deneyin.
unlock.error.customPath.description.generic=Bu kasa için özel bir montaj yolu seçtiniz ancak bu yolun kullanımı şu ileti ile başarısız oldu: %2$s
+unlock.error.restartRequired.message=Kasanın kilidi açılamıyor
+unlock.error.restartRequired.description=Kasa seçeneklerinde bölüm türünü değiştirin veya Cryptomator'ı yeniden başlatın.
unlock.error.title="%s" kilidini açma başarısız oldu
## Hub
hub.noKeychain.message=Cihaz anahtarına erişilemiyor
@@ -155,13 +158,22 @@ hub.receive.message=Yanıt işleniyor…
hub.receive.description=Cryptomator, Hub'dan yanıtı alıyor ve işliyor. Lütfen bekleyin.
### Register Device
hub.register.message=Yeni Cihaz
+hub.register.description=Bu, bu cihazdan ilk Hub erişimidir. Lütfen Hesap Anahtarınızı kullanarak kaydedin.
hub.register.nameLabel=Cihaz adı
hub.register.invalidAccountKeyLabel=Geçersiz Hesap Anahtarı
hub.register.registerBtn=Kaydol
### Register Device Legacy
+hub.register.legacy.occupiedMsg=Ad zaten kullanımda
+hub.register.legacy.description=Bu işlem, bu cihazdan yapılan ilk Hub erişimidir. Lütfen kaydedin.
### Registration Success
+hub.registerSuccess.message=Cihaz kaydedildi
+hub.registerSuccess.description=Cihazınız başarıyla kaydedildi. Artık kasa kilidini açmaya devam edebilirsiniz.
hub.registerSuccess.unlockBtn=Kilidi Aç
+hub.registerSuccess.legacy.description=Kasaya erişmek için cihazınızın kasa sahibi tarafından ayrıca yetkilendirilmesi gerekir.
### Registration Failed
+hub.registerFailed.message=Cihaz kaydı başarısız oldu
+hub.registerFailed.description.generic=Kayıt işleminde bir hata oluştu. Daha fazla bilgi için uygulama günlüğüne bakın.
+hub.registerFailed.description.deviceAlreadyExists=Bu cihaz zaten farklı bir kullanıcı için kayıtlı. Kullanıcı hesabını değiştirmeyi veya farklı bir cihaz kullanmayı deneyin.
### Unauthorized
hub.unauthorized.message=Erişim engellendi
hub.unauthorized.description=Cihazınıza henüz bu kasaya erişim yetkisi verilmedi. Kasa sahibinden yetkilendirmesini isteyin.
@@ -308,6 +320,14 @@ preferences.updates.currentVersion=Mevcut Sürüm: %s
preferences.updates.autoUpdateCheck=Güncellemeleri otomatik kontrol et
preferences.updates.checkNowBtn=Şimdi Kontrol Et
preferences.updates.updateAvailable=%s sürümüne güncelleme mevcut.
+preferences.updates.lastUpdateCheck=Son kontrol: %s
+preferences.updates.lastUpdateCheck.never=asla
+preferences.updates.lastUpdateCheck.recently=az önce
+preferences.updates.lastUpdateCheck.daysAgo=%s gün önce
+preferences.updates.lastUpdateCheck.hoursAgo=%s saat önce
+preferences.updates.checkFailed=Güncellemeleri kontrol başarısız oldu. Lütfen internet bağlantınızı kontrol edin veya daha sonra tekrar deneyin.
+preferences.updates.upToDate=Cryptomator güncel.
+
## Contribution
preferences.contribute=Bizi Destekle
preferences.contribute.registeredFor=%s için destekçi sertifikası kaydedildi
@@ -380,6 +400,7 @@ main.vaultDetail.unlockBtn=Kilit aç…
main.vaultDetail.unlockNowBtn=Kilidi Şimdi Aç
main.vaultDetail.optionsBtn=Kasa Ayarları
main.vaultDetail.passwordSavedInKeychain=Şifre kaydedildi
+main.vaultDetail.share=Paylaş…
### Unlocked
main.vaultDetail.unlockedStatus=KİLİDİ AÇIK
main.vaultDetail.accessLocation=Kasa içeriğinize buradan erişilebilir:
@@ -445,6 +466,7 @@ vaultOptions.mount.mountPoint.custom=Seçilen dizini kullan
vaultOptions.mount.mountPoint.directoryPickerButton=Seç…
vaultOptions.mount.mountPoint.directoryPickerTitle=Dizin seçin
vaultOptions.mount.volumeType.default=Varsayılan (%s)
+vaultOptions.mount.volumeType.restartRequired=Bu birim türünü kullanmak için Cryptomator'ın yeniden başlatılması gerekir.
vaultOptions.mount.volume.tcp.port=TCP Bağlantı Noktası
vaultOptions.mount.volume.type=Birim Türü
## Master Key
@@ -518,4 +540,25 @@ updateReminder.notNow=Şimdi değil
updateReminder.yesOnce=Evet, tek seferlik
updateReminder.yesAutomatically=Evet, otomatik olarak
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Özellikleri Aç
+
# Share Vault
+shareVault.title=Kasayı paylaş
+shareVault.message=Kasanızı başkalarıyla paylaşmak ister misiniz?
+shareVault.description=Kasanızı diğer insanlarla paylaşırken her zaman dikkatli olun. Kısaca, bu adımları izleyin:
+shareVault.instruction.1=1. Şifrelenmiş kasa klasörünün erişimini bulut depolama üzerinden paylaşın.
+shareVault.instruction.2=2. Kasa şifresini güvenli bir şekilde paylaşın.
+shareVault.remarkBestPractices=Daha fazla bilgi için dokümanlarımızdaki en iyi uygulamalar önerilerine göz atın.
+shareVault.docsTooltip=Kasaların paylaşımı hakkında daha fazla bilgi edinmek için dökümantasyonu açın.
+shareVault.hubAd.description=Ekip halinde çalışmanın güvenli yolu
+shareVault.hubAd.keyManagement=• Sıfır bilgi anahtar yönetimi
+shareVault.hubAd.authentication=• Güçlü kimlik doğrulama
+shareVault.hubAd.encryption=• Uçtan uca şifreleme
+shareVault.visitHub=Cryptomator Hub'ı ziyaret et
+
+shareVault.hub.message=Hub kasası nasıl paylaşılır
+shareVault.hub.description=Kasa içeriğini başka bir ekip üyesiyle paylaşmak için iki adım gerçekleştirmeniz gerekir:
+shareVault.hub.instruction.1=1. Şifrelenmiş kasa klasörünün erişimini bulut depolama üzerinden paylaşın.
+shareVault.hub.instruction.2=2. Cryptomator Hub'da ekip üyesine erişim izni verin.
+shareVault.hub.openHub=Cryptomator Hub'ı aç
\ No newline at end of file
diff --git a/src/main/resources/i18n/strings_uk.properties b/src/main/resources/i18n/strings_uk.properties
index 95baa3996..78e744983 100644
--- a/src/main/resources/i18n/strings_uk.properties
+++ b/src/main/resources/i18n/strings_uk.properties
@@ -1,4 +1,5 @@
# Locale Specific CSS files such as CJK, RTL,...
+additionalStyleSheets=
# Generics
## Button
@@ -10,18 +11,21 @@ generic.button.choose=Обрати…
generic.button.close=Закрити
generic.button.copy=Копіювати
generic.button.copied=Скопійовано!
-generic.button.done=Готово
+generic.button.done=Завершити
generic.button.next=Далі
-generic.button.print=Друк
+generic.button.print=Друкувати
# Error
error.message=Сталася помилка
-error.description=Cryptomator не очікував, що таке трапиться. Спробуйте пошукати рішення цієї помилки, що вже існують. Якщо про помилку ще не повідомили, то не соромтеся це зробити.
+error.description=Ой! Cryptomator не очікував, що таке трапиться. Ви можете знайти існуючі рішення цієї помилки. Або, якщо про це ще не повідомили, то не соромтеся зробити це.
error.hyperlink.lookup=Дізнатися більше про цю помилку
-error.hyperlink.report=Повідомити про помилку
-error.technicalDetails=Подробиці:
+error.hyperlink.report=Повідомити про цю помилку
+error.technicalDetails=Докладно:
+error.existingSolutionDescription=Cryptomator не очікував, що це станеться. Але ми знайшли спосіб розв'язання цієї проблеми. Ознайомтесь з ним, будь ласка, далі.
error.hyperlink.solution=Знайдіть рішення
+error.lookupPermissionMessage=Cryptomator може спробувати знайти спосіб розв'язання цієї проблеми онлайн. Це передбачає відправку запиту до нашої бази даних проблем з вашої ІР.
error.dismiss=Відхилити
+error.lookUpSolution=Пошук рішення
# Defaults
defaults.vault.vaultName=Сховище
@@ -29,275 +33,410 @@ defaults.vault.vaultName=Сховище
# Tray Menu
traymenu.showMainWindow=Показати
traymenu.showPreferencesWindow=Налаштування
-traymenu.lockAllVaults=Заблокувати всі
-traymenu.quitApplication=Вихід
+traymenu.lockAllVaults=Заблокувати все
+traymenu.quitApplication=Вийти
traymenu.vault.unlock=Розблокувати
traymenu.vault.lock=Заблокувати
-traymenu.vault.reveal=Показати
+traymenu.vault.reveal=Розгорнути вікно
# Add Vault Wizard
-addvaultwizard.title=Додати сховище
+addvaultwizard.title=Додавання сховища
## New
-addvaultwizard.new.title=Додайте нове сховище
+addvaultwizard.new.title=Додавання нового сховища
### Name
addvaultwizard.new.nameInstruction=Оберіть назву для сховища
addvaultwizard.new.namePrompt=Назва сховища
### Location
addvaultwizard.new.locationInstruction=Де Cryptomator має зберігати зашифровані файли вашого сховища?
+addvaultwizard.new.locationLoading=Перевірка локальної файлової системи на предмет наявності папок клієнтів хмарних сховищ…
addvaultwizard.new.locationLabel=Розташування сховища
addvaultwizard.new.locationPrompt=…
-addvaultwizard.new.directoryPickerLabel=Інше розташування
+addvaultwizard.new.directoryPickerLabel=Власне розташування
addvaultwizard.new.directoryPickerButton=Обрати…
-addvaultwizard.new.directoryPickerTitle=Обрати каталог
-addvaultwizard.new.fileAlreadyExists=Файл чи каталог з іменем сховища вже існує
-addvaultwizard.new.locationDoesNotExist=За вказаною адресою каталог недоступний або не існує
+addvaultwizard.new.directoryPickerTitle=Обрати папку
+addvaultwizard.new.fileAlreadyExists=Файл чи папка з вказаним іменем сховища вже існує
+addvaultwizard.new.locationDoesNotExist=Папка недоступна за вказаною адресою або не існує
addvaultwizard.new.locationIsNotWritable=Вказана адреса доступна лише для читання
addvaultwizard.new.locationIsOk=Це місце підходить для сховища
addvaultwizard.new.invalidName=Недопустима назва сховища
addvaultwizard.new.validName=Допустима назва сховища
-addvaultwizard.new.validCharacters.message=Назва сховища може містити наступні символи:
+addvaultwizard.new.validCharacters.message=Назва сховища може містити такі символи:
addvaultwizard.new.validCharacters.chars=Літери (напр. a, ж or 수)
addvaultwizard.new.validCharacters.numbers=Цифри
addvaultwizard.new.validCharacters.dashes=Дефіс (%s) або підкреслення (%s)
### Expert Settings
+addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=Увімкнути експертні налаштування
+addvaultwizard.new.expertSettings.shorteningThreshold.invalid=Введіть значення від 36 до 220 (типово 220)
addvaultwizard.new.expertSettings.shorteningThreshold.tooltip=Відкрийте документацію, щоб дізнатися більше.
+addvaultwizard.new.expertSettings.shorteningThreshold.title=Максимальна довжина зашифрованих імен файлів
+addvaultwizard.new.expertSettings.shorteningThreshold.valid=Вірний
### Password
addvaultwizard.new.createVaultBtn=Створити сховище
-addvaultwizard.new.generateRecoveryKeyChoice=Ви не зможете отримати доступ до своїх даних, якщо втратите пароль. Хочете створити ключ відновлення на випадок втрати паролю?
+addvaultwizard.new.generateRecoveryKeyChoice=Ви не зможете отримати доступ до своїх даних без пароля. Хочете створити ключ відновлення на випадок втрати паролю?
addvaultwizard.new.generateRecoveryKeyChoice.yes=Так, будь ласка, береженого Бог береже
addvaultwizard.new.generateRecoveryKeyChoice.no=Ні, дякую, я не втрачу свій пароль
### Information
addvault.new.readme.storageLocation.fileName=ВАЖЛИВО.rtf
addvault.new.readme.storageLocation.1=⚠️ ФАЙЛИ СХОВИЩА ⚠️
-addvault.new.readme.storageLocation.2=Це місце для зберігання вашого сховища.
+addvault.new.readme.storageLocation.2=Це місце, де зберігається ваше сховище.
addvault.new.readme.storageLocation.3=НЕ
-addvault.new.readme.storageLocation.4=• змінювати будь-які файли в цьому каталозі, або
-addvault.new.readme.storageLocation.5=• додавати до цього каталогу будь-які файли для шифрування.
-addvault.new.readme.storageLocation.6=Якщо ви хочете зашифрувати файли та переглянути вміст vault, зробіть наступне:
-addvault.new.readme.storageLocation.7=1. Додайте цей vault до Cryptomator.
-addvault.new.readme.storageLocation.8=2. Розблокуйте цей vault в Cryptomator.
-addvault.new.readme.storageLocation.9=3. Отримайте доступ до вмісту vault, натиснувши кнопку "Розгорнути".
-addvault.new.readme.storageLocation.10=Якщо вам потрібна допомога, відвідайте документацію: %s
-addvault.new.readme.accessLocation.fileName=ПРИВІТ.rtf
+addvault.new.readme.storageLocation.4=• змінюйте будь-які файли в цій папці, або
+addvault.new.readme.storageLocation.5=• додавайте безпосередньо до цієї папки будь-які файли для їх шифрування.
+addvault.new.readme.storageLocation.6=Якщо ви хочете зашифрувати файли та переглянути вміст сховища, зробіть так:
+addvault.new.readme.storageLocation.7=1. Додайте це сховище (папку) у Cryptomator.
+addvault.new.readme.storageLocation.8=2. Розблокуйте його через Cryptomator.
+addvault.new.readme.storageLocation.9=3. Отримайте доступ до вмісту сховища, натиснувши кнопку "Розгорнути".
+addvault.new.readme.storageLocation.10=Якщо вам потрібна допомога, почитайте документацію: %s
+addvault.new.readme.accessLocation.fileName=ПРОЧИТАЙ_МЕНЕ.rtf
addvault.new.readme.accessLocation.1=🔐️ ЗАШИФРОВАНИЙ ТОМ 🔐️
-addvault.new.readme.accessLocation.2=Це місце розташування вашого vault.
-addvault.new.readme.accessLocation.3=Будь-які файли, додані до цього тому, будуть зашифровані за допомогою Cryptomator. Ви можете працювати із ним як із будь-якою іншою директорією або накопичувачем. Це лише розшифрований вигляд його вмісту, ваші файли завжди знаходяться в зашифрованому вигляді на диску.
-addvault.new.readme.accessLocation.4=Якщо хочете, то можете видалити цей файл.
+addvault.new.readme.accessLocation.2=Це місце розташування вашого сховища.
+addvault.new.readme.accessLocation.3=Будь-які файли, додані до цього тому, будуть зашифровані за допомогою Cryptomator. Ви можете працювати із ним як із будь-якою іншою директорією або накопичувачем. Це лише розшифрований вигляд вмісту сховища, ваші файли завжди знаходяться в зашифрованому вигляді на диску.
+addvault.new.readme.accessLocation.4=Цей файл можна видалити, якщо бажаєте.
## Existing
-addvaultwizard.existing.title=Додати існуюче сховище
-addvaultwizard.existing.instruction=Виберіть файл "vault.cryptomator" у вашому існуючому сховищі. Якщо існує лише файл з назвою "masterkey.cryptomator", виберіть його.
+addvaultwizard.existing.title=Додати наявне сховище
+addvaultwizard.existing.instruction=Виберіть файл "vault.cryptomator" вашого наявного сховища. Якщо існує лише файл з назвою "masterkey.cryptomator", виберіть його.
addvaultwizard.existing.chooseBtn=Обрати…
-addvaultwizard.existing.filePickerTitle=Виберіть Vault Файл
-addvaultwizard.existing.filePickerMimeDesc=Cryptomator Vault
+addvaultwizard.existing.filePickerTitle=Виберіть файл сховища
+addvaultwizard.existing.filePickerMimeDesc=Сховище Cryptomator
## Success
-addvaultwizard.success.nextStepsInstructions=Додано сховище "%s".\nДля доступу або додавання вмісту це сховище необхідно розблокувати. Також його можна розблокувати й пізніше.
+addvaultwizard.success.nextStepsInstructions=Додано сховище "%s".\nЦе сховище необхідно розблокувати для доступу або додавання вмісту. Але ви можете розблокувати його пізніше.
addvaultwizard.success.unlockNow=Розблокувати
# Remove Vault
removeVault.title=Видалити "%s"
-removeVault.message=Видалити vault?
-removeVault.description=Це лише змусить Cryptomator забути про це сховище. Його можна буде додати пізніше. Зашифровані файли на жорсткому диску не будуть видалені.
+removeVault.message=Видалити сховище?
+removeVault.description=Це лише змусить Cryptomator забути про це сховище. Його можна буде додати знову пізніше. Зашифровані файли на вашому жорсткому диску не буде втрачено.
removeVault.confirmBtn=Видалити сховище
# Change Password
-changepassword.title=Змінити пароль
+changepassword.title=Зміна паролю
changepassword.enterOldPassword=Введіть поточний пароль для "%s"
changepassword.finalConfirmation=Я розумію, що не зможу отримати доступ до даних, якщо забуду свій пароль
# Forget Password
forgetPassword.title=Забути пароль
forgetPassword.message=Забути збережений пароль?
-forgetPassword.description=Ця дія видалить збережений пароль вашого vault із системного ланцюжка ключів.
+forgetPassword.description=Ця дія видалить збережений пароль вашого сховища із системної зв'язки ключів.
forgetPassword.confirmBtn=Забути пароль
# Unlock
-unlock.title=Розблокувати "%s"
+unlock.title=Розблокування "%s"
unlock.passwordPrompt=Введіть пароль для "%s":
unlock.savePassword=Запам'ятати пароль
unlock.unlockBtn=Розблокувати
## Select
-unlock.chooseMasterkey.message=Masterkey файл не знайдено
-unlock.chooseMasterkey.description=Cryptomator не зміг знайти masterkey файл для vault "%s". Будь ласка, виберіть ключ вручну.
-unlock.chooseMasterkey.filePickerTitle=Виберіть Masterkey файл
-unlock.chooseMasterkey.filePickerMimeDesc=Cryptomator Masterkey
+unlock.chooseMasterkey.message=Файл майстер-ключа не знайдено
+unlock.chooseMasterkey.description=Cryptomator не зміг знайти файл майстер-ключа для сховища "%s". Будь ласка, виберіть ключ вручну.
+unlock.chooseMasterkey.filePickerTitle=Виберіть файл майстер-ключа
+unlock.chooseMasterkey.filePickerMimeDesc=Майстер-ключ Cryptomator
## Success
-unlock.success.message=Розблоковано успішно
-unlock.success.description=Вміст vault "%s" тепер доступний через точку монтування.
+unlock.success.message=Успішно розблоковано
+unlock.success.description=Вміст сховища "%s" тепер доступний через точку монтування.
unlock.success.rememberChoice=Запам'ятайте мій вибір та більше не запитуйте
-unlock.success.revealBtn=Розкрити Диск
+unlock.success.revealBtn=Розгорнути диск
## Failure
unlock.error.customPath.message=Не вдалося змонтувати сховище за вказаним шляхом
unlock.error.customPath.description.notSupported=Якщо ви хочете надалі використовувати власний шлях, будь ласка, перейдіть до налаштувань та виберіть тип тому, що його підтримує. В іншому випадку перейдіть до параметрів сховища та оберіть точку монтування, що підтримується.
-unlock.error.customPath.description.notExists=Вказаний шлях підключення не існує. Створіть його в локальній файловій системі або змініть його в параметрах сховища.
+unlock.error.customPath.description.notExists=Вказаний шлях монтування не існує. Створіть його в локальній файловій системі або змініть його в параметрах сховища.
+unlock.error.customPath.description.inUse=Зараз використовується літера або користувацький шлях монтування "%s".
+unlock.error.customPath.description.hideawayNotDir=Цей тимчасовий прихований файл "%3$s" використовується для розблокування і не може бути видалений. Будь ласка, перевірте файл та видаліть його вручну.
+unlock.error.customPath.description.couldNotBeCleaned=Ваше сховище неможливо змонтувати за шляхом "%s". Будь ласка, спробуйте знову або оберіть інший шлях.
+unlock.error.customPath.description.notEmptyDir=Користувацький шлях монтування "%s" не є порожньою папкою. Будь ласка, оберіть порожню папку і спробуйте ще раз.
+unlock.error.customPath.description.generic=Ви вибрали користувацький шлях монтування для цього сховища, але його використання призвело до помилки з текстом: %2$s
+unlock.error.restartRequired.message=Не вдалося розблокувати сховище
+unlock.error.restartRequired.description=Змініть тип носія в налаштуваннях сховища або перезапустіть Cryptomator.
+unlock.error.title=Розблокувати "%s" не вдалося
## Hub
hub.noKeychain.message=Не вдалося отримати доступ до ключа пристрою
-hub.noKeychain.description=Щоб розблокувати Hub vaults, необхідний ключ пристрою, який захищено за допомогою ланцюга ключів. Щоб продовжити, увімкніть “%s” та виберіть ланцюг ключів у налаштуваннях.
-hub.noKeychain.openBtn=Відкрити Налаштування
+hub.noKeychain.description=Щоб розблокувати сховища Hub, необхідний ключ пристрою, який захищено за допомогою зв'язки ключів. Щоб продовжити, увімкніть “%s” та виберіть зв'язку ключів у налаштуваннях.
+hub.noKeychain.openBtn=Відкрити налаштування
### Waiting
hub.auth.message=Очікування завершення автентифікації…
-hub.auth.description=Вас повинно автоматично переадресувати на сторінку входу.
-hub.auth.loginLink=Не переадресувало? Натисніть тут, щоб відкрити його.
+hub.auth.description=Вас буде автоматично переспрямовано на сторінку входу.
+hub.auth.loginLink=Не переспрямовано? Натисніть тут, щоб відкрити її.
### Receive Key
hub.receive.message=Обробка відповіді…
-hub.receive.description=Cryptomator отримує та обробляє відповідь від Hub. Будь ласка, зачекайте.
+hub.receive.description=Cryptomator отримує та опрацьовує відповідь від Hub. Будь ласка, зачекайте.
### Register Device
+hub.register.message=Новий пристрій
+hub.register.description=Це перший доступ до Хабу Cryptomator з цього пристрою. Будь ласка, зареєструйтесь за допомогою вашого ключа облікового запису.
hub.register.nameLabel=Назва пристрою
+hub.register.invalidAccountKeyLabel=Недійсний ключ облікового запису
+hub.register.registerBtn=Зареєструватись
### Register Device Legacy
+hub.register.legacy.occupiedMsg=Таке ім’я уже існує
+hub.register.legacy.description=Це перший доступ до Хабу Cryptomator з цього пристрою. Будь ласка, зареєструйте його.
### Registration Success
+hub.registerSuccess.message=Пристрій зареєстровано
+hub.registerSuccess.description=Ваш пристрій успішно зареєстровано. Тепер ви можете продовжити розблокування сховища.
hub.registerSuccess.unlockBtn=Розблокувати
+hub.registerSuccess.legacy.description=Щоб отримати доступ до сховища, ваш пристрій повинен бути додатково авторизованим власником сховища.
### Registration Failed
+hub.registerFailed.message=Помилка реєстрації пристрою
+hub.registerFailed.description.generic=Помилка виникла у процесі реєстрації. Для більш докладної інформації перегляньте журнал додатка.
+hub.registerFailed.description.deviceAlreadyExists=Цей пристрій вже зареєстровано для іншого користувача. Спробуйте змінити обліковий запис користувача або скористайтеся іншим пристроєм.
### Unauthorized
hub.unauthorized.message=У доступі відмовлено
-hub.unauthorized.description=Ваш пристрій ще не має прав доступу до цього vault. Попросіть власника vault надати їх.
+hub.unauthorized.description=Ваш пристрій ще не має прав доступу до цього сховища. Попросіть власника сховища дозволити доступ.
### Requires Account Initialization
+hub.requireAccountInit.message=Необхідна дія
+hub.requireAccountInit.description.0=Для продовження, будь ласка, завершіть виконання обов'язкових кроків
+hub.requireAccountInit.description.1=Профіль користувача Хабу
+hub.requireAccountInit.description.2=.
### License Exceeded
hub.invalidLicense.message=Недійсна ліцензія Hub
-hub.invalidLicense.description=У вашого Cryptomator Hub недійсна ліцензія. Будь ласка, повідомте адміністратору Hub, що потрібно оновити або продовжити ліцензію.
+hub.invalidLicense.description=У вашого Cryptomator Hub недійсна ліцензія. Будь ласка, зв'яжіться з адміністратором Hub, щоб оновити або продовжити дію ліцензії.
# Lock
## Force
lock.forced.message=Помилка блокування
+lock.forced.description=Блокуванню "%s" заважає виконання операцій або відкриті файли. Ви можете примусово заблокувати це сховище, однак переривання операцій чинання/запису може призвести до втрати незбережених даних.
lock.forced.retryBtn=Повторити
lock.forced.forceBtn=Примусове блокування
## Failure
-lock.fail.message=Заблокування vault провалилося
+lock.fail.message=Не вдалося заблокувати сховище
+lock.fail.description=Сховище "%s" не можна заблокувати. Переконайтеся, що незавершену роботу збережено в іншому місці, а також важливі операції читання/запису закінчені. Щоб закрити сховище, завершіть процес Cryptomator.
# Migration
-migration.title=Покращити Vault
+migration.title=Покращення сховища
## Start
-migration.start.header=Покращити Vault
+migration.start.header=Покращення сховища до наступної версії
+migration.start.text=Для того, щоб відкрити сховище "%s" у новій версії Cryptomator, воно має бути оновлене до новішого формату. Перед тим, як це зробити, ви повинні знати таке:
+migration.start.remarkUndone=Це оновлення не може бути скасовано.
+migration.start.remarkVersions=Старіші версії Cryptomator не зможуть відкрити оновлене сховище.
+migration.start.remarkCanRun=Ви повинні бути впевнені, що кожен пристрій, з якого ви маєте доступ до сховища, підтримує цю версію Cryptomator.
+migration.start.remarkSynced=Ви маєте бути впевнені, що ваше сховище повністю синхронізовано на цьому пристрої та на інших ваших пристроях, перш ніж оновити його.
+migration.start.confirm=Я прочитав та зрозумів вищевказану інформацію
## Run
-migration.run.startMigrationBtn=Мігрувати Vault
+migration.run.enterPassword=Введіть пароль для "%s"
+migration.run.startMigrationBtn=Розпочати міграцію
migration.run.progressHint=Це може зайняти деякий час…
## Success
-migration.success.nextStepsInstructions=Мігровано "%s" успішно.\nТепер ви можете розблокувати ваш vault.
+migration.success.nextStepsInstructions=Міграцію "%s" успішно завершено.\nТепер ви можете розблокувати ваше сховище.
migration.success.unlockNow=Розблокувати
## Missing file system capabilities
-migration.error.missingFileSystemCapabilities.title=Непідтримувана Файлова Система
+migration.error.missingFileSystemCapabilities.title=Файлова система не підтримується
+migration.error.missingFileSystemCapabilities.description=Перенесення не було розпочато, оскільки ваше сховище знаходиться в несумісній файловій системі.
+migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=Файлова система не підтримує довгі назви файлів.
+migration.error.missingFileSystemCapabilities.reason.LONG_PATHS=Файлова система не підтримує довгі шляхи.
+migration.error.missingFileSystemCapabilities.reason.READ_ACCESS=Файлова система не дозволяє зчитувати дані.
+migration.error.missingFileSystemCapabilities.reason.WRITE_ACCESS=Файлова система не дозволяє записувати дані.
## Impossible
+migration.impossible.heading=Не вдалося перенести сховище
+migration.impossible.reason=Сховище не можливо автоматично перенести через його розташуванням на диску або несумісність точки доступу.
+migration.impossible.moreInfo=Сховище все ще може бути відкрите старішою версією. Для інструкцій, як вручну перенести сховище, перейдіть
# Health Check
## Start
+health.title=Перевірка працездатності "%s"
+health.intro.header=Перевірка працездатності
+health.intro.text=Перевірка працездатності передбачає ряд тестів для виявлення та за можливості виправлення проблем у внутрішній структурі вашого сховища. Будь ласка, пам'ятайте:
+health.intro.remarkSync=Переконайтеся, що всі пристрої повністю синхронізовані, це вирішує більшість проблем.
+health.intro.remarkFix=Не всі проблеми можна виправити.
+health.intro.remarkBackup=Якщо дані пошкоджено, то може допомогти тільки резервна копія.
+health.intro.affirmation=Я прочитав та зрозумів вищевказану інформацію
## Start Failure
+health.fail.header=Помилка при завантаженні конфігурації сховища
+health.fail.ioError=Сталася помилка під час спроби доступу до файлу конфігурації.
+health.fail.parseError=Сталася помилка під час опрацювання конфігурації сховища.
health.fail.moreInfo=Більше інформації
## Check Selection
+health.checkList.description=Оберіть прапорець зі списку ліворуч або використовуйте кнопки нижче.
+health.checkList.selectAllButton=Вибрати всі перевірки
+health.checkList.deselectAllButton=Зняти вибір з усіх перевірок
+health.check.runBatchBtn=Розпочати обрані перевірки
## Detail view
+health.check.detail.noSelectedCheck=Для перегляду результатів оберіть завершену перевірку працездатності зі списку ліворуч.
+health.check.detail.checkScheduled=Перевірку заплановано.
health.check.detail.checkRunning=Перевірка триває…
-health.check.detail.checkSkipped=Перевірку не було вибрано для запуску.
+health.check.detail.checkSkipped=Перевірку не вибрано для запуску.
health.check.detail.checkFinished=Перевірку завершено успішно.
-health.check.detail.checkFinishedAndFound=Перевірку завершено. Будь ласка, перегляньте результати.
+health.check.detail.checkFinishedAndFound=Перевірку завершено. Будь ласка, ознайомтесь з результатами.
health.check.detail.checkFailed=Перевірка завершилась через помилку.
health.check.detail.checkCancelled=Перевірку було скасовано.
health.check.detail.listFilters.label=Фільтр
-health.check.detail.fixAllSpecificBtn=Виправити всі типу
-health.check.exportBtn=Експортувати Звіт
+health.check.detail.fixAllSpecificBtn=Виправити все
+health.check.exportBtn=Експортувати звіт
## Result view
health.result.severityFilter.all=Рівень критичності - Усі
health.result.severityFilter.good=В нормі
health.result.severityFilter.info=Інформація
health.result.severityFilter.warn=Попередження
-health.result.severityFilter.crit=Критичний
-health.result.severityTip.good=Рівень критичності: В нормі\nЗвичайна структура vault.
-health.result.severityTip.info=Рівень критичності: Інформація\nСтруктура vault неушкоджена, бажано виправити.
-health.result.severityTip.warn=Рівень критичності: Попередження\nСтруктуру vault пошкоджено, настійно рекомендується виправити.
-health.result.severityTip.crit=Рівень критичності: Критичний\nСтруктуру vault пошкоджено, виявлено втрату даних.
+health.result.severityFilter.crit=Критично
+health.result.severityTip.good=Рівень критичності: в нормі\nЗвичайна структура сховища.
+health.result.severityTip.info=Рівень критичності: інформація\nСтруктура сховища цілісна, виправлення рекомендовані.
+health.result.severityTip.warn=Рівень критичності: попередження\nСтруктуру сховища пошкоджено, це слід виправити.
+health.result.severityTip.crit=Рівень критичності: критичний\nСтруктуру сховища пошкоджено, виявлено втрату даних.
health.result.fixStateFilter.all=Статус виправлення - Всі
health.result.fixStateFilter.fixable=Поправні
health.result.fixStateFilter.notFixable=Не поправні
-health.result.fixStateFilter.fixing=В процесі виправлення…
+health.result.fixStateFilter.fixing=Виправляються…
health.result.fixStateFilter.fixed=Виправлені
-health.result.fixStateFilter.fixFailed=Виправлення не вдалося
+health.result.fixStateFilter.fixFailed=Невдале виправлення
## Fix Application
health.fix.fixBtn=Виправити
health.fix.successTip=Виправлення успішне
-health.fix.failTip=Виправлення провалилося, перегляньте журнал для отримання деталей
+health.fix.failTip=Виправити не вдалось, перегляньте журнал для ознайомлення з подробицями
# Preferences
-preferences.title=Властивості
+preferences.title=Налаштування
## General
preferences.general=Загальні
-preferences.general.startHidden=Сховати вікно під час запуску Cryptomator
-preferences.general.autoCloseVaults=Заблокувати відкриті vaults автоматично під час закриття програми
+preferences.general.startHidden=Приховати вікно під час запуску Cryptomator
+preferences.general.autoCloseVaults=Заблокувати відкриті сховища автоматично в разі закриття додатка
preferences.general.debugLogging=Увімкнути ведення журналу налагодження
preferences.general.debugDirectory=Показати файли журналу
preferences.general.autoStart=Запускати Cryptomator під час запуску системи
preferences.general.keychainBackend=Зберігати паролі за допомогою
## Interface
-preferences.interface=Інтерфейс
-preferences.interface.theme=Вигляд та відчуття
-preferences.interface.theme.automatic=Автоматичний
+preferences.interface=Вигляд
+preferences.interface.theme=Колір і стиль
+preferences.interface.theme.automatic=Автоматично
preferences.interface.theme.dark=Темний
preferences.interface.theme.light=Світлий
preferences.interface.unlockThemes=Розблокувати темний режим
preferences.interface.language=Мова (потребує перезавантаження)
preferences.interface.language.auto=Мова системи
-preferences.interface.interfaceOrientation=Орієнтація Інтерфейсу
-preferences.interface.interfaceOrientation.ltr=Зліва Направо
-preferences.interface.interfaceOrientation.rtl=Справа Наліво
-preferences.interface.showMinimizeButton=Показувати кнопку "Мінімізувати"
+preferences.interface.interfaceOrientation=Відображення елементів
+preferences.interface.interfaceOrientation.ltr=Зліва направо
+preferences.interface.interfaceOrientation.rtl=Справа наліво
+preferences.interface.showMinimizeButton=Показувати кнопку "згорнути"
preferences.interface.showTrayIcon=Показувати піктограму на панелі завдань (потрібен перезапуск)
## Volume
-preferences.volume=Віртуальний Диск
-preferences.volume.type.automatic=Автоматичний
+preferences.volume=Віртуальний диск
+preferences.volume.type=Тип тому за замовчуванням
+preferences.volume.type.automatic=Автоматично
+preferences.volume.docsTooltip=Відкрийте документацію, щоб дізнатися більше про різні типи томів.
+preferences.volume.fuseRestartRequired=Слід перезапустити Cryptomator, щоб зміни набули чинності.
+preferences.volume.tcp.port=TCP порт за замовчуванням
+preferences.volume.supportedFeatures=Обраний тип тому підтримує такі функції:
+preferences.volume.feature.mountAuto=Автоматичний вибір точки монтування
+preferences.volume.feature.mountToDir=Користувацька папка як точка монтування
+preferences.volume.feature.mountToDriveLetter=Точка монтування у вигляді букви диска
+preferences.volume.feature.mountFlags=Користувацькі параметри монтування
+preferences.volume.feature.readOnly=Монтування в режимі "лише для читання"
## Updates
preferences.updates=Оновлення
+preferences.updates.currentVersion=Поточна версія: %s
+preferences.updates.autoUpdateCheck=Перевіряти наявність оновлень автоматично
+preferences.updates.checkNowBtn=Перевірити зараз
+preferences.updates.updateAvailable=Доступне оновлення до версії %s.
+preferences.updates.lastUpdateCheck=Остання перевірка: %s
+preferences.updates.lastUpdateCheck.never=ніколи
+preferences.updates.lastUpdateCheck.recently=нещодавно
+preferences.updates.lastUpdateCheck.daysAgo=%s дні(в) тому
+preferences.updates.lastUpdateCheck.hoursAgo=%s годин тому
+preferences.updates.checkFailed=Не вдалось перевірити наявність оновлень. Будь ласка, перевірте підключення до Інтернету або спробуйте ще раз пізніше.
+preferences.updates.upToDate=Ваш Cryptomator не потребує оновлення.
+
## Contribution
+preferences.contribute=Підтримайте нас
+preferences.contribute.registeredFor=Сертифікат помічника зареєстровано для %s
+preferences.contribute.noCertificate=Підтримайте Cryptomator та отримайте сертифікат помічника - це як ліцензійний ключ, але для чудових людей, які користуються безкоштовним програмним забезпеченням. ;-)
+preferences.contribute.getCertificate=Ще немає такого? Дізнайтеся, як його отримати.
+preferences.contribute.promptText=Вставте код сертифікату помічника тут
#<-- Add entries for donations and code/translation/documentation contribution -->
## About
+preferences.about=Про додаток
# Vault Statistics
+stats.title=Статистика %s
+stats.cacheHitRate=Відсоток потрапляння до кешу
## Read
+stats.read.throughput.idle=Читання: очікування
+stats.read.throughput.kibs=Зчитування: %.2f КіБ/с
+stats.read.throughput.mibs=Зчитування: %.2f МіБ/с
+stats.read.total.data.none=Зчитано даних: -
+stats.read.total.data.kib=Зчитано даних: %.1f Кб
+stats.read.total.data.mib=Зчитано даних: %.1f Мб
+stats.read.total.data.gib=Зчитано даних: %.1f Гб
+stats.decr.total.data.none=Розшифровано даних: -
+stats.decr.total.data.kib=Розшифровано даних: %.1f Кб
+stats.decr.total.data.mib=Розшифровано даних: %.1f Мб
+stats.decr.total.data.gib=Розшифровано даних: %.1f Гб
+stats.read.accessCount=Всього зчитувань: %d
## Write
+stats.write.throughput.idle=Запис: очікування
+stats.write.throughput.kibs=Запис: %.2f KіБ/с
+stats.write.throughput.mibs=Запис: %.2f MіБ/с
+stats.write.total.data.none=Записано даних: -
+stats.write.total.data.kib=Записано даних: %.1f Кб
+stats.write.total.data.mib=Записано даних: %.1f Мб
+stats.write.total.data.gib=Записано даних: %.1f Гб
+stats.encr.total.data.none=Зашифровано даних: -
+stats.encr.total.data.kib=Зашифровано даних: %.1f Кб
+stats.encr.total.data.mib=Зашифровано даних: %.1f Мб
+stats.encr.total.data.gib=Зашифровано даних: %.1f Гб
+stats.write.accessCount=Всього записувань: %d
## Accesses
+stats.access.current=Отримано доступ: %d
+stats.access.total=Усього отримано доступ: %d
# Main Window
main.closeBtn.tooltip=Закрити
-main.preferencesBtn.tooltip=Властивості
+main.minimizeBtn.tooltip=Згорнути
+main.preferencesBtn.tooltip=Налаштування
+main.debugModeEnabled.tooltip=Режим налагодження увімкнений
+main.supporterCertificateMissing.tooltip=Будь ласка, розгляньте можливість пожертви
## Vault List
+main.vaultlist.emptyList.onboardingInstruction=Натисніть тут, щоб додати сховище
+main.vaultlist.contextMenu.remove=Видалити…
main.vaultlist.contextMenu.lock=Заблокувати
+main.vaultlist.contextMenu.unlock=Розблокувати…
main.vaultlist.contextMenu.unlockNow=Розблокувати
-main.vaultlist.contextMenu.reveal=Розкрити Диск
+main.vaultlist.contextMenu.vaultoptions=Показати параметри сховища
+main.vaultlist.contextMenu.reveal=Розгорнути диск
main.vaultlist.addVaultBtn=Додати
+main.vaultlist.addVaultBtn.menuItemNew=Нове сховище...
+main.vaultlist.addVaultBtn.menuItemExisting=Наявне сховище...
## Vault Detail
### Welcome
+main.vaultDetail.welcomeOnboarding=Дякуємо, що обрали Cryptomator для захисту ваших файлів. Якщо вам потрібна допомога, перегляньте наші інструкції з роботи:
### Locked
+main.vaultDetail.lockedStatus=ЗАБЛОКОВАНО
+main.vaultDetail.unlockBtn=Розблокувати…
main.vaultDetail.unlockNowBtn=Розблокувати
+main.vaultDetail.optionsBtn=Налаштування сховища
+main.vaultDetail.passwordSavedInKeychain=Пароль збережено
+main.vaultDetail.share=Поділитися…
### Unlocked
main.vaultDetail.unlockedStatus=РОЗБЛОКОВАНО
-main.vaultDetail.accessLocation=Вміст вашого vault доступний тут:
-main.vaultDetail.revealBtn=Розкрити Диск
+main.vaultDetail.accessLocation=Щоб отримати доступ до вмісту сховища - натисніть кнопку:
+main.vaultDetail.revealBtn=Розгорнути диск
+main.vaultDetail.copyUri=Скопіювати адресу
main.vaultDetail.lockBtn=Заблокувати
main.vaultDetail.bytesPerSecondRead=Зчитування:
main.vaultDetail.bytesPerSecondWritten=Запис:
-main.vaultDetail.throughput.idle=простій
+main.vaultDetail.throughput.idle=простоювання
+main.vaultDetail.throughput.kbps=%.1f КіБ/c
main.vaultDetail.throughput.mbps=%.1f МіБ/c
-main.vaultDetail.stats=Статистика Vault
-main.vaultDetail.locateEncryptedFileBtn=Знайти Зашифрований Файл
-main.vaultDetail.locateEncryptedFileBtn.tooltip=Виберіть файл із вашого vault, щоб знайти його зашифрований відповідник
+main.vaultDetail.stats=Статистика сховища
+main.vaultDetail.locateEncryptedFileBtn=Знайти зашифрований файл
+main.vaultDetail.locateEncryptedFileBtn.tooltip=Виберіть файл із вашого сховища, щоб знайти розташування його зашифрованого відповідника
main.vaultDetail.encryptedPathsCopied=Шляхи скопійовано в буфер обміну!
-main.vaultDetail.filePickerTitle=Виберіть файл у vault
+main.vaultDetail.filePickerTitle=Виберіть файл у сховищі
### Missing
-main.vaultDetail.missing.info=Cryptomator не зміг знайти vault за цим шляхом.
+main.vaultDetail.missing.info=Cryptomator не зміг знайти сховище за цим шляхом.
main.vaultDetail.missing.recheck=Перевірити знову
-main.vaultDetail.missing.remove=Вилучити зі списку vault…
-main.vaultDetail.missing.changeLocation=Змінити розташування vault…
+main.vaultDetail.missing.remove=Вилучити зі списку сховищ…
+main.vaultDetail.missing.changeLocation=Змінити розташування сховища…
### Needs Migration
-main.vaultDetail.migrateButton=Покращити Vault
-main.vaultDetail.migratePrompt=Ваш vault потрібно покращити до нового формату, перш ніж ви зможете отримати до нього доступ
+main.vaultDetail.migrateButton=Покращити сховище
+main.vaultDetail.migratePrompt=Ваше сховище слід покращити (перетворити) у новий формат, перш ніж ви зможете отримати до нього доступ
### Error
-main.vaultDetail.error.info=Виникла помилка під час завантаження vault з диска.
+main.vaultDetail.error.info=Виникла помилка під час завантаження сховища з диска.
main.vaultDetail.error.reload=Перезавантажити
-main.vaultDetail.error.windowTitle=Помилка завантаження vault
+main.vaultDetail.error.windowTitle=Помилка завантаження сховища
# Wrong File Alert
-wrongFileAlert.title=Як зашифрувати дані
+wrongFileAlert.title=Як зашифрувати файли
wrongFileAlert.message=Ви намагалися зашифрувати ці файли?
-wrongFileAlert.description=Для цієї мети Cryptomator надає том у вашому системному файловому менеджері.
-wrongFileAlert.instruction.0=Щоб зашифрувати файли, виконайте наступні кроки:
-wrongFileAlert.instruction.1=1. Розблокуйте ваш vault.
+wrongFileAlert.description=Для цього Cryptomator додає том у ваш системний файловий менеджер.
+wrongFileAlert.instruction.0=Щоб зашифрувати файли, виконайте такі кроки:
+wrongFileAlert.instruction.1=1. Розблокуйте ваше сховище.
wrongFileAlert.instruction.2=2. Натисніть "Розгорнути", щоб відкрити том у вашому файловому менеджері.
wrongFileAlert.instruction.3=3. Додайте ваші файли до цього тому.
wrongFileAlert.link=Для отримання подальшої допомоги, відвідайте
@@ -306,44 +445,63 @@ wrongFileAlert.link=Для отримання подальшої допомог
## General
vaultOptions.general=Загальні
vaultOptions.general.vaultName=Назва сховища
-vaultOptions.general.autoLock.lockAfterTimePart1=Заблокувати коли простоюється протягом
+vaultOptions.general.autoLock.lockAfterTimePart1=Заблокувати коли не використовується протягом
vaultOptions.general.autoLock.lockAfterTimePart2=хвилин
-vaultOptions.general.unlockAfterStartup=Розблокувати vault під час запуску Cryptomator
+vaultOptions.general.unlockAfterStartup=Розблоковувати сховище під час запуску Cryptomator
vaultOptions.general.actionAfterUnlock=Після успішного розблокування
vaultOptions.general.actionAfterUnlock.ignore=Нічого не робити
-vaultOptions.general.actionAfterUnlock.reveal=Розкрити Диск
-vaultOptions.general.actionAfterUnlock.ask=Спитати
+vaultOptions.general.actionAfterUnlock.reveal=Розгорнути диск
+vaultOptions.general.actionAfterUnlock.ask=Запитати
vaultOptions.general.startHealthCheckBtn=Розпочати перевірку працездатності
## Mount
vaultOptions.mount=Монтування
+vaultOptions.mount.info=Відкрийте вибір віртуального носія, щоб змінити налаштування за замовчуванням.
vaultOptions.mount.readonly=Тільки для перегляду
-vaultOptions.mount.customMountFlags=Спеціальні прапори монтування
+vaultOptions.mount.customMountFlags=Користувацькі опції монтування
vaultOptions.mount.winDriveLetterOccupied=зайнято
vaultOptions.mount.mountPoint=Точка монтування
-vaultOptions.mount.mountPoint.auto=Автоматично підбирати розташування
+vaultOptions.mount.mountPoint.auto=Автоматично підбирати зручне розташування
vaultOptions.mount.mountPoint.driveLetter=Використовувати призначену літеру для диска
+vaultOptions.mount.mountPoint.custom=Використовувати обрану папку
vaultOptions.mount.mountPoint.directoryPickerButton=Обрати…
+vaultOptions.mount.mountPoint.directoryPickerTitle=Виберіть папку
+vaultOptions.mount.volumeType.default=За замовчуванням (%s)
+vaultOptions.mount.volumeType.restartRequired=Щоб використовувати цей тип тому, необхідно перезапустити Cryptomator.
+vaultOptions.mount.volume.tcp.port=TCP порт
+vaultOptions.mount.volume.type=Тип тому
## Master Key
vaultOptions.masterkey=Пароль
vaultOptions.masterkey.changePasswordBtn=Змінити пароль
-vaultOptions.masterkey.forgetSavedPasswordBtn=Забути Збережений Пароль
-vaultOptions.masterkey.recoveryKeyExplanation=У разі втрати пароля, ключ відновлення є єдиним способом отримання доступу до vault.
-vaultOptions.masterkey.showRecoveryKeyBtn=Показати Ключ Відновлення
-vaultOptions.masterkey.recoverPasswordBtn=Скинути Пароль
+vaultOptions.masterkey.forgetSavedPasswordBtn=Забути збережений пароль
+vaultOptions.masterkey.recoveryKeyExplanation=У разі втрати пароля, лише ключ відновлення залишиться єдиним способом отримання доступу до сховища.
+vaultOptions.masterkey.showRecoveryKeyBtn=Показати ключ відновлення
+vaultOptions.masterkey.recoverPasswordBtn=Скинути пароль
## Hub
vaultOptions.hub=Відновлення
-vaultOptions.hub.convertInfo=Ключ відновлення використовується для перетворення цього Hub-сховища на сховище з паролем у надзвичайній ситуації.
+vaultOptions.hub.convertInfo=Ви можете використати ключ відновлення, щоб перетворити це сховище Hub у сховище на основі пароля в разі крайньої потреби.
vaultOptions.hub.convertBtn=Перетворити на сховище з паролем
# Recovery Key
## Display Recovery Key
+recoveryKey.display.title=Показати ключ відновлення
+recoveryKey.create.message=Потрібен пароль
+recoveryKey.create.description=Введіть пароль для "%s", щоб показати його ключ відновлення.
+recoveryKey.display.description=Цей ключ можна використати для відновлення доступу до "%s":
+recoveryKey.display.StorageHints=Зберігайте його у дуже безпечному місці, наприклад:\n • в менеджері паролів\n • на захищеному USB-носії\n • роздрукуйте на папері та зберігайте у недоступному для інших місці
## Reset Password
### Enter Recovery Key
-recoveryKey.recover.title=Скинути Пароль
+recoveryKey.recover.title=Скинути пароль
recoveryKey.recover.prompt=Введіть ключ відновлення для "%s:
+recoveryKey.recover.correctKey=Цей ключ відновлення є правильним
+recoveryKey.recover.wrongKey=Цей ключ відновлення належить до іншого сховища
+recoveryKey.recover.invalidKey=Невірний ключ відновлення
+recoveryKey.printout.heading=Ключ відновлення Cryptomator\n"%s"\n
### Reset Password
+recoveryKey.recover.resetBtn=Скинути
### Recovery Key Password Reset Success
+recoveryKey.recover.resetSuccess.message=Пароль скинуто успішно
+recoveryKey.recover.resetSuccess.description=Ви можете розблокувати своє сховище за допомогою нового пароля.
# Convert Vault
convertVault.title=Перетворити сховище
@@ -353,11 +511,55 @@ convertVault.success.message=Перетворення виконано успі
convertVault.hubToPassword.success.description=Тепер ви можете розблокувати сховище за допомогою обраного пароля без необхідності доступу до Hub.
# New Password
+newPassword.promptText=Введіть новий пароль
+newPassword.reenterPassword=Підтвердіть новий пароль
+newPassword.passwordsMatch=Паролі збігаються!
+newPassword.passwordsDoNotMatch=Паролі не збігаються
+passwordStrength.messageLabel.tooShort=Введіть принаймні %d символів
+passwordStrength.messageLabel.0=Дуже слабкий
+passwordStrength.messageLabel.1=Слабкий
+passwordStrength.messageLabel.2=Посередній
+passwordStrength.messageLabel.3=Надійний
+passwordStrength.messageLabel.4=Дуже надiйний
# Quit
+quit.title=Вийти з додатка
+quit.message=Є розблоковані сховища
+quit.description=Будь ласка, підтвердіть що ви хочете вийти. Cryptomator правильно заблокує всі розблоковані сховища, щоб запобігти втраті даних.
+quit.lockAndQuitBtn=Заблокувати і вийти
# Forced Quit
+quit.forced.message=Деякі сховища неможливо заблокувати
+quit.forced.description=Блокування сховищ було перерване через операції з ними або відкриті файли. Ви можете примусово заблокувати сховища, проте переривання операцій зчитування-запису може призвести до втрати незбережених даних.
+quit.forced.forceAndQuitBtn=Завершити роботу примусово
# Update Reminder
+updateReminder.title=Перевірити наявність оновлень
+updateReminder.message=Перевірити наявність оновлень?
+updateReminder.description=Будьте в курсі нових функцій, виправлення помилок і вдосконалення безпеки. Ми рекомендуємо автоматично перевіряти наявність оновлень.
+updateReminder.notNow=Не зараз
+updateReminder.yesOnce=Так, лише раз
+updateReminder.yesAutomatically=Так, автоматично
+
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=Відкрити налаштування
# Share Vault
+shareVault.title=Поділитися сховищем
+shareVault.message=Ви хочете поділитися своїм сховищем з іншими?
+shareVault.description=Завжди будьте обережні, коли ділитесь своїм сховищем з іншими людьми. Якщо коротко, виконайте ці кроки:
+shareVault.instruction.1=1. Діліться доступом до зашифрованої папки сховища через хмарне сховище.
+shareVault.instruction.2=2. Передавайте пароль сховища безпечним способом.
+shareVault.remarkBestPractices=Для отримання додаткової інформації - ознайомтесь з кращим досвідом з наших документів.
+shareVault.docsTooltip=Відкрийте документацію, щоб дізнатися більше про надання доступу до сховищ.
+shareVault.hubAd.description=Безпечний спосіб роботи в командах
+shareVault.hubAd.keyManagement=• Управління ключами без інформації про їх значення
+shareVault.hubAd.authentication=• Сильні механізми перевірки особи (автентифікації)
+shareVault.hubAd.encryption=• Наскрізне шифрування
+shareVault.visitHub=Відвідати Cryptomator Hub
+
+shareVault.hub.message=Як поділитись сховищем у хабі (Hub)
+shareVault.hub.description=Щоб поділитися вмістом сховища з іншим членом команди, ви повинні виконати два кроки:
+shareVault.hub.instruction.1=1. Поділіться доступом до зашифрованої папки сховища через хмарне сховище.
+shareVault.hub.instruction.2=2. Надайте доступ учаснику команди у Cryptomator Hub.
+shareVault.hub.openHub=Відкрити Cryptomator Hub
\ No newline at end of file
diff --git a/src/main/resources/i18n/strings_vi.properties b/src/main/resources/i18n/strings_vi.properties
index 3294fed5e..7c11e43aa 100644
--- a/src/main/resources/i18n/strings_vi.properties
+++ b/src/main/resources/i18n/strings_vi.properties
@@ -10,18 +10,21 @@ generic.button.choose=Chọn…
generic.button.close=Đóng
generic.button.copy=Sao chép
generic.button.copied=Đã sao chép!
-generic.button.done=Xong
+generic.button.done=Hoàn thành
generic.button.next=Tiếp
generic.button.print=In
# Error
-error.message=Lỗi %s
+error.message=Đã xảy ra lỗi
error.description=Oops! Cryptomator không mong đợi điều này xảy ra. Bạn có thể tra cứu các giải pháp hiện có cho lỗi này. Hoặc nếu lỗi chưa được báo cáo, hãy làm như vậy.
-error.hyperlink.lookup=Tìm kiếm lỗi này
-error.hyperlink.report=Báo cáo lỗi
+error.hyperlink.lookup=Tra cứu lỗi này
+error.hyperlink.report=Gửi báo cáo lỗi này
error.technicalDetails=Chi tiết:
error.existingSolutionDescription=Cryptomator không mong đợi điều này xảy ra. Nhưng chúng tôi đã tìm thấy một giải pháp hiện có cho lỗi này. Vui lòng xem qua liên kết sau.
error.hyperlink.solution=Tra cứu giải pháp
+error.lookupPermissionMessage=Cryptomator có thể tra cứu trực tuyến giải pháp cho vấn đề này. Việc này sẽ gửi yêu cầu đến cơ sở dữ liệu vấn đề của chúng tôi từ địa chỉ IP của bạn.
+error.dismiss="Bỏ qua"
+error.lookUpSolution="Tìm kiếm giải pháp"
# Defaults
defaults.vault.vaultName=Vault
@@ -38,11 +41,13 @@ traymenu.vault.reveal=Hiển thị
# Add Vault Wizard
addvaultwizard.title=Thêm Vault
## New
+addvaultwizard.new.title=Thêm Vault mới
### Name
addvaultwizard.new.nameInstruction=Chọn tên cho vault
addvaultwizard.new.namePrompt=Tên Vault
### Location
addvaultwizard.new.locationInstruction=Cryptomator nên lưu trữ các tệp được mã hóa trong vault của bạn ở đâu?
+addvaultwizard.new.locationLoading=Kiểm tra hệ thống file cục bộ cho các thư mục của không gian lưu trữ cloud.
addvaultwizard.new.locationLabel=Nơi lưu trữ
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Tùy chỉnh vị trí
@@ -59,6 +64,10 @@ addvaultwizard.new.validCharacters.chars=Các ký tự trong từ (ví dụ: a,
addvaultwizard.new.validCharacters.numbers=Số
addvaultwizard.new.validCharacters.dashes=Dấu gạch ngang (%s) hoặc dấu gạch dưới (%s)
### Expert Settings
+addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox="Bật các cài đặt chuyên gia"
+addvaultwizard.new.expertSettings.shorteningThreshold.invalid=Nhập giá trị từ 36 đến 220 (mặc định 220)
+addvaultwizard.new.expertSettings.shorteningThreshold.title="Chiều dài tối đa của tên các file được mã hóa"
+addvaultwizard.new.expertSettings.shorteningThreshold.valid="Hợp lệ"
### Password
addvaultwizard.new.createVaultBtn=Tạo Vault
addvaultwizard.new.generateRecoveryKeyChoice=Bạn sẽ không thể truy cập dữ liệu của mình nếu không có mật khẩu. Bạn có muốn có khóa khôi phục cho trường hợp mất mật khẩu không?
@@ -82,6 +91,7 @@ addvault.new.readme.accessLocation.2=Đây là vị trí truy cập vault của
addvault.new.readme.accessLocation.3=Bất kỳ tệp nào được thêm vào đây sẽ được mã hóa bởi Cryptomator. Bạn có thể làm việc trên nó như trên bất kỳ ổ đĩa/thư mục nào khác. Đây chỉ là chế độ xem nội dung được giải mã của nó, các tệp của bạn luôn được mã hóa trên ổ cứng của bạn.
addvault.new.readme.accessLocation.4=Bạn hoàn toàn có thể xoá tập tin này.
## Existing
+addvaultwizard.existing.title=
addvaultwizard.existing.instruction=Chọn tệp "vault.cryptomator" trong vault hiện tại của bạn. Nếu chỉ tồn tại một tệp có tên "masterkey.cryptomator", hãy chọn tệp đó để thay thế.
addvaultwizard.existing.chooseBtn=Chọn…
addvaultwizard.existing.filePickerTitle=Chọn Tập Tin Vault
@@ -126,6 +136,9 @@ unlock.success.revealBtn=Hiển thị Ổ đĩa
unlock.error.customPath.message=Không thể gắn vault vào đường dẫn tùy chỉnh
unlock.error.customPath.description.notSupported=Nếu bạn muốn tiếp tục sử dụng đường dẫn tuỳ chỉnh, vui lòng chuyển đến tuỳ chọn và chọn loại ổ đĩa hỗ trợ nó. Nếu không, hãy chuyển đến tuỳ chọn vault và chọn điểm gắn kết được hỗ trợ.
unlock.error.customPath.description.notExists=Đường dẫn gắn kết tuỳ chỉnh không tồn tại. Tạo nó trong hệ thống tệp cục bộ của bạn hoặc thay đổi nó trong các tuỳ chọn vault.
+unlock.error.customPath.description.inUse="Ký hiệu ổ cứng hoặc đường dẫn tự gán "%s" đã bị chiếm dụng".
+unlock.error.restartRequired.message=Không thể mở vault
+unlock.error.title=Mở khóa "%s" không thành công
## Hub
hub.noKeychain.message=Không thể truy cập khoá thiết bị
hub.noKeychain.description=Để mở khoá vault Hub, cần có khoá thiết bị, khoá này được bảo mật bằng chuỗi khoá. Để tiếp tục, hãy bật “%s” và chọn một chuỗi khoá trong tuỳ chọn.
@@ -138,11 +151,16 @@ hub.auth.loginLink=Chưa được chuyển hướng? Nhấn vào đây để m
hub.receive.message=Đang xử lý phản hồi…
hub.receive.description=Cryptomator đang nhận và xử lý phản hồi từ Hub. Vui lòng chờ.
### Register Device
+hub.register.message=Thiết bị mới
hub.register.nameLabel=Tên thiết bị
+hub.register.registerBtn=Đăng ký
### Register Device Legacy
+hub.register.legacy.occupiedMsg=Tên đã sử dụng
### Registration Success
+hub.registerSuccess.message=Đã đăng ký thiết bị
hub.registerSuccess.unlockBtn=Mở khoá
### Registration Failed
+hub.registerFailed.message=Đăng ký thiết bị thất bại
### Unauthorized
hub.unauthorized.message=Truy cập bị từ chối
hub.unauthorized.description=Thiết bị của bạn chưa được phép truy cập vault này. Yêu cầu chủ sở hữu cấp phép.
@@ -271,6 +289,7 @@ preferences.volume=Ổ lưu trữ ảo
preferences.volume.type.automatic=Tự động
preferences.volume.docsTooltip=Mở tài liệu để tìm hiểu thêm về các loại ổ đĩa khác nhau.
preferences.volume.fuseRestartRequired=Để áp dụng các thay đổi, Cryptomator cần được khởi động lại.
+preferences.volume.tcp.port=Cổng TCP mặc định
preferences.volume.supportedFeatures=Loại ổ đĩa đã chọn hỗ trợ các tính năng sau:
preferences.volume.feature.mountAuto=Lựa chọn điểm gắn kết tự động
preferences.volume.feature.mountToDir=Thư mục tuỳ chỉnh làm điểm gắn kết
@@ -283,6 +302,11 @@ preferences.updates.currentVersion=Phiên bản hiện tại: %s
preferences.updates.autoUpdateCheck=Tự động kiểm tra phiên bản mới
preferences.updates.checkNowBtn=Kiểm tra ngay
preferences.updates.updateAvailable=Có bản cập nhật lên phiên bản %s.
+preferences.updates.lastUpdateCheck.never=không bao giờ
+preferences.updates.lastUpdateCheck.recently=gần đây
+preferences.updates.lastUpdateCheck.daysAgo=%s ngày trước
+preferences.updates.lastUpdateCheck.hoursAgo=%s giờ trước
+
## Contribution
preferences.contribute=Hỗ trợ chúng tôi
preferences.contribute.registeredFor=Chứng nhận Người Hỗ Trợ được đăng ký cho %s
@@ -344,6 +368,7 @@ main.vaultlist.contextMenu.unlockNow=Mở khóa bây giờ
main.vaultlist.contextMenu.vaultoptions=Hiện tùy chọn vault
main.vaultlist.contextMenu.reveal=Hiển thị Ổ đĩa
main.vaultlist.addVaultBtn=Thêm
+main.vaultlist.addVaultBtn.menuItemNew=Vault mới...
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Cảm ơn bạn đã chọn Cryptomator để bảo vệ tệp của bạn. Nếu bạn cần bất kỳ hỗ trợ nào, hãy xem hướng dẫn bắt đầu của chúng tôi:
@@ -353,6 +378,7 @@ main.vaultDetail.unlockBtn=Mở khoá…
main.vaultDetail.unlockNowBtn=Mở khóa bây giờ
main.vaultDetail.optionsBtn=Tùy chọn Vault
main.vaultDetail.passwordSavedInKeychain=Đã lưu mật khẩu
+main.vaultDetail.share=Chia sẻ…
### Unlocked
main.vaultDetail.unlockedStatus=ĐÃ MỞ KHÓA
main.vaultDetail.accessLocation=Nội dung trong vault của bạn có thể truy cập ở đây:
@@ -416,6 +442,9 @@ vaultOptions.mount.mountPoint.driveLetter=Sử dụng ký tự ổ đĩa đượ
vaultOptions.mount.mountPoint.custom=Sử dụng thư mục đã chọn
vaultOptions.mount.mountPoint.directoryPickerButton=Chọn…
vaultOptions.mount.mountPoint.directoryPickerTitle=Chọn một thư mục
+vaultOptions.mount.volumeType.default=Mặc định (%s)
+vaultOptions.mount.volume.tcp.port=Cổng TCP
+vaultOptions.mount.volume.type=Loại Ổ đĩa
## Master Key
vaultOptions.masterkey=Mật khẩu
vaultOptions.masterkey.changePasswordBtn=Đổi mật khẩu
@@ -480,5 +509,18 @@ quit.forced.description=Việc khoá vault đã bị chặn bởi các hoạt đ
quit.forced.forceAndQuitBtn=Bắt buộc và Thoát
# Update Reminder
+updateReminder.title=Kiểm tra cập nhật
+updateReminder.message=Kiểm tra cập nhật?
+updateReminder.notNow=Không phải bây giờ
+
+#Dokany Support End
+dokanySupportEnd.title=Thông báo ngừng phát triển
+dokanySupportEnd.message=Kết thúc hỗ trợ cho Dokany
+dokanySupportEnd.preferencesBtn=Mở Tuỳ chọn
# Share Vault
+shareVault.title=Chia sẻ Vault
+shareVault.hubAd.description=Cách an toàn để làm việc theo nhóm
+shareVault.hubAd.keyManagement=• Quản lý khóa Zero-knowledge
+shareVault.hubAd.encryption=• Mã hóa đầu cuối
+shareVault.visitHub=Truy cập Cryptomator Hub
diff --git a/src/main/resources/i18n/strings_zh.properties b/src/main/resources/i18n/strings_zh.properties
index 28aca05e1..5aeb00968 100644
--- a/src/main/resources/i18n/strings_zh.properties
+++ b/src/main/resources/i18n/strings_zh.properties
@@ -32,7 +32,7 @@ defaults.vault.vaultName=保险库
# Tray Menu
traymenu.showMainWindow=显示
traymenu.showPreferencesWindow=首选项
-traymenu.lockAllVaults=全部锁定
+traymenu.lockAllVaults=全锁
traymenu.quitApplication=退出
traymenu.vault.unlock=解锁
traymenu.vault.lock=锁定
@@ -320,6 +320,14 @@ preferences.updates.currentVersion=当前版本:%s
preferences.updates.autoUpdateCheck=自动检查更新
preferences.updates.checkNowBtn=立即检查
preferences.updates.updateAvailable=可更新到版本 %s
+preferences.updates.lastUpdateCheck=上次检查:%s
+preferences.updates.lastUpdateCheck.never=从未
+preferences.updates.lastUpdateCheck.recently=最近
+preferences.updates.lastUpdateCheck.daysAgo=%s 天前
+preferences.updates.lastUpdateCheck.hoursAgo=%s 小时前
+preferences.updates.checkFailed=更新失败,请检查您的互网络连接或稍后再试
+preferences.updates.upToDate=Cryptomator 已是最新版
+
## Contribution
preferences.contribute=支持我们
preferences.contribute.registeredFor=已为 %s 注册支持者证书
@@ -532,6 +540,12 @@ updateReminder.notNow=暂不
updateReminder.yesOnce=是的,仅此次
updateReminder.yesAutomatically=是的,自动
+#Dokany Support End
+dokanySupportEnd.title=弃用通知
+dokanySupportEnd.message=对 Dokany 的支持已终止
+dokanySupportEnd.description=Cryptomator 不再支持 Dokany 卷类型。您的设置现已调整为使用默认卷类型。您可以在偏好设置中查看默认类型。
+dokanySupportEnd.preferencesBtn=打开首选项
+
# Share Vault
shareVault.title=共享保险库
shareVault.message=是否要与他人共享你的保险库?
diff --git a/src/main/resources/i18n/strings_zh_HK.properties b/src/main/resources/i18n/strings_zh_HK.properties
index 8db6da276..1694254c4 100644
--- a/src/main/resources/i18n/strings_zh_HK.properties
+++ b/src/main/resources/i18n/strings_zh_HK.properties
@@ -292,6 +292,7 @@ preferences.updates.currentVersion=目前版本:%s
preferences.updates.autoUpdateCheck=勾選以啟用自動更新
preferences.updates.checkNowBtn=立即檢查
preferences.updates.updateAvailable=有版本 %s 可更新。
+
## Contribution
preferences.contribute=贊助我們
preferences.contribute.registeredFor=已註冊贊助憑證予 %s
@@ -496,4 +497,7 @@ updateReminder.notNow=暫不
updateReminder.yesOnce=是,僅一次
updateReminder.yesAutomatically=是,自動
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=開啟偏好設定
+
# Share Vault
diff --git a/src/main/resources/i18n/strings_zh_TW.properties b/src/main/resources/i18n/strings_zh_TW.properties
index 8543a7175..831d26f89 100644
--- a/src/main/resources/i18n/strings_zh_TW.properties
+++ b/src/main/resources/i18n/strings_zh_TW.properties
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=為加密檔案庫命名
addvaultwizard.new.namePrompt=加密檔案庫名稱
### Location
addvaultwizard.new.locationInstruction=Cryptomator 應該將您加密後的檔案存放在哪裡?
+addvaultwizard.new.locationLoading=正在檢查此裝置上雲端儲存空間路徑的檔案系統...
addvaultwizard.new.locationLabel=儲存位置
addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=自訂位置
@@ -64,7 +65,7 @@ addvaultwizard.new.validCharacters.numbers=數字
addvaultwizard.new.validCharacters.dashes=連字符 (%s) 或下劃線 (%s)
### Expert Settings
addvaultwizard.new.expertSettings.enableExpertSettingsCheckbox=啟用專家設定
-addvaultwizard.new.expertSettings.shorteningThreshold.invalid=請輸入介於 36 和 220 之間的值(默認為 220)
+addvaultwizard.new.expertSettings.shorteningThreshold.invalid=請輸入介於 36 和 220 之間的值 (預設為 220)
addvaultwizard.new.expertSettings.shorteningThreshold.tooltip=開啟文件以瞭解更多。
addvaultwizard.new.expertSettings.shorteningThreshold.title=加密檔案名稱的最大長度
addvaultwizard.new.expertSettings.shorteningThreshold.valid=有效
@@ -124,7 +125,7 @@ unlock.savePassword=記住密碼
unlock.unlockBtn=解鎖
## Select
unlock.chooseMasterkey.message=未找到主金鑰文件
-unlock.chooseMasterkey.description=無法在其預期位置找到此加密檔案庫的主密鑰檔案。請手動選擇密鑰文件。
+unlock.chooseMasterkey.description=無法在其預期位置找到加密檔案庫「%s」的主密鑰檔案。請手動選擇密鑰文件。
unlock.chooseMasterkey.filePickerTitle=选择主金鑰文件
unlock.chooseMasterkey.filePickerMimeDesc=Cryptomator 主密鑰
## Success
@@ -141,6 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=無法移除用於解鎖的
unlock.error.customPath.description.couldNotBeCleaned=無法將您的保險庫掛載至路徑「%s」。請再試一次或選擇不同的路徑。
unlock.error.customPath.description.notEmptyDir=自訂掛載路徑「%s」不是一個空資料夾。請選擇一個空資料夾並重試。
unlock.error.customPath.description.generic=您為此保險庫選擇了自訂掛載路徑,但使用時出現了錯誤訊息:%2$s
+unlock.error.restartRequired.message=無法解鎖加密檔案庫
+unlock.error.restartRequired.description=於加密檔案庫選項中更改磁碟區類型或是重啟Cryptomator
unlock.error.title=解鎖%s失敗
## Hub
hub.noKeychain.message=無法讀取裝置金鑰
@@ -155,13 +158,22 @@ hub.receive.message=處理著回應…
hub.receive.description=Cryptomator 正在接收並處理來自 Hub 的回應, 請等待。
### Register Device
hub.register.message=新裝置
+hub.register.description=這是該設備首次訪問集線器,請使用您的帳戶金鑰進行注册。
hub.register.nameLabel=設備名稱
hub.register.invalidAccountKeyLabel=無效的用戶金鑰
hub.register.registerBtn=註冊
### Register Device Legacy
+hub.register.legacy.occupiedMsg=名稱已被使用
+hub.register.legacy.description=這是該設備首次訪問集線器,請先注册。
### Registration Success
+hub.registerSuccess.message=已註冊的設備
+hub.registerSuccess.description=您的裝置已成功完成註冊。您現在可以繼續解鎖加密資料庫。
hub.registerSuccess.unlockBtn=解鎖
+hub.registerSuccess.legacy.description=要存取該加密檔案庫,您的裝置需要得到檔案庫擁有者的授權。
### Registration Failed
+hub.registerFailed.message=設備注册失败
+hub.registerFailed.description.generic=註冊過程發生錯誤。更多細節,請查閱應用程式紀錄。
+hub.registerFailed.description.deviceAlreadyExists=其他使用者已在此裝置上註冊。請切換至該使用者帳戶或使用其他裝置進行註冊。
### Unauthorized
hub.unauthorized.message=拒絕存取
hub.unauthorized.description=您的設備權限尚未允許存取檔案庫,請聯絡檔案庫擁有者
@@ -292,7 +304,7 @@ preferences.interface.showTrayIcon=顯示系統工作列圖示 (需要重新啟
## Volume
preferences.volume=虛擬磁碟
preferences.volume.type=預設磁碟區類型
-preferences.volume.type.automatic=自动
+preferences.volume.type.automatic=自動
preferences.volume.docsTooltip=打開文檔以了解有關不同磁區類型更多信息。
preferences.volume.fuseRestartRequired=Cryptomator 必需重新啟動以套用變更。
preferences.volume.tcp.port=預設TCP埠
@@ -308,6 +320,14 @@ preferences.updates.currentVersion=目前版本:%s
preferences.updates.autoUpdateCheck=勾選以啟用自動更新
preferences.updates.checkNowBtn=立即檢查
preferences.updates.updateAvailable=有版本 %s 可更新。
+preferences.updates.lastUpdateCheck=上次檢查:%s
+preferences.updates.lastUpdateCheck.never=從未
+preferences.updates.lastUpdateCheck.recently=最近
+preferences.updates.lastUpdateCheck.daysAgo=%s天前
+preferences.updates.lastUpdateCheck.hoursAgo=%s小時前
+preferences.updates.checkFailed=更新失敗。請檢查您網路連線或稍後再試。
+preferences.updates.upToDate=Cryptomator已是最新版本
+
## Contribution
preferences.contribute=贊助我們
preferences.contribute.registeredFor=贊助憑證註冊給 %s
@@ -380,6 +400,7 @@ main.vaultDetail.unlockBtn=解鎖…
main.vaultDetail.unlockNowBtn=立即解鎖
main.vaultDetail.optionsBtn=加密檔案庫選項
main.vaultDetail.passwordSavedInKeychain=密碼已儲存
+main.vaultDetail.share=分享…
### Unlocked
main.vaultDetail.unlockedStatus=已解鎖
main.vaultDetail.accessLocation=您可以從這裡取得您加密檔案庫的內容
@@ -445,6 +466,7 @@ vaultOptions.mount.mountPoint.custom=使用選擇的路徑
vaultOptions.mount.mountPoint.directoryPickerButton=選取
vaultOptions.mount.mountPoint.directoryPickerTitle=選擇一個路徑
vaultOptions.mount.volumeType.default=預設(%s)
+vaultOptions.mount.volumeType.restartRequired=Cryptomator 必需重新啟動以使用此磁碟區類型。
vaultOptions.mount.volume.tcp.port=TCP 埠
vaultOptions.mount.volume.type=磁碟區類型
## Master Key
@@ -518,4 +540,25 @@ updateReminder.notNow=暫不
updateReminder.yesOnce=是,僅一次
updateReminder.yesAutomatically=是,自動
+#Dokany Support End
+dokanySupportEnd.preferencesBtn=開啟偏好設定
+
# Share Vault
+shareVault.title=與其他人共用加密檔案庫
+shareVault.message=您想與其他人共用您的加密檔案庫嗎?
+shareVault.description=當您與其他人共用加密檔案庫時,請務必小心謹慎。請遵循以下步驟:
+shareVault.instruction.1=1. 調整您雲端儲存空間中加密檔案庫資料夾的存取權限。
+shareVault.instruction.2=2. 以安全的方式分享您的加密檔案庫解鎖密碼。
+shareVault.remarkBestPractices=要獲得更多資訊,請參閱我們使用手冊中關於最佳做法的建議。
+shareVault.docsTooltip=在使用手冊中了解與他人共用加密檔案庫的更多細節。
+shareVault.hubAd.description=以安全的方式進行團隊合作
+shareVault.hubAd.keyManagement=• 零知識金鑰管理
+shareVault.hubAd.authentication=• 嚴格的驗證機制
+shareVault.hubAd.encryption=• 端到端加密
+shareVault.visitHub=前往 Cryptomator Hub
+
+shareVault.hub.message=如何與其他人共用加密檔案庫
+shareVault.hub.description=要與您的團隊成員共用加密檔案庫,您需要完成以下兩個步驟:
+shareVault.hub.instruction.1=1. 調整您雲端儲存空間中加密檔案庫資料夾的存取權限。
+shareVault.hub.instruction.2=2. 在Cryptomator Hub中允許團隊成員對加密檔案庫進行存取。
+shareVault.hub.openHub=打開 Cryptomator Hub
\ No newline at end of file
diff --git a/src/test/java/org/cryptomator/common/settings/SettingsJsonTest.java b/src/test/java/org/cryptomator/common/settings/SettingsJsonTest.java
index da78ee5bc..a73431681 100644
--- a/src/test/java/org/cryptomator/common/settings/SettingsJsonTest.java
+++ b/src/test/java/org/cryptomator/common/settings/SettingsJsonTest.java
@@ -3,6 +3,7 @@ package org.cryptomator.common.settings;
import com.fasterxml.jackson.core.JacksonException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.hamcrest.MatcherAssert;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -68,7 +69,7 @@ public class SettingsJsonTest {
jsonObj.theme = UiTheme.DARK;
jsonObj.showTrayIcon = false;
- var jsonStr = new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(jsonObj);
+ var jsonStr = new ObjectMapper().registerModule(new JavaTimeModule()).writerWithDefaultPrettyPrinter().writeValueAsString(jsonObj);
MatcherAssert.assertThat(jsonStr, containsString("\"theme\" : \"DARK\""));
MatcherAssert.assertThat(jsonStr, containsString("\"showTrayIcon\" : false"));