mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-05-19 19:21:27 +00:00
Merge branch 'release/1.14.0'
This commit is contained in:
3
.github/dependabot.yml
vendored
3
.github/dependabot.yml
vendored
@@ -7,6 +7,9 @@ updates:
|
||||
day: "monday"
|
||||
time: "06:00"
|
||||
timezone: "Etc/UTC"
|
||||
ignore:
|
||||
- dependency-name: "org.cryptomator:integrations-api"
|
||||
versions: ["2.0.0-alpha1"]
|
||||
groups:
|
||||
java-test-dependencies:
|
||||
patterns:
|
||||
|
||||
12
.github/workflows/appimage.yml
vendored
12
.github/workflows/appimage.yml
vendored
@@ -11,7 +11,7 @@ on:
|
||||
|
||||
env:
|
||||
JAVA_DIST: 'zulu'
|
||||
JAVA_VERSION: '22.0.1+8'
|
||||
JAVA_VERSION: '22.0.2+9'
|
||||
|
||||
jobs:
|
||||
get-version:
|
||||
@@ -29,12 +29,12 @@ jobs:
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
appimage-suffix: x86_64
|
||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_linux-x64_bin-jmods.zip'
|
||||
openjfx-sha: 'fbb22f35951c2e049cc2554dd03c2c56b4f5adc4b2ae9248872f46175ac103d8'
|
||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/22.0.2/openjfx-22.0.2_linux-x64_bin-jmods.zip'
|
||||
openjfx-sha: 'd44bff3b94d5668fdee18a938d7b1269026d663d44765f02d29a9bdfd3fa1eb0'
|
||||
- os: [self-hosted, Linux, ARM64]
|
||||
appimage-suffix: aarch64
|
||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_linux-aarch64_bin-jmods.zip'
|
||||
openjfx-sha: '1982ad168a5e8d7cf4a9458a7d088b4f0552d0ac3f24f23fb88f8bc7e8d69a13'
|
||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/22.0.2/openjfx-22.0.2_linux-aarch64_bin-jmods.zip'
|
||||
openjfx-sha: '3d5457136690c4f5bb9522d38b45218e045bdac13c24aa4c808c7c8d17d039c7'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup Java
|
||||
@@ -80,7 +80,7 @@ jobs:
|
||||
--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.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,java.compiler
|
||||
--strip-native-commands
|
||||
--no-header-files
|
||||
--no-man-pages
|
||||
|
||||
12
.github/workflows/debian.yml
vendored
12
.github/workflows/debian.yml
vendored
@@ -17,13 +17,13 @@ on:
|
||||
|
||||
env:
|
||||
JAVA_DIST: 'zulu'
|
||||
JAVA_VERSION: '22.0.1+8'
|
||||
JAVA_VERSION: '22.0.2+9'
|
||||
COFFEELIBS_JDK: 22
|
||||
COFFEELIBS_JDK_VERSION: '22.0.1+8-0ppa1'
|
||||
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_linux-x64_bin-jmods.zip'
|
||||
OPENJFX_JMODS_AMD64_HASH: 'fbb22f35951c2e049cc2554dd03c2c56b4f5adc4b2ae9248872f46175ac103d8'
|
||||
OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_linux-aarch64_bin-jmods.zip'
|
||||
OPENJFX_JMODS_AARCH64_HASH: '1982ad168a5e8d7cf4a9458a7d088b4f0552d0ac3f24f23fb88f8bc7e8d69a13'
|
||||
COFFEELIBS_JDK_VERSION: '22.0.2+9-0ppa1'
|
||||
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/22.0.2/openjfx-22.0.2_linux-x64_bin-jmods.zip'
|
||||
OPENJFX_JMODS_AMD64_HASH: 'd44bff3b94d5668fdee18a938d7b1269026d663d44765f02d29a9bdfd3fa1eb0'
|
||||
OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/22.0.2/openjfx-22.0.2_linux-aarch64_bin-jmods.zip'
|
||||
OPENJFX_JMODS_AARCH64_HASH: '3d5457136690c4f5bb9522d38b45218e045bdac13c24aa4c808c7c8d17d039c7'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
19
.github/workflows/mac-dmg.yml
vendored
19
.github/workflows/mac-dmg.yml
vendored
@@ -16,7 +16,7 @@ on:
|
||||
|
||||
env:
|
||||
JAVA_DIST: 'zulu'
|
||||
JAVA_VERSION: '22.0.1+8'
|
||||
JAVA_VERSION: '22.0.2+9'
|
||||
|
||||
jobs:
|
||||
get-version:
|
||||
@@ -32,20 +32,20 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: macos-11
|
||||
- os: macos-12
|
||||
architecture: x64
|
||||
output-suffix: x64
|
||||
xcode-path: '/Applications/Xcode_13.2.1.app'
|
||||
fuse-lib: macFUSE
|
||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_osx-x64_bin-jmods.zip'
|
||||
openjfx-sha: 'e07a11c112abbdebe7c058b44c151e1e475de748671d896aef3d73f32453c248'
|
||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/22.0.2/openjfx-22.0.2_osx-x64_bin-jmods.zip'
|
||||
openjfx-sha: '115cb08bb59d880cfff6e51e0bf0dcc45785ed9d456b8b8425597b04da6ab3d4'
|
||||
- os: [self-hosted, macOS, ARM64]
|
||||
architecture: aarch64
|
||||
output-suffix: arm64
|
||||
xcode-path: '/Applications/Xcode_13.2.1.app'
|
||||
fuse-lib: FUSE-T
|
||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_osx-aarch64_bin-jmods.zip'
|
||||
openjfx-sha: '572fce94b9b09d316b960a49e3c2b5d35231ed0463e3b1c4020b8de89783b51d'
|
||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/22.0.2/openjfx-22.0.2_osx-aarch64_bin-jmods.zip'
|
||||
openjfx-sha: '813c6748f7c99cb7a579d48b48a087b4682b1fad1fc1a4fe5f9b21cf872b15a7'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup Java
|
||||
@@ -91,7 +91,7 @@ jobs:
|
||||
--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.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.accessibility,jdk.management.jfr,java.compiler
|
||||
--strip-native-commands
|
||||
--no-header-files
|
||||
--no-man-pages
|
||||
@@ -137,9 +137,11 @@ jobs:
|
||||
mv dist/mac/resources/Cryptomator-Vault.icns Cryptomator.app/Contents/Resources/
|
||||
sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NO}|g" Cryptomator.app/Contents/Info.plist
|
||||
sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" Cryptomator.app/Contents/Info.plist
|
||||
echo -n "$PROVISIONING_PROFILE_BASE64" | base64 --decode --output Cryptomator.app/Contents/embedded.provisionprofile
|
||||
env:
|
||||
VERSION_NO: ${{ needs.get-version.outputs.semVerNum }}
|
||||
REVISION_NO: ${{ needs.get-version.outputs.revNum }}
|
||||
PROVISIONING_PROFILE_BASE64: ${{ secrets.MACOS_PROVISIONING_PROFILE_BASE64 }}
|
||||
- name: Generate license for dmg
|
||||
run: >
|
||||
mvn -B -Djavafx.platform=mac license:add-third-party
|
||||
@@ -194,9 +196,12 @@ jobs:
|
||||
fi
|
||||
done
|
||||
echo "Codesigning Cryptomator.app..."
|
||||
sed -i '' "s|###APP_IDENTIFIER_PREFIX###|${TEAM_IDENTIFIER}.|g" dist/mac/Cryptomator.entitlements
|
||||
sed -i '' "s|###TEAM_IDENTIFIER###|${TEAM_IDENTIFIER}|g" dist/mac/Cryptomator.entitlements
|
||||
codesign --force --deep --entitlements dist/mac/Cryptomator.entitlements -o runtime -s ${CODESIGN_IDENTITY} Cryptomator.app
|
||||
env:
|
||||
CODESIGN_IDENTITY: ${{ secrets.MACOS_CODESIGN_IDENTITY }}
|
||||
TEAM_IDENTIFIER: ${{ secrets.MACOS_TEAM_IDENTIFIER }}
|
||||
- name: Prepare .dmg contents
|
||||
run: |
|
||||
mkdir dmg
|
||||
|
||||
12
.github/workflows/win-exe.yml
vendored
12
.github/workflows/win-exe.yml
vendored
@@ -16,9 +16,9 @@ on:
|
||||
|
||||
env:
|
||||
JAVA_DIST: 'zulu'
|
||||
JAVA_VERSION: '22.0.1+8'
|
||||
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/22.0.1/openjfx-22.0.1_windows-x64_bin-jmods.zip'
|
||||
OPENJFX_JMODS_AMD64_HASH: 'de82e53179032a49bec005deb4438e8f261d08c4b58864a5c17e1d87286b09dd'
|
||||
JAVA_VERSION: '22.0.2+9'
|
||||
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/22.0.2/openjfx-22.0.2_windows-x64_bin-jmods.zip'
|
||||
OPENJFX_JMODS_AMD64_HASH: 'f9376d200f5c5b85327d575c1ec1482e6455f19916577f7e2fc9be2f48bb29b6'
|
||||
WINFSP_MSI: 'https://github.com/winfsp/winfsp/releases/download/v2.0/winfsp-2.0.23075.msi'
|
||||
WINFSP_UNINSTALLER: 'https://github.com/cryptomator/winfsp-uninstaller/releases/latest/download/winfsp-uninstaller.exe'
|
||||
|
||||
@@ -89,7 +89,7 @@ jobs:
|
||||
--verbose
|
||||
--output runtime
|
||||
--module-path "jfxjmods;${JAVA_HOME}/jmods"
|
||||
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.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.accessibility,jdk.management.jfr,java.compiler
|
||||
--strip-native-commands
|
||||
--no-header-files
|
||||
--no-man-pages
|
||||
@@ -113,7 +113,7 @@ jobs:
|
||||
--copyright "(C) 2016 - 2024 Skymatic GmbH"
|
||||
--app-version "${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum }}"
|
||||
--java-options "--enable-preview"
|
||||
--java-options "--enable-native-access=org.cryptomator.jfuse.win"
|
||||
--java-options "--enable-native-access=org.cryptomator.jfuse.win,org.cryptomator.integrations.win"
|
||||
--java-options "-Xss5m"
|
||||
--java-options "-Xmx256m"
|
||||
--java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\""
|
||||
@@ -390,12 +390,14 @@ jobs:
|
||||
needs: [publish]
|
||||
with:
|
||||
url: ${{ needs.publish.outputs.download-url-msi }}
|
||||
secrets: inherit
|
||||
|
||||
allowlist-exe:
|
||||
uses: ./.github/workflows/av-whitelist.yml
|
||||
needs: [publish]
|
||||
with:
|
||||
url: ${{ needs.publish.outputs.download-url-exe }}
|
||||
secrets: inherit
|
||||
|
||||
notify-winget:
|
||||
name: Notify for winget-release
|
||||
|
||||
2
.idea/runConfigurations/Cryptomator_Windows.xml
generated
2
.idea/runConfigurations/Cryptomator_Windows.xml
generated
@@ -2,7 +2,7 @@
|
||||
<configuration default="false" name="Cryptomator Windows" type="Application" factoryName="Application">
|
||||
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
||||
<module name="cryptomator" />
|
||||
<option name="VM_PARAMETERS" value="-Dcryptomator.settingsPath="@{appdata}/Cryptomator/settings.json;@{userhome}/AppData/Roaming/Cryptomator/settings.json" -Dcryptomator.ipcSocketPath="@{localappdata}/Cryptomator/ipc.socket" -Dcryptomator.logDir="@{localappdata}/Cryptomator" -Dcryptomator.pluginDir="@{appdata}/Cryptomator/Plugins" -Dcryptomator.integrationsWin.keychainPaths="@{appdata}/Cryptomator/keychain.json;@{userhome}/AppData/Roaming/Cryptomator/keychain.json" -Dcryptomator.p12Path="@{appdata}/Cryptomator/key.p12;@{userhome}/AppData/Roaming/Cryptomator/key.p12" -Dcryptomator.mountPointsDir="@{userhome}/Cryptomator" -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m --enable-preview --enable-native-access=org.cryptomator.jfuse.win" />
|
||||
<option name="VM_PARAMETERS" value="-Dcryptomator.settingsPath="@{appdata}/Cryptomator/settings.json;@{userhome}/AppData/Roaming/Cryptomator/settings.json" -Dcryptomator.ipcSocketPath="@{localappdata}/Cryptomator/ipc.socket" -Dcryptomator.logDir="@{localappdata}/Cryptomator" -Dcryptomator.pluginDir="@{appdata}/Cryptomator/Plugins" -Dcryptomator.integrationsWin.keychainPaths="@{appdata}/Cryptomator/keychain.json;@{userhome}/AppData/Roaming/Cryptomator/keychain.json" -Dcryptomator.p12Path="@{appdata}/Cryptomator/key.p12;@{userhome}/AppData/Roaming/Cryptomator/key.p12" -Dcryptomator.mountPointsDir="@{userhome}/Cryptomator" -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m --enable-preview --enable-native-access=org.cryptomator.jfuse.win,org.cryptomator.integrations.win" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<configuration default="false" name="Cryptomator Windows Dev" type="Application" factoryName="Application">
|
||||
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
||||
<module name="cryptomator" />
|
||||
<option name="VM_PARAMETERS" value="-Dcryptomator.settingsPath="@{appdata}/Cryptomator-Dev/settings.json;@{userhome}/AppData/Roaming/Cryptomator-Dev/settings.json" -Dcryptomator.ipcSocketPath="@{localappdata}/Cryptomator-Dev/ipc.socket" -Dcryptomator.logDir="@{localappdata}/Cryptomator-Dev" -Dcryptomator.pluginDir="@{appdata}/Cryptomator-Dev/Plugins" -Dcryptomator.integrationsWin.keychainPaths="@{appdata}/Cryptomator-Dev/keychain.json;@{userhome}/AppData/Roaming/Cryptomator-Dev/keychain.json" -Dcryptomator.p12Path="@{appdata}/Cryptomator-Dev/key.p12;@{userhome}/AppData/Roaming/Cryptomator-Dev/key.p12" -Dcryptomator.mountPointsDir="@{userhome}/Cryptomator-Dev" -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m --enable-preview --enable-native-access=org.cryptomator.jfuse.win" />
|
||||
<option name="VM_PARAMETERS" value="-Dcryptomator.settingsPath="@{appdata}/Cryptomator-Dev/settings.json;@{userhome}/AppData/Roaming/Cryptomator-Dev/settings.json" -Dcryptomator.ipcSocketPath="@{localappdata}/Cryptomator-Dev/ipc.socket" -Dcryptomator.logDir="@{localappdata}/Cryptomator-Dev" -Dcryptomator.pluginDir="@{appdata}/Cryptomator-Dev/Plugins" -Dcryptomator.integrationsWin.keychainPaths="@{appdata}/Cryptomator-Dev/keychain.json;@{userhome}/AppData/Roaming/Cryptomator-Dev/keychain.json" -Dcryptomator.p12Path="@{appdata}/Cryptomator-Dev/key.p12;@{userhome}/AppData/Roaming/Cryptomator-Dev/key.p12" -Dcryptomator.mountPointsDir="@{userhome}/Cryptomator-Dev" -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m --enable-preview --enable-native-access=org.cryptomator.jfuse.win,org.cryptomator.integrations.win" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
|
||||
@@ -31,8 +31,7 @@ Cryptomator is provided free of charge as an open-source project despite the hig
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><a href="https://mowcapital.com/"><img src="https://cryptomator.org/img/sponsors/mowcapital.svg" alt="Mow Capital" height="28"></a></td>
|
||||
<td><a href="https://www.easeus.com/"><img src="https://cryptomator.org/img/sponsors/easeus.png" alt="EaseUS" height="40"></a></td>
|
||||
<td><a href="https://www.hassmann-it-forensik.de/"><img src="https://cryptomator.org/img/sponsors/hassmannitforensik.png" alt="Hassmann IT-Forensik" height="40"></a></td>
|
||||
<td><a href="https://www.route4me.com/"><img src="https://cryptomator.org/img/sponsors/route4me.svg" alt="Route4Me" height="56"></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -85,7 +84,7 @@ For more information on the security details visit [cryptomator.org](https://doc
|
||||
|
||||
### Dependencies
|
||||
|
||||
* JDK 21 (e.g. temurin, zulu)
|
||||
* JDK 22 (e.g. temurin, zulu)
|
||||
* Maven 3
|
||||
|
||||
### Run Maven
|
||||
|
||||
10
dist/linux/appimage/build.sh
vendored
10
dist/linux/appimage/build.sh
vendored
@@ -23,16 +23,16 @@ mvn -B -f ../../../pom.xml clean package -Plinux -DskipTests -Djavafx.platform=l
|
||||
cp ../../../LICENSE.txt ../../../target
|
||||
cp ../../../target/cryptomator-*.jar ../../../target/mods
|
||||
|
||||
JAVAFX_VERSION=22.0.1
|
||||
JAVAFX_VERSION=22.0.2
|
||||
JAVAFX_ARCH="x64"
|
||||
JAVAFX_JMODS_SHA256='fbb22f35951c2e049cc2554dd03c2c56b4f5adc4b2ae9248872f46175ac103d8'
|
||||
JAVAFX_JMODS_SHA256='d44bff3b94d5668fdee18a938d7b1269026d663d44765f02d29a9bdfd3fa1eb0'
|
||||
if [ "${CPU_ARCH}" = "aarch64" ]; then
|
||||
JAVAFX_ARCH="aarch64"
|
||||
JAVAFX_JMODS_SHA256='1982ad168a5e8d7cf4a9458a7d088b4f0552d0ac3f24f23fb88f8bc7e8d69a13'
|
||||
JAVAFX_JMODS_SHA256='3d5457136690c4f5bb9522d38b45218e045bdac13c24aa4c808c7c8d17d039c7'
|
||||
fi
|
||||
|
||||
# download javaFX jmods
|
||||
JAVAFX_JMODS_URL="https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-21.0.1_linux-${JAVAFX_ARCH}_bin-jmods.zip"
|
||||
JAVAFX_JMODS_URL="https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_linux-${JAVAFX_ARCH}_bin-jmods.zip"
|
||||
|
||||
|
||||
curl -L ${JAVAFX_JMODS_URL} -o openjfx-jmods.zip
|
||||
@@ -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.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,java.compiler \
|
||||
--strip-native-commands \
|
||||
--no-header-files \
|
||||
--no-man-pages \
|
||||
|
||||
@@ -68,13 +68,15 @@
|
||||
<developer id="de.skymatic">
|
||||
<name>Skymatic GmbH</name>
|
||||
</developer>
|
||||
|
||||
|
||||
<content_rating type="oars-1.1">
|
||||
<content_attribute id="social-info">mild</content_attribute> <!-- update checker connects to https://api.cryptomator.org/updates/latestVersion.json -->
|
||||
</content_rating>
|
||||
|
||||
<releases>
|
||||
<release date="2024-09-17" version="1.14.0">
|
||||
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.14.0</url>
|
||||
</release>
|
||||
<release date="2024-06-26" version="1.13.0">
|
||||
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.13.0</url>
|
||||
</release>
|
||||
|
||||
3
dist/linux/debian/rules
vendored
3
dist/linux/debian/rules
vendored
@@ -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.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,java.compiler \
|
||||
--strip-native-commands \
|
||||
--no-header-files \
|
||||
--no-man-pages \
|
||||
@@ -61,6 +61,7 @@ override_dh_auto_build:
|
||||
--java-options "-Dcryptomator.buildNumber=\"deb-${REVISION_NUM}\"" \
|
||||
--java-options "-Dcryptomator.appVersion=\"${SEMVER_STR}\"" \
|
||||
--java-options "-Dcryptomator.disableUpdateCheck=\"${DISABLE_UPDATE_CHECK}\"" \
|
||||
--java-options "-Dcryptomator.integrationsLinux.autoStartCmd=\"cryptomator\"" \
|
||||
--app-version "${VERSION_NUM}.${REVISION_NUM}" \
|
||||
--resource-dir resources \
|
||||
--verbose
|
||||
|
||||
1
dist/mac/.gitignore
vendored
Normal file
1
dist/mac/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
embedded.provisionprofile
|
||||
8
dist/mac/Cryptomator.entitlements
vendored
8
dist/mac/Cryptomator.entitlements
vendored
@@ -2,6 +2,10 @@
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.application-identifier</key>
|
||||
<string>###APP_IDENTIFIER_PREFIX###org.cryptomator</string>
|
||||
<key>com.apple.developer.team-identifier</key>
|
||||
<string>###TEAM_IDENTIFIER###</string>
|
||||
<key>com.apple.security.cs.allow-jit</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
|
||||
@@ -10,5 +14,9 @@
|
||||
<true/>
|
||||
<key>com.apple.security.cs.disable-library-validation</key>
|
||||
<true/>
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
<string>###APP_IDENTIFIER_PREFIX###org.cryptomator</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
3
dist/mac/dmg/.gitignore
vendored
3
dist/mac/dmg/.gitignore
vendored
@@ -5,4 +5,5 @@ dmg/
|
||||
*.dmg
|
||||
license.rtf
|
||||
openjfx-jmods.zip
|
||||
*.jmod
|
||||
*.jmod
|
||||
Cryptomator.entitlements
|
||||
|
||||
29
dist/mac/dmg/build.sh
vendored
29
dist/mac/dmg/build.sh
vendored
@@ -1,12 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
# parse options
|
||||
usage() { echo "Usage: $0 [-s <codesign-identity>]" 1>&2; exit 1; }
|
||||
while getopts ":s:" o; do
|
||||
usage() { echo "Usage: $0 [-s <codesign-identity>] [-t <team-identifier>]" 1>&2; exit 1; }
|
||||
while getopts ":s:t:" o; do
|
||||
case "${o}" in
|
||||
s)
|
||||
CODESIGN_IDENTITY=${OPTARG}
|
||||
;;
|
||||
t)
|
||||
TEAM_IDENTIFIER=${OPTARG}
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
@@ -29,15 +32,15 @@ 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"
|
||||
|
||||
JAVAFX_VERISON=22.0.1
|
||||
JAVAFX_VERSION=22.0.2
|
||||
JAVAFX_ARCH="undefined"
|
||||
JAVAFX_JMODS_SHA256="undefined"
|
||||
if [ "$(machine)" = "arm64e" ]; then
|
||||
JAVAFX_ARCH="aarch64"
|
||||
JAVAFX_JMODS_SHA256="572fce94b9b09d316b960a49e3c2b5d35231ed0463e3b1c4020b8de89783b51d"
|
||||
JAVAFX_JMODS_SHA256="813c6748f7c99cb7a579d48b48a087b4682b1fad1fc1a4fe5f9b21cf872b15a7"
|
||||
else
|
||||
JAVAFX_ARCH="x64"
|
||||
JAVAFX_JMODS_SHA256="e07a11c112abbdebe7c058b44c151e1e475de748671d896aef3d73f32453c248"
|
||||
JAVAFX_JMODS_SHA256="115cb08bb59d880cfff6e51e0bf0dcc45785ed9d456b8b8425597b04da6ab3d4"
|
||||
fi
|
||||
JAVAFX_JMODS_URL="https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_osx-${JAVAFX_ARCH}_bin-jmods.zip"
|
||||
|
||||
@@ -52,7 +55,7 @@ fi
|
||||
|
||||
# download and check jmods
|
||||
curl -L ${JAVAFX_JMODS_URL} -o openjfx-jmods.zip
|
||||
echo "${JAVAFX_JMODS_SHA256} openjfx-jmods.zip" | shasum -a256 --check
|
||||
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)
|
||||
@@ -76,7 +79,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.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,java.compiler \
|
||||
--strip-native-commands \
|
||||
--no-header-files \
|
||||
--no-man-pages \
|
||||
@@ -121,6 +124,7 @@ ${JAVA_HOME}/bin/jpackage \
|
||||
cp ../resources/${APP_NAME}-Vault.icns ${APP_NAME}.app/Contents/Resources/
|
||||
sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NO}|g" ${APP_NAME}.app/Contents/Info.plist
|
||||
sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" ${APP_NAME}.app/Contents/Info.plist
|
||||
cp ../embedded.provisionprofile ${APP_NAME}.app/Contents/
|
||||
|
||||
# generate license
|
||||
mvn -B -Djavafx.platform=mac -f../../../pom.xml license:add-third-party \
|
||||
@@ -133,7 +137,11 @@ mvn -B -Djavafx.platform=mac -f../../../pom.xml license:add-third-party \
|
||||
-Dlicense.licenseMergesUrl=file://$(pwd)/../../../license/merges
|
||||
|
||||
# codesign
|
||||
if [ -n "${CODESIGN_IDENTITY}" ]; then
|
||||
if [ -n "${CODESIGN_IDENTITY}" ] && [ -n "${TEAM_IDENTIFIER}" ]; then
|
||||
echo "Codesigning jdk files..."
|
||||
find ${APP_NAME}.app/Contents/runtime/Contents/Home/lib/ -name '*.dylib' -exec codesign --force -s ${CODESIGN_IDENTITY} {} \;
|
||||
find ${APP_NAME}.app/Contents/runtime/Contents/Home/lib/ -name 'jspawnhelper' -exec codesign --force -o runtime -s ${CODESIGN_IDENTITY} {} \;
|
||||
echo "Codesigning jar contents..."
|
||||
find ${APP_NAME}.app/Contents/runtime/Contents/MacOS -name '*.dylib' -exec codesign --force -s ${CODESIGN_IDENTITY} {} \;
|
||||
for JAR_PATH in `find ${APP_NAME}.app -name "*.jar"`; do
|
||||
if [[ `unzip -l ${JAR_PATH} | grep '.dylib\|.jnilib'` ]]; then
|
||||
@@ -151,7 +159,10 @@ if [ -n "${CODESIGN_IDENTITY}" ]; then
|
||||
fi
|
||||
done
|
||||
echo "Codesigning ${APP_NAME}.app..."
|
||||
codesign --force --deep --entitlements ../${APP_NAME}.entitlements -o runtime -s ${CODESIGN_IDENTITY} ${APP_NAME}.app
|
||||
cp ../${APP_NAME}.entitlements .
|
||||
sed -i '' "s|###APP_IDENTIFIER_PREFIX###|${TEAM_IDENTIFIER}.|g" ${APP_NAME}.entitlements
|
||||
sed -i '' "s|###TEAM_IDENTIFIER###|${TEAM_IDENTIFIER}|g" ${APP_NAME}.entitlements
|
||||
codesign --force --deep --entitlements ${APP_NAME}.entitlements -o runtime -s ${CODESIGN_IDENTITY} ${APP_NAME}.app
|
||||
fi
|
||||
|
||||
# prepare dmg contents
|
||||
|
||||
14
dist/win/build.ps1
vendored
14
dist/win/build.ps1
vendored
@@ -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 -Djavafx.platform=win
|
||||
&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,9 +51,9 @@ if ($clean -and (Test-Path -Path $runtimeImagePath)) {
|
||||
}
|
||||
|
||||
## download jfx jmods
|
||||
$javaFxVersion='22.0.1'
|
||||
$javaFxVersion='22.0.2'
|
||||
$javaFxJmodsUrl = "https://download2.gluonhq.com/openjfx/${javaFxVersion}/openjfx-${javaFxVersion}_windows-x64_bin-jmods.zip"
|
||||
$javaFxJmodsSHA256 = 'de82e53179032a49bec005deb4438e8f261d08c4b58864a5c17e1d87286b09dd'
|
||||
$javaFxJmodsSHA256 = 'f9376d200f5c5b85327d575c1ec1482e6455f19916577f7e2fc9be2f48bb29b6'
|
||||
$javaFxJmods = '.\resources\jfxJmods.zip'
|
||||
if( !(Test-Path -Path $javaFxJmods) ) {
|
||||
Write-Output "Downloading ${javaFxJmodsUrl}..."
|
||||
@@ -75,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.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,java.compiler,javafx.base,javafx.graphics,javafx.controls,javafx.fxml `
|
||||
--strip-native-commands `
|
||||
--no-header-files `
|
||||
--no-man-pages `
|
||||
@@ -100,7 +100,7 @@ if ($clean -and (Test-Path -Path $appPath)) {
|
||||
--vendor $Vendor `
|
||||
--copyright $copyright `
|
||||
--java-options "--enable-preview" `
|
||||
--java-options "--enable-native-access=org.cryptomator.jfuse.win" `
|
||||
--java-options "--enable-native-access=org.cryptomator.jfuse.win,org.cryptomator.integrations.win" `
|
||||
--java-options "-Xss5m" `
|
||||
--java-options "-Xmx256m" `
|
||||
--java-options "-Dcryptomator.appVersion=`"$semVerNo`"" `
|
||||
@@ -122,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 -Djavafx.platform=win `
|
||||
&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\" `
|
||||
@@ -167,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 -Djavafx.platform=win `
|
||||
&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\" `
|
||||
|
||||
38
pom.xml
38
pom.xml
@@ -3,7 +3,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>org.cryptomator</groupId>
|
||||
<artifactId>cryptomator</artifactId>
|
||||
<version>1.13.0</version>
|
||||
<version>1.14.0</version>
|
||||
<name>Cryptomator Desktop App</name>
|
||||
|
||||
<organization>
|
||||
@@ -33,44 +33,44 @@
|
||||
<nonModularGroupIds>org.ow2.asm,org.apache.jackrabbit,org.apache.httpcomponents</nonModularGroupIds>
|
||||
|
||||
<!-- cryptomator dependencies -->
|
||||
<cryptomator.cryptofs.version>2.6.9</cryptomator.cryptofs.version>
|
||||
<cryptomator.integrations.version>1.3.1</cryptomator.integrations.version>
|
||||
<cryptomator.integrations.win.version>1.2.5</cryptomator.integrations.win.version>
|
||||
<cryptomator.cryptofs.version>2.7.0</cryptomator.cryptofs.version>
|
||||
<cryptomator.integrations.version>1.4.0</cryptomator.integrations.version>
|
||||
<cryptomator.integrations.win.version>1.3.0</cryptomator.integrations.win.version>
|
||||
<cryptomator.integrations.mac.version>1.2.4</cryptomator.integrations.mac.version>
|
||||
<cryptomator.integrations.linux.version>1.4.5</cryptomator.integrations.linux.version>
|
||||
<cryptomator.integrations.linux.version>1.5.0</cryptomator.integrations.linux.version>
|
||||
<cryptomator.fuse.version>5.0.0</cryptomator.fuse.version>
|
||||
<cryptomator.webdav.version>2.0.6</cryptomator.webdav.version>
|
||||
|
||||
<!-- 3rd party dependencies -->
|
||||
<commons-lang3.version>3.14.0</commons-lang3.version>
|
||||
<commons-lang3.version>3.16.0</commons-lang3.version>
|
||||
<dagger.version>2.51.1</dagger.version>
|
||||
<easybind.version>2.2</easybind.version>
|
||||
<guava.version>33.2.1-jre</guava.version>
|
||||
<jackson.version>2.17.1</jackson.version>
|
||||
<javafx.version>22.0.1</javafx.version>
|
||||
<guava.version>33.3.0-jre</guava.version>
|
||||
<jackson.version>2.17.2</jackson.version>
|
||||
<javafx.version>22.0.2</javafx.version>
|
||||
<jwt.version>4.4.0</jwt.version>
|
||||
<nimbus-jose.version>9.37.3</nimbus-jose.version>
|
||||
<logback.version>1.5.6</logback.version>
|
||||
<slf4j.version>2.0.13</slf4j.version>
|
||||
<logback.version>1.5.7</logback.version>
|
||||
<slf4j.version>2.0.16</slf4j.version>
|
||||
<tinyoauth2.version>0.8.0</tinyoauth2.version>
|
||||
<zxcvbn.version>1.9.0</zxcvbn.version>
|
||||
|
||||
<!-- test dependencies -->
|
||||
<junit.jupiter.version>5.10.2</junit.jupiter.version>
|
||||
<junit.jupiter.version>5.11.0</junit.jupiter.version>
|
||||
<mockito.version>5.12.0</mockito.version>
|
||||
<hamcrest.version>2.2</hamcrest.version>
|
||||
<hamcrest.version>3.0</hamcrest.version>
|
||||
|
||||
<!-- build-time dependencies -->
|
||||
<jetbrains.annotations.version>24.1.0</jetbrains.annotations.version>
|
||||
<dependency-check.version>9.2.0</dependency-check.version>
|
||||
<dependency-check.version>10.0.3</dependency-check.version>
|
||||
<jacoco.version>0.8.12</jacoco.version>
|
||||
<license-generator.version>2.4.0</license-generator.version>
|
||||
<junit-tree-reporter.version>1.2.1</junit-tree-reporter.version>
|
||||
<junit-tree-reporter.version>1.3.0</junit-tree-reporter.version>
|
||||
<mvn-compiler.version>3.13.0</mvn-compiler.version>
|
||||
<mvn-resources.version>3.3.1</mvn-resources.version>
|
||||
<mvn-dependency.version>3.7.0</mvn-dependency.version>
|
||||
<mvn-surefire.version>3.3.0</mvn-surefire.version>
|
||||
<mvn-jar.version>3.4.1</mvn-jar.version>
|
||||
<mvn-dependency.version>3.7.1</mvn-dependency.version>
|
||||
<mvn-surefire.version>3.4.0</mvn-surefire.version>
|
||||
<mvn-jar.version>3.4.2</mvn-jar.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
@@ -471,7 +471,7 @@
|
||||
<skipTestScope>true</skipTestScope>
|
||||
<detail>true</detail>
|
||||
<suppressionFile>suppression.xml</suppressionFile>
|
||||
<nvdApiKey>${env.NVD_API_KEY}</nvdApiKey>
|
||||
<nvdApiKeyEnvironmentVariable>NVD_API_KEY</nvdApiKeyEnvironmentVariable>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
|
||||
@@ -42,6 +42,7 @@ open module org.cryptomator.desktop {
|
||||
requires com.nulabinc.zxcvbn;
|
||||
requires com.tobiasdiez.easybind;
|
||||
requires dagger;
|
||||
requires java.compiler;
|
||||
requires io.github.coffeelibs.tinyoauth2client;
|
||||
requires org.slf4j;
|
||||
requires org.apache.commons.lang3;
|
||||
|
||||
@@ -44,7 +44,7 @@ public class KeychainManager implements KeychainAccessProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void storePassphrase(String key, String displayName, CharSequence passphrase) throws KeychainAccessException {
|
||||
public void storePassphrase(String key, String displayName, CharSequence passphrase, boolean ignored) throws KeychainAccessException {
|
||||
getKeychainOrFail().storePassphrase(key, displayName, passphrase);
|
||||
setPassphraseStored(key, true);
|
||||
}
|
||||
|
||||
@@ -37,12 +37,18 @@ public class Settings {
|
||||
static final boolean DEFAULT_START_HIDDEN = false;
|
||||
static final boolean DEFAULT_AUTO_CLOSE_VAULTS = false;
|
||||
static final boolean DEFAULT_USE_KEYCHAIN = true;
|
||||
static final boolean DEFAULT_USE_QUICKACCESS = true;
|
||||
static final int DEFAULT_PORT = 42427;
|
||||
static final int DEFAULT_NUM_TRAY_NOTIFICATIONS = 3;
|
||||
static final boolean DEFAULT_DEBUG_MODE = false;
|
||||
static final UiTheme DEFAULT_THEME = UiTheme.LIGHT;
|
||||
@Deprecated // to be changed to "whatever is available" eventually
|
||||
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_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_QUICKACCESS_SERVICE = SystemUtils.IS_OS_WINDOWS ? "org.cryptomator.windows.quickaccess.ExplorerQuickAccessService" : //
|
||||
SystemUtils.IS_OS_LINUX ? "org.cryptomator.linux.quickaccess.NautilusBookmarks" : null;
|
||||
|
||||
static final String DEFAULT_USER_INTERFACE_ORIENTATION = NodeOrientation.LEFT_TO_RIGHT.name();
|
||||
static final boolean DEFAULT_SHOW_MINIMIZE_BUTTON = false;
|
||||
public static final Instant DEFAULT_TIMESTAMP = Instant.parse("2000-01-01T00:00:00Z");
|
||||
@@ -57,6 +63,8 @@ public class Settings {
|
||||
public final BooleanProperty debugMode;
|
||||
public final ObjectProperty<UiTheme> theme;
|
||||
public final StringProperty keychainProvider;
|
||||
public final BooleanProperty useQuickAccess;
|
||||
public final StringProperty quickAccessService;
|
||||
public final ObjectProperty<NodeOrientation> userInterfaceOrientation;
|
||||
public final StringProperty licenseKey;
|
||||
public final BooleanProperty showMinimizeButton;
|
||||
@@ -89,6 +97,7 @@ public class Settings {
|
||||
this.startHidden = new SimpleBooleanProperty(this, "startHidden", json.startHidden);
|
||||
this.autoCloseVaults = new SimpleBooleanProperty(this, "autoCloseVaults", json.autoCloseVaults);
|
||||
this.useKeychain = new SimpleBooleanProperty(this, "useKeychain", json.useKeychain);
|
||||
this.useQuickAccess = new SimpleBooleanProperty(this, "addToQuickAccess", json.useQuickAccess);
|
||||
this.port = new SimpleIntegerProperty(this, "webDavPort", json.port);
|
||||
this.numTrayNotifications = new SimpleIntegerProperty(this, "numTrayNotifications", json.numTrayNotifications);
|
||||
this.debugMode = new SimpleBooleanProperty(this, "debugMode", json.debugMode);
|
||||
@@ -104,6 +113,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.quickAccessService = new SimpleStringProperty(this, "quickAccessService", json.quickAccessService);
|
||||
this.lastSuccessfulUpdateCheck = new SimpleObjectProperty<>(this, "lastSuccessfulUpdateCheck", json.lastSuccessfulUpdateCheck);
|
||||
|
||||
this.directories.addAll(json.directories.stream().map(VaultSettings::new).toList());
|
||||
@@ -116,6 +126,7 @@ public class Settings {
|
||||
startHidden.addListener(this::somethingChanged);
|
||||
autoCloseVaults.addListener(this::somethingChanged);
|
||||
useKeychain.addListener(this::somethingChanged);
|
||||
useQuickAccess.addListener(this::somethingChanged);
|
||||
port.addListener(this::somethingChanged);
|
||||
numTrayNotifications.addListener(this::somethingChanged);
|
||||
debugMode.addListener(this::somethingChanged);
|
||||
@@ -131,6 +142,7 @@ public class Settings {
|
||||
windowHeight.addListener(this::somethingChanged);
|
||||
language.addListener(this::somethingChanged);
|
||||
mountService.addListener(this::somethingChanged);
|
||||
quickAccessService.addListener(this::somethingChanged);
|
||||
lastSuccessfulUpdateCheck.addListener(this::somethingChanged);
|
||||
}
|
||||
|
||||
@@ -170,6 +182,7 @@ public class Settings {
|
||||
json.startHidden = startHidden.get();
|
||||
json.autoCloseVaults = autoCloseVaults.get();
|
||||
json.useKeychain = useKeychain.get();
|
||||
json.useQuickAccess = useQuickAccess.get();
|
||||
json.port = port.get();
|
||||
json.numTrayNotifications = numTrayNotifications.get();
|
||||
json.debugMode = debugMode.get();
|
||||
@@ -185,6 +198,7 @@ public class Settings {
|
||||
json.windowHeight = windowHeight.get();
|
||||
json.language = language.get();
|
||||
json.mountService = mountService.get();
|
||||
json.quickAccessService = quickAccessService.get();
|
||||
json.lastSuccessfulUpdateCheck = lastSuccessfulUpdateCheck.get();
|
||||
return json;
|
||||
}
|
||||
|
||||
@@ -86,4 +86,9 @@ class SettingsJson {
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'", timezone = "UTC")
|
||||
Instant lastSuccessfulUpdateCheck = Settings.DEFAULT_TIMESTAMP;
|
||||
|
||||
@JsonProperty("useQuickAccess")
|
||||
boolean useQuickAccess = Settings.DEFAULT_USE_QUICKACCESS;
|
||||
|
||||
@JsonProperty("quickAccessService")
|
||||
String quickAccessService = Settings.DEFAULT_QUICKACCESS_SERVICE;
|
||||
}
|
||||
|
||||
@@ -58,7 +58,10 @@ public class SettingsProvider implements Supplier<Settings> {
|
||||
}
|
||||
|
||||
private Settings load() {
|
||||
Settings settings = env.getSettingsPath().flatMap(this::tryLoad).findFirst().orElseGet(() -> Settings.create(env));
|
||||
Settings settings = env.getSettingsPath() //
|
||||
.flatMap(this::tryLoad) //
|
||||
.findFirst() //
|
||||
.orElseGet(() -> Settings.create(env));
|
||||
settings.setSaveCmd(this::scheduleSave);
|
||||
return settings;
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ package org.cryptomator.common.vaults;
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
import org.cryptomator.common.Constants;
|
||||
import org.cryptomator.common.mount.Mounter;
|
||||
import org.cryptomator.common.settings.Settings;
|
||||
import org.cryptomator.common.settings.VaultSettings;
|
||||
import org.cryptomator.cryptofs.CryptoFileSystem;
|
||||
import org.cryptomator.cryptofs.CryptoFileSystemProperties;
|
||||
@@ -23,6 +24,9 @@ import org.cryptomator.cryptolib.api.MasterkeyLoadingFailedException;
|
||||
import org.cryptomator.integrations.mount.MountFailedException;
|
||||
import org.cryptomator.integrations.mount.Mountpoint;
|
||||
import org.cryptomator.integrations.mount.UnmountFailedException;
|
||||
import org.cryptomator.integrations.quickaccess.QuickAccessService;
|
||||
import org.cryptomator.integrations.quickaccess.QuickAccessServiceException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -54,6 +58,7 @@ public class Vault {
|
||||
|
||||
private final VaultSettings vaultSettings;
|
||||
private final AtomicReference<CryptoFileSystem> cryptoFileSystem;
|
||||
private final AtomicReference<QuickAccessService.QuickAccessEntry> quickAccessEntry;
|
||||
private final VaultState state;
|
||||
private final ObjectProperty<Exception> lastKnownException;
|
||||
private final VaultConfigCache configCache;
|
||||
@@ -67,6 +72,7 @@ public class Vault {
|
||||
private final BooleanBinding unknownError;
|
||||
private final ObjectBinding<Mountpoint> mountPoint;
|
||||
private final Mounter mounter;
|
||||
private final Settings settings;
|
||||
private final BooleanProperty showingStats;
|
||||
|
||||
private final AtomicReference<Mounter.MountHandle> mountHandle = new AtomicReference<>(null);
|
||||
@@ -78,7 +84,7 @@ public class Vault {
|
||||
VaultState state, //
|
||||
@Named("lastKnownException") ObjectProperty<Exception> lastKnownException, //
|
||||
VaultStats stats, //
|
||||
Mounter mounter) {
|
||||
Mounter mounter, Settings settings) {
|
||||
this.vaultSettings = vaultSettings;
|
||||
this.configCache = configCache;
|
||||
this.cryptoFileSystem = cryptoFileSystem;
|
||||
@@ -94,7 +100,9 @@ public class Vault {
|
||||
this.unknownError = Bindings.createBooleanBinding(this::isUnknownError, state);
|
||||
this.mountPoint = Bindings.createObjectBinding(this::getMountPoint, state);
|
||||
this.mounter = mounter;
|
||||
this.settings = settings;
|
||||
this.showingStats = new SimpleBooleanProperty(false);
|
||||
this.quickAccessEntry = new AtomicReference<>(null);
|
||||
}
|
||||
|
||||
// ******************************************************************************
|
||||
@@ -154,6 +162,9 @@ public class Vault {
|
||||
var rootPath = fs.getRootDirectories().iterator().next();
|
||||
var mountHandle = mounter.mount(vaultSettings, rootPath);
|
||||
success = this.mountHandle.compareAndSet(null, mountHandle);
|
||||
if (settings.useQuickAccess.getValue()) {
|
||||
addToQuickAccess();
|
||||
}
|
||||
} finally {
|
||||
if (!success) {
|
||||
destroyCryptoFileSystem();
|
||||
@@ -178,6 +189,7 @@ public class Vault {
|
||||
mountHandle.mountObj().close();
|
||||
mountHandle.specialCleanup().run();
|
||||
} finally {
|
||||
removeFromQuickAccess();
|
||||
destroyCryptoFileSystem();
|
||||
}
|
||||
|
||||
@@ -185,6 +197,52 @@ public class Vault {
|
||||
LOG.info("Locked vault '{}'", getDisplayName());
|
||||
}
|
||||
|
||||
private synchronized void addToQuickAccess() {
|
||||
if (quickAccessEntry.get() != null) {
|
||||
//we don't throw an exception since we don't wanna block unlocking
|
||||
LOG.warn("Vault already added to quick access area. Will be removed on next lock operation.");
|
||||
return;
|
||||
}
|
||||
|
||||
QuickAccessService.get() //
|
||||
.filter(s -> s.getClass().getName().equals(settings.quickAccessService.getValue())) //
|
||||
.findFirst() //
|
||||
.ifPresentOrElse( //
|
||||
this::addToQuickAccessInternal, //
|
||||
() -> LOG.warn("Unable to add Vault to quick access area: Desired implementation not available.") //
|
||||
);
|
||||
}
|
||||
|
||||
private void addToQuickAccessInternal(@NotNull QuickAccessService s) {
|
||||
if (getMountPoint() instanceof Mountpoint.WithPath mp) {
|
||||
try {
|
||||
var entry = s.add(mp.path(), getDisplayName());
|
||||
quickAccessEntry.set(entry);
|
||||
} catch (QuickAccessServiceException e) {
|
||||
LOG.error("Adding vault to quick access area failed", e);
|
||||
}
|
||||
} else {
|
||||
LOG.warn("Unable to add vault to quick access area: Vault is not mounted to local system path.");
|
||||
}
|
||||
}
|
||||
|
||||
private synchronized void removeFromQuickAccess() {
|
||||
if (quickAccessEntry.get() == null) {
|
||||
LOG.debug("Removing vault from quick access area: Entry not found, nothing to do.");
|
||||
return;
|
||||
}
|
||||
removeFromQuickAccessInternal();
|
||||
}
|
||||
|
||||
private void removeFromQuickAccessInternal() {
|
||||
try {
|
||||
quickAccessEntry.get().remove();
|
||||
quickAccessEntry.set(null);
|
||||
} catch (QuickAccessServiceException e) {
|
||||
LOG.error("Removing vault from quick access area failed", e);
|
||||
}
|
||||
}
|
||||
|
||||
// ******************************************************************************
|
||||
// Observable Properties
|
||||
// *******************************************************************************
|
||||
|
||||
@@ -8,11 +8,13 @@
|
||||
*******************************************************************************/
|
||||
package org.cryptomator.common.vaults;
|
||||
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
import org.cryptomator.common.settings.Settings;
|
||||
import org.cryptomator.common.settings.VaultSettings;
|
||||
import org.cryptomator.cryptofs.CryptoFileSystemProvider;
|
||||
import org.cryptomator.cryptofs.DirStructure;
|
||||
import org.cryptomator.cryptofs.migration.Migrators;
|
||||
import org.cryptomator.integrations.mount.MountService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -24,6 +26,7 @@ import java.nio.file.Files;
|
||||
import java.nio.file.NoSuchFileException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
@@ -38,14 +41,21 @@ public class VaultListManager {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(VaultListManager.class);
|
||||
|
||||
private final AutoLocker autoLocker;
|
||||
private final List<MountService> mountServices;
|
||||
private final VaultComponent.Factory vaultComponentFactory;
|
||||
private final ObservableList<Vault> vaultList;
|
||||
private final String defaultVaultName;
|
||||
|
||||
@Inject
|
||||
public VaultListManager(ObservableList<Vault> vaultList, AutoLocker autoLocker, VaultComponent.Factory vaultComponentFactory, ResourceBundle resourceBundle, Settings settings) {
|
||||
public VaultListManager(ObservableList<Vault> vaultList, //
|
||||
AutoLocker autoLocker, //
|
||||
List<MountService> mountServices,
|
||||
VaultComponent.Factory vaultComponentFactory,
|
||||
ResourceBundle resourceBundle,
|
||||
Settings settings) {
|
||||
this.vaultList = vaultList;
|
||||
this.autoLocker = autoLocker;
|
||||
this.mountServices = mountServices;
|
||||
this.vaultComponentFactory = vaultComponentFactory;
|
||||
this.defaultVaultName = resourceBundle.getString("defaults.vault.vaultName");
|
||||
|
||||
@@ -76,6 +86,15 @@ public class VaultListManager {
|
||||
} else {
|
||||
vaultSettings.displayName.set(defaultVaultName);
|
||||
}
|
||||
|
||||
//due to https://github.com/cryptomator/cryptomator/issues/2880#issuecomment-1680313498
|
||||
var nameOfWinfspLocalMounter = "org.cryptomator.frontend.fuse.mount.WinFspMountProvider";
|
||||
if (SystemUtils.IS_OS_WINDOWS //
|
||||
&& vaultSettings.path.get().toString().contains("Dropbox") //
|
||||
&& mountServices.stream().anyMatch(s -> s.getClass().getName().equals(nameOfWinfspLocalMounter))) {
|
||||
vaultSettings.mountService.setValue(nameOfWinfspLocalMounter);
|
||||
}
|
||||
|
||||
return vaultSettings;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,9 @@ import org.cryptomator.common.Environment;
|
||||
import org.cryptomator.common.settings.Settings;
|
||||
import org.cryptomator.integrations.autostart.AutoStartProvider;
|
||||
import org.cryptomator.integrations.autostart.ToggleAutoStartFailedException;
|
||||
import org.cryptomator.integrations.common.NamedServiceProvider;
|
||||
import org.cryptomator.integrations.keychain.KeychainAccessProvider;
|
||||
import org.cryptomator.integrations.quickaccess.QuickAccessService;
|
||||
import org.cryptomator.ui.common.FxController;
|
||||
import org.cryptomator.ui.fxapp.FxApplicationWindows;
|
||||
import org.slf4j.Logger;
|
||||
@@ -30,12 +32,15 @@ public class GeneralPreferencesController implements FxController {
|
||||
private final Stage window;
|
||||
private final Settings settings;
|
||||
private final Optional<AutoStartProvider> autoStartProvider;
|
||||
private final List<QuickAccessService> quickAccessServices;
|
||||
private final Application application;
|
||||
private final Environment environment;
|
||||
private final List<KeychainAccessProvider> keychainAccessProviders;
|
||||
private final FxApplicationWindows appWindows;
|
||||
public CheckBox useKeychainCheckbox;
|
||||
public ChoiceBox<KeychainAccessProvider> keychainBackendChoiceBox;
|
||||
public CheckBox useQuickAccessCheckbox;
|
||||
public ChoiceBox<QuickAccessService> quickAccessServiceChoiceBox;
|
||||
public CheckBox startHiddenCheckbox;
|
||||
public CheckBox autoCloseVaultsCheckbox;
|
||||
public CheckBox debugModeCheckbox;
|
||||
@@ -48,6 +53,7 @@ public class GeneralPreferencesController implements FxController {
|
||||
this.settings = settings;
|
||||
this.autoStartProvider = autoStartProvider;
|
||||
this.keychainAccessProviders = keychainAccessProviders;
|
||||
this.quickAccessServices = QuickAccessService.get().toList();
|
||||
this.application = application;
|
||||
this.environment = environment;
|
||||
this.appWindows = appWindows;
|
||||
@@ -60,13 +66,21 @@ public class GeneralPreferencesController implements FxController {
|
||||
debugModeCheckbox.selectedProperty().bindBidirectional(settings.debugMode);
|
||||
autoStartProvider.ifPresent(autoStart -> autoStartCheckbox.setSelected(autoStart.isEnabled()));
|
||||
|
||||
var keychainSettingsConverter = new KeychainProviderClassNameConverter(keychainAccessProviders);
|
||||
var keychainSettingsConverter = new ServiceToSettingsConverter<>(keychainAccessProviders);
|
||||
keychainBackendChoiceBox.getItems().addAll(keychainAccessProviders);
|
||||
keychainBackendChoiceBox.setValue(keychainSettingsConverter.fromString(settings.keychainProvider.get()));
|
||||
keychainBackendChoiceBox.setConverter(new KeychainProviderDisplayNameConverter());
|
||||
Bindings.bindBidirectional(settings.keychainProvider, keychainBackendChoiceBox.valueProperty(), keychainSettingsConverter);
|
||||
useKeychainCheckbox.selectedProperty().bindBidirectional(settings.useKeychain);
|
||||
keychainBackendChoiceBox.disableProperty().bind(useKeychainCheckbox.selectedProperty().not());
|
||||
|
||||
useQuickAccessCheckbox.selectedProperty().bindBidirectional(settings.useQuickAccess);
|
||||
var quickAccessSettingsConverter = new ServiceToSettingsConverter<>(quickAccessServices);
|
||||
quickAccessServiceChoiceBox.getItems().addAll(quickAccessServices);
|
||||
quickAccessServiceChoiceBox.setValue(quickAccessSettingsConverter.fromString(settings.quickAccessService.get()));
|
||||
quickAccessServiceChoiceBox.setConverter(new NamedServiceConverter<>());
|
||||
Bindings.bindBidirectional(settings.quickAccessService, quickAccessServiceChoiceBox.valueProperty(), quickAccessSettingsConverter);
|
||||
quickAccessServiceChoiceBox.disableProperty().bind(useQuickAccessCheckbox.selectedProperty().not());
|
||||
}
|
||||
|
||||
public boolean isAutoStartSupported() {
|
||||
@@ -91,6 +105,10 @@ public class GeneralPreferencesController implements FxController {
|
||||
});
|
||||
}
|
||||
|
||||
public boolean isSomeQuickAccessServiceAvailable() {
|
||||
return !quickAccessServices.isEmpty();
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void showLogfileDirectory() {
|
||||
environment.getLogDir().ifPresent(logDirPath -> application.getHostServices().showDocument(logDirPath.toUri().toString()));
|
||||
@@ -116,29 +134,47 @@ public class GeneralPreferencesController implements FxController {
|
||||
|
||||
}
|
||||
|
||||
private static class KeychainProviderClassNameConverter extends StringConverter<KeychainAccessProvider> {
|
||||
|
||||
private final List<KeychainAccessProvider> keychainAccessProviders;
|
||||
|
||||
public KeychainProviderClassNameConverter(List<KeychainAccessProvider> keychainAccessProviders) {
|
||||
this.keychainAccessProviders = keychainAccessProviders;
|
||||
}
|
||||
private static class NamedServiceConverter<T extends NamedServiceProvider> extends StringConverter<T> {
|
||||
|
||||
@Override
|
||||
public String toString(KeychainAccessProvider provider) {
|
||||
if (provider == null) {
|
||||
public String toString(T namedService) {
|
||||
if (namedService == null) {
|
||||
return null;
|
||||
} else {
|
||||
return provider.getClass().getName();
|
||||
return namedService.getName();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public KeychainAccessProvider fromString(String string) {
|
||||
public T fromString(String string) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static class ServiceToSettingsConverter<T> extends StringConverter<T> {
|
||||
|
||||
private final List<T> services;
|
||||
|
||||
public ServiceToSettingsConverter(List<T> services) {
|
||||
this.services = services;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString(T service) {
|
||||
if (service == null) {
|
||||
return null;
|
||||
} else {
|
||||
return service.getClass().getName();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public T fromString(String string) {
|
||||
if (string == null) {
|
||||
return null;
|
||||
} else {
|
||||
return keychainAccessProviders.stream().filter(provider -> provider.getClass().getName().equals(string)).findAny().orElse(null);
|
||||
return services.stream().filter(provider -> provider.getClass().getName().equals(string)).findAny().orElse(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@ public interface PreferencesComponent {
|
||||
selectedTabProperty().set(selectedTab);
|
||||
Stage stage = window();
|
||||
stage.setScene(scene().get());
|
||||
stage.setMinWidth(420);
|
||||
stage.setMinHeight(300);
|
||||
stage.show();
|
||||
stage.requestFocus();
|
||||
return stage;
|
||||
|
||||
@@ -37,7 +37,7 @@ public class PreferencesController implements FxController {
|
||||
this.env = env;
|
||||
this.window = window;
|
||||
this.selectedTabProperty = selectedTabProperty;
|
||||
this.updateAvailable = updateChecker.latestVersionProperty().isNotNull();
|
||||
this.updateAvailable = updateChecker.updateAvailableProperty();
|
||||
}
|
||||
|
||||
@FXML
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
xmlns="http://javafx.com/javafx"
|
||||
fx:id="tabPane"
|
||||
fx:controller="org.cryptomator.ui.preferences.PreferencesController"
|
||||
minWidth="-Infinity"
|
||||
maxWidth="-Infinity"
|
||||
prefWidth="650"
|
||||
tabMinWidth="60"
|
||||
tabClosingPolicy="UNAVAILABLE"
|
||||
|
||||
@@ -30,6 +30,10 @@
|
||||
<ChoiceBox fx:id="keychainBackendChoiceBox"/>
|
||||
</HBox>
|
||||
|
||||
<HBox spacing="12" alignment="CENTER_LEFT" visible="${controller.someQuickAccessServiceAvailable}" managed="${controller.someQuickAccessServiceAvailable}">
|
||||
<CheckBox fx:id="useQuickAccessCheckbox" text="%preferences.general.quickAccessService"/>
|
||||
<ChoiceBox fx:id="quickAccessServiceChoiceBox"/>
|
||||
</HBox>
|
||||
<Region VBox.vgrow="ALWAYS"/>
|
||||
|
||||
<HBox spacing="12" alignment="CENTER_LEFT">
|
||||
|
||||
@@ -288,6 +288,7 @@ preferences.general.debugLogging=Enable debug logging
|
||||
preferences.general.debugDirectory=Reveal log files
|
||||
preferences.general.autoStart=Launch Cryptomator on system start
|
||||
preferences.general.keychainBackend=Store passwords with
|
||||
preferences.general.quickAccessService=Add unlocked vaults to the quick access area
|
||||
## Interface
|
||||
preferences.interface=Interface
|
||||
preferences.interface.theme=Look & Feel
|
||||
|
||||
@@ -173,10 +173,15 @@ hub.registerSuccess.legacy.description=للدخول إلى الخزينة، يح
|
||||
### Registration Failed
|
||||
hub.registerFailed.message=فشل تسجيل الجهاز
|
||||
hub.registerFailed.description.generic=حدث خطأ في عملية تسجيل الاسم. لمزيد من التفاصيل، راجع سجل التطبيق.
|
||||
hub.registerFailed.description.deviceAlreadyExists=هذا الجهاز مسجل لمستخدم مختلف بالفعل. حاول تغيير حساب المستخدم أو استخدام جهاز مختلف.
|
||||
### Unauthorized
|
||||
hub.unauthorized.message=تم رفض الوصول
|
||||
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.invalidLicense.description=نموذج المركز Cryptomator الخاص بك لديه ترخيص غير صالح. الرجاء إبلاغ مسؤول مركز لترقية أو تجديد الترخيص.
|
||||
@@ -305,6 +310,9 @@ preferences.volume.fuseRestartRequired=لتطبيق التغييرات، يحت
|
||||
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=تحديثات
|
||||
@@ -312,6 +320,13 @@ 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=ادعمنا
|
||||
@@ -331,13 +346,32 @@ stats.cacheHitRate=معدل استخدام الكاش
|
||||
stats.read.throughput.idle=قراءة: خامل
|
||||
stats.read.throughput.kibs=القراءة: %.2f KiB/s
|
||||
stats.read.throughput.mibs=القراءة: %.2f MiB/s
|
||||
stats.read.total.data.none=بيانات القراءة: -
|
||||
stats.read.total.data.kib=بيانات القراءة: %.1f كيلوبايت
|
||||
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 كيلوبايت/ثانية
|
||||
stats.write.throughput.mibs=الكتابة: %.2f ميجابايت/ثانية
|
||||
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
|
||||
@@ -355,6 +389,8 @@ main.vaultlist.contextMenu.unlockNow=افتح الان
|
||||
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 لحماية ملفاتك. إذا كنت بحاجة إلى أية مساعدة، تحقق من دليل وتعليمات الإستخدام:
|
||||
@@ -364,14 +400,17 @@ main.vaultDetail.unlockBtn=فتح…
|
||||
main.vaultDetail.unlockNowBtn=فتح القفل الان
|
||||
main.vaultDetail.optionsBtn=خيارات المخزن
|
||||
main.vaultDetail.passwordSavedInKeychain=تم حفظ كلمة المرور
|
||||
main.vaultDetail.share=مشاركة…
|
||||
### Unlocked
|
||||
main.vaultDetail.unlockedStatus=مفتوح
|
||||
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.kbps=%.1f كيلوبايت/ث
|
||||
main.vaultDetail.throughput.mbps=%.1f ميجابايت/ث
|
||||
main.vaultDetail.stats=إحصائيات الخزنة
|
||||
main.vaultDetail.locateEncryptedFileBtn=تحديد موقع الملف المشفر
|
||||
@@ -387,6 +426,9 @@ main.vaultDetail.missing.changeLocation=تغيير موقع الخزنة…
|
||||
main.vaultDetail.migrateButton=ترقية الحافظة
|
||||
main.vaultDetail.migratePrompt=يجب ترقية المخزن الخاص بك إلى تنسيق جديد، قبل أن تتمكن من الوصول إليه
|
||||
### Error
|
||||
main.vaultDetail.error.info=حدث خطأ أثناء تحميل الخزانة من القرص الصلب.
|
||||
main.vaultDetail.error.reload=إعادة تحميل
|
||||
main.vaultDetail.error.windowTitle=خطأ في تحميل الخزنة
|
||||
|
||||
# Wrong File Alert
|
||||
wrongFileAlert.title=كيفية تشفير الملفات
|
||||
@@ -402,24 +444,31 @@ wrongFileAlert.link=لمزيد من المساعدة، قم بزيارة
|
||||
## General
|
||||
vaultOptions.general=عام
|
||||
vaultOptions.general.vaultName=اسم المخزن
|
||||
vaultOptions.general.autoLock.lockAfterTimePart1=قفل عند الخمول لمدة
|
||||
vaultOptions.general.autoLock.lockAfterTimePart2=دقائق
|
||||
vaultOptions.general.unlockAfterStartup=فتح قفل المخزن عند بدء تشغيل Cryptomator
|
||||
vaultOptions.general.actionAfterUnlock=بعد فتح القفل بنجاح
|
||||
vaultOptions.general.actionAfterUnlock.ignore=لا تفعل شيئاً
|
||||
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.winDriveLetterOccupied=مشغول
|
||||
vaultOptions.mount.mountPoint=موقع التحميل الوهمي
|
||||
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=تغيير كلمة المرور
|
||||
@@ -429,9 +478,12 @@ vaultOptions.masterkey.showRecoveryKeyBtn=عرض مفتاح الاسترداد
|
||||
vaultOptions.masterkey.recoverPasswordBtn=إعادة تعيين كلمة المرور
|
||||
## Hub
|
||||
vaultOptions.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":
|
||||
@@ -439,12 +491,23 @@ recoveryKey.display.StorageHints=حافظ عليه في مكان ما آمن ج
|
||||
## Reset Password
|
||||
### Enter Recovery Key
|
||||
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=تحويل الخزانة
|
||||
convertVault.convert.convertBtn.before=حوّل
|
||||
convertVault.convert.convertBtn.processing=جاري التحويل…
|
||||
convertVault.success.message=تم التحويل بنجاح
|
||||
convertVault.hubToPassword.success.description=يمكنك الآن فتح الخزانة باستخدام كلمة المرور المختارة دون الحاجة إلى الوصول إلى Hub.
|
||||
|
||||
# New Password
|
||||
newPassword.promptText=أدخل كلمة مرور جديدة
|
||||
@@ -459,13 +522,46 @@ passwordStrength.messageLabel.3=قوية
|
||||
passwordStrength.messageLabel.4=قوية جداً
|
||||
|
||||
# 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.title=إشعار بإيقاف الدعم
|
||||
dokanySupportEnd.message=انتهاء الدعم لـDokany
|
||||
dokanySupportEnd.description=نوع وحدة التخزين Dokany لم يعد مدعوماً من قبل Cryptomator. تم تعديل إعداداتك لاستخدام نوع وحدة التخزين الافتراضي الآن. يمكنك عرض النوع الافتراضي في التفضيلات.
|
||||
dokanySupportEnd.preferencesBtn=فتح التفضيلات
|
||||
|
||||
# Share Vault
|
||||
shareVault.title=مشاركة الخزانة
|
||||
shareVault.message=هل ترغب في مشاركة خزانتك مع الآخرين؟
|
||||
shareVault.description=كن حذرًا دائمًا عند مشاركة خزانتك مع الآخرين. باختصار، اتبع هذه الخطوات:
|
||||
shareVault.instruction.1=1. شارك الوصول إلى مجلد الخزانة المشفر عبر التخزين السحابي.
|
||||
shareVault.instruction.2=2. شارك كلمة مرور الخزانة بطريقة آمنة.
|
||||
shareVault.remarkBestPractices=لمزيد من المعلومات، تحقق من اقتراحات أفضل الممارسات في مستنداتنا.
|
||||
shareVault.docsTooltip=افتح وثائق البرنامج Documentation لتعلم المزيد عن مشاركة الخزائن.
|
||||
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
|
||||
@@ -136,7 +136,7 @@ unlock.success.revealBtn=Laufwerk anzeigen
|
||||
## Failure
|
||||
unlock.error.customPath.message=Tresor kann nicht in benutzerdefinierten Pfad eingehängt werden
|
||||
unlock.error.customPath.description.notSupported=Wenn du weiterhin den benutzerdefinierten Pfad verwenden möchtest, öffne die allgemeinen Einstellungen und wähle einen unterstützten Laufwerkstyp. Andernfalls gehe zu den Tresor-Optionen und wähle einen unterstützten Einhängepunkt.
|
||||
unlock.error.customPath.description.notExists=Der benutzerdefinierte Einhängepunkt existiert nicht. Erstelle ihn in deinem lokalen Dateisystem oder ändere ihn in den Tresor-Optionen.
|
||||
unlock.error.customPath.description.notExists=Der benutzerdefinierte Einhängepfad existiert nicht. Erstelle ihn entweder in deinem lokalen Dateisystem oder ändere ihn in den Tresor-Optionen.
|
||||
unlock.error.customPath.description.inUse=Der Laufwerksbuchstabe oder benutzerdefinierte Einhängepunkt „%s“ wird bereits verwendet.
|
||||
unlock.error.customPath.description.hideawayNotDir=Die temporäre, versteckte Datei „%3$s“, die für das Entsperren verwendet wurde, konnte nicht entfernt werden. Bitte überprüfe die Datei und lösche sie manuell.
|
||||
unlock.error.customPath.description.couldNotBeCleaned=Dein Tresor konnte nicht in den Pfad „%s“ eingehängt werden. Bitte versuche es erneut oder wähle einen anderen Pfad aus.
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=Diagnoseprotokoll aktivieren
|
||||
preferences.general.debugDirectory=Protokolldateien anzeigen
|
||||
preferences.general.autoStart=Cryptomator beim Systemstart starten
|
||||
preferences.general.keychainBackend=Passwörter speichern mit
|
||||
preferences.general.quickAccessService=Die entsperrten Tresore zum Schnellzugriff hinzufügen
|
||||
## Interface
|
||||
preferences.interface=Benutzeroberfläche
|
||||
preferences.interface.theme=Erscheinungsbild
|
||||
@@ -541,6 +542,9 @@ updateReminder.yesOnce=Ja, einmalig
|
||||
updateReminder.yesAutomatically=Ja, automatisch
|
||||
|
||||
#Dokany Support End
|
||||
dokanySupportEnd.title=Hinweis: nicht mehr verwendet
|
||||
dokanySupportEnd.message=Ende der Unterstützung für Dokany
|
||||
dokanySupportEnd.description=Der Laufwerkstyp Dokany wird von Cryptomator nicht weiter unterstützt. Deine Einstellungen wurden angepasst, dass der Standard-Laufwerkstyp verwendet wird. Du kannst den Standardtyp in den Einstellungen anzeigen lassen.
|
||||
dokanySupportEnd.preferencesBtn=Einstellungen öffnen
|
||||
|
||||
# Share Vault
|
||||
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=Ενεργοποίηση καταγραφής
|
||||
preferences.general.debugDirectory=Αποκάλυψη αρχείων καταγραφής
|
||||
preferences.general.autoStart=Εκκίνηση Cryptomator στην εκκίνηση του συστήματος
|
||||
preferences.general.keychainBackend=Αποθήκευση κωδικού πρόσβασης με
|
||||
preferences.general.quickAccessService=Προσθήκη ξεκλειδωμένων Κρυπτών στην περιοχή γρήγορης πρόσβασης
|
||||
## Interface
|
||||
preferences.interface=Διεπαφή
|
||||
preferences.interface.theme=Εμφάνιση & Αίσθηση
|
||||
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=Habilitar registro de depuración
|
||||
preferences.general.debugDirectory=Revelar archivos de registro
|
||||
preferences.general.autoStart=Cargar Cryptomator al iniciar el sistema
|
||||
preferences.general.keychainBackend=Guardar contraseñas con
|
||||
preferences.general.quickAccessService=Añadir bóvedas desbloqueadas al área de acceso rápido
|
||||
## Interface
|
||||
preferences.interface=Interfaz
|
||||
preferences.interface.theme=Apariencia
|
||||
|
||||
@@ -92,6 +92,7 @@ lock.forced.retryBtn=تلاش مجدد
|
||||
|
||||
# Preferences
|
||||
## General
|
||||
preferences.general.quickAccessService=خزانه های قفل نشده را به دسترسی سریع اضافه کنید
|
||||
## Interface
|
||||
## Volume
|
||||
## Updates
|
||||
@@ -119,6 +120,7 @@ main.closeBtn.tooltip=ببند
|
||||
main.supporterCertificateMissing.tooltip=لطفا کمک مالی در نظر بگیرند
|
||||
## Vault List
|
||||
main.vaultlist.contextMenu.lock=قفل
|
||||
main.vaultlist.addVaultBtn=اضافه کردن
|
||||
## Vault Detail
|
||||
### Welcome
|
||||
### Locked
|
||||
|
||||
@@ -47,6 +47,7 @@ addvaultwizard.new.nameInstruction=Pangalanan ang vault
|
||||
addvaultwizard.new.namePrompt=Pangalan ng Vault
|
||||
### Location
|
||||
addvaultwizard.new.locationInstruction=Saan maaaring ilagay ng Cryptomator ang mga encrypted files ng iyong vault?
|
||||
addvaultwizard.new.locationLoading=Sinusuri ang lokal na filesystem para sa mga default na direktoryo ng cloud storage…
|
||||
addvaultwizard.new.locationLabel=Storage location
|
||||
addvaultwizard.new.locationPrompt=…
|
||||
addvaultwizard.new.directoryPickerLabel=Custom Location
|
||||
@@ -141,6 +142,8 @@ unlock.error.customPath.description.hideawayNotDir=Ang pansamantalang nakatagong
|
||||
unlock.error.customPath.description.couldNotBeCleaned=Hindi ma-mount ang iyong vault sa path na "%s". Pakisubukang muli o pumili ng ibang landas.
|
||||
unlock.error.customPath.description.notEmptyDir=Ang custom na mount path na "%s" ay hindi isang walang laman na folder. Mangyaring pumili ng isang walang laman na folder at subukang muli.
|
||||
unlock.error.customPath.description.generic=Pumili ka ng custom na mount path para sa vault na ito, ngunit nabigo ang paggamit nito sa mensaheng: %2$s
|
||||
unlock.error.restartRequired.message=Hindi mabuksan ang vault
|
||||
unlock.error.restartRequired.description=Baguhin ang uri ng volume sa mga opsyon sa vault o i-restart ang Cryptomator.
|
||||
unlock.error.title=Hindi mabuksan ang "%s"
|
||||
## Hub
|
||||
hub.noKeychain.message=Hindi ma-access ang key ng device
|
||||
@@ -155,12 +158,22 @@ hub.receive.message=Pinoproseso ang tugon…
|
||||
hub.receive.description=Ang Cryptomator ay tumatanggap at nagpoproseso ng tugon mula sa Hub. Mangyaring maghintay.
|
||||
### Register Device
|
||||
hub.register.message=Bagong Device
|
||||
hub.register.description=Ito ang unang Hub access mula sa device na ito. Mangyaring irehistro ito gamit ang iyong Account Key.
|
||||
hub.register.nameLabel=Pangalan ng device
|
||||
hub.register.invalidAccountKeyLabel=Di-wastong Account Key
|
||||
hub.register.registerBtn=Magparehistro
|
||||
### Register Device Legacy
|
||||
hub.register.legacy.occupiedMsg=Ang pangalan ay nagamit na
|
||||
hub.register.legacy.description=Ito ang unang Hub access mula sa device na ito. Mangyaring irehistro ito.
|
||||
### Registration Success
|
||||
hub.registerSuccess.message=Rehistrado na ang device
|
||||
hub.registerSuccess.description=Ang iyong device ay matagumpay sa pag rehistrado. Maaari mo nang buksan ang vault.
|
||||
hub.registerSuccess.unlockBtn=I-unlock
|
||||
hub.registerSuccess.legacy.description=Para ma-access ang vault, kailangang pahintulutan ng may-ari ng vault ang iyong device.
|
||||
### Registration Failed
|
||||
hub.registerFailed.message=Ang pag rehistrado ng device ay pumalya
|
||||
hub.registerFailed.description.generic=Nagkaroon ng error sa proseso ng pag registrado. Para sa higit pang mga detalye, tingnan ang log ng aplikasyon.
|
||||
hub.registerFailed.description.deviceAlreadyExists=Ang device na ito ay registrado na sa ibang user. Subukang palitan ang user account o gumamit ng ibang device.
|
||||
### Unauthorized
|
||||
hub.unauthorized.message=Walang pahintulot
|
||||
hub.unauthorized.description=Hindi pa pinahihintulutan ang iyong device na i-access ang vault na ito. Hilingin sa may-ari ng vault na pahintulutan ito.
|
||||
@@ -274,6 +287,7 @@ preferences.general.debugLogging=Paganahin ang pag-log ng debug
|
||||
preferences.general.debugDirectory=Magbunyag ng mga log file
|
||||
preferences.general.autoStart=Ilunsad ang Cryptomator sa pagsisimula ng system
|
||||
preferences.general.keychainBackend=Mag-imbak ng mga password gamit ang
|
||||
preferences.general.quickAccessService=Magdagdag ng mga naka-unlock na vault sa lugar ng mabilisang pag-access
|
||||
## Interface
|
||||
preferences.interface=Interface
|
||||
preferences.interface.theme=Tingnan at Pakiramdam
|
||||
@@ -290,9 +304,11 @@ preferences.interface.showMinimizeButton=Ipakita ang pindutan ng minimize
|
||||
preferences.interface.showTrayIcon=Ipakita ang icon ng tray (kailangan i-restart)
|
||||
## Volume
|
||||
preferences.volume=Virtual Drive
|
||||
preferences.volume.type=Default na Uri ng Dami
|
||||
preferences.volume.type.automatic=Awtomatiko
|
||||
preferences.volume.docsTooltip=Buksan ang dokumentasyon para matuto pa tungkol sa iba't ibang uri ng volume.
|
||||
preferences.volume.fuseRestartRequired=Upang mailapat ang mga pagbabago, kailangang i-restart ang Cryptomator.
|
||||
preferences.volume.tcp.port=Default na TCP Port
|
||||
preferences.volume.supportedFeatures=Sinusuportahan ng napiling uri ng volume ang mga sumusunod na tampok:
|
||||
preferences.volume.feature.mountAuto=Awtomatikong pagpili ng mount point
|
||||
preferences.volume.feature.mountToDir=Custom na direktoryo bilang mount point
|
||||
@@ -305,6 +321,13 @@ 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.
|
||||
preferences.updates.lastUpdateCheck=Huling pagsusuri: %s
|
||||
preferences.updates.lastUpdateCheck.never=hindi kailanman
|
||||
preferences.updates.lastUpdateCheck.recently=kamakailan
|
||||
preferences.updates.lastUpdateCheck.daysAgo=%s araw ang lumipas
|
||||
preferences.updates.lastUpdateCheck.hoursAgo=%s oras ang lumipas
|
||||
preferences.updates.checkFailed=Nabigo ang paghahanap ng mga update. Pakisuri ang iyong koneksyon sa internet o subukang muli sa ibang pagkakataon.
|
||||
preferences.updates.upToDate=Ang Cryptomator ay napapanahon.
|
||||
|
||||
## Contribution
|
||||
preferences.contribute=Suportahan Kami
|
||||
@@ -378,6 +401,7 @@ main.vaultDetail.unlockBtn=I-unlock…
|
||||
main.vaultDetail.unlockNowBtn=I-unlock Ngayon
|
||||
main.vaultDetail.optionsBtn=Mga Pagpipilian sa Vault
|
||||
main.vaultDetail.passwordSavedInKeychain=Na-save ang password
|
||||
main.vaultDetail.share=Ibahagi…
|
||||
### Unlocked
|
||||
main.vaultDetail.unlockedStatus=NAKA-unlock
|
||||
main.vaultDetail.accessLocation=Ang mga nilalaman ng iyong vault ay maa-access dito:
|
||||
@@ -432,6 +456,7 @@ vaultOptions.general.startHealthCheckBtn=Simulan ang Health Check
|
||||
|
||||
## Mount
|
||||
vaultOptions.mount=Pag-mount
|
||||
vaultOptions.mount.info=Buksan ang mga kagustuhan sa virtual drive upang baguhin ang mga default na setting.
|
||||
vaultOptions.mount.readonly=Basahin lamang
|
||||
vaultOptions.mount.customMountFlags=Mga custom na naka-mount na flag
|
||||
vaultOptions.mount.winDriveLetterOccupied=inookupahan
|
||||
@@ -441,6 +466,10 @@ vaultOptions.mount.mountPoint.driveLetter=Gumamit ng nakatalagang drive letter
|
||||
vaultOptions.mount.mountPoint.custom=Gamitin ang napiling direktoryo
|
||||
vaultOptions.mount.mountPoint.directoryPickerButton=Mamili…
|
||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Pumili ng isang direktoryo
|
||||
vaultOptions.mount.volumeType.default=Default (%s)
|
||||
vaultOptions.mount.volumeType.restartRequired=Upang magamit ang uri ng volume na ito, kailangang i-restart ang Cryptomator.
|
||||
vaultOptions.mount.volume.tcp.port=TCP Port
|
||||
vaultOptions.mount.volume.type=Uri ng Dami
|
||||
## Master Key
|
||||
vaultOptions.masterkey=Password
|
||||
vaultOptions.masterkey.changePasswordBtn=Palitan ANG password
|
||||
@@ -513,6 +542,27 @@ updateReminder.yesOnce=Oo, Minsan
|
||||
updateReminder.yesAutomatically=Oo, Awtomatiko
|
||||
|
||||
#Dokany Support End
|
||||
dokanySupportEnd.title=Paunawa sa paghinto sa paggamit
|
||||
dokanySupportEnd.message=Pagtatapos ng suporta para sa Dokany
|
||||
dokanySupportEnd.description=Ang uri ng volume na Dokany ay hindi na sinusuportahan ng Cryptomator. Isinasaayos ang iyong mga setting upang magamit ang default na uri ng volume ngayon. Maaari mong tingnan ang default na uri sa mga kagustuhan.
|
||||
dokanySupportEnd.preferencesBtn=Buksan ang Mga Kagustuhan
|
||||
|
||||
# Share Vault
|
||||
shareVault.title=Ibahagi ang Vault
|
||||
shareVault.message=Gusto mo bang ibahagi ang iyong vault sa iba?
|
||||
shareVault.description=Maingat palagi pag binabahagi ang iyong vault sa ibang tao. Sa maikling salita, sundin ang mga hakbangin:
|
||||
shareVault.instruction.1=1. Ibahagi ang access ng naka-encrypt na folder ng vault sa pamamagitan ng cloud storage.
|
||||
shareVault.instruction.2=2. Ibahagi ang password ng vault sa isang secure na paraan.
|
||||
shareVault.remarkBestPractices=Para sa higit pang impormasyon, tingnan ang mga mungkahi sa pinakamahuhusay na kagawian sa aming mga doc.
|
||||
shareVault.docsTooltip=Buksan ang dokumentasyon para matuto pa tungkol sa pagbabahagi ng mga vault.
|
||||
shareVault.hubAd.description=Ang ligtas na paraan upang magtrabaho sa mga koponan
|
||||
shareVault.hubAd.keyManagement=• Zero-knowledge key management
|
||||
shareVault.hubAd.authentication=• Malakas na pagpapatunay
|
||||
shareVault.hubAd.encryption=• End-to-end na pag-encrypt
|
||||
shareVault.visitHub=Pagbisita ang Cryptomator Hub
|
||||
|
||||
shareVault.hub.message=Paano ibahagi ang Hub vault
|
||||
shareVault.hub.description=Upang maibahagi ang nilalaman ng vault sa isa pang miyembro ng koponan, kailangan mong magsagawa ng dalawang hakbang:
|
||||
shareVault.hub.instruction.1=1. Ibahagi ang access ng naka-encrypt na folder ng vault sa pamamagitan ng cloud storage.
|
||||
shareVault.hub.instruction.2=2. Magbigay ng access sa miyembro ng team sa Cryptomator Hub.
|
||||
shareVault.hub.openHub=Buksan ang Cryptomator Hub
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=Activer les logs debug
|
||||
preferences.general.debugDirectory=Afficher le journal
|
||||
preferences.general.autoStart=Lancer Cryptomator au démarrage du système
|
||||
preferences.general.keychainBackend=Stocker les mots de passe avec
|
||||
preferences.general.quickAccessService=Ajouter les coffres déverrouillés à la zone d'accès rapide
|
||||
## Interface
|
||||
preferences.interface=Interface
|
||||
preferences.interface.theme=Apparence
|
||||
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=Abilita la registrazione di debug
|
||||
preferences.general.debugDirectory=Rivela i file di registro
|
||||
preferences.general.autoStart=Avvia Cryptomator all'avvio del sistema
|
||||
preferences.general.keychainBackend=Memorizza le password con
|
||||
preferences.general.quickAccessService=Aggiungi cassaforte sbloccata all'area di accesso rapido
|
||||
## Interface
|
||||
preferences.interface=Interfaccia
|
||||
preferences.interface.theme=Aspetto
|
||||
@@ -331,7 +332,7 @@ preferences.updates.upToDate=Cryptomator è aggiornato.
|
||||
## Contribution
|
||||
preferences.contribute=Supportaci
|
||||
preferences.contribute.registeredFor=Certificato del sostenitore registrato per %s
|
||||
preferences.contribute.noCertificate=Supporta Cryptomator e ricevi il certificato da sostenitore. È come una chiave di licenza me per persone fantastiche che usano un software gratuito. ;-)
|
||||
preferences.contribute.noCertificate=Supporta Cryptomator e ricevi un certificato di supporter. È come una chiave di licenza, ma per persone fantastiche che utilizzano software libero. ;-)
|
||||
preferences.contribute.getCertificate=Non ne hai ancora uno? Scopri come puoi ottenerlo.
|
||||
preferences.contribute.promptText=Incolla qui il codice del certificato da sostenitore
|
||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=ログを有効にする
|
||||
preferences.general.debugDirectory=ログ ファイルを表示
|
||||
preferences.general.autoStart=システム開始時に Cryptomator を起動する
|
||||
preferences.general.keychainBackend=次を利用してパスワードを保存する
|
||||
preferences.general.quickAccessService=解錠された金庫をクイックアクセス領域に追加
|
||||
## Interface
|
||||
preferences.interface=インターフェース
|
||||
preferences.interface.theme=外観
|
||||
@@ -541,6 +542,8 @@ updateReminder.yesOnce=はい、一度だけ
|
||||
updateReminder.yesAutomatically=自動的に行う
|
||||
|
||||
#Dokany Support End
|
||||
dokanySupportEnd.title=サポート廃止の通知
|
||||
dokanySupportEnd.message=Dokany のサポート終了
|
||||
dokanySupportEnd.preferencesBtn=環境設定を開く
|
||||
|
||||
# Share Vault
|
||||
|
||||
@@ -60,6 +60,10 @@ 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=Vault 생성
|
||||
addvaultwizard.new.generateRecoveryKeyChoice=비밀번호가 없으면 데이터에 접근할 수 없습니다. 비밀번호를 잊었을 때를 대비한 복구 키를 원하십니까?
|
||||
@@ -128,13 +132,21 @@ unlock.success.revealBtn=드라이브 표시
|
||||
## Hub
|
||||
hub.noKeychain.openBtn=설정 열기
|
||||
### Waiting
|
||||
hub.auth.message=인증 대기중…
|
||||
### Receive Key
|
||||
### Register Device
|
||||
hub.register.message=새 기기
|
||||
hub.register.nameLabel=기기 이름
|
||||
hub.register.invalidAccountKeyLabel=유효하지 않은 계정 키
|
||||
hub.register.registerBtn=등록
|
||||
### Register Device Legacy
|
||||
hub.register.legacy.occupiedMsg=이미 사용 중인 이름
|
||||
### Registration Success
|
||||
hub.registerSuccess.message=기기 등록됨
|
||||
hub.registerSuccess.unlockBtn=잠금해제
|
||||
### Registration Failed
|
||||
hub.registerFailed.message=기기 등록 실패
|
||||
hub.registerFailed.description.generic=등록 중에 에러가 발생했습니다. 앱 로그에서 자세한 정보를 확인할 수 있습니다.
|
||||
### Unauthorized
|
||||
hub.unauthorized.message=액세스 거부
|
||||
hub.unauthorized.description=귀하의 기기는 아직 이 저장소에 액세스할 수 있는 권한이 없습니다. Vault 소유자에게 승인을 요청하세요.
|
||||
@@ -162,6 +174,7 @@ migration.start.text=Vault "%s"를 현재 버전의 Cryptomator에서 열기 위
|
||||
migration.start.remarkUndone=이 업그레이드는 되돌릴 수 없습니다.
|
||||
migration.start.remarkVersions=과거 버전의 Cryptomator는 업그레이드된 vault를 열 수 없습니다.
|
||||
migration.start.remarkCanRun=이 vault를 열 때 사용하는 모든 장치가 현재 버전의 Cryptomator를 실행할 수 있는지 확인해야 합니다.
|
||||
migration.start.remarkSynced=업그레이드하기 전에 해당 vault가 모든 기기에 정상적으로 동기화되어야 합니다.
|
||||
migration.start.confirm=나는 위 정보를 읽고 정말 이해했습니다.
|
||||
## Run
|
||||
migration.run.enterPassword="%s"의 비밀번호를 입력하십시요.
|
||||
@@ -207,11 +220,23 @@ health.check.detail.checkRunning=검사가 현재 실행중입니다...
|
||||
health.check.detail.checkSkipped=선택된 검사항목이 없습니다.
|
||||
health.check.detail.checkFinished=검사가 성공적으로 완료되었습니다.
|
||||
health.check.detail.checkFinishedAndFound=검사가 완료되었습니다. 검사 결과를 확인해주세요.
|
||||
health.check.detail.checkFailed=오류로 인해 검사가 종료되었습니다.
|
||||
health.check.detail.checkCancelled=검사가 취소되었습니다
|
||||
health.check.detail.listFilters.label=필터
|
||||
health.check.exportBtn=보고서 내보내기
|
||||
## Result view
|
||||
health.result.severityFilter.all=모든 상태 표시
|
||||
health.result.severityFilter.good=양호
|
||||
health.result.severityFilter.warn=경고
|
||||
health.result.severityFilter.crit=심각
|
||||
health.result.severityTip.good=상태: 양호\n정상적인 vault 구조를 가지고 있습니다.
|
||||
health.result.severityTip.crit=상태: 심각\nVault 구조가 손상되었습니다. 데이터 손실이 발생했습니다.
|
||||
health.result.fixStateFilter.all=모든 문제 해결 상태
|
||||
health.result.fixStateFilter.fixable=문제 해결 가능
|
||||
health.result.fixStateFilter.notFixable=문제 해결 불가
|
||||
health.result.fixStateFilter.fixing=문제 해결중…
|
||||
health.result.fixStateFilter.fixed=문제 해결됨
|
||||
health.result.fixStateFilter.fixFailed=문제 해결 실패
|
||||
## Fix Application
|
||||
health.fix.fixBtn=문제해결
|
||||
health.fix.successTip=문제 해결이 성공적으로 완료되었습니다
|
||||
@@ -243,6 +268,7 @@ preferences.interface.showTrayIcon=트레이 아이콘 보기 (재시작 필요)
|
||||
## Volume
|
||||
preferences.volume=가상 드라이브
|
||||
preferences.volume.type.automatic=자동
|
||||
preferences.volume.tcp.port=기본 TCP 포트
|
||||
preferences.volume.supportedFeatures=현재 선택한 볼륨 타입은 다음과 같은 기능들을 지원합니다:
|
||||
preferences.volume.feature.mountToDir=마운트할 폴더 지정
|
||||
preferences.volume.feature.mountToDriveLetter=마운트할 드라이브 문자
|
||||
@@ -254,6 +280,13 @@ 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=후원하기
|
||||
@@ -326,6 +359,7 @@ main.vaultDetail.unlockBtn=잠금해제...
|
||||
main.vaultDetail.unlockNowBtn=지금 잠금해제
|
||||
main.vaultDetail.optionsBtn=Vault 옵션
|
||||
main.vaultDetail.passwordSavedInKeychain=비밀번호 저장됨
|
||||
main.vaultDetail.share=공유하기
|
||||
### Unlocked
|
||||
main.vaultDetail.unlockedStatus=잠금해제됨
|
||||
main.vaultDetail.accessLocation=이 Vault의 내용은 다음의 경로에서 접근할 수 있습니다:
|
||||
@@ -385,6 +419,7 @@ vaultOptions.mount.mountPoint.driveLetter=드라이브 문자를 지정하여
|
||||
vaultOptions.mount.mountPoint.custom=선택한 디렉토리 사용
|
||||
vaultOptions.mount.mountPoint.directoryPickerButton=선택
|
||||
vaultOptions.mount.mountPoint.directoryPickerTitle=디렉토리 선택
|
||||
vaultOptions.mount.volume.tcp.port=TCP 포트
|
||||
## Master Key
|
||||
vaultOptions.masterkey=비밀번호
|
||||
vaultOptions.masterkey.changePasswordBtn=비밀번호 변경
|
||||
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=Debug logging aanzetten
|
||||
preferences.general.debugDirectory=Logboekbestanden bekijken
|
||||
preferences.general.autoStart=Start Cryptomator als het systeem opstart
|
||||
preferences.general.keychainBackend=Bewaar wachtwoorden met
|
||||
preferences.general.quickAccessService=Voeg ontgrendelde kluizen toe aan snelle toegang
|
||||
## Interface
|
||||
preferences.interface=Uiterlijk
|
||||
preferences.interface.theme=Uiterlijk
|
||||
|
||||
@@ -15,6 +15,7 @@ generic.button.next=ਅੱਗੇ
|
||||
generic.button.print=ਪਰਿੰਟ ਕਰੋ
|
||||
|
||||
# Error
|
||||
error.message=ਇੱਕ ਤਰੁੱਟੀ ਆਈ ਹੈ
|
||||
|
||||
# Defaults
|
||||
defaults.vault.vaultName=ਵਾਲਟ
|
||||
@@ -318,5 +319,7 @@ quit.lockAndQuitBtn=ਲਾਕ ਕਰੋ ਤੇ ਬਾਹਰ ਜਾਓ
|
||||
# Update Reminder
|
||||
|
||||
#Dokany Support End
|
||||
dokanySupportEnd.title=ਬਰਤਰਫ਼ੀ ਨੋਟਿਸ
|
||||
dokanySupportEnd.preferencesBtn=ਪਸੰਦੀਦਾ ਖੋਲ੍ਹੋ
|
||||
|
||||
# Share Vault
|
||||
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=Włącz logowanie w trybie debug
|
||||
preferences.general.debugDirectory=Pokaż pliki logowania
|
||||
preferences.general.autoStart=Uruchom Cryptomator po uruchomieniu systemu
|
||||
preferences.general.keychainBackend=Przechowuj hasła za pomocą
|
||||
preferences.general.quickAccessService=Dodaj odblokowane sejfy do paska szybkiego dostępu
|
||||
## Interface
|
||||
preferences.interface=Interfejs
|
||||
preferences.interface.theme=Wygląd
|
||||
@@ -325,6 +326,8 @@ preferences.updates.lastUpdateCheck.never=nigdy
|
||||
preferences.updates.lastUpdateCheck.recently=niedawno
|
||||
preferences.updates.lastUpdateCheck.daysAgo=%s dni temu
|
||||
preferences.updates.lastUpdateCheck.hoursAgo=%s godzin temu
|
||||
preferences.updates.checkFailed=Nieudana próba sprawdzenia aktualizacji. Sprawdź połączenie z internetem i spróbuj ponownie.
|
||||
preferences.updates.upToDate=Cryptomator jest aktualny.
|
||||
|
||||
## Contribution
|
||||
preferences.contribute=Wesprzyj nas
|
||||
@@ -539,6 +542,9 @@ updateReminder.yesOnce=Tak, raz
|
||||
updateReminder.yesAutomatically=Tak, automatycznie
|
||||
|
||||
#Dokany Support End
|
||||
dokanySupportEnd.title=Informacja o wycofaniu
|
||||
dokanySupportEnd.message=Koniec wsparcia dla Dokany
|
||||
dokanySupportEnd.description=Typ udziału Dokany nie jest już wspierany przez Cryptomator. Twoje ustawienia zostały dostosowane do domyślnego typu udziału. Możesz sprawdzić jaki jest domyślny typ w ustawieniach.
|
||||
dokanySupportEnd.preferencesBtn=Otwórz ustawienia
|
||||
|
||||
# Share Vault
|
||||
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=Ativar o registo de erros
|
||||
preferences.general.debugDirectory=Mostrar ficheiros de registo
|
||||
preferences.general.autoStart=Iniciar o Cryptomator no início do sistema
|
||||
preferences.general.keychainBackend=Guardar palavras-passe com
|
||||
preferences.general.quickAccessService=Adicionar cofres desbloqueados à área de acesso rápido
|
||||
## Interface
|
||||
preferences.interface=Interface
|
||||
preferences.interface.theme=Aspecto e Ambiente
|
||||
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=Ativar log de debug
|
||||
preferences.general.debugDirectory=Mostrar arquivos de log
|
||||
preferences.general.autoStart=Iniciar o Cryptomator ao inicializar o sistema
|
||||
preferences.general.keychainBackend=Armazenar senhas com
|
||||
preferences.general.quickAccessService=Adicione cofres desbloqueados à área de acesso rápido
|
||||
## Interface
|
||||
preferences.interface=Interface
|
||||
preferences.interface.theme=Aparência
|
||||
|
||||
@@ -16,7 +16,7 @@ generic.button.print=Tipărește
|
||||
|
||||
# Error
|
||||
error.message=A apărut o eroare
|
||||
error.description=Cryptomatorul nu se aștepta să se întâmple asta. Puteți căuta soluții existente pentru această eroare. În cazul in care nu s-a raportat încă, nu ezitați să faceți acest lucru.
|
||||
error.description=Cryptomator nu se aștepta să se întâmple asta. Puteți căuta soluții existente pentru această eroare. În cazul in care nu s-a raportat încă, nu ezitați să faceți acest lucru.
|
||||
error.hyperlink.lookup=Caută soluții pentru această eroare
|
||||
error.hyperlink.report=Raportează această eroare
|
||||
error.technicalDetails=Detalii:
|
||||
@@ -141,6 +141,9 @@ unlock.error.customPath.description.hideawayNotDir=Fișierul ascuns, temporar "%
|
||||
unlock.error.customPath.description.couldNotBeCleaned=Seiful dvs. nu a putut fi montat în locația ''%s''. Vă rugăm încercați din nou sau alegeți o altă locație.
|
||||
unlock.error.customPath.description.notEmptyDir=Locația personalizată ''%s'' nu este un dosar gol. Vă rugăm alegeți un dosar gol și încercați din nou.
|
||||
unlock.error.customPath.description.generic=Ați selectat o locație de montare personalizată pentru acest seif, dar utilizarea acesteia a eșuat cu mesajul: %2$s
|
||||
unlock.error.restartRequired.message=Seiful nu a fost putut deschis
|
||||
unlock.error.restartRequired.description=Schimbați tipul de volum din opțiunile de seif sau reporniți Cryptomator.
|
||||
unlock.error.title=Deblocarea "%s" a eșuat
|
||||
## Hub
|
||||
hub.noKeychain.message=Cheia dispozitivului nu a putut fi accesată
|
||||
hub.noKeychain.description=Pentru a debloca seifele de tip Hub, este necesară o cheie a dispozitivului, care este securizată prin intermediul unui keychain. Pentru a continua, activați „%s” și selectați un keychain în preferințe.
|
||||
@@ -154,11 +157,21 @@ hub.receive.message=Se procesează răspunsul…
|
||||
hub.receive.description=In acest moment Criptomatorul primește și procesează răspunsul de la Hub. Vă rugăm să așteptați.
|
||||
### Register Device
|
||||
hub.register.message=Dispozitiv nou
|
||||
hub.register.description=Acesta este primul acces la Hub de pe acest dispozitiv. Vă rugăm să îl înregistrați folosind cheia de cont.
|
||||
hub.register.nameLabel=Numele dispozitivului
|
||||
hub.register.invalidAccountKeyLabel=Cheie cont nevalidă
|
||||
hub.register.registerBtn=Înregistrare
|
||||
### Register Device Legacy
|
||||
hub.register.legacy.occupiedMsg=Numele este deja în uz
|
||||
hub.register.legacy.description=Acesta este primul acces la Hub de pe acest dispozitiv. Vă rugăm să îl înregistrați folosind cheia de cont.
|
||||
### Registration Success
|
||||
hub.registerSuccess.message=Dispozitiv înregistrat
|
||||
hub.registerSuccess.description=Dispozitivul dvs. a fost înregistrat cu succes. Acum puteți continua să deblocați seiful dvs.
|
||||
hub.registerSuccess.unlockBtn=Deblocați
|
||||
hub.registerSuccess.legacy.description=Pentru a accesa seiful dispozitivului trebuie să fie autorizat în plus de către proprietarul seifului.
|
||||
### Registration Failed
|
||||
hub.registerFailed.message=Înregistrarea dispozitivului a eșuat
|
||||
hub.registerFailed.description.generic=.
|
||||
### Unauthorized
|
||||
hub.unauthorized.message=Acces respins
|
||||
hub.unauthorized.description=Dispozitivul dvs. nu a fost autorizat să acceseze acest seif. Solicitați proprietarului seifului să va autorizeze accesul.
|
||||
@@ -272,6 +285,7 @@ preferences.general.debugLogging=Activează jurnalul de depanare
|
||||
preferences.general.debugDirectory=Dezvăluie fişierele jurnal
|
||||
preferences.general.autoStart=Lansați Cryptomator la pornirea sistemului
|
||||
preferences.general.keychainBackend=Salvează parolele cu
|
||||
preferences.general.quickAccessService=Adăugați seifuri deblocate în zona de acces rapid
|
||||
## Interface
|
||||
preferences.interface=Interfață
|
||||
preferences.interface.theme=Aspect
|
||||
@@ -288,9 +302,11 @@ preferences.interface.showMinimizeButton=Arată butonul de minimizare
|
||||
preferences.interface.showTrayIcon=Arată tray icon (necesită repornire)
|
||||
## Volume
|
||||
preferences.volume=Unitate virtuală
|
||||
preferences.volume.type=Tip volum implicit
|
||||
preferences.volume.type.automatic=Automat
|
||||
preferences.volume.docsTooltip=Deschideți documentația pentru a afla mai multe despre tipurile diferite de unități de stocare.
|
||||
preferences.volume.fuseRestartRequired=Cryptomator trebuie repornit pentru ca modificările să fie aplicate.
|
||||
preferences.volume.tcp.port=Port TCP implicit
|
||||
preferences.volume.supportedFeatures=Tipul de volum selectat suportă următoarele caracteristici:
|
||||
preferences.volume.feature.mountAuto=Selectare punct de montare automat
|
||||
preferences.volume.feature.mountToDir=Director personalizat ca punct de montaj
|
||||
@@ -303,6 +319,12 @@ 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ă.
|
||||
preferences.updates.lastUpdateCheck=Ultima verificare: %s
|
||||
preferences.updates.lastUpdateCheck.never=niciodată
|
||||
preferences.updates.lastUpdateCheck.recently=recent
|
||||
preferences.updates.lastUpdateCheck.daysAgo=acum %s zile
|
||||
preferences.updates.checkFailed=Căutarea actualizărilor a eșuat. Verificați conexiunea la internet sau încercați din nou mai târziu.
|
||||
preferences.updates.upToDate=Cryptomator este actualizat.
|
||||
|
||||
## Contribution
|
||||
preferences.contribute=Susțineți-ne
|
||||
@@ -430,6 +452,7 @@ vaultOptions.general.startHealthCheckBtn=Începe verificarea de sănătate
|
||||
|
||||
## Mount
|
||||
vaultOptions.mount=Montare
|
||||
vaultOptions.mount.info=Deschideți preferințele drive-ului virtual pentru a modifica setările implicite.
|
||||
vaultOptions.mount.readonly=Doar citire
|
||||
vaultOptions.mount.customMountFlags=Atribute de montare personalizate
|
||||
vaultOptions.mount.winDriveLetterOccupied=ocupat
|
||||
@@ -439,6 +462,9 @@ vaultOptions.mount.mountPoint.driveLetter=Utilizați litera de unitate atribuit
|
||||
vaultOptions.mount.mountPoint.custom=Folosește directorul ales
|
||||
vaultOptions.mount.mountPoint.directoryPickerButton=Alege…
|
||||
vaultOptions.mount.mountPoint.directoryPickerTitle=Alege un director
|
||||
vaultOptions.mount.volumeType.default=Implicit (%s)
|
||||
vaultOptions.mount.volumeType.restartRequired=Cryptomator trebuie repornit pentru ca modificările să fie aplicate.
|
||||
vaultOptions.mount.volume.tcp.port=Portul TCP
|
||||
## Master Key
|
||||
vaultOptions.masterkey=Parolă
|
||||
vaultOptions.masterkey.changePasswordBtn=Schimbați parola
|
||||
@@ -511,6 +537,22 @@ updateReminder.yesOnce=Da, o dată
|
||||
updateReminder.yesAutomatically=Da, automat
|
||||
|
||||
#Dokany Support End
|
||||
dokanySupportEnd.description=Tipul de volum Dokany nu mai este suportat de Criptomator. Setările dvs. sunt ajustate pentru a utiliza acum tipul de volum implicit. Puteți vizualiza tipul implicit din preferințe.
|
||||
dokanySupportEnd.preferencesBtn=Deschideţi preferinţele
|
||||
|
||||
# Share Vault
|
||||
shareVault.title=Partajare seif
|
||||
shareVault.message=Doriți să vă împărtășiți seiful cu ceilalți?
|
||||
shareVault.description=Fiți întotdeauna precauți când împărtășiți seiful cu alte persoane. Pe scurt, urmați acești pași:
|
||||
shareVault.instruction.1=1. Partajarea accesului la folderul criptat din seif prin stocarea în cloud.
|
||||
shareVault.instruction.2=2. Partajează parola seifului într-un mod sigur.
|
||||
shareVault.remarkBestPractices=Pentru mai multe informații, consultați cele mai bune practici sugerate în documentele noastre.
|
||||
shareVault.hubAd.description=Modul securizat de a lucra în echipe
|
||||
shareVault.hubAd.keyManagement=• Managementul cheie al cunoașterii spațiale
|
||||
shareVault.hubAd.authentication=• Autentificare puternică
|
||||
shareVault.hubAd.encryption=• Criptare în ambele părți
|
||||
shareVault.visitHub=Vizitează Hub pentru Criptomator
|
||||
|
||||
shareVault.hub.description=Pentru a partaja conținutul de seif cu un alt membru al echipei, trebuie să efectuați doi pași:
|
||||
shareVault.hub.instruction.1=1. Partajarea accesului la folderul criptat din seif prin stocarea în cloud.
|
||||
shareVault.hub.instruction.2=2. Acordă acces membrului echipei din hub-ul Cryptomator.
|
||||
@@ -15,8 +15,8 @@ generic.button.next=Далее
|
||||
generic.button.print=Печать
|
||||
|
||||
# Error
|
||||
error.message=Ошибка: %s
|
||||
error.description=Произошла непредвиденная ситуация. Попробуйте найти уже имеющиеся решения этой ошибки. Если об этой ошибке ещё не сообщали, то сообщите вы.
|
||||
error.message=Произошла ошибка
|
||||
error.description=Произошла непредвиденная ситуация. Попробуйте найти уже имеющиеся решения этой ошибки. Если об этой ошибке ещё не сообщали, то сделайте это сами.
|
||||
error.hyperlink.lookup=Найти ошибку
|
||||
error.hyperlink.report=Сообщить об ошибке
|
||||
error.technicalDetails=Подробности:
|
||||
@@ -47,7 +47,7 @@ addvaultwizard.new.nameInstruction=Выберите имя для хранили
|
||||
addvaultwizard.new.namePrompt=Имя хранилища
|
||||
### Location
|
||||
addvaultwizard.new.locationInstruction=Где Cryptomator должен хранить зашифрованные файлы хранилища?
|
||||
addvaultwizard.new.locationLoading=Проверка локальной файловой системы на наличие облачных каталогов по умолчанию…
|
||||
addvaultwizard.new.locationLoading=Поиск в локальной файловой системе облачных каталогов по умолчанию…
|
||||
addvaultwizard.new.locationLabel=Место хранения
|
||||
addvaultwizard.new.locationPrompt=…
|
||||
addvaultwizard.new.directoryPickerLabel=Другое место
|
||||
@@ -92,7 +92,7 @@ addvault.new.readme.accessLocation.2=Это место доступа к ваш
|
||||
addvault.new.readme.accessLocation.3=Любые файлы, добавленные в этот том, будут зашифрованы Cryptomator. Вы можете работать с ним как с любым другим диском или папкой. Здесь отображается только расшифрованное содержимое тома, ваши файлы остаются зашифрованными на жёстком диске постоянно.
|
||||
addvault.new.readme.accessLocation.4=Этот файл можно удалить.
|
||||
## Existing
|
||||
addvaultwizard.existing.title=Добавить существующее хранилище
|
||||
addvaultwizard.existing.title=Добавить имеющееся хранилище
|
||||
addvaultwizard.existing.instruction=Выберите файл "vault.cryptomator" существующего хранилища. Если имеется только файл "masterkey.cryptomator", выберите его.
|
||||
addvaultwizard.existing.chooseBtn=Выбрать…
|
||||
addvaultwizard.existing.filePickerTitle=Выберите файл хранилища
|
||||
@@ -104,7 +104,7 @@ addvaultwizard.success.unlockNow=Разблокировать
|
||||
# Remove Vault
|
||||
removeVault.title=Удалить "%s"
|
||||
removeVault.message=Удалить хранилище?
|
||||
removeVault.description=Cryptomator просто забудет это хранилище. Позже вы можете добавить его снова. Зашифрованные файлы не будут удалены с жёсткого диска.
|
||||
removeVault.description=Cryptomator просто забудет это хранилище. Позже вы можете добавить его снова. Зашифрованные файлы не будут удалены с диска.
|
||||
removeVault.confirmBtn=Удалить хранилище
|
||||
|
||||
# Change Password
|
||||
@@ -129,18 +129,18 @@ unlock.chooseMasterkey.description=Не удалось найти файл ма
|
||||
unlock.chooseMasterkey.filePickerTitle=Выберите файл MasterKey
|
||||
unlock.chooseMasterkey.filePickerMimeDesc=Мастер-ключ Cryptomator
|
||||
## Success
|
||||
unlock.success.message=Разблокировка прошла успешно
|
||||
unlock.success.description=Разблокировка "%s" успешно выполнена! Доступ в хранилище открыт через его виртуальный диск.
|
||||
unlock.success.message=Успешно разблокировано
|
||||
unlock.success.description=Содержимое хранилища "%s" теперь доступно через его точку монтирования.
|
||||
unlock.success.rememberChoice=Запомнить выбор и больше не спрашивать
|
||||
unlock.success.revealBtn=Показать диск
|
||||
## Failure
|
||||
unlock.error.customPath.message=Невозможно смонтировать хранилище по указанному пути
|
||||
unlock.error.customPath.description.notSupported=Если вы хотите продолжить использование пользовательского пути, перейдите в настройки и выберите тип тома, который его поддерживает. В противном случае, перейдите в настройки хранилища и выберите поддерживаемую точку монтирования.
|
||||
unlock.error.customPath.description.notExists=Пользовательский путь монтирования не существует. Либо создайте его в локальной файловой системе, либо измените в параметрах хранилища.
|
||||
unlock.error.customPath.message=Невозможно смонтировать хранилище к указанному пути
|
||||
unlock.error.customPath.description.notSupported=Если вы хотите продолжить использование указанного пути, перейдите в настройки и выберите тип тома, который его поддерживает. В противном случае перейдите в настройки хранилища и выберите поддерживаемую точку монтирования.
|
||||
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.notEmptyDir=Путь монтирования "%s" - не пустая папка. Выберите пустую папку и повторите попытку.
|
||||
unlock.error.customPath.description.generic=Выбранный вами путь монтирования для хранилища не удалось использовать: %2$s
|
||||
unlock.error.restartRequired.message=Невозможно разблокировать хранилище
|
||||
unlock.error.restartRequired.description=Измените тип тома в настройках хранилища или перезапустите Cryptomator.
|
||||
@@ -205,7 +205,7 @@ migration.start.remarkUndone=Это обновление не может быт
|
||||
migration.start.remarkVersions=Старые версии Cryptomator не смогут открыть обновлённое хранилище.
|
||||
migration.start.remarkCanRun=Вы должны быть уверены, что все устройства, с которых у вас есть доступ к хранилищу, могут запускать эту версию Cryptomator.
|
||||
migration.start.remarkSynced=Вы должны быть уверены, что хранилище перед обновлением полностью синхронизировано на этом и на других ваших устройствах.
|
||||
migration.start.confirm=Мной прочитана и понята информация выше
|
||||
migration.start.confirm=Информация выше прочитана и понятна
|
||||
## Run
|
||||
migration.run.enterPassword=Введите пароль для "%s"
|
||||
migration.run.startMigrationBtn=Перенести хранилище
|
||||
@@ -233,7 +233,7 @@ health.intro.text=Проверка состояния это набор тест
|
||||
health.intro.remarkSync=Убедитесь, что все устройства полностью синхронизированы, это решает большинство проблем.
|
||||
health.intro.remarkFix=Не все проблемы могут быть исправлены.
|
||||
health.intro.remarkBackup=Если данные повреждены, помочь может только резервная копия.
|
||||
health.intro.affirmation=Информация выше мною прочитана и понятна
|
||||
health.intro.affirmation=Информация выше прочитана и понятна
|
||||
## Start Failure
|
||||
health.fail.header=Ошибка при загрузке конфигурации хранилища
|
||||
health.fail.ioError=Ошибка при доступе и чтении конфигурационного файла.
|
||||
@@ -254,7 +254,7 @@ health.check.detail.checkFinishedAndFound=Проверка завершена.
|
||||
health.check.detail.checkFailed=Проверка прервана из-за ошибки.
|
||||
health.check.detail.checkCancelled=Проверка была отменена.
|
||||
health.check.detail.listFilters.label=Фильтр
|
||||
health.check.detail.fixAllSpecificBtn=Исправить все типы
|
||||
health.check.detail.fixAllSpecificBtn=Исправить все
|
||||
health.check.exportBtn=Экспорт отчёта
|
||||
## Result view
|
||||
health.result.severityFilter.all=Уровень - все
|
||||
@@ -266,9 +266,9 @@ 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.all=Исправление - Все
|
||||
health.result.fixStateFilter.fixable=Возможно исправление
|
||||
health.result.fixStateFilter.notFixable=Исправление невозможно
|
||||
health.result.fixStateFilter.notFixable=Неисправимо
|
||||
health.result.fixStateFilter.fixing=Исправление…
|
||||
health.result.fixStateFilter.fixed=Исправлено
|
||||
health.result.fixStateFilter.fixFailed=Исправить не удалось
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=Вести журнал отладки
|
||||
preferences.general.debugDirectory=Показать файлы журнала
|
||||
preferences.general.autoStart=Запускать Cryptomator при старте системы
|
||||
preferences.general.keychainBackend=Хранение паролей
|
||||
preferences.general.quickAccessService=Добавлять открытые хранилища в область быстрого доступа
|
||||
## Interface
|
||||
preferences.interface=Интерфейс
|
||||
preferences.interface.theme=Отображение
|
||||
@@ -324,7 +325,7 @@ preferences.updates.lastUpdateCheck=Последняя проверка: %s
|
||||
preferences.updates.lastUpdateCheck.never=никогда
|
||||
preferences.updates.lastUpdateCheck.recently=недавно
|
||||
preferences.updates.lastUpdateCheck.daysAgo=%s дн. назад
|
||||
preferences.updates.lastUpdateCheck.hoursAgo=%s часов назад
|
||||
preferences.updates.lastUpdateCheck.hoursAgo=%s ч назад
|
||||
preferences.updates.checkFailed=Ошибка поиска обновлений. Проверьте подключение к Интернету и повторите попытку.
|
||||
preferences.updates.upToDate=У вас новейшая версия Cryptomator.
|
||||
|
||||
@@ -390,7 +391,7 @@ main.vaultlist.contextMenu.vaultoptions=Параметры хранилища
|
||||
main.vaultlist.contextMenu.reveal=Показать диск
|
||||
main.vaultlist.addVaultBtn=Добавить
|
||||
main.vaultlist.addVaultBtn.menuItemNew=Новое хранилище...
|
||||
main.vaultlist.addVaultBtn.menuItemExisting=Существующее хранилище...
|
||||
main.vaultlist.addVaultBtn.menuItemExisting=Имеющееся хранилище...
|
||||
## Vault Detail
|
||||
### Welcome
|
||||
main.vaultDetail.welcomeOnboarding=Благодарим за выбор Cryptomator для защиты ваших файлов. Если требуется помощь, ознакомьтесь с документацией по началу работы:
|
||||
@@ -415,7 +416,7 @@ main.vaultDetail.throughput.mbps=%.1f МиБ/с
|
||||
main.vaultDetail.stats=Статистика хранилища
|
||||
main.vaultDetail.locateEncryptedFileBtn=Найти зашифрованный файл
|
||||
main.vaultDetail.locateEncryptedFileBtn.tooltip=Выберите файл из своего хранилища, чтобы найти его зашифрованный дубликат
|
||||
main.vaultDetail.encryptedPathsCopied=Пути скопированы в буфер обмена!
|
||||
main.vaultDetail.encryptedPathsCopied=Пути скопированы в буфер обмена.
|
||||
main.vaultDetail.filePickerTitle=Выберите файл внутри хранилища
|
||||
### Missing
|
||||
main.vaultDetail.missing.info=Cryptomator не смог найти хранилище по этому пути.
|
||||
@@ -426,7 +427,7 @@ main.vaultDetail.missing.changeLocation=Изменить расположени
|
||||
main.vaultDetail.migrateButton=Обновить хранилище
|
||||
main.vaultDetail.migratePrompt=Чтобы получить доступ к хранилищу, его нужно преобразовать в новый формат
|
||||
### Error
|
||||
main.vaultDetail.error.info=Произошла ошибка при загрузке хранилища с диска.
|
||||
main.vaultDetail.error.info=Ошибка при загрузке хранилища с диска.
|
||||
main.vaultDetail.error.reload=Перезагрузить
|
||||
main.vaultDetail.error.windowTitle=Ошибка загрузки хранилища
|
||||
|
||||
@@ -455,7 +456,7 @@ vaultOptions.general.startHealthCheckBtn=Начать проверку сост
|
||||
|
||||
## Mount
|
||||
vaultOptions.mount=Монтирование
|
||||
vaultOptions.mount.info=Откройте настройки виртуального диска, чтобы изменить настройки по умолчанию.
|
||||
vaultOptions.mount.info=Откройте настройки виртуального диска, чтобы изменить параметры по умолчанию.
|
||||
vaultOptions.mount.readonly=Только чтение
|
||||
vaultOptions.mount.customMountFlags=Другие флаги монтирования
|
||||
vaultOptions.mount.winDriveLetterOccupied=занято
|
||||
@@ -473,7 +474,7 @@ vaultOptions.mount.volume.type=Тип тома
|
||||
vaultOptions.masterkey=Пароль
|
||||
vaultOptions.masterkey.changePasswordBtn=Изменить пароль
|
||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Забыть сохранённый пароль
|
||||
vaultOptions.masterkey.recoveryKeyExplanation=При утере пароля восстановить доступ к хранилищу можно только с помощью ключа восстановления.
|
||||
vaultOptions.masterkey.recoveryKeyExplanation=При утере пароля вернуть доступ к хранилищу можно только с помощью ключа восстановления.
|
||||
vaultOptions.masterkey.showRecoveryKeyBtn=Показать ключ восстановления
|
||||
vaultOptions.masterkey.recoverPasswordBtn=Сброс пароля
|
||||
## Hub
|
||||
@@ -485,7 +486,7 @@ vaultOptions.hub.convertBtn=Преобразовать в хранилище с
|
||||
## Display Recovery Key
|
||||
recoveryKey.display.title=Показать ключ восстановления
|
||||
recoveryKey.create.message=Требуется пароль
|
||||
recoveryKey.create.description=Введите пароль, чтобы показать ключ для "%s":
|
||||
recoveryKey.create.description=Введите пароль для "%s", чтобы показать его ключ восстановления.
|
||||
recoveryKey.display.description=Ключ для восстановления доступа к "%s":
|
||||
recoveryKey.display.StorageHints=Храните его в надёжном месте, например:\n • в диспетчере паролей\n • на флеш-накопителе USB\n • распечатанным на бумаге
|
||||
## Reset Password
|
||||
@@ -561,7 +562,7 @@ shareVault.hubAd.encryption=• Сквозное шифрование
|
||||
shareVault.visitHub=Посетить хаб Cryptomator
|
||||
|
||||
shareVault.hub.message=Как поделиться хранилищем в хабе
|
||||
shareVault.hub.description=Чтобы поделиться содержимым хранилища с другим членом команды:
|
||||
shareVault.hub.description=Чтобы поделиться содержимым хранилища с другим членом команды, выполните два шага:
|
||||
shareVault.hub.instruction.1=1. Делитесь доступом к зашифрованной папке хранилища через облако.
|
||||
shareVault.hub.instruction.2=2. Предоставьте доступ члену команды в хабе Cryptomator.
|
||||
shareVault.hub.openHub=Открыть хаб Cryptomator
|
||||
@@ -279,6 +279,7 @@ preferences.general.debugLogging=Povoliť logovanie chýb
|
||||
preferences.general.debugDirectory=Ukázať súbory logov
|
||||
preferences.general.autoStart=Spustiť Cryptomator pri štarte systému
|
||||
preferences.general.keychainBackend=Uložiť heslá v
|
||||
preferences.general.quickAccessService=Pridať odomknuté trezory na plochu rýchleho prístupu
|
||||
## Interface
|
||||
preferences.interface=Rozhranie
|
||||
preferences.interface.theme=Vzhľad a pocit
|
||||
|
||||
@@ -71,6 +71,7 @@ unlock.unlockBtn=Odkleni
|
||||
### Waiting
|
||||
### Receive Key
|
||||
### Register Device
|
||||
hub.register.registerBtn=Registracija
|
||||
### Register Device Legacy
|
||||
### Registration Success
|
||||
hub.registerSuccess.unlockBtn=Odkleni
|
||||
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=Aktivera loggning för felsökning
|
||||
preferences.general.debugDirectory=Visa loggfiler
|
||||
preferences.general.autoStart=Starta Cryptomator vid systemstart
|
||||
preferences.general.keychainBackend=Spara lösenord med
|
||||
preferences.general.quickAccessService=Lägg till olåsta valv till snabbåtkomstområdet
|
||||
## Interface
|
||||
preferences.interface=Gränssnitt
|
||||
preferences.interface.theme=Utseende & känsla
|
||||
|
||||
@@ -20,7 +20,7 @@ error.description=Cryptomator bunun olmasını beklemiyordu. Bu hata için mevcu
|
||||
error.hyperlink.lookup=Bu hatayı araştır
|
||||
error.hyperlink.report=Bu hatayı bildir
|
||||
error.technicalDetails=Detaylar:
|
||||
error.existingSolutionDescription=Cryptomator bunun olmasını beklemiyordu. Ancak bu hata için hali hazırda bir çözüm olduğunu bulduk. Lütfen aşağıdaki bağlantıya göz atın.
|
||||
error.existingSolutionDescription=Cryptomator bunun olmasını beklemiyordu. Ancak bu hata için mevcut bir çözüm bulduk. Lütfen aşağıdaki bağlantıya bir göz atın.
|
||||
error.hyperlink.solution=Çözüme bak
|
||||
error.lookupPermissionMessage=Cryptomator bu soruna çevrimiçi bir çözüm arayabilir. Bu, sorun veritabanımıza IP adresinizden bir istek gönderecektir.
|
||||
error.dismiss=Yoksay
|
||||
@@ -50,7 +50,7 @@ addvaultwizard.new.locationInstruction=Cryptomator kasanızın şifreli dosyalar
|
||||
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
|
||||
addvaultwizard.new.directoryPickerLabel=Özel konum
|
||||
addvaultwizard.new.directoryPickerButton=Seç…
|
||||
addvaultwizard.new.directoryPickerTitle=Dizin Seç
|
||||
addvaultwizard.new.fileAlreadyExists=Kasa adına sahip bir dosya veya dizin zaten mevcut
|
||||
@@ -110,7 +110,7 @@ removeVault.confirmBtn=Kasayı Sil
|
||||
# Change Password
|
||||
changepassword.title=Şifreyi Değiştir
|
||||
changepassword.enterOldPassword="%s" için mevcut şifreyi girin
|
||||
changepassword.finalConfirmation=Şifremi unutursam verilerime ulaşamayacağımın farkındayım
|
||||
changepassword.finalConfirmation=Şifremi unuttuğum takdirde verilerime erişemeyeceğimi anlıyorum
|
||||
|
||||
# Forget Password
|
||||
forgetPassword.title=Şifreyi Unut
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=Hata ayıklama günlüğünü etkinleştir
|
||||
preferences.general.debugDirectory=Kayıt dosyalarını göster
|
||||
preferences.general.autoStart=Cryptomator'u sistem başlangıcında çalıştır
|
||||
preferences.general.keychainBackend=Şifreleri şununla depola:
|
||||
preferences.general.quickAccessService=Hızlı erişim alanına kilidi açılmış kasaları ekle
|
||||
## Interface
|
||||
preferences.interface=Arayüz
|
||||
preferences.interface.theme=Görünüş ve Davranış
|
||||
@@ -445,7 +446,7 @@ wrongFileAlert.link=Daha fazla yardım için, ziyaret edin:
|
||||
vaultOptions.general=Genel
|
||||
vaultOptions.general.vaultName=Kasa Adı
|
||||
vaultOptions.general.autoLock.lockAfterTimePart1=Boşta olduğunda kilitle
|
||||
vaultOptions.general.autoLock.lockAfterTimePart2=dk
|
||||
vaultOptions.general.autoLock.lockAfterTimePart2=dakika
|
||||
vaultOptions.general.unlockAfterStartup=Cryptomator başlatıldığında kasayı aç
|
||||
vaultOptions.general.actionAfterUnlock=Başarılı kilit açmanın ardından
|
||||
vaultOptions.general.actionAfterUnlock.ignore=Hiçbir şey yapma
|
||||
@@ -541,6 +542,9 @@ updateReminder.yesOnce=Evet, tek seferlik
|
||||
updateReminder.yesAutomatically=Evet, otomatik olarak
|
||||
|
||||
#Dokany Support End
|
||||
dokanySupportEnd.title=Destek sonlandırma bildirimi
|
||||
dokanySupportEnd.message=Dokany için destek sonu
|
||||
dokanySupportEnd.description=Dokany birim türü artık Cryptomator tarafından desteklenmiyor. Ayarlarınız artık varsayılan birim türünü kullanacak şekilde ayarlanmıştır. Varsayılan birim türünü tercihlerde görüntüleyebilirsiniz.
|
||||
dokanySupportEnd.preferencesBtn=Özellikleri Aç
|
||||
|
||||
# Share Vault
|
||||
|
||||
@@ -22,7 +22,7 @@ error.hyperlink.lookup=Дізнатися більше про цю помилк
|
||||
error.hyperlink.report=Повідомити про цю помилку
|
||||
error.technicalDetails=Докладно:
|
||||
error.existingSolutionDescription=Cryptomator не очікував, що це станеться. Але ми знайшли спосіб розв'язання цієї проблеми. Ознайомтесь з ним, будь ласка, далі.
|
||||
error.hyperlink.solution=Знайдіть рішення
|
||||
error.hyperlink.solution=Ознайомтесь із рішенням
|
||||
error.lookupPermissionMessage=Cryptomator може спробувати знайти спосіб розв'язання цієї проблеми онлайн. Це передбачає відправку запиту до нашої бази даних проблем з вашої ІР.
|
||||
error.dismiss=Відхилити
|
||||
error.lookUpSolution=Пошук рішення
|
||||
@@ -288,6 +288,7 @@ preferences.general.debugLogging=Увімкнути ведення журнал
|
||||
preferences.general.debugDirectory=Показати файли журналу
|
||||
preferences.general.autoStart=Запускати Cryptomator під час запуску системи
|
||||
preferences.general.keychainBackend=Зберігати паролі за допомогою
|
||||
preferences.general.quickAccessService=Додати до області швидкого доступу розблоковані сховища
|
||||
## Interface
|
||||
preferences.interface=Вигляд
|
||||
preferences.interface.theme=Колір і стиль
|
||||
@@ -542,6 +543,9 @@ updateReminder.yesOnce=Так, лише раз
|
||||
updateReminder.yesAutomatically=Так, автоматично
|
||||
|
||||
#Dokany Support End
|
||||
dokanySupportEnd.title=Застаріле повідомлення
|
||||
dokanySupportEnd.message=Закінчення підтримки Dokany
|
||||
dokanySupportEnd.description=Тип сховища Dokany більше не підтримується в Cryptomator. Тепер ваші налаштування змінено для використання типового типу сховища. Ви можете переглянути тип сховища за замовчуванням в налаштуваннях.
|
||||
dokanySupportEnd.preferencesBtn=Відкрити налаштування
|
||||
|
||||
# Share Vault
|
||||
|
||||
118
src/main/resources/i18n/strings_ur.properties
Normal file
118
src/main/resources/i18n/strings_ur.properties
Normal file
@@ -0,0 +1,118 @@
|
||||
# Locale Specific CSS files such as CJK, RTL,...
|
||||
|
||||
# Generics
|
||||
## Button
|
||||
|
||||
# Error
|
||||
|
||||
# Defaults
|
||||
|
||||
# Tray Menu
|
||||
|
||||
# Add Vault Wizard
|
||||
## New
|
||||
### Name
|
||||
### Location
|
||||
### Expert Settings
|
||||
### Password
|
||||
### Information
|
||||
## Existing
|
||||
## Success
|
||||
|
||||
# Remove Vault
|
||||
|
||||
# Change Password
|
||||
|
||||
# Forget Password
|
||||
|
||||
# Unlock
|
||||
## Select
|
||||
## Success
|
||||
## Failure
|
||||
## Hub
|
||||
### Waiting
|
||||
### Receive Key
|
||||
### Register Device
|
||||
### Register Device Legacy
|
||||
### Registration Success
|
||||
### Registration Failed
|
||||
### Unauthorized
|
||||
### Requires Account Initialization
|
||||
### License Exceeded
|
||||
|
||||
# Lock
|
||||
## Force
|
||||
## Failure
|
||||
|
||||
# Migration
|
||||
## Start
|
||||
## Run
|
||||
## Success
|
||||
## Missing file system capabilities
|
||||
## Impossible
|
||||
|
||||
# Health Check
|
||||
## Start
|
||||
## Start Failure
|
||||
## Check Selection
|
||||
## Detail view
|
||||
## Result view
|
||||
## Fix Application
|
||||
|
||||
# Preferences
|
||||
## General
|
||||
## Interface
|
||||
## Volume
|
||||
## Updates
|
||||
|
||||
## Contribution
|
||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||
|
||||
## About
|
||||
|
||||
# Vault Statistics
|
||||
## Read
|
||||
## Write
|
||||
|
||||
## Accesses
|
||||
|
||||
|
||||
# Main Window
|
||||
## Vault List
|
||||
## Vault Detail
|
||||
### Welcome
|
||||
### Locked
|
||||
### Unlocked
|
||||
### Missing
|
||||
### Needs Migration
|
||||
### Error
|
||||
|
||||
# Wrong File Alert
|
||||
|
||||
# Vault Options
|
||||
## General
|
||||
|
||||
## Mount
|
||||
## Master Key
|
||||
## Hub
|
||||
|
||||
# Recovery Key
|
||||
## Display Recovery Key
|
||||
## Reset Password
|
||||
### Enter Recovery Key
|
||||
### Reset Password
|
||||
### Recovery Key Password Reset Success
|
||||
|
||||
# Convert Vault
|
||||
|
||||
# New Password
|
||||
|
||||
# Quit
|
||||
|
||||
# Forced Quit
|
||||
|
||||
# Update Reminder
|
||||
|
||||
#Dokany Support End
|
||||
|
||||
# Share Vault
|
||||
@@ -3,7 +3,7 @@
|
||||
# Generics
|
||||
## Button
|
||||
generic.button.apply=应用
|
||||
generic.button.back=返回
|
||||
generic.button.back=后退
|
||||
generic.button.cancel=取消
|
||||
generic.button.change=更改
|
||||
generic.button.choose=选择...
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=启用调试日志
|
||||
preferences.general.debugDirectory=显示日志文件
|
||||
preferences.general.autoStart=开机自动启动
|
||||
preferences.general.keychainBackend=存储密码方式
|
||||
preferences.general.quickAccessService=将已解锁的保险库添加到快速访问区域
|
||||
## Interface
|
||||
preferences.interface=用户界面
|
||||
preferences.interface.theme=界面外观
|
||||
|
||||
@@ -6,7 +6,7 @@ generic.button.apply=套用
|
||||
generic.button.back=上一頁
|
||||
generic.button.cancel=取消
|
||||
generic.button.change=修改
|
||||
generic.button.choose=选择...
|
||||
generic.button.choose=選擇…
|
||||
generic.button.close=關閉
|
||||
generic.button.copy=複製
|
||||
generic.button.copied=已複製!
|
||||
@@ -208,7 +208,7 @@ migration.start.remarkSynced=您必須確保您的檔案庫在升級之前已經
|
||||
migration.start.confirm=我已閱讀並理解上述資訊
|
||||
## Run
|
||||
migration.run.enterPassword=輸入 "%s" 的密碼
|
||||
migration.run.startMigrationBtn=迁移加密檔案庫
|
||||
migration.run.startMigrationBtn=遷移加密檔案庫
|
||||
migration.run.progressHint=這可能需要一點時間…
|
||||
## Success
|
||||
migration.success.nextStepsInstructions=已成功升級 "%s"。\n您現在可以解鎖您的加密檔案庫了。
|
||||
@@ -287,6 +287,7 @@ preferences.general.debugLogging=啟用除錯日誌
|
||||
preferences.general.debugDirectory=顯示日誌檔
|
||||
preferences.general.autoStart=系統啟動時同時啟動 Cryptomator
|
||||
preferences.general.keychainBackend=儲存密碼使用
|
||||
preferences.general.quickAccessService=將已解鎖的檔案庫加入快捷工具區
|
||||
## Interface
|
||||
preferences.interface=介面
|
||||
preferences.interface.theme=外觀
|
||||
@@ -541,6 +542,9 @@ updateReminder.yesOnce=是,僅一次
|
||||
updateReminder.yesAutomatically=是,自動
|
||||
|
||||
#Dokany Support End
|
||||
dokanySupportEnd.title=棄用通知
|
||||
dokanySupportEnd.message=對Dokany檔案系統結束支援
|
||||
dokanySupportEnd.description=Cryptomator 不再支援 Dokany 檔案系統。已將您的設定調整為使用預設的檔案系統類型。您可以在偏好設定中查看預設的檔案系統類型。
|
||||
dokanySupportEnd.preferencesBtn=開啟偏好設定
|
||||
|
||||
# Share Vault
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
*******************************************************************************/
|
||||
package org.cryptomator.common.keychain;
|
||||
|
||||
import org.cryptomator.integrations.keychain.KeychainAccessException;
|
||||
import org.cryptomator.integrations.keychain.KeychainAccessProvider;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -20,7 +21,7 @@ class MapKeychainAccess implements KeychainAccessProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void storePassphrase(String key, String displayName,CharSequence passphrase) {
|
||||
public void storePassphrase(String key, String displayName,CharSequence passphrase, boolean ignored) {
|
||||
char[] pw = new char[passphrase.length()];
|
||||
for (int i = 0; i < passphrase.length(); i++) {
|
||||
pw[i] = passphrase.charAt(i);
|
||||
@@ -39,7 +40,7 @@ class MapKeychainAccess implements KeychainAccessProvider {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changePassphrase(String key, String displayName, CharSequence passphrase) {
|
||||
public void changePassphrase(String key, String displayName, CharSequence passphrase) throws KeychainAccessException {
|
||||
map.get(key);
|
||||
storePassphrase(key, displayName, passphrase);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user