mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-09-24 17:05:00 +00:00
Compare commits
64
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0d5a3346f6 | ||
|
|
cfaa4ceffc | ||
|
|
db843bb1d5 | ||
|
|
b4539979a4 | ||
|
|
d241f022ab | ||
|
|
2a5e09bc32 | ||
|
|
85a7383c56 | ||
|
|
526b2a1e72 | ||
|
|
e4da494202 | ||
|
|
55c7636a7b | ||
|
|
af4603f022 | ||
|
|
09cf76df68 | ||
|
|
cfe61a51b6 | ||
|
|
9c83baabd5 | ||
|
|
3e216ed0ac | ||
|
|
0b488efbb3 | ||
|
|
ae2ad6e00f | ||
|
|
76811f92e6 | ||
|
|
1fbd07b4a6 | ||
|
|
21774784a1 | ||
|
|
4a13b4145d | ||
|
|
efc77e4997 | ||
|
|
cf17a3f9ca | ||
|
|
560513d7e8 | ||
|
|
9e66f4b93e | ||
|
|
407718d0a1 | ||
|
|
b98691ee52 | ||
|
|
e482574aaf | ||
|
|
9f068d0b2c | ||
|
|
bbb30ebe0f | ||
|
|
a0fd6618a7 | ||
|
|
09a2f76e15 | ||
|
|
5cdd2e006b | ||
|
|
f187decf0a | ||
|
|
869407cded | ||
|
|
3a2420dd91 | ||
|
|
bca920c75e | ||
|
|
a457355a25 | ||
|
|
947344e5bc | ||
|
|
cc6471840f | ||
|
|
cf633d74d2 | ||
|
|
2f32ab1376 | ||
|
|
460e6528bf | ||
|
|
348b015bdc | ||
|
|
903e022d29 | ||
|
|
e5f66281c2 | ||
|
|
21f45d43f7 | ||
|
|
72286de9fe | ||
|
|
981902409c | ||
|
|
aef1bf821a | ||
|
|
6b4ea9a9eb | ||
|
|
e7b9f73516 | ||
|
|
957640b1ba | ||
|
|
31ca102263 | ||
|
|
7df028b0b8 | ||
|
|
03eebfe486 | ||
|
|
58d65c609f | ||
|
|
b529764eb4 | ||
|
|
ec9a4465eb | ||
|
|
e5509bd63f | ||
|
|
4223d15c08 | ||
|
|
396b541cd2 | ||
|
|
a097a42a9b | ||
|
|
e811f5313d |
+121
-21
@@ -2,6 +2,11 @@ name: Installers and Release
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
semver:
|
||||||
|
description: 'SemVer'
|
||||||
|
required: true
|
||||||
|
default: '0.99.99-SNAPSHOT'
|
||||||
push:
|
push:
|
||||||
tags: # see https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet
|
tags: # see https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet
|
||||||
- '[0-9]+.[0-9]+.[0-9]+'
|
- '[0-9]+.[0-9]+.[0-9]+'
|
||||||
@@ -61,7 +66,7 @@ jobs:
|
|||||||
target/libs
|
target/libs
|
||||||
target/mods
|
target/mods
|
||||||
target/LICENSE.txt
|
target/LICENSE.txt
|
||||||
target/${{ matrix.launcher }}
|
target/launcher*
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -71,8 +76,9 @@ jobs:
|
|||||||
name: Determine Version Metadata
|
name: Determine Version Metadata
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
versionStr: ${{ steps.versions.outputs.versionStr }}
|
semVerNum: ${{ steps.versions.outputs.semVerNum }}
|
||||||
versionNum: ${{ steps.versions.outputs.versionNum }}
|
semVerStr: ${{ steps.versions.outputs.semVerStr }}
|
||||||
|
ppaVerStr: ${{ steps.versions.outputs.ppaVerStr }}
|
||||||
revNum: ${{ steps.versions.outputs.revNum }}
|
revNum: ${{ steps.versions.outputs.revNum }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
@@ -81,14 +87,19 @@ jobs:
|
|||||||
- id: versions
|
- id: versions
|
||||||
run: |
|
run: |
|
||||||
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
||||||
VERSION_NUM=`echo ${GITHUB_REF##*/} | sed -E 's/([0-9]+\.[0-9]+\.[0-9]+).*/\1/'`
|
SEM_VER_STR=${GITHUB_REF##*/}
|
||||||
echo "::set-output name=versionStr::${GITHUB_REF##*/}"
|
|
||||||
echo "::set-output name=versionNum::${VERSION_NUM}"
|
|
||||||
else
|
else
|
||||||
echo "::set-output name=versionStr::SNAPSHOT"
|
SEM_VER_STR=${{ github.event.inputs.semver }}
|
||||||
echo "::set-output name=versionNum::99.0.0"
|
|
||||||
fi
|
fi
|
||||||
echo "::set-output name=revNum::`git rev-list --count HEAD`"
|
SEM_VER_NUM=`echo ${SEM_VER_STR} | sed -E 's/([0-9]+\.[0-9]+\.[0-9]+).*/\1/'`
|
||||||
|
REVCOUNT=`git rev-list --count HEAD`
|
||||||
|
echo "::set-output name=semVerStr::${SEM_VER_STR}"
|
||||||
|
echo "::set-output name=semVerNum::${SEM_VER_NUM}"
|
||||||
|
echo "::set-output name=ppaVerStr::${SEM_VER_STR/-/\~}-${REVCOUNT}"
|
||||||
|
echo "::set-output name=revNum::${REVCOUNT}"
|
||||||
|
- uses: rubenesp87/semver-validation-action@0.0.6
|
||||||
|
with:
|
||||||
|
version: ${{ steps.versions.outputs.semVerStr }}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Application Directory
|
# Application Directory
|
||||||
@@ -104,9 +115,10 @@ jobs:
|
|||||||
- os: ubuntu-latest
|
- os: ubuntu-latest
|
||||||
profile: linux
|
profile: linux
|
||||||
jpackageoptions: >
|
jpackageoptions: >
|
||||||
--app-version "${{ needs.metadata.outputs.versionNum }}.${{ needs.metadata.outputs.revNum }}"
|
--app-version "${{ needs.metadata.outputs.semVerNum }}.${{ needs.metadata.outputs.revNum }}"
|
||||||
--java-options "-Dfile.encoding=\"utf-8\""
|
--java-options "-Dfile.encoding=\"utf-8\""
|
||||||
--java-options "-Dcryptomator.logDir=\"~/.local/share/Cryptomator/logs\""
|
--java-options "-Dcryptomator.logDir=\"~/.local/share/Cryptomator/logs\""
|
||||||
|
--java-options "-Dcryptomator.pluginDir=\"~/.local/share/Cryptomator/plugins\""
|
||||||
--java-options "-Dcryptomator.settingsPath=\"~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\""
|
--java-options "-Dcryptomator.settingsPath=\"~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\""
|
||||||
--java-options "-Dcryptomator.ipcSocketPath=\"~/.config/Cryptomator/ipc.socket\""
|
--java-options "-Dcryptomator.ipcSocketPath=\"~/.config/Cryptomator/ipc.socket\""
|
||||||
--java-options "-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\""
|
--java-options "-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\""
|
||||||
@@ -116,9 +128,10 @@ jobs:
|
|||||||
- os: windows-latest
|
- os: windows-latest
|
||||||
profile: win
|
profile: win
|
||||||
jpackageoptions: >
|
jpackageoptions: >
|
||||||
--app-version "${{ needs.metadata.outputs.versionNum }}.${{ needs.metadata.outputs.revNum }}"
|
--app-version "${{ needs.metadata.outputs.semVerNum }}.${{ needs.metadata.outputs.revNum }}"
|
||||||
--java-options "-Dfile.encoding=\"utf-8\""
|
--java-options "-Dfile.encoding=\"utf-8\""
|
||||||
--java-options "-Dcryptomator.logDir=\"~/AppData/Roaming/Cryptomator\""
|
--java-options "-Dcryptomator.logDir=\"~/AppData/Roaming/Cryptomator\""
|
||||||
|
--java-options "-Dcryptomator.pluginDir=\"~/AppData/Roaming/Cryptomator/Plugins\""
|
||||||
--java-options "-Dcryptomator.settingsPath=\"~/AppData/Roaming/Cryptomator/settings.json\""
|
--java-options "-Dcryptomator.settingsPath=\"~/AppData/Roaming/Cryptomator/settings.json\""
|
||||||
--java-options "-Dcryptomator.ipcSocketPath=\"~/AppData/Roaming/Cryptomator/ipc.socket\""
|
--java-options "-Dcryptomator.ipcSocketPath=\"~/AppData/Roaming/Cryptomator/ipc.socket\""
|
||||||
--java-options "-Dcryptomator.keychainPath=\"~/AppData/Roaming/Cryptomator/keychain.json\""
|
--java-options "-Dcryptomator.keychainPath=\"~/AppData/Roaming/Cryptomator/keychain.json\""
|
||||||
@@ -130,9 +143,10 @@ jobs:
|
|||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
profile: mac
|
profile: mac
|
||||||
jpackageoptions: >
|
jpackageoptions: >
|
||||||
--app-version "${{ needs.metadata.outputs.versionNum }}"
|
--app-version "${{ needs.metadata.outputs.semVerNum }}"
|
||||||
--java-options "-Dfile.encoding=\"utf-8\""
|
--java-options "-Dfile.encoding=\"utf-8\""
|
||||||
--java-options "-Dcryptomator.logDir=\"~/Library/Logs/Cryptomator\""
|
--java-options "-Dcryptomator.logDir=\"~/Library/Logs/Cryptomator\""
|
||||||
|
--java-options "-Dcryptomator.pluginDir=\"~/Library/Application Support/Cryptomator/Plugins\""
|
||||||
--java-options "-Dcryptomator.settingsPath=\"~/Library/Application Support/Cryptomator/settings.json\""
|
--java-options "-Dcryptomator.settingsPath=\"~/Library/Application Support/Cryptomator/settings.json\""
|
||||||
--java-options "-Dcryptomator.ipcSocketPath=\"~/Library/Application Support/Cryptomator/ipc.socket\""
|
--java-options "-Dcryptomator.ipcSocketPath=\"~/Library/Application Support/Cryptomator/ipc.socket\""
|
||||||
--java-options "-Dcryptomator.showTrayIcon=true"
|
--java-options "-Dcryptomator.showTrayIcon=true"
|
||||||
@@ -175,6 +189,7 @@ jobs:
|
|||||||
--copyright "(C) 2016 - 2021 Skymatic GmbH"
|
--copyright "(C) 2016 - 2021 Skymatic GmbH"
|
||||||
--java-options "-Xss5m"
|
--java-options "-Xss5m"
|
||||||
--java-options "-Xmx256m"
|
--java-options "-Xmx256m"
|
||||||
|
--java-options "-Dcryptomator.appVersion=\"${{ needs.metadata.outputs.semVerStr }}\""
|
||||||
${{ matrix.jpackageoptions }}
|
${{ matrix.jpackageoptions }}
|
||||||
- name: Create appdir.tar
|
- name: Create appdir.tar
|
||||||
run: tar -cvf appdir.tar appdir
|
run: tar -cvf appdir.tar appdir
|
||||||
@@ -233,7 +248,7 @@ jobs:
|
|||||||
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
|
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
|
||||||
- name: Build AppImage
|
- name: Build AppImage
|
||||||
run: >
|
run: >
|
||||||
./squashfs-root/AppRun Cryptomator.AppDir cryptomator-${{ needs.metadata.outputs.versionStr }}-x86_64.AppImage
|
./squashfs-root/AppRun Cryptomator.AppDir cryptomator-${{ needs.metadata.outputs.semVerStr }}-x86_64.AppImage
|
||||||
-u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-x86_64.AppImage.zsync'
|
-u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-x86_64.AppImage.zsync'
|
||||||
--sign --sign-key=615D449FE6E6A235 --sign-args="--batch --pinentry-mode loopback"
|
--sign --sign-key=615D449FE6E6A235 --sign-args="--batch --pinentry-mode loopback"
|
||||||
- name: Upload AppImage
|
- name: Upload AppImage
|
||||||
@@ -263,10 +278,11 @@ jobs:
|
|||||||
- name: Patch Cryptomator.app
|
- name: Patch Cryptomator.app
|
||||||
run: |
|
run: |
|
||||||
mv appdir/Cryptomator.app Cryptomator.app
|
mv appdir/Cryptomator.app Cryptomator.app
|
||||||
|
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_SHORT_VERSION_STRING###|${VERSION_NO}|g" Cryptomator.app/Contents/Info.plist
|
||||||
sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" Cryptomator.app/Contents/Info.plist
|
sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" Cryptomator.app/Contents/Info.plist
|
||||||
env:
|
env:
|
||||||
VERSION_NO: ${{ needs.metadata.outputs.versionNum }}
|
VERSION_NO: ${{ needs.metadata.outputs.semVerNum }}
|
||||||
REVISION_NO: ${{ needs.metadata.outputs.revNum }}
|
REVISION_NO: ${{ needs.metadata.outputs.revNum }}
|
||||||
- name: Install codesign certificate
|
- name: Install codesign certificate
|
||||||
env:
|
env:
|
||||||
@@ -300,8 +316,8 @@ jobs:
|
|||||||
OUTPUT_PATH=${JAR_PATH%.*}
|
OUTPUT_PATH=${JAR_PATH%.*}
|
||||||
echo "Codesigning libs in ${JAR_FILENAME}..."
|
echo "Codesigning libs in ${JAR_FILENAME}..."
|
||||||
unzip -q ${JAR_PATH} -d ${OUTPUT_PATH}
|
unzip -q ${JAR_PATH} -d ${OUTPUT_PATH}
|
||||||
find ${OUTPUT_PATH} -name '*.dylib' -exec codesign -s ${CODESIGN_IDENTITY} {} \;
|
find ${OUTPUT_PATH} -name '*.dylib' -exec codesign --force -s ${CODESIGN_IDENTITY} {} \;
|
||||||
find ${OUTPUT_PATH} -name '*.jnilib' -exec codesign -s ${CODESIGN_IDENTITY} {} \;
|
find ${OUTPUT_PATH} -name '*.jnilib' -exec codesign --force -s ${CODESIGN_IDENTITY} {} \;
|
||||||
rm ${JAR_PATH}
|
rm ${JAR_PATH}
|
||||||
pushd ${OUTPUT_PATH} > /dev/null
|
pushd ${OUTPUT_PATH} > /dev/null
|
||||||
zip -qr ../${JAR_FILENAME} *
|
zip -qr ../${JAR_FILENAME} *
|
||||||
@@ -368,7 +384,7 @@ jobs:
|
|||||||
--icon ".VolumeIcon.icns" 512 758
|
--icon ".VolumeIcon.icns" 512 758
|
||||||
Cryptomator-${VERSION_NO}.dmg dmg
|
Cryptomator-${VERSION_NO}.dmg dmg
|
||||||
env:
|
env:
|
||||||
VERSION_NO: ${{ needs.metadata.outputs.versionNum }}
|
VERSION_NO: ${{ needs.metadata.outputs.semVerNum }}
|
||||||
- name: Install notarization credentials
|
- name: Install notarization credentials
|
||||||
env:
|
env:
|
||||||
NOTARIZATION_KEYCHAIN_PROFILE: ${{ secrets.MACOS_NOTARIZATION_KEYCHAIN_PROFILE }}
|
NOTARIZATION_KEYCHAIN_PROFILE: ${{ secrets.MACOS_NOTARIZATION_KEYCHAIN_PROFILE }}
|
||||||
@@ -397,6 +413,8 @@ jobs:
|
|||||||
- name: Clean up notarization credentials
|
- name: Clean up notarization credentials
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
run: security delete-keychain $RUNNER_TEMP/notarization.keychain-db
|
run: security delete-keychain $RUNNER_TEMP/notarization.keychain-db
|
||||||
|
- name: Add possible alpha/beta tags to installer name
|
||||||
|
run: mv Cryptomator-*.dmg Cryptomator-${{ needs.metadata.outputs.semVerStr }}.dmg
|
||||||
- name: Upload mac-dmg
|
- name: Upload mac-dmg
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
@@ -449,12 +467,11 @@ jobs:
|
|||||||
--name Cryptomator
|
--name Cryptomator
|
||||||
--vendor "Skymatic GmbH"
|
--vendor "Skymatic GmbH"
|
||||||
--copyright "(C) 2016 - 2021 Skymatic GmbH"
|
--copyright "(C) 2016 - 2021 Skymatic GmbH"
|
||||||
--app-version "${{ needs.metadata.outputs.versionNum }}"
|
--app-version "${{ needs.metadata.outputs.semVerNum }}"
|
||||||
--win-menu
|
--win-menu
|
||||||
--win-dir-chooser
|
--win-dir-chooser
|
||||||
--resource-dir dist/win/resources
|
--resource-dir dist/win/resources
|
||||||
--license-file dist/win/resources/license.rtf
|
--license-file dist/win/resources/license.rtf
|
||||||
--file-associations dist/win/resources/FAencryptedData.properties
|
|
||||||
--file-associations dist/win/resources/FAvaultFile.properties
|
--file-associations dist/win/resources/FAvaultFile.properties
|
||||||
env:
|
env:
|
||||||
JP_WIXWIZARD_RESOURCES: ${{ github.workspace }}/dist/win/resources # requires abs path, used in resources/main.wxs
|
JP_WIXWIZARD_RESOURCES: ${{ github.workspace }}/dist/win/resources # requires abs path, used in resources/main.wxs
|
||||||
@@ -467,6 +484,8 @@ jobs:
|
|||||||
description: Cryptomator Installer
|
description: Cryptomator Installer
|
||||||
timestampUrl: 'http://timestamp.digicert.com'
|
timestampUrl: 'http://timestamp.digicert.com'
|
||||||
folder: installer
|
folder: installer
|
||||||
|
- name: Add possible alpha/beta tags to installer name
|
||||||
|
run: mv installer/Cryptomator-*.msi installer/Cryptomator-${{ needs.metadata.outputs.semVerStr }}.msi
|
||||||
- name: Upload win-msi
|
- name: Upload win-msi
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
@@ -474,18 +493,86 @@ jobs:
|
|||||||
path: installer/*.msi
|
path: installer/*.msi
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
|
#
|
||||||
|
# Linux PPA Source Package
|
||||||
|
#
|
||||||
|
ppa:
|
||||||
|
name: Upload source package to PPA
|
||||||
|
needs: [buildkit, metadata, win-msi, mac-dmg, linux-appimage]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: install build tools
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install debhelper devscripts dput
|
||||||
|
- name: Download linux-buildkit
|
||||||
|
uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: linux-buildkit
|
||||||
|
path: pkgdir
|
||||||
|
- name: create orig.tar.gz
|
||||||
|
run: tar -cJf cryptomator_${{ needs.metadata.outputs.ppaVerStr }}.orig.tar.xz -C pkgdir .
|
||||||
|
- name: patch and rename pkgdir
|
||||||
|
run: |
|
||||||
|
cp -r dist/linux/debian/ pkgdir
|
||||||
|
cp -r dist/linux/resources/ pkgdir
|
||||||
|
export RFC2822_TIMESTAMP=`date --rfc-2822`
|
||||||
|
envsubst '${VERSION_STR} ${VERSION_NUM} ${REVISION_NUM}' < dist/linux/debian/rules > pkgdir/debian/rules
|
||||||
|
envsubst '${VERSION_STR}' < dist/linux/debian/org.cryptomator.Cryptomator.desktop > pkgdir/debian/org.cryptomator.Cryptomator.desktop
|
||||||
|
envsubst '${PPA_VERSION} ${RFC2822_TIMESTAMP}' < dist/linux/debian/changelog > pkgdir/debian/changelog
|
||||||
|
find . -name "*.jar" >> pkgdir/debian/source/include-binaries
|
||||||
|
mv pkgdir cryptomator_${{ needs.metadata.outputs.ppaVerStr }}
|
||||||
|
env:
|
||||||
|
VERSION_STR: ${{ needs.metadata.outputs.semVerStr }}
|
||||||
|
VERSION_NUM: ${{ needs.metadata.outputs.semVerNum }}
|
||||||
|
REVISION_NUM: ${{ needs.metadata.outputs.revNum }}
|
||||||
|
PPA_VERSION: ${{ needs.metadata.outputs.ppaVerStr }}-0ppa1
|
||||||
|
- name: import gpg key 615D449FE6E6A235
|
||||||
|
run: |
|
||||||
|
echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import
|
||||||
|
echo "${GPG_PASSPHRASE}" | gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --dry-run --sign dist/linux/debian/rules
|
||||||
|
env:
|
||||||
|
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
|
||||||
|
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
|
||||||
|
- name: debuild
|
||||||
|
run: debuild -S -sa -d
|
||||||
|
env:
|
||||||
|
DEBSIGN_PROGRAM: gpg --batch --pinentry-mode loopback
|
||||||
|
DEBSIGN_KEYID: 615D449FE6E6A235
|
||||||
|
working-directory: cryptomator_${{ needs.metadata.outputs.ppaVerStr }}
|
||||||
|
- name: Upload artifacts
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: linux-deb-source-package
|
||||||
|
path: |
|
||||||
|
cryptomator_*.dsc
|
||||||
|
cryptomator_*.orig.tar.xz
|
||||||
|
cryptomator_*.debian.tar.xz
|
||||||
|
cryptomator_*_source.changes
|
||||||
|
cryptomator_*_source.buildinfo
|
||||||
|
- name: dput to beta repo
|
||||||
|
run: dput ppa:sebastian-stenzel/cryptomator-beta cryptomator_${PPA_VERSION}_source.changes
|
||||||
|
env:
|
||||||
|
PPA_VERSION: ${{ needs.metadata.outputs.ppaVerStr }}-0ppa1
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Release
|
# Release
|
||||||
#
|
#
|
||||||
release:
|
release:
|
||||||
name: Draft a release on Github
|
name: Draft a release on Github
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [metadata,linux-appimage,mac-dmg,win-msi]
|
needs: [metadata,linux-appimage,mac-dmg,win-msi,ppa]
|
||||||
if: startsWith(github.ref, 'refs/tags/') && github.repository == 'cryptomator/cryptomator'
|
if: startsWith(github.ref, 'refs/tags/') && github.repository == 'cryptomator/cryptomator'
|
||||||
|
env:
|
||||||
|
APPIMAGE_SHA256_MSG: undefined
|
||||||
|
DMG_SHA256_MSG: undefined
|
||||||
|
MSI_SHA256_MSG: undefined
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Create tarball
|
- name: Create tarball
|
||||||
run: git archive --prefix="cryptomator-${{ needs.metadata.outputs.versionStr }}/" -o "cryptomator-${{ needs.metadata.outputs.versionStr }}.tar.gz" ${{ github.ref }}
|
run: git archive --prefix="cryptomator-${{ needs.metadata.outputs.semVerStr }}/" -o "cryptomator-${{ needs.metadata.outputs.semVerStr }}.tar.gz" ${{ github.ref }}
|
||||||
- name: Download linux appimage
|
- name: Download linux appimage
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v2
|
||||||
with:
|
with:
|
||||||
@@ -507,6 +594,14 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
|
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
|
||||||
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
|
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
|
||||||
|
- name: Compute SHA256 checksums of release artifacts # sha256sum is split on the whitespace with sed and reorderd. env keys are file name extensions in uppercase
|
||||||
|
run: |
|
||||||
|
for FILE in `find . -name "*.AppImage" -o -name "*.dmg" -o -name "*.msi" -o -name "*.zsync" -o -name "*.tar.gz"`; do
|
||||||
|
CHECKSUM_MSG=$(sha256sum ${FILE})
|
||||||
|
VALUE=$(echo ${CHECKSUM_MSG} | sed 's/\([0-9,a-f]\{64\}\)[[:blank:]]\([Cc]ryptomator-.*$\)/\2: `\1`/' )
|
||||||
|
KEY=$(echo ${CHECKSUM_MSG} | sed 's/.*[[:blank:]].*\.\(.*$\)/\1/')
|
||||||
|
echo "{${KEY^^}_SHA256_MSG}={${VALUE}}" >> $GITHUB_ENV
|
||||||
|
done
|
||||||
- name: Create release draft
|
- name: Create release draft
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
with:
|
with:
|
||||||
@@ -527,3 +622,8 @@ jobs:
|
|||||||
## Misc
|
## Misc
|
||||||
---
|
---
|
||||||
:scroll: A complete list of closed issues is available [here](LINK)
|
:scroll: A complete list of closed issues is available [here](LINK)
|
||||||
|
---
|
||||||
|
Checksums of release artifacts:
|
||||||
|
* ${{ env.APPIMAGE_SHA256_MSG}}
|
||||||
|
* ${{ env.DMG_SHA256_MSG}}
|
||||||
|
* ${{ env.MSI_SHA_256_MSG}}
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
<configuration default="false" name="Cryptomator Linux" type="Application" factoryName="Application">
|
<configuration default="false" name="Cryptomator Linux" type="Application" factoryName="Application">
|
||||||
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
||||||
<module name="cryptomator" />
|
<module name="cryptomator" />
|
||||||
<option name="VM_PARAMETERS" value="-Djdk.gtk.version=2 -Duser.language=en -Dcryptomator.settingsPath="~/.config/Cryptomator/settings.json" -Dcryptomator.ipcSocketPath="~/.config/Cryptomator/ipc.socket" -Dcryptomator.logDir="~/.local/share/Cryptomator/logs" -Dcryptomator.mountPointsDir="~/.local/share/Cryptomator/mnt" -Dcryptomator.showTrayIcon=true -Xss20m -Xmx512m" />
|
<option name="VM_PARAMETERS" value="-Djdk.gtk.version=2 -Duser.language=en -Dcryptomator.settingsPath="~/.config/Cryptomator/settings.json" -Dcryptomator.ipcSocketPath="~/.config/Cryptomator/ipc.socket" -Dcryptomator.logDir="~/.local/share/Cryptomator/logs" -Dcryptomator.pluginDir="~/.local/share/Cryptomator/plugins" -Dcryptomator.mountPointsDir="~/.local/share/Cryptomator/mnt" -Dcryptomator.showTrayIcon=true -Xss20m -Xmx512m" />
|
||||||
<method v="2">
|
<method v="2">
|
||||||
<option name="Make" enabled="true" />
|
<option name="Make" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
<configuration default="false" name="Cryptomator Linux Dev" type="Application" factoryName="Application">
|
<configuration default="false" name="Cryptomator Linux Dev" type="Application" factoryName="Application">
|
||||||
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
||||||
<module name="cryptomator" />
|
<module name="cryptomator" />
|
||||||
<option name="VM_PARAMETERS" value="-Djdk.gtk.version=2 -Duser.language=en -Dcryptomator.settingsPath="~/.config/Cryptomator-Dev/settings.json" -Dcryptomator.ipcSocketPath="~/.config/Cryptomator-Dev/ipc.socket" -Dcryptomator.logDir="~/.local/share/Cryptomator-Dev/logs" -Dcryptomator.mountPointsDir="~/.local/share/Cryptomator-Dev/mnt" -Dcryptomator.showTrayIcon=true -Dfuse.experimental="true" -Xss20m -Xmx512m" />
|
<option name="VM_PARAMETERS" value="-Djdk.gtk.version=2 -Duser.language=en -Dcryptomator.settingsPath="~/.config/Cryptomator-Dev/settings.json" -Dcryptomator.ipcSocketPath="~/.config/Cryptomator-Dev/ipc.socket" -Dcryptomator.logDir="~/.local/share/Cryptomator-Dev/logs" -Dcryptomator.pluginDir="~/.local/share/Cryptomator-Dev/plugins" -Dcryptomator.mountPointsDir="~/.local/share/Cryptomator-Dev/mnt" -Dcryptomator.showTrayIcon=true -Dfuse.experimental="true" -Xss20m -Xmx512m" />
|
||||||
<method v="2">
|
<method v="2">
|
||||||
<option name="Make" enabled="true" />
|
<option name="Make" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
<configuration default="false" name="Cryptomator Windows" type="Application" factoryName="Application">
|
<configuration default="false" name="Cryptomator Windows" type="Application" factoryName="Application">
|
||||||
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
||||||
<module name="cryptomator" />
|
<module name="cryptomator" />
|
||||||
<option name="VM_PARAMETERS" value="-Duser.language=en -Dcryptomator.settingsPath="~/AppData/Roaming/Cryptomator/settings.json" -Dcryptomator.ipcSocketPath="~/AppData/Roaming/Cryptomator/ipc.socket" -Dcryptomator.logDir="~/AppData/Roaming/Cryptomator" -Dcryptomator.keychainPath="~/AppData/Roaming/Cryptomator/keychain.json" -Dcryptomator.mountPointsDir="~/Cryptomator" -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m" />
|
<option name="VM_PARAMETERS" value="-Duser.language=en -Dcryptomator.settingsPath="~/AppData/Roaming/Cryptomator/settings.json" -Dcryptomator.ipcSocketPath="~/AppData/Roaming/Cryptomator/ipc.socket" -Dcryptomator.logDir="~/AppData/Roaming/Cryptomator" -Dcryptomator.pluginDir="~/AppData/Roaming/Cryptomator/Plugins" -Dcryptomator.keychainPath="~/AppData/Roaming/Cryptomator/keychain.json" -Dcryptomator.mountPointsDir="~/Cryptomator" -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m" />
|
||||||
<method v="2">
|
<method v="2">
|
||||||
<option name="Make" enabled="true" />
|
<option name="Make" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
<configuration default="false" name="Cryptomator Windows Dev" type="Application" factoryName="Application">
|
<configuration default="false" name="Cryptomator Windows Dev" type="Application" factoryName="Application">
|
||||||
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
||||||
<module name="cryptomator" />
|
<module name="cryptomator" />
|
||||||
<option name="VM_PARAMETERS" value="-Duser.language=en -Dcryptomator.settingsPath="~/AppData/Roaming/Cryptomator-Dev/settings.json" -Dcryptomator.ipcSocketPath="~/AppData/Roaming/Cryptomator-Dev/ipc.socket" -Dcryptomator.logDir="~/AppData/Roaming/Cryptomator-Dev" -Dcryptomator.keychainPath="~/AppData/Roaming/Cryptomator-Dev/keychain.json" -Dcryptomator.mountPointsDir="~/Cryptomator-Dev" -Dfuse.experimental="true" -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m" />
|
<option name="VM_PARAMETERS" value="-Duser.language=en -Dcryptomator.settingsPath="~/AppData/Roaming/Cryptomator-Dev/settings.json" -Dcryptomator.ipcSocketPath="~/AppData/Roaming/Cryptomator-Dev/ipc.socket" -Dcryptomator.logDir="~/AppData/Roaming/Cryptomator-Dev" -Dcryptomator.pluginDir="~/AppData/Roaming/Cryptomator-Dev/Plugins" -Dcryptomator.keychainPath="~/AppData/Roaming/Cryptomator-Dev/keychain.json" -Dcryptomator.mountPointsDir="~/Cryptomator-Dev" -Dfuse.experimental="true" -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m" />
|
||||||
<method v="2">
|
<method v="2">
|
||||||
<option name="Make" enabled="true" />
|
<option name="Make" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
</envs>
|
</envs>
|
||||||
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
||||||
<module name="cryptomator" />
|
<module name="cryptomator" />
|
||||||
<option name="VM_PARAMETERS" value="-Duser.language=en -Dcryptomator.settingsPath="~/Library/Application Support/Cryptomator/settings.json" -Dcryptomator.ipcSocketPath="~/Library/Application Support/Cryptomator/ipc.socket" -Dcryptomator.logDir="~/Library/Logs/Cryptomator" -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m -ea" />
|
<option name="VM_PARAMETERS" value="-Duser.language=en -Dcryptomator.settingsPath="~/Library/Application Support/Cryptomator/settings.json" -Dcryptomator.ipcSocketPath="~/Library/Application Support/Cryptomator/ipc.socket" -Dcryptomator.logDir="~/Library/Logs/Cryptomator" -Dcryptomator.pluginDir="~/Library/Application Support/Cryptomator/Plugins" -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m -ea" />
|
||||||
<method v="2">
|
<method v="2">
|
||||||
<option name="Make" enabled="true" />
|
<option name="Make" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
</envs>
|
</envs>
|
||||||
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
|
||||||
<module name="cryptomator" />
|
<module name="cryptomator" />
|
||||||
<option name="VM_PARAMETERS" value="-Duser.language=en -Dcryptomator.settingsPath="~/Library/Application Support/Cryptomator-Dev/settings.json" -Dcryptomator.ipcSocketPath="~/Library/Application Support/Cryptomator-Dev/ipc.socket" -Dcryptomator.logDir="~/Library/Logs/Cryptomator-Dev" -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m -ea" />
|
<option name="VM_PARAMETERS" value="-Duser.language=en -Dcryptomator.settingsPath="~/Library/Application Support/Cryptomator-Dev/settings.json" -Dcryptomator.ipcSocketPath="~/Library/Application Support/Cryptomator-Dev/ipc.socket" -Dcryptomator.logDir="~/Library/Logs/Cryptomator-Dev" -Dcryptomator.pluginDir="~/Library/Application Support/Cryptomator-Dev/Plugins" -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m -ea" />
|
||||||
<method v="2">
|
<method v="2">
|
||||||
<option name="Make" enabled="true" />
|
<option name="Make" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
|
|||||||
Vendored
+5
@@ -0,0 +1,5 @@
|
|||||||
|
cryptomator (${PPA_VERSION}) focal; urgency=low
|
||||||
|
|
||||||
|
* Full changelog can be found on https://github.com/cryptomator/cryptomator/releases
|
||||||
|
|
||||||
|
-- Cryptobot <releases@cryptomator.org> ${RFC2822_TIMESTAMP}
|
||||||
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
10
|
||||||
Vendored
+23
@@ -0,0 +1,23 @@
|
|||||||
|
Source: cryptomator
|
||||||
|
Maintainer: Cryptobot <releases@cryptomator.org>
|
||||||
|
Section: utils
|
||||||
|
Priority: optional
|
||||||
|
Build-Depends: debhelper (>=10), openjdk-16-jdk
|
||||||
|
Standards-Version: 4.5.0
|
||||||
|
Homepage: https://cryptomator.org
|
||||||
|
Vcs-Git: https://github.com/cryptomator/cryptomator.git
|
||||||
|
Vcs-browser: https://github.com/cryptomator/cryptomator
|
||||||
|
|
||||||
|
Package: cryptomator
|
||||||
|
Architecture: any
|
||||||
|
Section: utils
|
||||||
|
Priority: optional
|
||||||
|
Depends: ${shlibs:Depends}, ${misc:Depends}, libfuse2, xdg-utils, libjffi-jni
|
||||||
|
Recommends: gvfs-backends, gvfs-fuse, gnome-keyring
|
||||||
|
XB-AppName: Cryptomator
|
||||||
|
XB-Category: Utility;Security;FileTools;
|
||||||
|
Homepage: https://cryptomator.org
|
||||||
|
Description: Multi-platform client-side encryption of your cloud files.
|
||||||
|
Cryptomator provides free client-side AES encryption for your cloud files.
|
||||||
|
Create encrypted vaults, which get mounted as virtual volumes. Whatever
|
||||||
|
you save on one of these volumes will end up encrypted inside your vault.
|
||||||
Vendored
+39
@@ -0,0 +1,39 @@
|
|||||||
|
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
|
Upstream-Name: cryptomator
|
||||||
|
Upstream-Contact: Cryptomator <info@cryptomator.org>
|
||||||
|
Source: https://cryptomator.org
|
||||||
|
|
||||||
|
Files: *
|
||||||
|
Copyright: 2016-2021 Skymatic GmbH
|
||||||
|
License: GPL-3+
|
||||||
|
|
||||||
|
Files: debian/org.cryptomator.Cryptomator.appdata.xml
|
||||||
|
Copyright: 2016-2021 Skymatic GmbH
|
||||||
|
License: FSFAP
|
||||||
|
|
||||||
|
License: GPL-3+
|
||||||
|
This program is free software: you can redistribute it
|
||||||
|
and/or modify it under the terms of the GNU General Public
|
||||||
|
License as published by the Free Software Foundation, either
|
||||||
|
version 3 of the License, or (at your option) any later
|
||||||
|
version.
|
||||||
|
.
|
||||||
|
This program is distributed in the hope that it will be
|
||||||
|
useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. See the GNU General Public License for more
|
||||||
|
details.
|
||||||
|
.
|
||||||
|
You should have received a copy of the GNU General Public
|
||||||
|
License along with this program. If not, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
||||||
|
.
|
||||||
|
On Debian systems, the full text of the GNU General Public
|
||||||
|
License version 3 can be found in the file
|
||||||
|
`/usr/share/common-licenses/GPL-3'.
|
||||||
|
|
||||||
|
License: FSFAP
|
||||||
|
Copying and distribution of this file, with or without modification, are
|
||||||
|
permitted in any medium without royalty provided the copyright notice and
|
||||||
|
this notice are preserved. This file is offered as-is, without any
|
||||||
|
warranty.
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
|
||||||
|
<mime-type type="application/x-vnd.cryptomator-vault-metadata">
|
||||||
|
<comment>Cryptomator Vault Metadata</comment>
|
||||||
|
<glob pattern="*.cryptomator"/>
|
||||||
|
</mime-type>
|
||||||
|
</mime-info>
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
cryptomator usr/lib
|
||||||
|
debian/cryptomator.sh usr/lib/cryptomator/bin
|
||||||
|
debian/org.cryptomator.Cryptomator.desktop usr/share/applications
|
||||||
|
debian/org.cryptomator.Cryptomator.svg usr/share/icons/hicolor/scalable/apps
|
||||||
|
debian/org.cryptomator.Cryptomator.png usr/share/icons/hicolor/512x512/apps
|
||||||
|
debian/org.cryptomator.Cryptomator.appdata.xml usr/share/metainfo
|
||||||
|
debian/cryptomator-vault.xml usr/share/mime/packages
|
||||||
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
usr/lib/cryptomator/bin/cryptomator.sh usr/bin/cryptomator
|
||||||
Vendored
+6
@@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# fix for https://github.com/cryptomator/cryptomator/issues/1370
|
||||||
|
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/jni/libjffi-1.2.so
|
||||||
|
|
||||||
|
/usr/lib/cryptomator/bin/cryptomator
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Copyright 2018 Armin Schrenk <armin.schrenk@zoho.eu> -->
|
||||||
|
<component type="desktop-application">
|
||||||
|
<id>org.cryptomator.Cryptomator</id>
|
||||||
|
<metadata_license>FSFAP</metadata_license>
|
||||||
|
<project_license>GPL-3.0-or-later</project_license>
|
||||||
|
<name>Cryptomator</name>
|
||||||
|
<summary>Multi-platform client-side encryption tool optimized for cloud storages</summary>
|
||||||
|
<description>
|
||||||
|
<p>
|
||||||
|
Cryptomator offers multi-platform transparent client-side encryption of your files in the cloud.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Features:
|
||||||
|
<ul>
|
||||||
|
<li>Works with Dropbox, Google Drive, OneDrive, ownCloud, Nextcloud and any other cloud storage service which synchronizes with a local directory</li>
|
||||||
|
<li>Open Source means: No backdoors, control is better than trust</li>
|
||||||
|
<li>Client-side: No accounts, no data shared with any online service</li>
|
||||||
|
<li>Totally transparent: Just work on the virtual drive as if it were a USB flash drive</li>
|
||||||
|
<li>AES encryption with 256-bit key length</li>
|
||||||
|
<li>File names get encrypted</li>
|
||||||
|
<li>Folder structure gets obfuscated</li>
|
||||||
|
<li>Use as many vaults in your Dropbox as you want, each having individual passwords</li>
|
||||||
|
<li>One thousand commits for the security of your data!! :tada:</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Privacy:
|
||||||
|
<ul>
|
||||||
|
<li>256-bit keys (unlimited strength policy bundled with native binaries)</li>
|
||||||
|
<li>Scrypt key derivation</li>
|
||||||
|
<li>Cryptographically secure random numbers for salts, IVs and the masterkey of course</li>
|
||||||
|
<li>Sensitive data is wiped from the heap asap</li>
|
||||||
|
<li>Lightweight: Complexity kills security</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Consistency:
|
||||||
|
<ul>
|
||||||
|
<li>HMAC over file contents to recognize changed ciphertext before decryption</li>
|
||||||
|
<li>I/O operations are transactional and atomic, if the filesystems support it</li>
|
||||||
|
<li>Each file contains all information needed for decryption (except for the key of course), no common metadata means no Single Point of Failure</li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
</description>
|
||||||
|
<categories>
|
||||||
|
<category>Office</category>
|
||||||
|
<category>Security</category>
|
||||||
|
<category>FileTools</category>
|
||||||
|
<category>Java</category>
|
||||||
|
</categories>
|
||||||
|
<url type="homepage">http://cryptomator.org</url>
|
||||||
|
<url type="bugtracker">https://github.com/cryptomator/cryptomator/issues</url>
|
||||||
|
<url type="faq">https://community.cryptomator.org/c/kb/faq</url>
|
||||||
|
<url type="help">https://community.cryptomator.org/</url>
|
||||||
|
<url type="donation">https://cryptomator.org/</url>
|
||||||
|
<content_rating type="oars-1.0">
|
||||||
|
<content_attribute id="violence-cartoon">none</content_attribute>
|
||||||
|
<content_attribute id="drugs-alcohol">none</content_attribute>
|
||||||
|
<content_attribute id="sex-nudity">none</content_attribute>
|
||||||
|
<content_attribute id="language-profanity">none</content_attribute>
|
||||||
|
<content_attribute id="social-info">mild</content_attribute> <!-- update checker conencts to https://api.cryptomator.org/updates/latestVersion.json -->
|
||||||
|
</content_rating>
|
||||||
|
<project_group>Cryptomator</project_group>
|
||||||
|
<provides>
|
||||||
|
<binary>cryptomator</binary>
|
||||||
|
</provides>
|
||||||
|
<launchable type="desktop-id">org.cryptomator.Cryptomator.desktop</launchable>
|
||||||
|
</component>
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Name=Cryptomator
|
||||||
|
Version=${VERSION_STR}
|
||||||
|
Comment=Cloud Storage Encryption Utility
|
||||||
|
Exec=/usr/bin/cryptomator %f
|
||||||
|
Icon=org.cryptomator.Cryptomator
|
||||||
|
Terminal=false
|
||||||
|
Type=Application
|
||||||
|
Categories=Utility;Security;FileTools;
|
||||||
|
StartupWMClass=org.cryptomator.launcher.Cryptomator
|
||||||
|
MimeType=application/vnd.cryptomator.encrypted;application/x-vnd.cryptomator.vault-metadata;
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 23 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<svg width="1110" height="1110" viewBox="0 0 1108.12 940.2" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg"><path d="m552.69 0c-169.1 0-262.45 143.46-262.45 283.52h524.9c0-140.06-105.33-283.52-262.45-283.52z" fill="#cfcfcf"/><path d="m552.69 53.2c-137.37 0-213.21 116.54-213.21 230.32l213.21 24.18 213.21-24.18c0-113.78-85.57-230.32-213.21-230.32z" fill="#585e62"/><path d="m89.8 739.52a20 20 0 0 1 -2.23-39.88 42.8 42.8 0 1 0 -42.22-21.82 20 20 0 0 1 -35 19.31 82.79 82.79 0 1 1 81.76 42.26 21.78 21.78 0 0 1 -2.31.13z" fill="#585e62"/><rect fill="#cfcfcf" height="144.19" rx="49.42" transform="matrix(.8902923 .45538953 -.45538953 .8902923 261.57 -5.69)" width="104.68" x="90.27" y="467.98"/><path d="m149.47 401.27h62.8a0 0 0 0 1 0 0v94.55a31.4 31.4 0 0 1 -31.4 31.4 31.4 31.4 0 0 1 -31.4-31.4v-94.55a0 0 0 0 1 0 0z" fill="#585e62" transform="matrix(.8902923 .45538953 -.45538953 .8902923 231.23 -31.44)"/><circle cx="222.59" cy="387.53" fill="#cfcfcf" r="75.05"/><path d="m258.09 321.8a75.09 75.09 0 0 0 -91.23 14.64 75.06 75.06 0 0 1 51.58 126.06 75.06 75.06 0 0 0 39.65-140.7z" fill="#b1b1b1"/><path d="m1018.31 739.52a22.09 22.09 0 0 1 -2.28-.13 82.8 82.8 0 1 1 81.77-42.26 20 20 0 1 1 -35-19.31 42.8 42.8 0 1 0 -42.23 21.82 20 20 0 0 1 -2.23 39.88z" fill="#585e62"/><rect fill="#cfcfcf" height="144.19" rx="49.42" transform="matrix(-.8902923 .45538953 -.45538953 -.8902923 2071.05 581.27)" width="104.68" x="913.18" y="467.98"/><path d="m927.25 401.27a31.4 31.4 0 0 1 31.4 31.4v94.55a0 0 0 0 1 0 0h-62.8a0 0 0 0 1 0 0v-94.55a31.4 31.4 0 0 1 31.4-31.4z" fill="#585e62" transform="matrix(-.8902923 .45538953 -.45538953 -.8902923 1964.18 455.35)"/><circle cx="885.53" cy="387.53" fill="#cfcfcf" r="75.05"/><path d="m850 321.8a75.08 75.08 0 0 1 91.22 14.64 75.06 75.06 0 0 0 -51.54 126.06 75.05 75.05 0 0 1 -39.68-140.7z" fill="#b1b1b1"/><path d="m248.78 940.2c-36.67 0-67-39.85-75.51-99.15-4.56-31.83-2.26-65.19 6.48-94 9.41-31 25.51-53.59 45.32-63.72a51.72 51.72 0 0 1 23.69-5.84h103.52v262.71z" fill="#585e62"/><path d="m351.43 940.2c-21.26 0-38.85-39.85-43.78-99.15-2.64-31.83-1.31-65.19 3.76-94 5.45-31 14.78-53.59 26.27-63.72 4.39-3.87 9-5.84 13.73-5.84s9.34 2 13.75 5.8l49.7 43.83c17.37 15.32 23.39 64 20.23 102-2.43 29.28-10 52.18-20.19 61.28l-49.69 43.82c-4.44 3.99-9.08 5.98-13.78 5.98z" fill="#585e62"/><path d="m360.57 699 49.65 43.79c11.18 9.9 17.78 47.45 14.78 83.91-2 24.27-7.83 41.95-14.77 48.13l-49.65 43.79c-18.58 16.38-37.79-19.43-42.83-80.07s6-123.1 24.58-139.51c6.15-5.42 12.5-5.04 18.24-.04z" fill="#35393b"/><path d="m850.73 940.2c36.66 0 67-39.85 75.51-99.15 4.56-31.83 2.26-65.19-6.48-94-9.41-31-25.51-53.59-45.32-63.72a51.72 51.72 0 0 0 -23.69-5.84h-103.53v262.71z" fill="#585e62"/><path d="m748.08 940.2c21.26 0 38.85-39.85 43.78-99.15 2.64-31.83 1.31-65.19-3.76-94-5.45-31-14.79-53.59-26.27-63.72-4.4-3.87-9-5.84-13.73-5.84s-9.34 2-13.76 5.8l-49.69 43.83c-17.38 15.32-23.39 64-20.23 102 2.43 29.28 10 52.18 20.19 61.28l49.68 43.82c4.45 3.99 9.09 5.98 13.79 5.98z" fill="#585e62"/><path d="m738.94 699-49.65 43.79c-11.19 9.86-17.8 47.41-14.77 83.87 2 24.27 7.83 41.95 14.77 48.13l49.65 43.79c18.61 16.41 37.78-19.43 42.82-80.07s-6-123.1-24.58-139.51c-6.18-5.38-12.5-5-18.24 0z" fill="#35393b"/><path d="m848.63 451.38a83.62 83.62 0 0 1 -.56-45.6c14.74-53.13 5.06-111.78 5.06-111.78-185.07-57.77-300.13-.48-300.13-.48s-114.79-57.64-300-.45c0 0-9.86 58.64 4.72 111.83a83.69 83.69 0 0 1 -.69 45.59c-5.14 17.57-10.72 44.5-10.77 78.8-.37 249 306 326.08 306 326.08s306.58-76.15 306.95-325.16c0-34.3-5.49-61.21-10.58-78.83z" fill="#cfcfcf"/><path d="m552.34 808.87c-50.72-15.87-261.7-93.25-261.42-279.51 0-29.65 4.89-52.42 9-66.31a128.3 128.3 0 0 0 .91-70c-6.2-22.58-6.9-47.13-6.17-65.29 40.48-10.23 80.2-15.37 118.41-15.32 75.66.12 119.86 21 120.3 21.17l20.39 10.23 19.24-10.32c.11 0 44.36-20.75 120-20.64 38.21.06 77.91 5.32 118.37 15.68.67 18.14-.1 42.71-6.37 65.27a128.33 128.33 0 0 0 .69 70c4 13.91 8.82 36.69 8.77 66.35-.28 187.06-211.26 263.09-262.12 278.69z" fill="#49b04a"/><path d="m610.15 478.76a57.46 57.46 0 1 0 -70.15 55.92l-32.29 135.47 44.67 12.85 44.71-12.71-31.84-135.57a57.46 57.46 0 0 0 44.9-55.96z" fill="#35393b"/><g fill="#49b04a"><path d="m454.94 131.08a60.64 60.64 0 0 0 -60.64 60.64h121.28a60.64 60.64 0 0 0 -60.64-60.64z"/><path d="m642.38 131.08a60.64 60.64 0 0 0 -60.64 60.64h121.26a60.64 60.64 0 0 0 -60.62-60.64z"/><circle cx="483.23" cy="229.43" r="11.52"/><circle cx="528.52" cy="229.43" r="11.52"/><circle cx="573.8" cy="229.43" r="11.52"/><circle cx="619.09" cy="229.43" r="11.52"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 4.5 KiB |
Vendored
+44
@@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# postinst script for Cryptomator
|
||||||
|
#
|
||||||
|
# see: dh_installdeb(1)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# summary of how this script can be called:
|
||||||
|
# * <postinst> `configure' <most-recently-configured-version>
|
||||||
|
# * <old-postinst> `abort-upgrade' <new version>
|
||||||
|
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
|
||||||
|
# <new-version>
|
||||||
|
# * <postinst> `abort-remove'
|
||||||
|
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
|
||||||
|
# <failed-install-package> <version> `removing'
|
||||||
|
# <conflicting-package> <version>
|
||||||
|
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||||
|
# the debian-policy package
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
configure)
|
||||||
|
echo Adding shortcut to the menu
|
||||||
|
if [ ! -d "/usr/share/desktop-directories" ]; then
|
||||||
|
mkdir -p /usr/share/desktop-directories
|
||||||
|
fi
|
||||||
|
xdg-desktop-menu install --novendor /usr/share/applications/org.cryptomator.Cryptomator.desktop
|
||||||
|
xdg-mime install /usr/share/mime/packages/cryptomator-vault.xml
|
||||||
|
;;
|
||||||
|
|
||||||
|
abort-upgrade|abort-remove|abort-deconfigure)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "postinst called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# dh_installdeb will replace this with shell code automatically
|
||||||
|
# generated by other debhelper scripts.
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
||||||
Vendored
+42
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# prerm script for Cryptomator
|
||||||
|
#
|
||||||
|
# see: dh_installdeb(1)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# summary of how this script can be called:
|
||||||
|
# * <prerm> `remove'
|
||||||
|
# * <old-prerm> `upgrade' <new-version>
|
||||||
|
# * <new-prerm> `failed-upgrade' <old-version>
|
||||||
|
# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
|
||||||
|
# * <deconfigured's-prerm> `deconfigure' `in-favour'
|
||||||
|
# <package-being-installed> <version> `removing'
|
||||||
|
# <conflicting-package> <version>
|
||||||
|
# for details, see http://www.debian.org/doc/debian-policy/ or
|
||||||
|
# the debian-policy package
|
||||||
|
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
remove|upgrade|deconfigure)
|
||||||
|
echo Removing shortcut
|
||||||
|
|
||||||
|
xdg-desktop-menu uninstall --novendor /usr/share/applications/org.cryptomator.Cryptomator.desktop
|
||||||
|
xdg-mime uninstall /usr/share/mime/packages/cryptomator-vault.xml
|
||||||
|
;;
|
||||||
|
|
||||||
|
failed-upgrade)
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "prerm called with unknown argument \`$1'" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# dh_installdeb will replace this with shell code automatically
|
||||||
|
# generated by other debhelper scripts.
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
||||||
+53
@@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/make -f
|
||||||
|
# -*- makefile -*-
|
||||||
|
|
||||||
|
# Uncomment this to turn on verbose mode.
|
||||||
|
#export DH_VERBOSE=1
|
||||||
|
|
||||||
|
%:
|
||||||
|
dh $@
|
||||||
|
|
||||||
|
override_dh_auto_clean:
|
||||||
|
rm -rf runtime
|
||||||
|
rm -rf cryptomator
|
||||||
|
rm -rf debian/cryptomator
|
||||||
|
|
||||||
|
override_dh_auto_build:
|
||||||
|
jlink \
|
||||||
|
--output runtime \
|
||||||
|
--add-modules java.base,java.desktop,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility \
|
||||||
|
--no-header-files \
|
||||||
|
--no-man-pages \
|
||||||
|
--strip-debug \
|
||||||
|
--compress=2
|
||||||
|
jpackage \
|
||||||
|
--type app-image \
|
||||||
|
--runtime-image runtime \
|
||||||
|
--input libs \
|
||||||
|
--module-path mods \
|
||||||
|
--module org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator \
|
||||||
|
--dest . \
|
||||||
|
--name cryptomator \
|
||||||
|
--vendor "Skymatic GmbH" \
|
||||||
|
--copyright "(C) 2016 - 2021 Skymatic GmbH" \
|
||||||
|
--java-options "-Xss5m" \
|
||||||
|
--java-options "-Xmx256m" \
|
||||||
|
--java-options "-Dfile.encoding=\"utf-8\"" \
|
||||||
|
--java-options "-Dcryptomator.logDir=\"~/.local/share/Cryptomator/logs\"" \
|
||||||
|
--java-options "-Dcryptomator.pluginDir=\"~/.local/share/Cryptomator/plugins\"" \
|
||||||
|
--java-options "-Dcryptomator.settingsPath=\"~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\"" \
|
||||||
|
--java-options "-Dcryptomator.ipcSocketPath=\"~/.config/Cryptomator/ipc.socket\"" \
|
||||||
|
--java-options "-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\"" \
|
||||||
|
--java-options "-Dcryptomator.showTrayIcon=false" \
|
||||||
|
--java-options "-Dcryptomator.buildNumber=\"ppa-${REVISION_NUM}\"" \
|
||||||
|
--java-options "-Dcryptomator.appVersion=\"${VERSION_STR}\"" \
|
||||||
|
--app-version "${VERSION_NUM}.${REVISION_NUM}" \
|
||||||
|
--resource-dir resources \
|
||||||
|
--verbose
|
||||||
|
|
||||||
|
override_dh_fixperms:
|
||||||
|
dh_fixperms
|
||||||
|
chmod +x debian/cryptomator/usr/lib/cryptomator/bin/cryptomator.sh
|
||||||
|
|
||||||
|
# override_dh_strip:
|
||||||
|
# no-op
|
||||||
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
3.0 (quilt)
|
||||||
+2
@@ -0,0 +1,2 @@
|
|||||||
|
debian/org.cryptomator.Cryptomator.png
|
||||||
|
resources/cryptomator.png
|
||||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Vendored
+1
-1
@@ -84,7 +84,7 @@
|
|||||||
</array>
|
</array>
|
||||||
<key>public.mime-type</key>
|
<key>public.mime-type</key>
|
||||||
<array>
|
<array>
|
||||||
<string>application/x-vnd.cryptomator.vault-metadata</string>
|
<string>application/vnd.cryptomator.vault</string>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
|||||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 164 KiB |
@@ -1,4 +0,0 @@
|
|||||||
mime-type=application/vnd.cryptomator.encrypted
|
|
||||||
extension=c9r,c9s
|
|
||||||
description=Cryptomator Encrypted Data
|
|
||||||
icon=resources/Cryptomator.ico
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
mime-type=application/vnd.cryptomator.vault
|
mime-type=application/vnd.cryptomator.vault
|
||||||
extension=cryptomator
|
extension=cryptomator
|
||||||
description=Cryptomator Vault File
|
description=Cryptomator Vault File
|
||||||
icon=resources/Cryptomator.ico
|
icon=resources/Cryptomator-Vault.ico
|
||||||
Vendored
+25
@@ -47,13 +47,38 @@
|
|||||||
<CustomAction Id="JpDisallowDowngrade" Error="!(loc.DowngradeErrorMessage)" />
|
<CustomAction Id="JpDisallowDowngrade" Error="!(loc.DowngradeErrorMessage)" />
|
||||||
<?endif?>
|
<?endif?>
|
||||||
|
|
||||||
|
<!-- Looking for legacy Cryptomator versions-->
|
||||||
|
<Property Id="OLDEXEINSTALLER">
|
||||||
|
<RegistrySearch Id="InnoSetupInstallation" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\Cryptomator_is1" Type="raw" Name="DisplayName" />
|
||||||
|
</Property>
|
||||||
|
<!-- Block installation if innosetup entry of Cryptomator is found -->
|
||||||
|
<!-- TODO: localize -->
|
||||||
|
<Condition Message="A lower version of [ProductName] is already installed. Uninstall it first and then start the setup again. Setup will now exit.">
|
||||||
|
<![CDATA[Installed OR NOT OLDEXEINSTALLER]]>
|
||||||
|
</Condition>
|
||||||
|
|
||||||
<!-- Standard required root -->
|
<!-- Standard required root -->
|
||||||
<Directory Id="TARGETDIR" Name="SourceDir"/>
|
<Directory Id="TARGETDIR" Name="SourceDir"/>
|
||||||
|
|
||||||
|
<!-- Non-Opening ProgID -->
|
||||||
|
<DirectoryRef Id="INSTALLDIR">
|
||||||
|
<Component Win64="yes" Id="nonStartingProgID" >
|
||||||
|
<File Id="IconFileForEncryptedData" KeyPath="yes" Source="$(env.JP_WIXWIZARD_RESOURCES)\Cryptomator-Vault.ico" Name="Cryptomator-Vault.ico"></File>
|
||||||
|
<ProgId Id="Cryptomator.Encrypted.1" Description="Cryptomator Encrypted Data" Icon="IconFileForEncryptedData" IconIndex="0">
|
||||||
|
<Extension Id="c9r" Advertise="no" ContentType="application/vnd.cryptomator.encrypted">
|
||||||
|
<MIME ContentType="application/vnd.cryptomator.encrypted" Default="yes"></MIME>
|
||||||
|
</Extension>
|
||||||
|
<Extension Id="c9s" Advertise="no" ContentType="application/vnd.cryptomator.encrypted"/>
|
||||||
|
</ProgId>
|
||||||
|
</Component>
|
||||||
|
</DirectoryRef>
|
||||||
|
|
||||||
<Feature Id="DefaultFeature" Title="!(loc.MainFeatureTitle)" Level="1">
|
<Feature Id="DefaultFeature" Title="!(loc.MainFeatureTitle)" Level="1">
|
||||||
<ComponentGroupRef Id="Shortcuts"/>
|
<ComponentGroupRef Id="Shortcuts"/>
|
||||||
<ComponentGroupRef Id="Files"/>
|
<ComponentGroupRef Id="Files"/>
|
||||||
<ComponentGroupRef Id="FileAssociations"/>
|
<ComponentGroupRef Id="FileAssociations"/>
|
||||||
|
<!-- Ref to additional ProgIDs -->
|
||||||
|
<ComponentRef Id="nonStartingProgID" />
|
||||||
</Feature>
|
</Feature>
|
||||||
|
|
||||||
<?ifdef JpInstallDirChooser ?>
|
<?ifdef JpInstallDirChooser ?>
|
||||||
|
|||||||
@@ -27,14 +27,14 @@
|
|||||||
<nonModularGroupIds>com.github.serceman,com.github.jnr,org.ow2.asm,net.java.dev.jna,org.apache.jackrabbit,org.apache.httpcomponents,de.swiesend,org.purejava,com.github.hypfvieh</nonModularGroupIds>
|
<nonModularGroupIds>com.github.serceman,com.github.jnr,org.ow2.asm,net.java.dev.jna,org.apache.jackrabbit,org.apache.httpcomponents,de.swiesend,org.purejava,com.github.hypfvieh</nonModularGroupIds>
|
||||||
|
|
||||||
<!-- cryptomator dependencies -->
|
<!-- cryptomator dependencies -->
|
||||||
<cryptomator.cryptofs.version>2.1.0-beta11</cryptomator.cryptofs.version>
|
<cryptomator.cryptofs.version>2.1.0-beta13</cryptomator.cryptofs.version>
|
||||||
<cryptomator.integrations.version>1.0.0-rc1</cryptomator.integrations.version>
|
<cryptomator.integrations.version>1.0.0-rc1</cryptomator.integrations.version>
|
||||||
<cryptomator.integrations.win.version>1.0.0-beta2</cryptomator.integrations.win.version>
|
<cryptomator.integrations.win.version>1.0.0-beta2</cryptomator.integrations.win.version>
|
||||||
<cryptomator.integrations.mac.version>1.0.0-beta2</cryptomator.integrations.mac.version>
|
<cryptomator.integrations.mac.version>1.0.0-beta2</cryptomator.integrations.mac.version>
|
||||||
<cryptomator.integrations.linux.version>1.0.0-beta1</cryptomator.integrations.linux.version>
|
<cryptomator.integrations.linux.version>1.0.0-beta1</cryptomator.integrations.linux.version>
|
||||||
<cryptomator.fuse.version>1.3.2</cryptomator.fuse.version>
|
<cryptomator.fuse.version>1.3.2</cryptomator.fuse.version>
|
||||||
<cryptomator.dokany.version>1.3.1</cryptomator.dokany.version>
|
<cryptomator.dokany.version>1.3.2</cryptomator.dokany.version>
|
||||||
<cryptomator.webdav.version>1.2.5</cryptomator.webdav.version>
|
<cryptomator.webdav.version>1.2.6</cryptomator.webdav.version>
|
||||||
|
|
||||||
<!-- 3rd party dependencies -->
|
<!-- 3rd party dependencies -->
|
||||||
<javafx.version>16</javafx.version>
|
<javafx.version>16</javafx.version>
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ module org.cryptomator.desktop {
|
|||||||
opens org.cryptomator.ui.fxapp to javafx.fxml;
|
opens org.cryptomator.ui.fxapp to javafx.fxml;
|
||||||
opens org.cryptomator.ui.health to javafx.fxml;
|
opens org.cryptomator.ui.health to javafx.fxml;
|
||||||
opens org.cryptomator.ui.keyloading.masterkeyfile to javafx.fxml;
|
opens org.cryptomator.ui.keyloading.masterkeyfile to javafx.fxml;
|
||||||
|
opens org.cryptomator.ui.lock to javafx.fxml;
|
||||||
opens org.cryptomator.ui.mainwindow to javafx.fxml;
|
opens org.cryptomator.ui.mainwindow to javafx.fxml;
|
||||||
opens org.cryptomator.ui.migration to javafx.fxml;
|
opens org.cryptomator.ui.migration to javafx.fxml;
|
||||||
opens org.cryptomator.ui.preferences to javafx.fxml;
|
opens org.cryptomator.ui.preferences to javafx.fxml;
|
||||||
|
|||||||
@@ -36,8 +36,10 @@ public class Environment {
|
|||||||
LOG.debug("cryptomator.ipcSocketPath: {}", System.getProperty("cryptomator.ipcSocketPath"));
|
LOG.debug("cryptomator.ipcSocketPath: {}", System.getProperty("cryptomator.ipcSocketPath"));
|
||||||
LOG.debug("cryptomator.keychainPath: {}", System.getProperty("cryptomator.keychainPath"));
|
LOG.debug("cryptomator.keychainPath: {}", System.getProperty("cryptomator.keychainPath"));
|
||||||
LOG.debug("cryptomator.logDir: {}", System.getProperty("cryptomator.logDir"));
|
LOG.debug("cryptomator.logDir: {}", System.getProperty("cryptomator.logDir"));
|
||||||
|
LOG.debug("cryptomator.pluginDir: {}", System.getProperty("cryptomator.pluginDir"));
|
||||||
LOG.debug("cryptomator.mountPointsDir: {}", System.getProperty("cryptomator.mountPointsDir"));
|
LOG.debug("cryptomator.mountPointsDir: {}", System.getProperty("cryptomator.mountPointsDir"));
|
||||||
LOG.debug("cryptomator.minPwLength: {}", System.getProperty("cryptomator.minPwLength"));
|
LOG.debug("cryptomator.minPwLength: {}", System.getProperty("cryptomator.minPwLength"));
|
||||||
|
LOG.debug("cryptomator.appVersion: {}", System.getProperty("cryptomator.appVersion"));
|
||||||
LOG.debug("cryptomator.buildNumber: {}", System.getProperty("cryptomator.buildNumber"));
|
LOG.debug("cryptomator.buildNumber: {}", System.getProperty("cryptomator.buildNumber"));
|
||||||
LOG.debug("cryptomator.showTrayIcon: {}", System.getProperty("cryptomator.showTrayIcon"));
|
LOG.debug("cryptomator.showTrayIcon: {}", System.getProperty("cryptomator.showTrayIcon"));
|
||||||
LOG.debug("fuse.experimental: {}", Boolean.getBoolean("fuse.experimental"));
|
LOG.debug("fuse.experimental: {}", Boolean.getBoolean("fuse.experimental"));
|
||||||
@@ -63,10 +65,18 @@ public class Environment {
|
|||||||
return getPath("cryptomator.logDir").map(this::replaceHomeDir);
|
return getPath("cryptomator.logDir").map(this::replaceHomeDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Optional<Path> getPluginDir() {
|
||||||
|
return getPath("cryptomator.pluginDir").map(this::replaceHomeDir);
|
||||||
|
}
|
||||||
|
|
||||||
public Optional<Path> getMountPointsDir() {
|
public Optional<Path> getMountPointsDir() {
|
||||||
return getPath("cryptomator.mountPointsDir").map(this::replaceHomeDir);
|
return getPath("cryptomator.mountPointsDir").map(this::replaceHomeDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Optional<String> getAppVersion() {
|
||||||
|
return Optional.ofNullable(System.getProperty("cryptomator.appVersion"));
|
||||||
|
}
|
||||||
|
|
||||||
public Optional<String> getBuildNumber() {
|
public Optional<String> getBuildNumber() {
|
||||||
return Optional.ofNullable(System.getProperty("cryptomator.buildNumber"));
|
return Optional.ofNullable(System.getProperty("cryptomator.buildNumber"));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,121 @@
|
|||||||
|
package org.cryptomator.common;
|
||||||
|
|
||||||
|
import com.google.common.base.Strings;
|
||||||
|
import com.google.common.base.Throwables;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds a throwable and provides a human-readable {@link #toString() three-component string representation}
|
||||||
|
* aiming to allow documentation and lookup of same or similar errors.
|
||||||
|
*/
|
||||||
|
public class ErrorCode {
|
||||||
|
|
||||||
|
private final static int A_PRIME = 31;
|
||||||
|
private final static int SEED = 0xdeadbeef;
|
||||||
|
public final static String DELIM = ":";
|
||||||
|
|
||||||
|
private final static int LATEST_FRAME = 1;
|
||||||
|
private final static int ALL_FRAMES = Integer.MAX_VALUE;
|
||||||
|
|
||||||
|
private final Throwable throwable;
|
||||||
|
private final Throwable rootCause;
|
||||||
|
private final int rootCauseSpecificFrames;
|
||||||
|
|
||||||
|
private ErrorCode(Throwable throwable, Throwable rootCause, int rootCauseSpecificFrames) {
|
||||||
|
this.throwable = Objects.requireNonNull(throwable);
|
||||||
|
this.rootCause = Objects.requireNonNull(rootCause);
|
||||||
|
this.rootCauseSpecificFrames = rootCauseSpecificFrames;
|
||||||
|
}
|
||||||
|
|
||||||
|
// visible for testing
|
||||||
|
String methodCode() {
|
||||||
|
return format(traceCode(rootCause, LATEST_FRAME));
|
||||||
|
}
|
||||||
|
|
||||||
|
// visible for testing
|
||||||
|
String rootCauseCode() {
|
||||||
|
return format(traceCode(rootCause, rootCauseSpecificFrames));
|
||||||
|
}
|
||||||
|
|
||||||
|
// visible for testing
|
||||||
|
String throwableCode() {
|
||||||
|
return format(traceCode(throwable, ALL_FRAMES));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Produces an error code consisting of three {@value DELIM}-separated components.
|
||||||
|
* <p>
|
||||||
|
* A full match of the error code indicates the exact same throwable (to the extent possible
|
||||||
|
* without hash collisions). A partial match of the first or second component indicates related problems
|
||||||
|
* with the same root cause.
|
||||||
|
*
|
||||||
|
* @return A three-part error code
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return methodCode() + DELIM + rootCauseCode() + DELIM + throwableCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deterministically creates an error code from the stack trace of the given <code>cause</code>.
|
||||||
|
* <p>
|
||||||
|
* The code consists of three parts separated by {@value DELIM}:
|
||||||
|
* <ul>
|
||||||
|
* <li>The first part depends on the root cause and the method that threw it</li>
|
||||||
|
* <li>The second part depends on the root cause and its stack trace</li>
|
||||||
|
* <li>The third part depends on all the cause hierarchy</li>
|
||||||
|
* </ul>
|
||||||
|
* <p>
|
||||||
|
* Parts may be identical if the cause is the root cause or the root cause has just one single item in its stack trace.
|
||||||
|
*
|
||||||
|
* @param throwable The exception
|
||||||
|
* @return A three-part error code
|
||||||
|
*/
|
||||||
|
public static ErrorCode of(Throwable throwable) {
|
||||||
|
var causalChain = Throwables.getCausalChain(throwable);
|
||||||
|
if (causalChain.size() > 1) {
|
||||||
|
var rootCause = causalChain.get(causalChain.size() - 1);
|
||||||
|
var parentOfRootCause = causalChain.get(causalChain.size() - 2);
|
||||||
|
var rootSpecificFrames = nonOverlappingFrames(parentOfRootCause.getStackTrace(), rootCause.getStackTrace());
|
||||||
|
return new ErrorCode(throwable, rootCause, rootSpecificFrames);
|
||||||
|
} else {
|
||||||
|
return new ErrorCode(throwable, throwable, ALL_FRAMES);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String format(int value) {
|
||||||
|
// Cut off highest 12 bits (only leave 20 least significant bits) and XOR rest with cutoff
|
||||||
|
value = (value & 0xfffff) ^ (value >>> 20);
|
||||||
|
return Strings.padStart(Integer.toString(value, 32).toUpperCase(Locale.ROOT), 4, '0');
|
||||||
|
}
|
||||||
|
|
||||||
|
private int traceCode(Throwable e, int frameCount) {
|
||||||
|
int result = SEED;
|
||||||
|
if (e.getCause() != null) {
|
||||||
|
result = traceCode(e.getCause(), frameCount);
|
||||||
|
}
|
||||||
|
result = result * A_PRIME + e.getClass().getName().hashCode();
|
||||||
|
var stack = e.getStackTrace();
|
||||||
|
for (int i = 0; i < Math.min(stack.length, frameCount); i++) {
|
||||||
|
result = result * A_PRIME + stack[i].getClassName().hashCode();
|
||||||
|
result = result * A_PRIME + stack[i].getMethodName().hashCode();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int nonOverlappingFrames(StackTraceElement[] frames, StackTraceElement[] enclosingFrames) {
|
||||||
|
// Compute the number of elements in `frames` not contained in `enclosingFrames` by iterating backwards
|
||||||
|
// Result should usually be equal to the difference in size of both traces
|
||||||
|
var i = reverseStream(enclosingFrames).iterator();
|
||||||
|
return (int) reverseStream(frames).dropWhile(f -> i.hasNext() && i.next().equals(f)).count();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static <T> Stream<T> reverseStream(T[] array) {
|
||||||
|
return IntStream.rangeClosed(1, array.length).mapToObj(i -> array[array.length - i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
package org.cryptomator.common;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLClassLoader;
|
||||||
|
import java.nio.file.FileVisitOption;
|
||||||
|
import java.nio.file.FileVisitResult;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.SimpleFileVisitor;
|
||||||
|
import java.nio.file.attribute.BasicFileAttributes;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.EnumSet;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Singleton
|
||||||
|
public class PluginClassLoader extends URLClassLoader {
|
||||||
|
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(PluginClassLoader.class);
|
||||||
|
private static final String NAME = "PluginClassLoader";
|
||||||
|
private static final String JAR_SUFFIX = ".jar";
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public PluginClassLoader(Environment env) {
|
||||||
|
super(NAME, env.getPluginDir().map(PluginClassLoader::findJars).orElse(new URL[0]), PluginClassLoader.class.getClassLoader());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static URL[] findJars(Path path) {
|
||||||
|
if (!Files.isDirectory(path)) {
|
||||||
|
return new URL[0];
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
var visitor = new JarVisitor();
|
||||||
|
Files.walkFileTree(path, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, visitor);
|
||||||
|
return visitor.urls.toArray(URL[]::new);
|
||||||
|
} catch (IOException e) {
|
||||||
|
LOG.warn("Failed to scan plugin dir " + path, e);
|
||||||
|
return new URL[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final class JarVisitor extends SimpleFileVisitor<Path> {
|
||||||
|
|
||||||
|
private final List<URL> urls = new ArrayList<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
|
||||||
|
if (attrs.isRegularFile() && file.getFileName().toString().toLowerCase().endsWith(JAR_SUFFIX)) {
|
||||||
|
try {
|
||||||
|
urls.add(file.toUri().toURL());
|
||||||
|
} catch (MalformedURLException e) {
|
||||||
|
LOG.warn("Failed to create URL for jar file {}", file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FileVisitResult.CONTINUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@ package org.cryptomator.common.keychain;
|
|||||||
|
|
||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
import dagger.Provides;
|
import dagger.Provides;
|
||||||
|
import org.cryptomator.common.PluginClassLoader;
|
||||||
import org.cryptomator.common.settings.Settings;
|
import org.cryptomator.common.settings.Settings;
|
||||||
import org.cryptomator.integrations.keychain.KeychainAccessProvider;
|
import org.cryptomator.integrations.keychain.KeychainAccessProvider;
|
||||||
|
|
||||||
@@ -17,8 +18,8 @@ public class KeychainModule {
|
|||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
static Set<ServiceLoader.Provider<KeychainAccessProvider>> provideAvailableKeychainAccessProviderFactories() {
|
static Set<ServiceLoader.Provider<KeychainAccessProvider>> provideAvailableKeychainAccessProviderFactories(PluginClassLoader classLoader) {
|
||||||
return ServiceLoader.load(KeychainAccessProvider.class).stream().collect(Collectors.toUnmodifiableSet());
|
return ServiceLoader.load(KeychainAccessProvider.class, classLoader).stream().collect(Collectors.toUnmodifiableSet());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
|
|||||||
@@ -24,6 +24,6 @@ class AvailableDriveLetterChooser implements MountPointChooser {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<Path> chooseMountPoint(Volume caller) {
|
public Optional<Path> chooseMountPoint(Volume caller) {
|
||||||
return this.windowsDriveLetters.getAvailableDriveLetterPath();
|
return this.windowsDriveLetters.getDesiredAvailableDriveLetterPath();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,8 @@ public class Settings {
|
|||||||
public static final NodeOrientation DEFAULT_USER_INTERFACE_ORIENTATION = NodeOrientation.LEFT_TO_RIGHT;
|
public static final NodeOrientation DEFAULT_USER_INTERFACE_ORIENTATION = NodeOrientation.LEFT_TO_RIGHT;
|
||||||
public static final String DEFAULT_LICENSE_KEY = "";
|
public static final String DEFAULT_LICENSE_KEY = "";
|
||||||
public static final boolean DEFAULT_SHOW_MINIMIZE_BUTTON = false;
|
public static final boolean DEFAULT_SHOW_MINIMIZE_BUTTON = false;
|
||||||
|
public static final String DEFAULT_DISPLAY_CONFIGURATION = "";
|
||||||
|
|
||||||
|
|
||||||
private final ObservableList<VaultSettings> directories = FXCollections.observableArrayList(VaultSettings::observables);
|
private final ObservableList<VaultSettings> directories = FXCollections.observableArrayList(VaultSettings::observables);
|
||||||
private final BooleanProperty askedForUpdateCheck = new SimpleBooleanProperty(DEFAULT_ASKED_FOR_UPDATE_CHECK);
|
private final BooleanProperty askedForUpdateCheck = new SimpleBooleanProperty(DEFAULT_ASKED_FOR_UPDATE_CHECK);
|
||||||
@@ -59,6 +61,12 @@ public class Settings {
|
|||||||
private final StringProperty licenseKey = new SimpleStringProperty(DEFAULT_LICENSE_KEY);
|
private final StringProperty licenseKey = new SimpleStringProperty(DEFAULT_LICENSE_KEY);
|
||||||
private final BooleanProperty showMinimizeButton = new SimpleBooleanProperty(DEFAULT_SHOW_MINIMIZE_BUTTON);
|
private final BooleanProperty showMinimizeButton = new SimpleBooleanProperty(DEFAULT_SHOW_MINIMIZE_BUTTON);
|
||||||
private final BooleanProperty showTrayIcon;
|
private final BooleanProperty showTrayIcon;
|
||||||
|
private final IntegerProperty windowXPosition = new SimpleIntegerProperty();
|
||||||
|
private final IntegerProperty windowYPosition = new SimpleIntegerProperty();
|
||||||
|
private final IntegerProperty windowWidth = new SimpleIntegerProperty();
|
||||||
|
private final IntegerProperty windowHeight = new SimpleIntegerProperty();
|
||||||
|
private final ObjectProperty<String> displayConfiguration = new SimpleObjectProperty<>(DEFAULT_DISPLAY_CONFIGURATION);
|
||||||
|
|
||||||
|
|
||||||
private Consumer<Settings> saveCmd;
|
private Consumer<Settings> saveCmd;
|
||||||
|
|
||||||
@@ -83,6 +91,11 @@ public class Settings {
|
|||||||
licenseKey.addListener(this::somethingChanged);
|
licenseKey.addListener(this::somethingChanged);
|
||||||
showMinimizeButton.addListener(this::somethingChanged);
|
showMinimizeButton.addListener(this::somethingChanged);
|
||||||
showTrayIcon.addListener(this::somethingChanged);
|
showTrayIcon.addListener(this::somethingChanged);
|
||||||
|
windowXPosition.addListener(this::somethingChanged);
|
||||||
|
windowYPosition.addListener(this::somethingChanged);
|
||||||
|
windowWidth.addListener(this::somethingChanged);
|
||||||
|
windowHeight.addListener(this::somethingChanged);
|
||||||
|
displayConfiguration.addListener(this::somethingChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setSaveCmd(Consumer<Settings> saveCmd) {
|
void setSaveCmd(Consumer<Settings> saveCmd) {
|
||||||
@@ -141,7 +154,7 @@ public class Settings {
|
|||||||
return theme;
|
return theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ObjectProperty<String> keychainProvider() { return keychainProvider; }
|
public ObjectProperty<String> keychainProvider() {return keychainProvider;}
|
||||||
|
|
||||||
public ObjectProperty<NodeOrientation> userInterfaceOrientation() {
|
public ObjectProperty<NodeOrientation> userInterfaceOrientation() {
|
||||||
return userInterfaceOrientation;
|
return userInterfaceOrientation;
|
||||||
@@ -158,4 +171,24 @@ public class Settings {
|
|||||||
public BooleanProperty showTrayIcon() {
|
public BooleanProperty showTrayIcon() {
|
||||||
return showTrayIcon;
|
return showTrayIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IntegerProperty windowXPositionProperty() {
|
||||||
|
return windowXPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntegerProperty windowYPositionProperty() {
|
||||||
|
return windowYPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntegerProperty windowWidthProperty() {
|
||||||
|
return windowWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntegerProperty windowHeightProperty() {
|
||||||
|
return windowHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObjectProperty<String> displayConfigurationProperty() {
|
||||||
|
return displayConfiguration;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,12 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
|
|||||||
out.name("licenseKey").value(value.licenseKey().get());
|
out.name("licenseKey").value(value.licenseKey().get());
|
||||||
out.name("showMinimizeButton").value(value.showMinimizeButton().get());
|
out.name("showMinimizeButton").value(value.showMinimizeButton().get());
|
||||||
out.name("showTrayIcon").value(value.showTrayIcon().get());
|
out.name("showTrayIcon").value(value.showTrayIcon().get());
|
||||||
|
out.name("windowXPosition").value((value.windowXPositionProperty().get()));
|
||||||
|
out.name("windowYPosition").value((value.windowYPositionProperty().get()));
|
||||||
|
out.name("windowWidth").value((value.windowWidthProperty().get()));
|
||||||
|
out.name("windowHeight").value((value.windowHeightProperty().get()));
|
||||||
|
out.name("displayConfiguration").value((value.displayConfigurationProperty().get()));
|
||||||
|
|
||||||
out.endObject();
|
out.endObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,6 +92,12 @@ public class SettingsJsonAdapter extends TypeAdapter<Settings> {
|
|||||||
case "licenseKey" -> settings.licenseKey().set(in.nextString());
|
case "licenseKey" -> settings.licenseKey().set(in.nextString());
|
||||||
case "showMinimizeButton" -> settings.showMinimizeButton().set(in.nextBoolean());
|
case "showMinimizeButton" -> settings.showMinimizeButton().set(in.nextBoolean());
|
||||||
case "showTrayIcon" -> settings.showTrayIcon().set(in.nextBoolean());
|
case "showTrayIcon" -> settings.showTrayIcon().set(in.nextBoolean());
|
||||||
|
case "windowXPosition" -> settings.windowXPositionProperty().set(in.nextInt());
|
||||||
|
case "windowYPosition" -> settings.windowYPositionProperty().set(in.nextInt());
|
||||||
|
case "windowWidth" -> settings.windowWidthProperty().set(in.nextInt());
|
||||||
|
case "windowHeight" -> settings.windowHeightProperty().set(in.nextInt());
|
||||||
|
case "displayConfiguration" -> settings.displayConfigurationProperty().set(in.nextString());
|
||||||
|
|
||||||
default -> {
|
default -> {
|
||||||
LOG.warn("Unsupported vault setting found in JSON: " + name);
|
LOG.warn("Unsupported vault setting found in JSON: " + name);
|
||||||
in.skipValue();
|
in.skipValue();
|
||||||
|
|||||||
@@ -17,9 +17,6 @@ import org.cryptomator.cryptofs.CryptoFileSystem;
|
|||||||
import org.cryptomator.cryptofs.CryptoFileSystemProperties;
|
import org.cryptomator.cryptofs.CryptoFileSystemProperties;
|
||||||
import org.cryptomator.cryptofs.CryptoFileSystemProperties.FileSystemFlags;
|
import org.cryptomator.cryptofs.CryptoFileSystemProperties.FileSystemFlags;
|
||||||
import org.cryptomator.cryptofs.CryptoFileSystemProvider;
|
import org.cryptomator.cryptofs.CryptoFileSystemProvider;
|
||||||
import org.cryptomator.cryptofs.VaultConfig;
|
|
||||||
import org.cryptomator.cryptofs.VaultConfig.UnverifiedVaultConfig;
|
|
||||||
import org.cryptomator.cryptofs.VaultConfigLoadException;
|
|
||||||
import org.cryptomator.cryptofs.common.FileSystemCapabilityChecker;
|
import org.cryptomator.cryptofs.common.FileSystemCapabilityChecker;
|
||||||
import org.cryptomator.cryptolib.api.CryptoException;
|
import org.cryptomator.cryptolib.api.CryptoException;
|
||||||
import org.cryptomator.cryptolib.api.MasterkeyLoader;
|
import org.cryptomator.cryptolib.api.MasterkeyLoader;
|
||||||
@@ -38,8 +35,6 @@ import javafx.beans.property.BooleanProperty;
|
|||||||
import javafx.beans.property.ObjectProperty;
|
import javafx.beans.property.ObjectProperty;
|
||||||
import javafx.beans.property.SimpleBooleanProperty;
|
import javafx.beans.property.SimpleBooleanProperty;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
@@ -62,6 +57,7 @@ public class Vault {
|
|||||||
private final AtomicReference<CryptoFileSystem> cryptoFileSystem;
|
private final AtomicReference<CryptoFileSystem> cryptoFileSystem;
|
||||||
private final VaultState state;
|
private final VaultState state;
|
||||||
private final ObjectProperty<Exception> lastKnownException;
|
private final ObjectProperty<Exception> lastKnownException;
|
||||||
|
private final VaultConfigCache configCache;
|
||||||
private final VaultStats stats;
|
private final VaultStats stats;
|
||||||
private final StringBinding displayName;
|
private final StringBinding displayName;
|
||||||
private final StringBinding displayablePath;
|
private final StringBinding displayablePath;
|
||||||
@@ -78,8 +74,9 @@ public class Vault {
|
|||||||
private volatile Volume volume;
|
private volatile Volume volume;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
Vault(VaultSettings vaultSettings, Provider<Volume> volumeProvider, @DefaultMountFlags StringBinding defaultMountFlags, AtomicReference<CryptoFileSystem> cryptoFileSystem, VaultState state, @Named("lastKnownException") ObjectProperty<Exception> lastKnownException, VaultStats stats) {
|
Vault(VaultSettings vaultSettings, VaultConfigCache configCache, Provider<Volume> volumeProvider, @DefaultMountFlags StringBinding defaultMountFlags, AtomicReference<CryptoFileSystem> cryptoFileSystem, VaultState state, @Named("lastKnownException") ObjectProperty<Exception> lastKnownException, VaultStats stats) {
|
||||||
this.vaultSettings = vaultSettings;
|
this.vaultSettings = vaultSettings;
|
||||||
|
this.configCache = configCache;
|
||||||
this.volumeProvider = volumeProvider;
|
this.volumeProvider = volumeProvider;
|
||||||
this.defaultMountFlags = defaultMountFlags;
|
this.defaultMountFlags = defaultMountFlags;
|
||||||
this.cryptoFileSystem = cryptoFileSystem;
|
this.cryptoFileSystem = cryptoFileSystem;
|
||||||
@@ -107,10 +104,10 @@ public class Vault {
|
|||||||
Set<FileSystemFlags> flags = EnumSet.noneOf(FileSystemFlags.class);
|
Set<FileSystemFlags> flags = EnumSet.noneOf(FileSystemFlags.class);
|
||||||
if (vaultSettings.usesReadOnlyMode().get()) {
|
if (vaultSettings.usesReadOnlyMode().get()) {
|
||||||
flags.add(FileSystemFlags.READONLY);
|
flags.add(FileSystemFlags.READONLY);
|
||||||
} else if(vaultSettings.maxCleartextFilenameLength().get() == -1) {
|
} else if (vaultSettings.maxCleartextFilenameLength().get() == -1) {
|
||||||
LOG.debug("Determining cleartext filename length limitations...");
|
LOG.debug("Determining cleartext filename length limitations...");
|
||||||
var checker = new FileSystemCapabilityChecker();
|
var checker = new FileSystemCapabilityChecker();
|
||||||
int shorteningThreshold = getUnverifiedVaultConfig().allegedShorteningThreshold();
|
int shorteningThreshold = configCache.get().allegedShorteningThreshold();
|
||||||
int ciphertextLimit = checker.determineSupportedCiphertextFileNameLength(getPath());
|
int ciphertextLimit = checker.determineSupportedCiphertextFileNameLength(getPath());
|
||||||
if (ciphertextLimit < shorteningThreshold) {
|
if (ciphertextLimit < shorteningThreshold) {
|
||||||
int cleartextLimit = checker.determineSupportedCleartextFileNameLength(getPath());
|
int cleartextLimit = checker.determineSupportedCleartextFileNameLength(getPath());
|
||||||
@@ -328,19 +325,6 @@ public class Vault {
|
|||||||
return stats;
|
return stats;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Attempts to read the vault config file and parse it without verifying its integrity.
|
|
||||||
*
|
|
||||||
* @return an unverified vault config
|
|
||||||
* @throws VaultConfigLoadException if the read file cannot be properly parsed
|
|
||||||
* @throws IOException if reading the file fails
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public UnverifiedVaultConfig getUnverifiedVaultConfig() throws IOException {
|
|
||||||
Path configPath = getPath().resolve(org.cryptomator.common.Constants.VAULTCONFIG_FILENAME);
|
|
||||||
String token = Files.readString(configPath, StandardCharsets.US_ASCII);
|
|
||||||
return VaultConfig.decode(token);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Observable[] observables() {
|
public Observable[] observables() {
|
||||||
return new Observable[]{state};
|
return new Observable[]{state};
|
||||||
@@ -375,6 +359,10 @@ public class Vault {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public VaultConfigCache getVaultConfigCache() {
|
||||||
|
return configCache;
|
||||||
|
}
|
||||||
|
|
||||||
public void setCustomMountFlags(String mountFlags) {
|
public void setCustomMountFlags(String mountFlags) {
|
||||||
vaultSettings.mountFlags().set(mountFlags);
|
vaultSettings.mountFlags().set(mountFlags);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,9 @@ public interface VaultComponent {
|
|||||||
@BindsInstance
|
@BindsInstance
|
||||||
Builder vaultSettings(VaultSettings vaultSettings);
|
Builder vaultSettings(VaultSettings vaultSettings);
|
||||||
|
|
||||||
|
@BindsInstance
|
||||||
|
Builder vaultConfigCache(VaultConfigCache configCache);
|
||||||
|
|
||||||
@BindsInstance
|
@BindsInstance
|
||||||
Builder initialVaultState(VaultState.Value vaultState);
|
Builder initialVaultState(VaultState.Value vaultState);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
package org.cryptomator.common.vaults;
|
||||||
|
|
||||||
|
import org.cryptomator.common.Constants;
|
||||||
|
import org.cryptomator.common.settings.VaultSettings;
|
||||||
|
import org.cryptomator.cryptofs.VaultConfig;
|
||||||
|
import org.cryptomator.cryptofs.VaultConfigLoadException;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.UncheckedIOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper for lazy loading and on-demand reloading of the vault configuration.
|
||||||
|
*/
|
||||||
|
public class VaultConfigCache {
|
||||||
|
|
||||||
|
private final VaultSettings settings;
|
||||||
|
private final AtomicReference<VaultConfig.UnverifiedVaultConfig> config;
|
||||||
|
|
||||||
|
VaultConfigCache(VaultSettings settings) {
|
||||||
|
this.settings = settings;
|
||||||
|
this.config = new AtomicReference<>(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
void reloadConfig() throws IOException {
|
||||||
|
try {
|
||||||
|
config.set(readConfigFromStorage(this.settings.path().get()));
|
||||||
|
} catch (IOException e) {
|
||||||
|
config.set(null);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public VaultConfig.UnverifiedVaultConfig get() throws IOException {
|
||||||
|
if (config.get() == null) {
|
||||||
|
reloadConfig();
|
||||||
|
}
|
||||||
|
return config.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public VaultConfig.UnverifiedVaultConfig getUnchecked() {
|
||||||
|
try {
|
||||||
|
return get();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new UncheckedIOException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attempts to read the vault config file and parse it without verifying its integrity.
|
||||||
|
*
|
||||||
|
* @throws VaultConfigLoadException if the read file cannot be properly parsed
|
||||||
|
* @throws IOException if reading the file fails
|
||||||
|
*/
|
||||||
|
static VaultConfig.UnverifiedVaultConfig readConfigFromStorage(Path vaultPath) throws IOException {
|
||||||
|
Path configPath = vaultPath.resolve(Constants.VAULTCONFIG_FILENAME);
|
||||||
|
String token = Files.readString(configPath, StandardCharsets.US_ASCII);
|
||||||
|
return VaultConfig.decode(token);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -18,7 +18,6 @@ import org.slf4j.LoggerFactory;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
import javafx.collections.FXCollections;
|
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
@@ -31,6 +30,7 @@ import java.util.ResourceBundle;
|
|||||||
import static org.cryptomator.common.Constants.MASTERKEY_FILENAME;
|
import static org.cryptomator.common.Constants.MASTERKEY_FILENAME;
|
||||||
import static org.cryptomator.common.Constants.VAULTCONFIG_FILENAME;
|
import static org.cryptomator.common.Constants.VAULTCONFIG_FILENAME;
|
||||||
import static org.cryptomator.common.vaults.VaultState.Value.ERROR;
|
import static org.cryptomator.common.vaults.VaultState.Value.ERROR;
|
||||||
|
import static org.cryptomator.common.vaults.VaultState.Value.LOCKED;
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
public class VaultListManager {
|
public class VaultListManager {
|
||||||
@@ -96,6 +96,11 @@ public class VaultListManager {
|
|||||||
VaultComponent.Builder compBuilder = vaultComponentBuilder.vaultSettings(vaultSettings);
|
VaultComponent.Builder compBuilder = vaultComponentBuilder.vaultSettings(vaultSettings);
|
||||||
try {
|
try {
|
||||||
VaultState.Value vaultState = determineVaultState(vaultSettings.path().get());
|
VaultState.Value vaultState = determineVaultState(vaultSettings.path().get());
|
||||||
|
VaultConfigCache wrapper = new VaultConfigCache(vaultSettings);
|
||||||
|
compBuilder.vaultConfigCache(wrapper); //first set the wrapper in the builder, THEN try to load config
|
||||||
|
if (vaultState == LOCKED) { //for legacy reasons: pre v8 vault do not have a config, but they are in the NEEDS_MIGRATION state
|
||||||
|
wrapper.reloadConfig();
|
||||||
|
}
|
||||||
compBuilder.initialVaultState(vaultState);
|
compBuilder.initialVaultState(vaultState);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
LOG.warn("Failed to determine vault state for " + vaultSettings.path().get(), e);
|
LOG.warn("Failed to determine vault state for " + vaultSettings.path().get(), e);
|
||||||
@@ -112,6 +117,9 @@ public class VaultListManager {
|
|||||||
case LOCKED, NEEDS_MIGRATION, MISSING -> {
|
case LOCKED, NEEDS_MIGRATION, MISSING -> {
|
||||||
try {
|
try {
|
||||||
var determinedState = determineVaultState(vault.getPath());
|
var determinedState = determineVaultState(vault.getPath());
|
||||||
|
if (determinedState == LOCKED) {
|
||||||
|
vault.getVaultConfigCache().reloadConfig();
|
||||||
|
}
|
||||||
state.set(determinedState);
|
state.set(determinedState);
|
||||||
yield determinedState;
|
yield determinedState;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@@ -132,7 +140,9 @@ public class VaultListManager {
|
|||||||
return switch (CryptoFileSystemProvider.checkDirStructureForVault(pathToVault, VAULTCONFIG_FILENAME, MASTERKEY_FILENAME)) {
|
return switch (CryptoFileSystemProvider.checkDirStructureForVault(pathToVault, VAULTCONFIG_FILENAME, MASTERKEY_FILENAME)) {
|
||||||
case VAULT -> VaultState.Value.LOCKED;
|
case VAULT -> VaultState.Value.LOCKED;
|
||||||
case UNRELATED -> VaultState.Value.MISSING;
|
case UNRELATED -> VaultState.Value.MISSING;
|
||||||
case MAYBE_LEGACY -> Migrators.get().needsMigration(pathToVault, VAULTCONFIG_FILENAME, MASTERKEY_FILENAME) ? VaultState.Value.NEEDS_MIGRATION : VaultState.Value.MISSING;
|
case MAYBE_LEGACY -> Migrators.get().needsMigration(pathToVault, VAULTCONFIG_FILENAME, MASTERKEY_FILENAME) ? //
|
||||||
|
VaultState.Value.NEEDS_MIGRATION //
|
||||||
|
: VaultState.Value.MISSING;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public class WebDavVolume implements Volume {
|
|||||||
//on windows, prevent an automatic drive letter selection in the upstream library. Either we choose already a specific one or there is no free.
|
//on windows, prevent an automatic drive letter selection in the upstream library. Either we choose already a specific one or there is no free.
|
||||||
Supplier<String> driveLetterSupplier;
|
Supplier<String> driveLetterSupplier;
|
||||||
if (System.getProperty("os.name").toLowerCase().contains("windows") && vaultSettings.winDriveLetter().isEmpty().get()) {
|
if (System.getProperty("os.name").toLowerCase().contains("windows") && vaultSettings.winDriveLetter().isEmpty().get()) {
|
||||||
driveLetterSupplier = () -> windowsDriveLetters.getAvailableDriveLetter().orElse(null);
|
driveLetterSupplier = () -> windowsDriveLetters.getDesiredAvailableDriveLetter().orElse(null);
|
||||||
} else {
|
} else {
|
||||||
driveLetterSupplier = () -> vaultSettings.winDriveLetter().get();
|
driveLetterSupplier = () -> vaultSettings.winDriveLetter().get();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,11 +22,11 @@ import java.util.stream.StreamSupport;
|
|||||||
@Singleton
|
@Singleton
|
||||||
public final class WindowsDriveLetters {
|
public final class WindowsDriveLetters {
|
||||||
|
|
||||||
private static final Set<String> C_TO_Z;
|
private static final Set<String> A_TO_Z;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
try (IntStream stream = IntStream.rangeClosed('C', 'Z')) {
|
try (IntStream stream = IntStream.rangeClosed('A', 'Z')) {
|
||||||
C_TO_Z = stream.mapToObj(i -> String.valueOf((char) i)).collect(ImmutableSet.toImmutableSet());
|
A_TO_Z = stream.mapToObj(i -> String.valueOf((char) i)).collect(ImmutableSet.toImmutableSet());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ public final class WindowsDriveLetters {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Set<String> getAllDriveLetters() {
|
public Set<String> getAllDriveLetters() {
|
||||||
return C_TO_Z;
|
return A_TO_Z;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<String> getOccupiedDriveLetters() {
|
public Set<String> getOccupiedDriveLetters() {
|
||||||
@@ -59,6 +59,26 @@ public final class WindowsDriveLetters {
|
|||||||
return getAvailableDriveLetter().map(this::toPath);
|
return getAvailableDriveLetter().map(this::toPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skips A and B and only returns them if all other are occupied.
|
||||||
|
*
|
||||||
|
* @return an Optional containing either the letter of a free drive letter or empty, if none is available
|
||||||
|
*/
|
||||||
|
public Optional<String> getDesiredAvailableDriveLetter() {
|
||||||
|
var availableDriveLetters = getAvailableDriveLetters();
|
||||||
|
var optString = availableDriveLetters.stream().filter(s -> !(s.equals("A") || s.equals("B"))).findFirst();
|
||||||
|
return optString.or(() -> availableDriveLetters.stream().findFirst());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skips A and B and only returns them if all other are occupied.
|
||||||
|
*
|
||||||
|
* @return an Optional containing either the path to a free drive letter or empty, if none is available
|
||||||
|
*/
|
||||||
|
public Optional<Path> getDesiredAvailableDriveLetterPath() {
|
||||||
|
return getDesiredAvailableDriveLetter().map(this::toPath);
|
||||||
|
}
|
||||||
|
|
||||||
public Path toPath(String driveLetter) {
|
public Path toPath(String driveLetter) {
|
||||||
return Path.of(driveLetter + ":\\");
|
return Path.of(driveLetter + ":\\");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ class Server implements IpcCommunicator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Server create(Path socketPath) throws IOException {
|
public static Server create(Path socketPath) throws IOException {
|
||||||
|
Files.createDirectories(socketPath.getParent());
|
||||||
var address = UnixDomainSocketAddress.of(socketPath);
|
var address = UnixDomainSocketAddress.of(socketPath);
|
||||||
var serverSocketChannel = ServerSocketChannel.open(StandardProtocolFamily.UNIX);
|
var serverSocketChannel = ServerSocketChannel.open(StandardProtocolFamily.UNIX);
|
||||||
serverSocketChannel.bind(address);
|
serverSocketChannel.bind(address);
|
||||||
|
|||||||
@@ -38,18 +38,16 @@ public class Cryptomator {
|
|||||||
private final DebugMode debugMode;
|
private final DebugMode debugMode;
|
||||||
private final Environment env;
|
private final Environment env;
|
||||||
private final Lazy<IpcMessageHandler> ipcMessageHandler;
|
private final Lazy<IpcMessageHandler> ipcMessageHandler;
|
||||||
private final Optional<String> applicationVersion;
|
|
||||||
private final CountDownLatch shutdownLatch;
|
private final CountDownLatch shutdownLatch;
|
||||||
private final ShutdownHook shutdownHook;
|
private final ShutdownHook shutdownHook;
|
||||||
private final Lazy<UiLauncher> uiLauncher;
|
private final Lazy<UiLauncher> uiLauncher;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
Cryptomator(LoggerConfiguration logConfig, DebugMode debugMode, Environment env, Lazy<IpcMessageHandler> ipcMessageHandler, @Named("applicationVersion") Optional<String> applicationVersion, @Named("shutdownLatch") CountDownLatch shutdownLatch, ShutdownHook shutdownHook, Lazy<UiLauncher> uiLauncher) {
|
Cryptomator(LoggerConfiguration logConfig, DebugMode debugMode, Environment env, Lazy<IpcMessageHandler> ipcMessageHandler, @Named("shutdownLatch") CountDownLatch shutdownLatch, ShutdownHook shutdownHook, Lazy<UiLauncher> uiLauncher) {
|
||||||
this.logConfig = logConfig;
|
this.logConfig = logConfig;
|
||||||
this.debugMode = debugMode;
|
this.debugMode = debugMode;
|
||||||
this.env = env;
|
this.env = env;
|
||||||
this.ipcMessageHandler = ipcMessageHandler;
|
this.ipcMessageHandler = ipcMessageHandler;
|
||||||
this.applicationVersion = applicationVersion;
|
|
||||||
this.shutdownLatch = shutdownLatch;
|
this.shutdownLatch = shutdownLatch;
|
||||||
this.shutdownHook = shutdownHook;
|
this.shutdownHook = shutdownHook;
|
||||||
this.uiLauncher = uiLauncher;
|
this.uiLauncher = uiLauncher;
|
||||||
@@ -69,7 +67,7 @@ public class Cryptomator {
|
|||||||
*/
|
*/
|
||||||
private int run(String[] args) {
|
private int run(String[] args) {
|
||||||
logConfig.init();
|
logConfig.init();
|
||||||
LOG.info("Starting Cryptomator {} on {} {} ({})", applicationVersion.orElse("SNAPSHOT"), SystemUtils.OS_NAME, SystemUtils.OS_VERSION, SystemUtils.OS_ARCH);
|
LOG.info("Starting Cryptomator {} on {} {} ({})", env.getAppVersion().orElse("SNAPSHOT"), SystemUtils.OS_NAME, SystemUtils.OS_VERSION, SystemUtils.OS_ARCH);
|
||||||
debugMode.initialize();
|
debugMode.initialize();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -18,11 +18,4 @@ class CryptomatorModule {
|
|||||||
return new CountDownLatch(1);
|
return new CountDownLatch(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
|
||||||
@Singleton
|
|
||||||
@Named("applicationVersion")
|
|
||||||
static Optional<String> provideApplicationVersion() {
|
|
||||||
return Optional.ofNullable(Cryptomator.class.getPackage().getImplementationVersion());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -182,7 +182,7 @@ public class CreateNewVaultPasswordController implements FxController {
|
|||||||
|
|
||||||
// 2. initialize vault:
|
// 2. initialize vault:
|
||||||
try {
|
try {
|
||||||
MasterkeyLoader loader = ignored -> masterkey.clone();
|
MasterkeyLoader loader = ignored -> masterkey.copy();
|
||||||
CryptoFileSystemProperties fsProps = CryptoFileSystemProperties.cryptoFileSystemProperties().withCipherCombo(CryptorProvider.Scheme.SIV_CTRMAC).withKeyLoader(loader).build();
|
CryptoFileSystemProperties fsProps = CryptoFileSystemProperties.cryptoFileSystemProperties().withCipherCombo(CryptorProvider.Scheme.SIV_CTRMAC).withKeyLoader(loader).build();
|
||||||
CryptoFileSystemProvider.initialize(path, fsProps, DEFAULT_KEY_ID);
|
CryptoFileSystemProvider.initialize(path, fsProps, DEFAULT_KEY_ID);
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ public class LocationPresets {
|
|||||||
private static final String USER_HOME = System.getProperty("user.home");
|
private static final String USER_HOME = System.getProperty("user.home");
|
||||||
private static final String[] ICLOUDDRIVE_LOCATIONS = {"~/Library/Mobile Documents/iCloud~com~setolabs~Cryptomator/Documents", "~/iCloudDrive/iCloud~com~setolabs~Cryptomator"};
|
private static final String[] ICLOUDDRIVE_LOCATIONS = {"~/Library/Mobile Documents/iCloud~com~setolabs~Cryptomator/Documents", "~/iCloudDrive/iCloud~com~setolabs~Cryptomator"};
|
||||||
private static final String[] DROPBOX_LOCATIONS = {"~/Dropbox"};
|
private static final String[] DROPBOX_LOCATIONS = {"~/Dropbox"};
|
||||||
private static final String[] GDRIVE_LOCATIONS = {"~/Google Drive"};
|
private static final String[] GDRIVE_LOCATIONS = {"~/Google Drive/My Drive", "~/Google Drive"};
|
||||||
private static final String[] ONEDRIVE_LOCATIONS = {"~/OneDrive"};
|
private static final String[] ONEDRIVE_LOCATIONS = {"~/OneDrive"};
|
||||||
private static final String[] MEGA_LOCATIONS = {"~/MEGA"};
|
private static final String[] MEGA_LOCATIONS = {"~/MEGA"};
|
||||||
private static final String[] PCLOUD_LOCATIONS = {"~/pCloudDrive"};
|
private static final String[] PCLOUD_LOCATIONS = {"~/pCloudDrive"};
|
||||||
|
|||||||
@@ -1,22 +1,47 @@
|
|||||||
package org.cryptomator.ui.common;
|
package org.cryptomator.ui.common;
|
||||||
|
|
||||||
|
import org.cryptomator.common.ErrorCode;
|
||||||
import org.cryptomator.common.Nullable;
|
import org.cryptomator.common.Nullable;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
|
import javafx.application.Application;
|
||||||
|
import javafx.application.Platform;
|
||||||
|
import javafx.beans.property.BooleanProperty;
|
||||||
|
import javafx.beans.property.SimpleBooleanProperty;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
|
import javafx.scene.input.Clipboard;
|
||||||
|
import javafx.scene.input.ClipboardContent;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class ErrorController implements FxController {
|
public class ErrorController implements FxController {
|
||||||
|
|
||||||
|
private static final String SEARCH_URL_FORMAT = "https://github.com/cryptomator/cryptomator/discussions/categories/errors?discussions_q=category:Errors+%s";
|
||||||
|
private static final String REPORT_URL_FORMAT = "https://github.com/cryptomator/cryptomator/discussions/new?category=Errors&title=Error+%s&body=%s";
|
||||||
|
private static final String SEARCH_ERRORCODE_DELIM = " OR ";
|
||||||
|
private static final String REPORT_BODY_TEMPLATE = """
|
||||||
|
<!-- ✏️ Please describe what happened as accurately as possible. -->
|
||||||
|
<!-- 📋 Please also copy and paste the detail text from the error window. -->
|
||||||
|
""";
|
||||||
|
|
||||||
|
private final Application application;
|
||||||
private final String stackTrace;
|
private final String stackTrace;
|
||||||
|
private final ErrorCode errorCode;
|
||||||
private final Scene previousScene;
|
private final Scene previousScene;
|
||||||
private final Stage window;
|
private final Stage window;
|
||||||
|
|
||||||
|
private BooleanProperty copiedDetails = new SimpleBooleanProperty();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ErrorController(@Named("stackTrace") String stackTrace, @Nullable Scene previousScene, Stage window) {
|
ErrorController(Application application, @Named("stackTrace") String stackTrace, ErrorCode errorCode, @Nullable Scene previousScene, Stage window) {
|
||||||
|
this.application = application;
|
||||||
this.stackTrace = stackTrace;
|
this.stackTrace = stackTrace;
|
||||||
|
this.errorCode = errorCode;
|
||||||
this.previousScene = previousScene;
|
this.previousScene = previousScene;
|
||||||
this.window = window;
|
this.window = window;
|
||||||
}
|
}
|
||||||
@@ -33,6 +58,31 @@ public class ErrorController implements FxController {
|
|||||||
window.close();
|
window.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void searchError() {
|
||||||
|
var searchTerm = URLEncoder.encode(getErrorCode().replace(ErrorCode.DELIM, SEARCH_ERRORCODE_DELIM), StandardCharsets.UTF_8);
|
||||||
|
application.getHostServices().showDocument(SEARCH_URL_FORMAT.formatted(searchTerm));
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void reportError() {
|
||||||
|
var title = URLEncoder.encode(getErrorCode(), StandardCharsets.UTF_8);
|
||||||
|
var body = URLEncoder.encode(REPORT_BODY_TEMPLATE, StandardCharsets.UTF_8);
|
||||||
|
application.getHostServices().showDocument(REPORT_URL_FORMAT.formatted(title, body));
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void copyDetails() {
|
||||||
|
ClipboardContent clipboardContent = new ClipboardContent();
|
||||||
|
clipboardContent.putString(getDetailText());
|
||||||
|
Clipboard.getSystemClipboard().setContent(clipboardContent);
|
||||||
|
|
||||||
|
copiedDetails.set(true);
|
||||||
|
CompletableFuture.delayedExecutor(2, TimeUnit.SECONDS, Platform::runLater).execute(() -> {
|
||||||
|
copiedDetails.set(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/* Getter/Setter */
|
/* Getter/Setter */
|
||||||
|
|
||||||
public boolean isPreviousScenePresent() {
|
public boolean isPreviousScenePresent() {
|
||||||
@@ -42,4 +92,20 @@ public class ErrorController implements FxController {
|
|||||||
public String getStackTrace() {
|
public String getStackTrace() {
|
||||||
return stackTrace;
|
return stackTrace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getErrorCode() {
|
||||||
|
return errorCode.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDetailText() {
|
||||||
|
return "```\nError Code " + getErrorCode() + "\n" + getStackTrace() + "\n```";
|
||||||
|
}
|
||||||
|
|
||||||
|
public BooleanProperty copiedDetailsProperty() {
|
||||||
|
return copiedDetails;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean getCopiedDetails() {
|
||||||
|
return copiedDetails.get();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import dagger.Binds;
|
|||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
import dagger.Provides;
|
import dagger.Provides;
|
||||||
import dagger.multibindings.IntoMap;
|
import dagger.multibindings.IntoMap;
|
||||||
|
import org.cryptomator.common.ErrorCode;
|
||||||
|
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
import javax.inject.Provider;
|
import javax.inject.Provider;
|
||||||
@@ -31,6 +32,11 @@ abstract class ErrorModule {
|
|||||||
return baos.toString(StandardCharsets.UTF_8);
|
return baos.toString(StandardCharsets.UTF_8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
static ErrorCode provideErrorCode(Throwable cause) {
|
||||||
|
return ErrorCode.of(cause);
|
||||||
|
}
|
||||||
|
|
||||||
@Binds
|
@Binds
|
||||||
@IntoMap
|
@IntoMap
|
||||||
@FxControllerKey(ErrorController.class)
|
@FxControllerKey(ErrorController.class)
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ public enum FxmlFile {
|
|||||||
ERROR("/fxml/error.fxml"), //
|
ERROR("/fxml/error.fxml"), //
|
||||||
FORGET_PASSWORD("/fxml/forget_password.fxml"), //
|
FORGET_PASSWORD("/fxml/forget_password.fxml"), //
|
||||||
HEALTH_START("/fxml/health_start.fxml"), //
|
HEALTH_START("/fxml/health_start.fxml"), //
|
||||||
HEALTH_START_FAIL("/fxml/health_start_fail.fxml"), //
|
|
||||||
HEALTH_CHECK_LIST("/fxml/health_check_list.fxml"), //
|
HEALTH_CHECK_LIST("/fxml/health_check_list.fxml"), //
|
||||||
LOCK_FORCED("/fxml/lock_forced.fxml"), //
|
LOCK_FORCED("/fxml/lock_forced.fxml"), //
|
||||||
LOCK_FAILED("/fxml/lock_failed.fxml"), //
|
LOCK_FAILED("/fxml/lock_failed.fxml"), //
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public enum FontAwesome5Icon {
|
|||||||
CARET_RIGHT("\uF0Da"), //
|
CARET_RIGHT("\uF0Da"), //
|
||||||
CHECK("\uF00C"), //
|
CHECK("\uF00C"), //
|
||||||
CLOCK("\uF017"), //
|
CLOCK("\uF017"), //
|
||||||
|
CLIPBOARD("\uF328"), //
|
||||||
COG("\uF013"), //
|
COG("\uF013"), //
|
||||||
COGS("\uF085"), //
|
COGS("\uF085"), //
|
||||||
COPY("\uF0C5"), //
|
COPY("\uF0C5"), //
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.cryptomator.ui.fxapp;
|
package org.cryptomator.ui.fxapp;
|
||||||
|
|
||||||
|
import org.cryptomator.common.Environment;
|
||||||
import org.cryptomator.common.settings.Settings;
|
import org.cryptomator.common.settings.Settings;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -31,9 +32,9 @@ public class UpdateChecker {
|
|||||||
private final ScheduledService<String> updateCheckerService;
|
private final ScheduledService<String> updateCheckerService;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
UpdateChecker(Settings settings, @Named("applicationVersion") Optional<String> applicationVersion, @Named("latestVersion") StringProperty latestVersionProperty, @Named("SemVer") Comparator<String> semVerComparator, ScheduledService<String> updateCheckerService) {
|
UpdateChecker(Settings settings, Environment env, @Named("latestVersion") StringProperty latestVersionProperty, @Named("SemVer") Comparator<String> semVerComparator, ScheduledService<String> updateCheckerService) {
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
this.applicationVersion = applicationVersion;
|
this.applicationVersion = env.getAppVersion();
|
||||||
this.latestVersionProperty = latestVersionProperty;
|
this.latestVersionProperty = latestVersionProperty;
|
||||||
this.semVerComparator = semVerComparator;
|
this.semVerComparator = semVerComparator;
|
||||||
this.updateCheckerService = updateCheckerService;
|
this.updateCheckerService = updateCheckerService;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.cryptomator.ui.fxapp;
|
|||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
import dagger.Provides;
|
import dagger.Provides;
|
||||||
import org.apache.commons.lang3.SystemUtils;
|
import org.apache.commons.lang3.SystemUtils;
|
||||||
|
import org.cryptomator.common.Environment;
|
||||||
import org.cryptomator.common.settings.Settings;
|
import org.cryptomator.common.settings.Settings;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -51,9 +52,9 @@ public abstract class UpdateCheckerModule {
|
|||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@FxApplicationScoped
|
@FxApplicationScoped
|
||||||
static HttpRequest provideCheckForUpdatesRequest(@Named("applicationVersion") Optional<String> applicationVersion) {
|
static HttpRequest provideCheckForUpdatesRequest(Environment env) {
|
||||||
String userAgent = String.format("Cryptomator VersionChecker/%s %s %s (%s)", //
|
String userAgent = String.format("Cryptomator VersionChecker/%s %s %s (%s)", //
|
||||||
applicationVersion.orElse("SNAPSHOT"), //
|
env.getAppVersion().orElse("SNAPSHOT"), //
|
||||||
SystemUtils.OS_NAME, //
|
SystemUtils.OS_NAME, //
|
||||||
SystemUtils.OS_VERSION, //
|
SystemUtils.OS_VERSION, //
|
||||||
SystemUtils.OS_ARCH); //
|
SystemUtils.OS_ARCH); //
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class CheckExecutor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Void call() throws Exception {
|
protected Void call() throws Exception {
|
||||||
try (var masterkeyClone = masterkey.clone(); //
|
try (var masterkeyClone = masterkey.copy(); //
|
||||||
var cryptor = CryptorProvider.forScheme(vaultConfig.getCipherCombo()).provide(masterkeyClone, csprng)) {
|
var cryptor = CryptorProvider.forScheme(vaultConfig.getCipherCombo()).provide(masterkeyClone, csprng)) {
|
||||||
c.getHealthCheck().check(vaultPath, vaultConfig, masterkeyClone, cryptor, diagnosis -> {
|
c.getHealthCheck().check(vaultPath, vaultConfig, masterkeyClone, cryptor, diagnosis -> {
|
||||||
Platform.runLater(() -> c.getResults().add(Result.create(diagnosis)));
|
Platform.runLater(() -> c.getResults().add(Result.create(diagnosis)));
|
||||||
|
|||||||
@@ -16,26 +16,15 @@ import javafx.stage.Stage;
|
|||||||
@Subcomponent(modules = {HealthCheckModule.class})
|
@Subcomponent(modules = {HealthCheckModule.class})
|
||||||
public interface HealthCheckComponent {
|
public interface HealthCheckComponent {
|
||||||
|
|
||||||
LoadUnverifiedConfigResult loadConfig();
|
|
||||||
|
|
||||||
@HealthCheckWindow
|
@HealthCheckWindow
|
||||||
Stage window();
|
Stage window();
|
||||||
|
|
||||||
@FxmlScene(FxmlFile.HEALTH_START)
|
@FxmlScene(FxmlFile.HEALTH_START)
|
||||||
Lazy<Scene> startScene();
|
Lazy<Scene> startScene();
|
||||||
|
|
||||||
@FxmlScene(FxmlFile.HEALTH_START_FAIL)
|
|
||||||
Lazy<Scene> failScene();
|
|
||||||
|
|
||||||
default Stage showHealthCheckWindow() {
|
default Stage showHealthCheckWindow() {
|
||||||
Stage stage = window();
|
Stage stage = window();
|
||||||
// TODO reevaluate config loading, as soon as we have the new generic error screen
|
stage.setScene(startScene().get());
|
||||||
var unverifiedConf = loadConfig();
|
|
||||||
if (unverifiedConf.config() != null) {
|
|
||||||
stage.setScene(startScene().get());
|
|
||||||
} else {
|
|
||||||
stage.setScene(failScene().get());
|
|
||||||
}
|
|
||||||
stage.show();
|
stage.show();
|
||||||
return stage;
|
return stage;
|
||||||
}
|
}
|
||||||
@@ -52,5 +41,4 @@ public interface HealthCheckComponent {
|
|||||||
HealthCheckComponent build();
|
HealthCheckComponent build();
|
||||||
}
|
}
|
||||||
|
|
||||||
record LoadUnverifiedConfigResult(VaultConfig.UnverifiedVaultConfig config, Throwable error) {}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import javafx.scene.Scene;
|
|||||||
import javafx.stage.Modality;
|
import javafx.stage.Modality;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@@ -37,18 +36,6 @@ import java.util.concurrent.atomic.AtomicReference;
|
|||||||
@Module(subcomponents = {KeyLoadingComponent.class})
|
@Module(subcomponents = {KeyLoadingComponent.class})
|
||||||
abstract class HealthCheckModule {
|
abstract class HealthCheckModule {
|
||||||
|
|
||||||
// TODO reevaluate config loading, as soon as we have the new generic error screen
|
|
||||||
@Provides
|
|
||||||
@HealthCheckScoped
|
|
||||||
static HealthCheckComponent.LoadUnverifiedConfigResult provideLoadConfigResult(@HealthCheckWindow Vault vault) {
|
|
||||||
try {
|
|
||||||
return new HealthCheckComponent.LoadUnverifiedConfigResult(vault.getUnverifiedVaultConfig(), null);
|
|
||||||
} catch (IOException e) {
|
|
||||||
return new HealthCheckComponent.LoadUnverifiedConfigResult(null, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@HealthCheckScoped
|
@HealthCheckScoped
|
||||||
static AtomicReference<Masterkey> provideMasterkeyRef() {
|
static AtomicReference<Masterkey> provideMasterkeyRef() {
|
||||||
@@ -129,13 +116,6 @@ abstract class HealthCheckModule {
|
|||||||
return fxmlLoaders.createScene(FxmlFile.HEALTH_START);
|
return fxmlLoaders.createScene(FxmlFile.HEALTH_START);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
|
||||||
@FxmlScene(FxmlFile.HEALTH_START_FAIL)
|
|
||||||
@HealthCheckScoped
|
|
||||||
static Scene provideHealthStartFailScene(@HealthCheckWindow FxmlLoaderFactory fxmlLoaders) {
|
|
||||||
return fxmlLoaders.createScene(FxmlFile.HEALTH_START_FAIL);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@FxmlScene(FxmlFile.HEALTH_CHECK_LIST)
|
@FxmlScene(FxmlFile.HEALTH_CHECK_LIST)
|
||||||
@HealthCheckScoped
|
@HealthCheckScoped
|
||||||
@@ -148,11 +128,6 @@ abstract class HealthCheckModule {
|
|||||||
@FxControllerKey(StartController.class)
|
@FxControllerKey(StartController.class)
|
||||||
abstract FxController bindStartController(StartController controller);
|
abstract FxController bindStartController(StartController controller);
|
||||||
|
|
||||||
@Binds
|
|
||||||
@IntoMap
|
|
||||||
@FxControllerKey(StartFailController.class)
|
|
||||||
abstract FxController bindStartFailController(StartFailController controller);
|
|
||||||
|
|
||||||
@Binds
|
@Binds
|
||||||
@IntoMap
|
@IntoMap
|
||||||
@FxControllerKey(CheckListController.class)
|
@FxControllerKey(CheckListController.class)
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class ResultFixApplier {
|
|||||||
|
|
||||||
public void fix(DiagnosticResult diagnosis) {
|
public void fix(DiagnosticResult diagnosis) {
|
||||||
Preconditions.checkArgument(diagnosis.getSeverity() == DiagnosticResult.Severity.WARN, "Unfixable result");
|
Preconditions.checkArgument(diagnosis.getSeverity() == DiagnosticResult.Severity.WARN, "Unfixable result");
|
||||||
try (var masterkeyClone = masterkey.clone(); //
|
try (var masterkeyClone = masterkey.copy(); //
|
||||||
var cryptor = CryptorProvider.forScheme(vaultConfig.getCipherCombo()).provide(masterkeyClone, csprng)) {
|
var cryptor = CryptorProvider.forScheme(vaultConfig.getCipherCombo()).provide(masterkeyClone, csprng)) {
|
||||||
diagnosis.fix(vaultPath, vaultConfig, masterkeyClone, cryptor);
|
diagnosis.fix(vaultPath, vaultConfig, masterkeyClone, cryptor);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
package org.cryptomator.ui.health;
|
package org.cryptomator.ui.health;
|
||||||
|
|
||||||
import com.google.common.base.Preconditions;
|
|
||||||
import dagger.Lazy;
|
import dagger.Lazy;
|
||||||
|
import org.cryptomator.common.vaults.Vault;
|
||||||
|
import org.cryptomator.common.vaults.VaultConfigCache;
|
||||||
import org.cryptomator.cryptofs.VaultConfig;
|
import org.cryptomator.cryptofs.VaultConfig;
|
||||||
import org.cryptomator.cryptofs.VaultConfigLoadException;
|
import org.cryptomator.cryptofs.VaultConfigLoadException;
|
||||||
import org.cryptomator.cryptofs.VaultKeyInvalidException;
|
import org.cryptomator.cryptofs.VaultKeyInvalidException;
|
||||||
@@ -18,8 +19,6 @@ import org.slf4j.LoggerFactory;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.property.ObjectProperty;
|
|
||||||
import javafx.beans.property.SimpleObjectProperty;
|
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
@@ -35,7 +34,7 @@ public class StartController implements FxController {
|
|||||||
|
|
||||||
private final Stage window;
|
private final Stage window;
|
||||||
private final Stage unlockWindow;
|
private final Stage unlockWindow;
|
||||||
private final ObjectProperty<VaultConfig.UnverifiedVaultConfig> unverifiedVaultConfig;
|
private final VaultConfigCache vaultConfig;
|
||||||
private final KeyLoadingStrategy keyLoadingStrategy;
|
private final KeyLoadingStrategy keyLoadingStrategy;
|
||||||
private final ExecutorService executor;
|
private final ExecutorService executor;
|
||||||
private final AtomicReference<Masterkey> masterkeyRef;
|
private final AtomicReference<Masterkey> masterkeyRef;
|
||||||
@@ -44,11 +43,10 @@ public class StartController implements FxController {
|
|||||||
private final Lazy<ErrorComponent.Builder> errorComponent;
|
private final Lazy<ErrorComponent.Builder> errorComponent;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public StartController(@HealthCheckWindow Stage window, HealthCheckComponent.LoadUnverifiedConfigResult configLoadResult, @HealthCheckWindow KeyLoadingStrategy keyLoadingStrategy, ExecutorService executor, AtomicReference<Masterkey> masterkeyRef, AtomicReference<VaultConfig> vaultConfigRef, @FxmlScene(FxmlFile.HEALTH_CHECK_LIST) Lazy<Scene> checkScene, Lazy<ErrorComponent.Builder> errorComponent, @Named("unlockWindow") Stage unlockWindow) {
|
public StartController(@HealthCheckWindow Stage window, @HealthCheckWindow Vault vault, @HealthCheckWindow KeyLoadingStrategy keyLoadingStrategy, ExecutorService executor, AtomicReference<Masterkey> masterkeyRef, AtomicReference<VaultConfig> vaultConfigRef, @FxmlScene(FxmlFile.HEALTH_CHECK_LIST) Lazy<Scene> checkScene, Lazy<ErrorComponent.Builder> errorComponent, @Named("unlockWindow") Stage unlockWindow) {
|
||||||
Preconditions.checkNotNull(configLoadResult.config());
|
|
||||||
this.window = window;
|
this.window = window;
|
||||||
this.unlockWindow = unlockWindow;
|
this.unlockWindow = unlockWindow;
|
||||||
this.unverifiedVaultConfig = new SimpleObjectProperty<>(configLoadResult.config());
|
this.vaultConfig = vault.getVaultConfigCache();
|
||||||
this.keyLoadingStrategy = keyLoadingStrategy;
|
this.keyLoadingStrategy = keyLoadingStrategy;
|
||||||
this.executor = executor;
|
this.executor = executor;
|
||||||
this.masterkeyRef = masterkeyRef;
|
this.masterkeyRef = masterkeyRef;
|
||||||
@@ -71,7 +69,6 @@ public class StartController implements FxController {
|
|||||||
|
|
||||||
private void loadKey() {
|
private void loadKey() {
|
||||||
assert !Platform.isFxApplicationThread();
|
assert !Platform.isFxApplicationThread();
|
||||||
assert unverifiedVaultConfig.get() != null;
|
|
||||||
try {
|
try {
|
||||||
keyLoadingStrategy.use(this::verifyVaultConfig);
|
keyLoadingStrategy.use(this::verifyVaultConfig);
|
||||||
} catch (VaultConfigLoadException | UnlockCancelledException e) {
|
} catch (VaultConfigLoadException | UnlockCancelledException e) {
|
||||||
@@ -80,11 +77,11 @@ public class StartController implements FxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void verifyVaultConfig(KeyLoadingStrategy keyLoadingStrategy) throws VaultConfigLoadException {
|
private void verifyVaultConfig(KeyLoadingStrategy keyLoadingStrategy) throws VaultConfigLoadException {
|
||||||
var unverifiedCfg = unverifiedVaultConfig.get();
|
var unverifiedCfg = vaultConfig.getUnchecked();
|
||||||
try (var masterkey = keyLoadingStrategy.loadKey(unverifiedCfg.getKeyId())) {
|
try (var masterkey = keyLoadingStrategy.loadKey(unverifiedCfg.getKeyId())) {
|
||||||
var verifiedCfg = unverifiedCfg.verify(masterkey.getEncoded(), unverifiedCfg.allegedVaultVersion());
|
var verifiedCfg = unverifiedCfg.verify(masterkey.getEncoded(), unverifiedCfg.allegedVaultVersion());
|
||||||
vaultConfigRef.set(verifiedCfg);
|
vaultConfigRef.set(verifiedCfg);
|
||||||
var old = masterkeyRef.getAndSet(masterkey.clone());
|
var old = masterkeyRef.getAndSet(masterkey.copy());
|
||||||
if (old != null) {
|
if (old != null) {
|
||||||
old.destroy();
|
old.destroy();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,79 +0,0 @@
|
|||||||
package org.cryptomator.ui.health;
|
|
||||||
|
|
||||||
import com.google.common.base.Preconditions;
|
|
||||||
import org.cryptomator.cryptofs.VaultConfigLoadException;
|
|
||||||
import org.cryptomator.ui.common.FxController;
|
|
||||||
import org.cryptomator.ui.controls.FontAwesome5Icon;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import javafx.beans.property.ObjectProperty;
|
|
||||||
import javafx.beans.property.SimpleObjectProperty;
|
|
||||||
import javafx.beans.value.ObservableValue;
|
|
||||||
import javafx.fxml.FXML;
|
|
||||||
import javafx.scene.control.TitledPane;
|
|
||||||
import javafx.stage.Stage;
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.PrintStream;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
|
|
||||||
// TODO reevaluate config loading, as soon as we have the new generic error screen
|
|
||||||
@HealthCheckScoped
|
|
||||||
public class StartFailController implements FxController {
|
|
||||||
|
|
||||||
private final Stage window;
|
|
||||||
private final ObjectProperty<Throwable> loadError;
|
|
||||||
private final ObjectProperty<FontAwesome5Icon> moreInfoIcon;
|
|
||||||
|
|
||||||
/* FXML */
|
|
||||||
public TitledPane moreInfoPane;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
public StartFailController(@HealthCheckWindow Stage window, HealthCheckComponent.LoadUnverifiedConfigResult configLoadResult) {
|
|
||||||
Preconditions.checkNotNull(configLoadResult.error());
|
|
||||||
this.window = window;
|
|
||||||
this.loadError = new SimpleObjectProperty<>(configLoadResult.error());
|
|
||||||
this.moreInfoIcon = new SimpleObjectProperty<>(FontAwesome5Icon.CARET_RIGHT);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void initialize() {
|
|
||||||
moreInfoPane.expandedProperty().addListener(this::setMoreInfoIcon);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setMoreInfoIcon(ObservableValue<? extends Boolean> observable, boolean wasExpanded, boolean willExpand) {
|
|
||||||
moreInfoIcon.set(willExpand ? FontAwesome5Icon.CARET_DOWN : FontAwesome5Icon.CARET_RIGHT);
|
|
||||||
}
|
|
||||||
|
|
||||||
@FXML
|
|
||||||
public void close() {
|
|
||||||
window.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Getter & Setter */
|
|
||||||
|
|
||||||
public ObjectProperty<FontAwesome5Icon> moreInfoIconProperty() {
|
|
||||||
return moreInfoIcon;
|
|
||||||
}
|
|
||||||
|
|
||||||
public FontAwesome5Icon getMoreInfoIcon() {
|
|
||||||
return moreInfoIcon.getValue();
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStackTrace() {
|
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
|
||||||
loadError.get().printStackTrace(new PrintStream(baos));
|
|
||||||
return baos.toString(StandardCharsets.UTF_8);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLocalizedErrorMessage() {
|
|
||||||
return loadError.get().getLocalizedMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isParseException() {
|
|
||||||
return loadError.get() instanceof VaultConfigLoadException;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isIoException() {
|
|
||||||
return !isParseException();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -3,7 +3,6 @@ package org.cryptomator.ui.keyloading;
|
|||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
import dagger.Provides;
|
import dagger.Provides;
|
||||||
import org.cryptomator.common.vaults.Vault;
|
import org.cryptomator.common.vaults.Vault;
|
||||||
import org.cryptomator.cryptofs.VaultConfig.UnverifiedVaultConfig;
|
|
||||||
import org.cryptomator.ui.common.DefaultSceneFactory;
|
import org.cryptomator.ui.common.DefaultSceneFactory;
|
||||||
import org.cryptomator.ui.common.FxController;
|
import org.cryptomator.ui.common.FxController;
|
||||||
import org.cryptomator.ui.common.FxmlLoaderFactory;
|
import org.cryptomator.ui.common.FxmlLoaderFactory;
|
||||||
@@ -11,9 +10,7 @@ import org.cryptomator.ui.keyloading.masterkeyfile.MasterkeyFileLoadingModule;
|
|||||||
|
|
||||||
import javax.inject.Provider;
|
import javax.inject.Provider;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
@Module(includes = {MasterkeyFileLoadingModule.class})
|
@Module(includes = {MasterkeyFileLoadingModule.class})
|
||||||
@@ -31,7 +28,7 @@ abstract class KeyLoadingModule {
|
|||||||
@KeyLoadingScoped
|
@KeyLoadingScoped
|
||||||
static KeyLoadingStrategy provideKeyLoaderProvider(@KeyLoading Vault vault, Map<String, Provider<KeyLoadingStrategy>> strategies) {
|
static KeyLoadingStrategy provideKeyLoaderProvider(@KeyLoading Vault vault, Map<String, Provider<KeyLoadingStrategy>> strategies) {
|
||||||
try {
|
try {
|
||||||
String scheme = vault.getUnverifiedVaultConfig().getKeyId().getScheme();
|
String scheme = vault.getVaultConfigCache().get().getKeyId().getScheme();
|
||||||
var fallback = KeyLoadingStrategy.failed(new IllegalArgumentException("Unsupported key id " + scheme));
|
var fallback = KeyLoadingStrategy.failed(new IllegalArgumentException("Unsupported key id " + scheme));
|
||||||
return strategies.getOrDefault(scheme, () -> fallback).get();
|
return strategies.getOrDefault(scheme, () -> fallback).get();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ public interface KeyLoadingStrategy extends MasterkeyLoader {
|
|||||||
boolean success = false;
|
boolean success = false;
|
||||||
try {
|
try {
|
||||||
user.use(this);
|
user.use(this);
|
||||||
|
success = true;
|
||||||
} catch (MasterkeyLoadingFailedException e) {
|
} catch (MasterkeyLoadingFailedException e) {
|
||||||
if (recoverFromException(e)) {
|
if (recoverFromException(e)) {
|
||||||
LOG.info("Unlock attempt threw {}. Reattempting...", e.getClass().getSimpleName());
|
LOG.info("Unlock attempt threw {}. Reattempting...", e.getClass().getSimpleName());
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.cryptomator.ui.launcher;
|
|||||||
|
|
||||||
import dagger.Module;
|
import dagger.Module;
|
||||||
import dagger.Provides;
|
import dagger.Provides;
|
||||||
|
import org.cryptomator.common.PluginClassLoader;
|
||||||
import org.cryptomator.integrations.autostart.AutoStartProvider;
|
import org.cryptomator.integrations.autostart.AutoStartProvider;
|
||||||
import org.cryptomator.integrations.tray.TrayIntegrationProvider;
|
import org.cryptomator.integrations.tray.TrayIntegrationProvider;
|
||||||
import org.cryptomator.integrations.uiappearance.UiAppearanceProvider;
|
import org.cryptomator.integrations.uiappearance.UiAppearanceProvider;
|
||||||
@@ -33,21 +34,21 @@ public abstract class UiLauncherModule {
|
|||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
static Optional<UiAppearanceProvider> provideAppearanceProvider() {
|
static Optional<UiAppearanceProvider> provideAppearanceProvider(PluginClassLoader classLoader) {
|
||||||
return ServiceLoader.load(UiAppearanceProvider.class).findFirst();
|
return ServiceLoader.load(UiAppearanceProvider.class, classLoader).findFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
static Optional<AutoStartProvider> provideAutostartProvider() {
|
static Optional<AutoStartProvider> provideAutostartProvider(PluginClassLoader classLoader) {
|
||||||
return ServiceLoader.load(AutoStartProvider.class).findFirst();
|
return ServiceLoader.load(AutoStartProvider.class, classLoader).findFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@Singleton
|
@Singleton
|
||||||
static Optional<TrayIntegrationProvider> provideTrayIntegrationProvider() {
|
static Optional<TrayIntegrationProvider> provideTrayIntegrationProvider(PluginClassLoader classLoader) {
|
||||||
return ServiceLoader.load(TrayIntegrationProvider.class).findFirst();
|
return ServiceLoader.load(TrayIntegrationProvider.class, classLoader).findFirst();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
|
|||||||
@@ -23,8 +23,6 @@ import javafx.scene.layout.StackPane;
|
|||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.NoSuchFileException;
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -55,7 +53,7 @@ public class MainWindowController implements FxController {
|
|||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
LOG.debug("init MainWindowController");
|
LOG.trace("init MainWindowController");
|
||||||
root.setOnDragEntered(this::handleDragEvent);
|
root.setOnDragEntered(this::handleDragEvent);
|
||||||
root.setOnDragOver(this::handleDragEvent);
|
root.setOnDragOver(this::handleDragEvent);
|
||||||
root.setOnDragDropped(this::handleDragEvent);
|
root.setOnDragDropped(this::handleDragEvent);
|
||||||
|
|||||||
@@ -6,17 +6,17 @@ import dagger.Provides;
|
|||||||
import dagger.multibindings.IntoMap;
|
import dagger.multibindings.IntoMap;
|
||||||
import org.cryptomator.common.vaults.Vault;
|
import org.cryptomator.common.vaults.Vault;
|
||||||
import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent;
|
import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent;
|
||||||
import org.cryptomator.ui.common.FxmlLoaderFactory;
|
|
||||||
import org.cryptomator.ui.common.FxController;
|
import org.cryptomator.ui.common.FxController;
|
||||||
import org.cryptomator.ui.common.FxControllerKey;
|
import org.cryptomator.ui.common.FxControllerKey;
|
||||||
import org.cryptomator.ui.common.FxmlFile;
|
import org.cryptomator.ui.common.FxmlFile;
|
||||||
|
import org.cryptomator.ui.common.FxmlLoaderFactory;
|
||||||
import org.cryptomator.ui.common.FxmlScene;
|
import org.cryptomator.ui.common.FxmlScene;
|
||||||
import org.cryptomator.ui.common.StageFactory;
|
import org.cryptomator.ui.common.StageFactory;
|
||||||
import org.cryptomator.ui.health.HealthCheckComponent;
|
import org.cryptomator.ui.health.HealthCheckComponent;
|
||||||
import org.cryptomator.ui.migration.MigrationComponent;
|
import org.cryptomator.ui.migration.MigrationComponent;
|
||||||
import org.cryptomator.ui.removevault.RemoveVaultComponent;
|
import org.cryptomator.ui.removevault.RemoveVaultComponent;
|
||||||
import org.cryptomator.ui.vaultoptions.VaultOptionsComponent;
|
|
||||||
import org.cryptomator.ui.stats.VaultStatisticsComponent;
|
import org.cryptomator.ui.stats.VaultStatisticsComponent;
|
||||||
|
import org.cryptomator.ui.vaultoptions.VaultOptionsComponent;
|
||||||
import org.cryptomator.ui.wrongfilealert.WrongFileAlertComponent;
|
import org.cryptomator.ui.wrongfilealert.WrongFileAlertComponent;
|
||||||
|
|
||||||
import javax.inject.Provider;
|
import javax.inject.Provider;
|
||||||
@@ -49,11 +49,8 @@ abstract class MainWindowModule {
|
|||||||
@MainWindowScoped
|
@MainWindowScoped
|
||||||
static Stage provideStage(StageFactory factory) {
|
static Stage provideStage(StageFactory factory) {
|
||||||
Stage stage = factory.create(StageStyle.UNDECORATED);
|
Stage stage = factory.create(StageStyle.UNDECORATED);
|
||||||
// TODO: min/max values chosen arbitrarily. We might wanna take a look at the user's resolution...
|
|
||||||
stage.setMinWidth(650);
|
stage.setMinWidth(650);
|
||||||
stage.setMinHeight(440);
|
stage.setMinHeight(440);
|
||||||
stage.setMaxWidth(1000);
|
|
||||||
stage.setMaxHeight(700);
|
|
||||||
stage.setTitle("Cryptomator");
|
stage.setTitle("Cryptomator");
|
||||||
return stage;
|
return stage;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import javafx.beans.binding.Bindings;
|
|||||||
import javafx.beans.binding.BooleanBinding;
|
import javafx.beans.binding.BooleanBinding;
|
||||||
import javafx.beans.property.ReadOnlyBooleanProperty;
|
import javafx.beans.property.ReadOnlyBooleanProperty;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.input.MouseButton;
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
@@ -53,22 +54,43 @@ public class MainWindowTitleController implements FxController {
|
|||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
LOG.debug("init MainWindowTitleController");
|
LOG.trace("init MainWindowTitleController");
|
||||||
updateChecker.automaticallyCheckForUpdatesIfEnabled();
|
updateChecker.automaticallyCheckForUpdatesIfEnabled();
|
||||||
titleBar.setOnMousePressed(event -> {
|
titleBar.setOnMousePressed(event -> {
|
||||||
xOffset = event.getSceneX();
|
xOffset = event.getSceneX();
|
||||||
yOffset = event.getSceneY();
|
yOffset = event.getSceneY();
|
||||||
|
|
||||||
|
});
|
||||||
|
titleBar.setOnMouseClicked(event -> {
|
||||||
|
if (event.getButton().equals(MouseButton.PRIMARY) && event.getClickCount() == 2) {
|
||||||
|
window.setFullScreen(!window.isFullScreen());
|
||||||
|
}
|
||||||
});
|
});
|
||||||
titleBar.setOnMouseDragged(event -> {
|
titleBar.setOnMouseDragged(event -> {
|
||||||
|
if (window.isFullScreen()) return;
|
||||||
window.setX(event.getScreenX() - xOffset);
|
window.setX(event.getScreenX() - xOffset);
|
||||||
window.setY(event.getScreenY() - yOffset);
|
window.setY(event.getScreenY() - yOffset);
|
||||||
});
|
});
|
||||||
|
titleBar.setOnDragDetected(mouseDragEvent -> {
|
||||||
|
titleBar.startFullDrag();
|
||||||
|
});
|
||||||
|
titleBar.setOnMouseDragReleased(mouseDragEvent -> {
|
||||||
|
saveWindowSettings();
|
||||||
|
});
|
||||||
|
|
||||||
window.setOnCloseRequest(event -> {
|
window.setOnCloseRequest(event -> {
|
||||||
close();
|
close();
|
||||||
event.consume();
|
event.consume();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void saveWindowSettings() {
|
||||||
|
settings.windowYPositionProperty().setValue(window.getY());
|
||||||
|
settings.windowXPositionProperty().setValue(window.getX());
|
||||||
|
settings.windowWidthProperty().setValue(window.getWidth());
|
||||||
|
settings.windowHeightProperty().setValue(window.getHeight());
|
||||||
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
public void close() {
|
public void close() {
|
||||||
if (trayMenuInitialized) {
|
if (trayMenuInitialized) {
|
||||||
|
|||||||
@@ -1,41 +1,100 @@
|
|||||||
package org.cryptomator.ui.mainwindow;
|
package org.cryptomator.ui.mainwindow;
|
||||||
|
|
||||||
|
import org.cryptomator.common.settings.Settings;
|
||||||
import org.cryptomator.ui.common.FxController;
|
import org.cryptomator.ui.common.FxController;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javafx.beans.binding.Bindings;
|
||||||
|
import javafx.beans.binding.BooleanBinding;
|
||||||
|
import javafx.collections.ObservableList;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.geometry.Rectangle2D;
|
||||||
import javafx.scene.input.MouseEvent;
|
import javafx.scene.input.MouseEvent;
|
||||||
import javafx.scene.layout.Region;
|
import javafx.scene.layout.Region;
|
||||||
|
import javafx.stage.Screen;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
@MainWindow
|
@MainWindow
|
||||||
public class ResizeController implements FxController {
|
public class ResizeController implements FxController {
|
||||||
|
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(ResizeController.class);
|
||||||
|
|
||||||
private final Stage window;
|
private final Stage window;
|
||||||
|
|
||||||
public Region tlResizer;
|
public Region tlResizer;
|
||||||
public Region trResizer;
|
public Region trResizer;
|
||||||
public Region blResizer;
|
public Region blResizer;
|
||||||
public Region brResizer;
|
public Region brResizer;
|
||||||
|
public Region tResizer;
|
||||||
|
public Region rResizer;
|
||||||
|
public Region bResizer;
|
||||||
|
public Region lResizer;
|
||||||
|
public Region lDefaultRegion;
|
||||||
|
public Region tDefaultRegion;
|
||||||
|
public Region rDefaultRegion;
|
||||||
|
public Region bDefaultRegion;
|
||||||
|
|
||||||
private double origX, origY, origW, origH;
|
private double origX, origY, origW, origH;
|
||||||
|
|
||||||
|
private final Settings settings;
|
||||||
|
|
||||||
|
private final BooleanBinding showResizingArrows;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ResizeController(@MainWindow Stage window) {
|
ResizeController(@MainWindow Stage window, Settings settings) {
|
||||||
this.window = window;
|
this.window = window;
|
||||||
// TODO inject settings and save current position and size
|
this.settings = settings;
|
||||||
|
this.showResizingArrows = Bindings.createBooleanBinding(this::isShowResizingArrows, window.fullScreenProperty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
tlResizer.setOnMousePressed(this::startResize);
|
LOG.trace("init ResizeController");
|
||||||
trResizer.setOnMousePressed(this::startResize);
|
|
||||||
blResizer.setOnMousePressed(this::startResize);
|
if (neverTouched()) {
|
||||||
brResizer.setOnMousePressed(this::startResize);
|
settings.displayConfigurationProperty().setValue(getMonitorSizes());
|
||||||
tlResizer.setOnMouseDragged(this::resizeTopLeft);
|
return;
|
||||||
trResizer.setOnMouseDragged(this::resizeTopRight);
|
} else {
|
||||||
blResizer.setOnMouseDragged(this::resizeBottomLeft);
|
if (didDisplayConfigurationChange()) {
|
||||||
brResizer.setOnMouseDragged(this::resizeBottomRight);
|
//If the position is illegal, then the window appears on the main screen in the middle of the window.
|
||||||
|
Rectangle2D primaryScreenBounds = Screen.getPrimary().getBounds();
|
||||||
|
window.setX((primaryScreenBounds.getWidth() - window.getMinWidth()) / 2);
|
||||||
|
window.setY((primaryScreenBounds.getHeight() - window.getMinHeight()) / 2);
|
||||||
|
window.setWidth(window.getMinWidth());
|
||||||
|
window.setHeight(window.getMinHeight());
|
||||||
|
} else {
|
||||||
|
window.setHeight(settings.windowHeightProperty().get() > window.getMinHeight() ? settings.windowHeightProperty().get() : window.getMinHeight());
|
||||||
|
window.setWidth(settings.windowWidthProperty().get() > window.getMinWidth() ? settings.windowWidthProperty().get() : window.getMinWidth());
|
||||||
|
window.setX(settings.windowXPositionProperty().get());
|
||||||
|
window.setY(settings.windowYPositionProperty().get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
savePositionalSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean neverTouched() {
|
||||||
|
return (settings.windowHeightProperty().get() == 0) && (settings.windowWidthProperty().get() == 0) && (settings.windowXPositionProperty().get() == 0) && (settings.windowYPositionProperty().get() == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean didDisplayConfigurationChange() {
|
||||||
|
String currentDisplayConfiguration = getMonitorSizes();
|
||||||
|
String settingsDisplayConfiguration = settings.displayConfigurationProperty().get();
|
||||||
|
boolean configurationHasChanged = !settingsDisplayConfiguration.equals(currentDisplayConfiguration);
|
||||||
|
if (configurationHasChanged) settings.displayConfigurationProperty().setValue(currentDisplayConfiguration);
|
||||||
|
return configurationHasChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getMonitorSizes() {
|
||||||
|
ObservableList<Screen> screens = Screen.getScreens();
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (int i = 0; i < screens.size(); i++) {
|
||||||
|
Rectangle2D screenBounds = screens.get(i).getBounds();
|
||||||
|
if (!sb.isEmpty()) sb.append(" ");
|
||||||
|
sb.append("displayId: " + i + ", " + screenBounds.getWidth() + "x" + screenBounds.getHeight() + ";");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startResize(MouseEvent evt) {
|
private void startResize(MouseEvent evt) {
|
||||||
@@ -45,27 +104,33 @@ public class ResizeController implements FxController {
|
|||||||
origH = window.getHeight();
|
origH = window.getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
private void resizeTopLeft(MouseEvent evt) {
|
private void resizeTopLeft(MouseEvent evt) {
|
||||||
resizeTop(evt);
|
resizeTop(evt);
|
||||||
resizeLeft(evt);
|
resizeLeft(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
private void resizeTopRight(MouseEvent evt) {
|
private void resizeTopRight(MouseEvent evt) {
|
||||||
resizeTop(evt);
|
resizeTop(evt);
|
||||||
resizeRight(evt);
|
resizeRight(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
private void resizeBottomLeft(MouseEvent evt) {
|
private void resizeBottomLeft(MouseEvent evt) {
|
||||||
resizeBottom(evt);
|
resizeBottom(evt);
|
||||||
resizeLeft(evt);
|
resizeLeft(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
private void resizeBottomRight(MouseEvent evt) {
|
private void resizeBottomRight(MouseEvent evt) {
|
||||||
resizeBottom(evt);
|
resizeBottom(evt);
|
||||||
resizeRight(evt);
|
resizeRight(evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
private void resizeTop(MouseEvent evt) {
|
private void resizeTop(MouseEvent evt) {
|
||||||
|
startResize(evt);
|
||||||
double newY = evt.getScreenY();
|
double newY = evt.getScreenY();
|
||||||
double dy = newY - origY;
|
double dy = newY - origY;
|
||||||
double newH = origH - dy;
|
double newH = origH - dy;
|
||||||
@@ -75,7 +140,9 @@ public class ResizeController implements FxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
private void resizeLeft(MouseEvent evt) {
|
private void resizeLeft(MouseEvent evt) {
|
||||||
|
startResize(evt);
|
||||||
double newX = evt.getScreenX();
|
double newX = evt.getScreenX();
|
||||||
double dx = newX - origX;
|
double dx = newX - origX;
|
||||||
double newW = origW - dx;
|
double newW = origW - dx;
|
||||||
@@ -85,6 +152,7 @@ public class ResizeController implements FxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
private void resizeBottom(MouseEvent evt) {
|
private void resizeBottom(MouseEvent evt) {
|
||||||
double newH = evt.getSceneY();
|
double newH = evt.getSceneY();
|
||||||
if (newH < window.getMaxHeight() && newH > window.getMinHeight()) {
|
if (newH < window.getMaxHeight() && newH > window.getMinHeight()) {
|
||||||
@@ -92,6 +160,7 @@ public class ResizeController implements FxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
private void resizeRight(MouseEvent evt) {
|
private void resizeRight(MouseEvent evt) {
|
||||||
double newW = evt.getSceneX();
|
double newW = evt.getSceneX();
|
||||||
if (newW < window.getMaxWidth() && newW > window.getMinWidth()) {
|
if (newW < window.getMaxWidth() && newW > window.getMinWidth()) {
|
||||||
@@ -99,4 +168,21 @@ public class ResizeController implements FxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void savePositionalSettings() {
|
||||||
|
settings.windowHeightProperty().setValue(window.getHeight());
|
||||||
|
settings.windowWidthProperty().setValue(window.getWidth());
|
||||||
|
settings.windowYPositionProperty().setValue(window.getY());
|
||||||
|
settings.windowXPositionProperty().setValue(window.getX());
|
||||||
|
}
|
||||||
|
|
||||||
|
public BooleanBinding showResizingArrowsProperty() {
|
||||||
|
return showResizingArrows;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isShowResizingArrows() {
|
||||||
|
//If in fullscreen resizing is not be possible;
|
||||||
|
return !window.isFullScreen();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<?import org.cryptomator.ui.controls.FontAwesome5IconView?>
|
<?import org.cryptomator.ui.controls.FontAwesome5IconView?>
|
||||||
|
<?import org.cryptomator.ui.controls.FormattedLabel?>
|
||||||
<?import javafx.geometry.Insets?>
|
<?import javafx.geometry.Insets?>
|
||||||
<?import javafx.scene.control.Button?>
|
<?import javafx.scene.control.Button?>
|
||||||
<?import javafx.scene.control.ButtonBar?>
|
<?import javafx.scene.control.ButtonBar?>
|
||||||
|
<?import javafx.scene.control.Hyperlink?>
|
||||||
<?import javafx.scene.control.Label?>
|
<?import javafx.scene.control.Label?>
|
||||||
<?import javafx.scene.control.TextArea?>
|
<?import javafx.scene.control.TextArea?>
|
||||||
<?import javafx.scene.layout.HBox?>
|
<?import javafx.scene.layout.HBox?>
|
||||||
|
<?import javafx.scene.layout.Region?>
|
||||||
<?import javafx.scene.layout.StackPane?>
|
<?import javafx.scene.layout.StackPane?>
|
||||||
<?import javafx.scene.layout.VBox?>
|
<?import javafx.scene.layout.VBox?>
|
||||||
<?import javafx.scene.shape.Circle?>
|
<?import javafx.scene.shape.Circle?>
|
||||||
@@ -15,7 +18,7 @@
|
|||||||
fx:controller="org.cryptomator.ui.common.ErrorController"
|
fx:controller="org.cryptomator.ui.common.ErrorController"
|
||||||
prefWidth="450"
|
prefWidth="450"
|
||||||
prefHeight="450"
|
prefHeight="450"
|
||||||
spacing="12"
|
spacing="18"
|
||||||
alignment="TOP_CENTER">
|
alignment="TOP_CENTER">
|
||||||
<padding>
|
<padding>
|
||||||
<Insets topRightBottomLeft="24"/>
|
<Insets topRightBottomLeft="24"/>
|
||||||
@@ -27,12 +30,38 @@
|
|||||||
<FontAwesome5IconView styleClass="glyph-icon-white" glyph="EXCLAMATION" glyphSize="24"/>
|
<FontAwesome5IconView styleClass="glyph-icon-white" glyph="EXCLAMATION" glyphSize="24"/>
|
||||||
</StackPane>
|
</StackPane>
|
||||||
<VBox spacing="6" HBox.hgrow="ALWAYS">
|
<VBox spacing="6" HBox.hgrow="ALWAYS">
|
||||||
<Label text="%generic.error.title" wrapText="true"/>
|
<FormattedLabel styleClass="label-large" format="%generic.error.title" arg1="${controller.errorCode}"/>
|
||||||
<Label text="%generic.error.instruction" wrapText="true"/>
|
<Label text="%generic.error.instruction" wrapText="true"/>
|
||||||
|
<Hyperlink styleClass="hyperlink-underline" text="%generic.error.hyperlink.lookup" onAction="#searchError" contentDisplay="LEFT">
|
||||||
|
<graphic>
|
||||||
|
<FontAwesome5IconView glyph="LINK" glyphSize="12"/>
|
||||||
|
</graphic>
|
||||||
|
</Hyperlink>
|
||||||
|
<Hyperlink styleClass="hyperlink-underline" text="%generic.error.hyperlink.report" onAction="#reportError" contentDisplay="LEFT">
|
||||||
|
<graphic>
|
||||||
|
<FontAwesome5IconView glyph="LINK" glyphSize="12"/>
|
||||||
|
</graphic>
|
||||||
|
</Hyperlink>
|
||||||
</VBox>
|
</VBox>
|
||||||
</HBox>
|
</HBox>
|
||||||
|
|
||||||
<TextArea VBox.vgrow="ALWAYS" text="${controller.stackTrace}" prefRowCount="5" editable="false"/>
|
<VBox spacing="6" VBox.vgrow="ALWAYS">
|
||||||
|
<HBox>
|
||||||
|
<Label text="%generic.error.technicalDetails"/>
|
||||||
|
<Region HBox.hgrow="ALWAYS"/>
|
||||||
|
<Hyperlink styleClass="hyperlink-underline" text="%generic.button.copy" onAction="#copyDetails" contentDisplay="LEFT" visible="${!controller.copiedDetails}" managed="${!controller.copiedDetails}">
|
||||||
|
<graphic>
|
||||||
|
<FontAwesome5IconView glyph="CLIPBOARD" glyphSize="12"/>
|
||||||
|
</graphic>
|
||||||
|
</Hyperlink>
|
||||||
|
<Hyperlink styleClass="hyperlink-underline" text="%generic.button.copied" onAction="#copyDetails" contentDisplay="LEFT" visible="${controller.copiedDetails}" managed="${controller.copiedDetails}">
|
||||||
|
<graphic>
|
||||||
|
<FontAwesome5IconView glyph="CHECK" glyphSize="12"/>
|
||||||
|
</graphic>
|
||||||
|
</Hyperlink>
|
||||||
|
</HBox>
|
||||||
|
<TextArea VBox.vgrow="ALWAYS" text="${controller.detailText}" prefRowCount="5" editable="false"/>
|
||||||
|
</VBox>
|
||||||
|
|
||||||
<ButtonBar buttonMinWidth="120" buttonOrder="B+C">
|
<ButtonBar buttonMinWidth="120" buttonOrder="B+C">
|
||||||
<buttons>
|
<buttons>
|
||||||
|
|||||||
@@ -1,44 +0,0 @@
|
|||||||
<?import javafx.scene.layout.VBox?>
|
|
||||||
<?import javafx.scene.control.Label?>
|
|
||||||
<?import javafx.scene.control.ButtonBar?>
|
|
||||||
<?import javafx.scene.control.Button?>
|
|
||||||
<?import javafx.scene.control.TextArea?>
|
|
||||||
<?import javafx.geometry.Insets?>
|
|
||||||
<?import javafx.scene.control.TitledPane?>
|
|
||||||
<?import org.cryptomator.ui.controls.FontAwesome5IconView?>
|
|
||||||
<?import javafx.scene.layout.Region?>
|
|
||||||
<?import javafx.scene.layout.HBox?>
|
|
||||||
<?import javafx.scene.text.TextFlow?>
|
|
||||||
<?import javafx.scene.text.Text?>
|
|
||||||
<VBox xmlns="http://javafx.com/javafx"
|
|
||||||
xmlns:fx="http://javafx.com/fxml"
|
|
||||||
fx:controller="org.cryptomator.ui.health.StartFailController"
|
|
||||||
prefWidth="600"
|
|
||||||
prefHeight="400"
|
|
||||||
spacing="12">
|
|
||||||
<padding>
|
|
||||||
<Insets topRightBottomLeft="12"/>
|
|
||||||
</padding>
|
|
||||||
<Label text="%health.fail.header" styleClass="label-large" />
|
|
||||||
<TextFlow fx:id="ioErrorLabel" visible="${controller.ioException}" managed="${controller.ioException}">
|
|
||||||
<Text text="%health.fail.ioError" />
|
|
||||||
<Text text="${controller.localizedErrorMessage}"/>
|
|
||||||
</TextFlow>
|
|
||||||
<Label fx:id="parseErrorLabel" text="%health.fail.parseError" visible="${controller.parseException}" managed="${controller.parseException}"/>
|
|
||||||
<TitledPane fx:id="moreInfoPane" text="%health.fail.moreInfo" expanded="false">
|
|
||||||
<graphic>
|
|
||||||
<HBox alignment="CENTER" minWidth="8">
|
|
||||||
<FontAwesome5IconView glyph="${controller.moreInfoIcon}"/>
|
|
||||||
</HBox>
|
|
||||||
</graphic>
|
|
||||||
<content>
|
|
||||||
<TextArea VBox.vgrow="ALWAYS" text="${controller.stackTrace}" prefRowCount="20" editable="false" />
|
|
||||||
</content>
|
|
||||||
</TitledPane>
|
|
||||||
<Region VBox.vgrow="ALWAYS"/>
|
|
||||||
<ButtonBar buttonMinWidth="120" buttonOrder="+CX">
|
|
||||||
<buttons>
|
|
||||||
<Button text="%generic.button.close" ButtonBar.buttonData="CANCEL_CLOSE" cancelButton="true" onAction="#close"/>
|
|
||||||
</buttons>
|
|
||||||
</ButtonBar>
|
|
||||||
</VBox>
|
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
fx:id="root"
|
fx:id="root"
|
||||||
fx:controller="org.cryptomator.ui.mainwindow.MainWindowController"
|
fx:controller="org.cryptomator.ui.mainwindow.MainWindowController"
|
||||||
styleClass="main-window">
|
styleClass="main-window">
|
||||||
<VBox>
|
<VBox minWidth="650">
|
||||||
<fx:include source="main_window_title.fxml" VBox.vgrow="NEVER"/>
|
<fx:include source="main_window_title.fxml" VBox.vgrow="NEVER"/>
|
||||||
<StackPane VBox.vgrow="ALWAYS">
|
<StackPane VBox.vgrow="ALWAYS">
|
||||||
<SplitPane dividerPositions="0.33" orientation="HORIZONTAL">
|
<SplitPane dividerPositions="0.33" orientation="HORIZONTAL">
|
||||||
|
|||||||
@@ -9,9 +9,22 @@
|
|||||||
<fx:define>
|
<fx:define>
|
||||||
<Cursor fx:id="nwResize" fx:constant="NW_RESIZE"/>
|
<Cursor fx:id="nwResize" fx:constant="NW_RESIZE"/>
|
||||||
<Cursor fx:id="neResize" fx:constant="NE_RESIZE"/>
|
<Cursor fx:id="neResize" fx:constant="NE_RESIZE"/>
|
||||||
|
<Cursor fx:id="nsResize" fx:constant="N_RESIZE"/>
|
||||||
|
<Cursor fx:id="ewResize" fx:constant="E_RESIZE"/>
|
||||||
|
<Cursor fx:id="default" fx:constant="DEFAULT"/>
|
||||||
</fx:define>
|
</fx:define>
|
||||||
<Region fx:id="tlResizer" cursor="${nwResize}" prefWidth="10" prefHeight="10" maxWidth="-Infinity" maxHeight="-Infinity" AnchorPane.topAnchor="0" AnchorPane.leftAnchor="0"/>
|
|
||||||
<Region fx:id="trResizer" cursor="${neResize}" prefWidth="10" prefHeight="10" maxWidth="-Infinity" maxHeight="-Infinity" AnchorPane.topAnchor="0" AnchorPane.rightAnchor="0"/>
|
<Region fx:id="tlResizer" cursor="${nwResize}" prefWidth="10" prefHeight="10" maxWidth="-Infinity" maxHeight="-Infinity" visible="${controller.showResizingArrows}" managed="${controller.showResizingArrows}" onMouseDragged="#resizeTopLeft" onMouseReleased="#savePositionalSettings" AnchorPane.topAnchor="0" AnchorPane.leftAnchor="0"/>
|
||||||
<Region fx:id="blResizer" cursor="${neResize}" prefWidth="10" prefHeight="10" maxWidth="-Infinity" maxHeight="-Infinity" AnchorPane.bottomAnchor="0" AnchorPane.leftAnchor="0"/>
|
<Region fx:id="trResizer" cursor="${neResize}" prefWidth="10" prefHeight="10" maxWidth="-Infinity" maxHeight="-Infinity" visible="${controller.showResizingArrows}" managed="${controller.showResizingArrows}" onMouseDragged="#resizeTopRight" onMouseReleased="#savePositionalSettings" AnchorPane.topAnchor="0" AnchorPane.rightAnchor="0"/>
|
||||||
<Region fx:id="brResizer" cursor="${nwResize}" prefWidth="10" prefHeight="10" maxWidth="-Infinity" maxHeight="-Infinity" AnchorPane.bottomAnchor="0" AnchorPane.rightAnchor="0"/>
|
<Region fx:id="blResizer" cursor="${neResize}" prefWidth="10" prefHeight="10" maxWidth="-Infinity" maxHeight="-Infinity" visible="${controller.showResizingArrows}" managed="${controller.showResizingArrows}" onMouseDragged="#resizeBottomLeft" onMouseReleased="#savePositionalSettings" AnchorPane.bottomAnchor="0" AnchorPane.leftAnchor="0"/>
|
||||||
|
<Region fx:id="brResizer" cursor="${nwResize}" prefWidth="10" prefHeight="10" maxWidth="-Infinity" maxHeight="-Infinity" visible="${controller.showResizingArrows}" managed="${controller.showResizingArrows}" onMouseDragged="#resizeBottomRight" onMouseReleased="#savePositionalSettings" AnchorPane.bottomAnchor="0" AnchorPane.rightAnchor="0"/>
|
||||||
|
<Region fx:id="tResizer" cursor="${nsResize}" prefWidth="0" prefHeight="6" maxWidth="-Infinity" maxHeight="-Infinity" visible="${controller.showResizingArrows}" managed="${controller.showResizingArrows}" onMouseDragged="#resizeTop" onMouseReleased="#savePositionalSettings" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="0.0"/>
|
||||||
|
<Region fx:id="rResizer" cursor="${ewResize}" prefWidth="6" prefHeight="0" maxWidth="-Infinity" maxHeight="-Infinity" visible="${controller.showResizingArrows}" managed="${controller.showResizingArrows}" onMouseDragged="#resizeRight" onMouseReleased="#savePositionalSettings" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="10.0"/>
|
||||||
|
<Region fx:id="bResizer" cursor="${nsResize}" prefWidth="6" prefHeight="6" maxWidth="-Infinity" maxHeight="-Infinity" visible="${controller.showResizingArrows}" managed="${controller.showResizingArrows}" onMouseDragged="#resizeBottom" onMouseReleased="#savePositionalSettings" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0"/>
|
||||||
|
<Region fx:id="lResizer" cursor="${ewResize}" prefWidth="6" prefHeight="6" maxWidth="-Infinity" maxHeight="-Infinity" visible="${controller.showResizingArrows}" managed="${controller.showResizingArrows}" onMouseDragged="#resizeLeft" onMouseReleased="#savePositionalSettings" AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="10.0"/>
|
||||||
|
<Region fx:id="lDefaultRegion" cursor="${default}" prefWidth="1" prefHeight="1" maxWidth="-Infinity" maxHeight="-Infinity" AnchorPane.bottomAnchor="-1" AnchorPane.leftAnchor="-1" AnchorPane.topAnchor="-1"/>
|
||||||
|
<Region fx:id="tDefaultRegion" cursor="${default}" prefWidth="1" prefHeight="1" maxWidth="-Infinity" maxHeight="-Infinity" AnchorPane.leftAnchor="-1" AnchorPane.topAnchor="-1" AnchorPane.rightAnchor="-1"/>
|
||||||
|
<Region fx:id="rDefaultRegion" cursor="${default}" prefWidth="1" prefHeight="1" maxWidth="-Infinity" maxHeight="-Infinity" AnchorPane.topAnchor="-1" AnchorPane.rightAnchor="-1" AnchorPane.bottomAnchor="-1"/>
|
||||||
|
<Region fx:id="bDefaultRegion" cursor="${default}" prefWidth="1" prefHeight="1" maxWidth="-Infinity" maxHeight="-Infinity" AnchorPane.rightAnchor="-1" AnchorPane.bottomAnchor="-1" AnchorPane.leftAnchor="-1"/>
|
||||||
|
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
@@ -14,8 +14,11 @@ generic.button.done=Done
|
|||||||
generic.button.next=Next
|
generic.button.next=Next
|
||||||
generic.button.print=Print
|
generic.button.print=Print
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=An unexpected error occurred
|
generic.error.title=Error %s
|
||||||
generic.error.instruction=This should not have happened. Please report the error text below and include a description of what steps did lead to this error.
|
generic.error.instruction=Oops! Cryptomator didn't expect this to happen. You can look up existing solutions for this error. Or if it has not been reported yet, feel free to do so.
|
||||||
|
generic.error.hyperlink.lookup=Look up this error
|
||||||
|
generic.error.hyperlink.report=Report this error
|
||||||
|
generic.error.technicalDetails=Details:
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Vault
|
defaults.vault.vaultName=Vault
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=تم
|
|||||||
generic.button.next=التالي
|
generic.button.next=التالي
|
||||||
generic.button.print=طباعة
|
generic.button.print=طباعة
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=حدث خطأ غير متوقع
|
|
||||||
generic.error.instruction=ما كان ينبغي أن يحدث هذا. يرجى الإبلاغ عن نص الخطأ أدناه وإدراج وصف للخطوات التي أدت إلى هذا الخطأ.
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=مخزن
|
defaults.vault.vaultName=مخزن
|
||||||
@@ -95,7 +93,6 @@ forgetPassword.information=سيؤدي هذا إلى حذف كلمة المرور
|
|||||||
forgetPassword.confirmBtn=نسيت كلمة المرور
|
forgetPassword.confirmBtn=نسيت كلمة المرور
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=افتح الحافظة
|
|
||||||
unlock.passwordPrompt=أدخل كلمة السر لـ "%s":
|
unlock.passwordPrompt=أدخل كلمة السر لـ "%s":
|
||||||
unlock.savePassword=تذكر كلمة المرور
|
unlock.savePassword=تذكر كلمة المرور
|
||||||
unlock.unlockBtn=افتح
|
unlock.unlockBtn=افتح
|
||||||
@@ -129,7 +126,7 @@ migration.start.confirm=نعم, محفظتي متزامنة بالكامل
|
|||||||
migration.run.enterPassword=أدخل كلمة المرور لـ "%s"
|
migration.run.enterPassword=أدخل كلمة المرور لـ "%s"
|
||||||
migration.run.startMigrationBtn=ترقية الحافظة
|
migration.run.startMigrationBtn=ترقية الحافظة
|
||||||
migration.run.progressHint=قد يستغرق هذا بعض الوقت…
|
migration.run.progressHint=قد يستغرق هذا بعض الوقت…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions=تم ترحيل "%s" بنجاح.\nيمكنك الآن فتح مخزنك.
|
migration.success.nextStepsInstructions=تم ترحيل "%s" بنجاح.\nيمكنك الآن فتح مخزنك.
|
||||||
migration.success.unlockNow=افتح الان
|
migration.success.unlockNow=افتح الان
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -145,8 +142,11 @@ migration.impossible.reason=لا يمكن ترحيل المخزن تلقائيا
|
|||||||
migration.impossible.moreInfo=لا يزال ممكناً فتح المخزن باستخدام إصدار قديم. للحصول على تعليمات حول كيفية ترحيل المخزن يدوياً، قم بزيارة
|
migration.impossible.moreInfo=لا يزال ممكناً فتح المخزن باستخدام إصدار قديم. للحصول على تعليمات حول كيفية ترحيل المخزن يدوياً، قم بزيارة
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
## Start Failure
|
||||||
|
## Check Selection
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
## Fix Application
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=تفضيلات
|
preferences.title=تفضيلات
|
||||||
@@ -164,10 +164,6 @@ preferences.general.debugLogging=تمكين سجلات التصحيح
|
|||||||
preferences.general.debugDirectory=عرض ملفات السجل
|
preferences.general.debugDirectory=عرض ملفات السجل
|
||||||
preferences.general.autoStart=تشغيل Cryptomator عند بدء تشغيل النظام
|
preferences.general.autoStart=تشغيل Cryptomator عند بدء تشغيل النظام
|
||||||
preferences.general.keychainBackend=تخزين كلمات المرور مع
|
preferences.general.keychainBackend=تخزين كلمات المرور مع
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gnome Keyring
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=محفظة KDE
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=الوصول إلى سلسلة مفاتيح ماك
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=حماية بيانات ويندوز
|
|
||||||
preferences.general.interfaceOrientation=اتجاه الواجهة
|
preferences.general.interfaceOrientation=اتجاه الواجهة
|
||||||
preferences.general.interfaceOrientation.ltr=من اليسار إلى اليمين
|
preferences.general.interfaceOrientation.ltr=من اليسار إلى اليمين
|
||||||
preferences.general.interfaceOrientation.rtl=من اليمين إلى اليسار
|
preferences.general.interfaceOrientation.rtl=من اليمين إلى اليسار
|
||||||
@@ -268,6 +264,7 @@ vaultOptions.general.actionAfterUnlock=بعد فتح القفل بنجاح
|
|||||||
vaultOptions.general.actionAfterUnlock.ignore=لا تفعل شيئاً
|
vaultOptions.general.actionAfterUnlock.ignore=لا تفعل شيئاً
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=اظهار القرص
|
vaultOptions.general.actionAfterUnlock.reveal=اظهار القرص
|
||||||
vaultOptions.general.actionAfterUnlock.ask=اسأل
|
vaultOptions.general.actionAfterUnlock.ask=اسأل
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=القرص الوهمي
|
vaultOptions.mount=القرص الوهمي
|
||||||
vaultOptions.mount.readonly=للقراءة فقط
|
vaultOptions.mount.readonly=للقراءة فقط
|
||||||
@@ -283,10 +280,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=اختر مجلد فارغ
|
|||||||
vaultOptions.masterkey=كلمة المرور
|
vaultOptions.masterkey=كلمة المرور
|
||||||
vaultOptions.masterkey.changePasswordBtn=تغيير كلمة المرور
|
vaultOptions.masterkey.changePasswordBtn=تغيير كلمة المرور
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=نسيان كلمة المرور المحفوظة
|
vaultOptions.masterkey.forgetSavedPasswordBtn=نسيان كلمة المرور المحفوظة
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=مفتاح الاسترداد هو وسيلتك الوحيدة لاستعادة الوصول إلى مخزنك إذا فقدت كلمة المرور.
|
vaultOptions.masterkey.recoveryKeyExplanation=مفتاح الاسترداد هو وسيلتك الوحيدة لاستعادة الوصول إلى مخزنك إذا فقدت كلمة المرور.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=عرض مفتاح الاسترداد
|
vaultOptions.masterkey.showRecoveryKeyBtn=عرض مفتاح الاسترداد
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=استرجاع كلمة المرور
|
vaultOptions.masterkey.recoverPasswordBtn=استرجاع كلمة المرور
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=مفتاح الاسترداد
|
recoveryKey.title=مفتاح الاسترداد
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=Gotovo
|
|||||||
generic.button.next=Sljedeće
|
generic.button.next=Sljedeće
|
||||||
generic.button.print=Ispis
|
generic.button.print=Ispis
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Došlo je do neočekivane greške
|
|
||||||
generic.error.instruction=Ovo se nije trebalo dogoditi. Molimo da prijavite opis greške ispod, kao i korake koji su do greške doveli.
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Sef
|
defaults.vault.vaultName=Sef
|
||||||
@@ -44,6 +42,10 @@ addvaultwizard.new.locationPrompt=…
|
|||||||
addvaultwizard.new.directoryPickerLabel=Prilagođena lokacija
|
addvaultwizard.new.directoryPickerLabel=Prilagođena lokacija
|
||||||
addvaultwizard.new.directoryPickerButton=Odaberi…
|
addvaultwizard.new.directoryPickerButton=Odaberi…
|
||||||
addvaultwizard.new.directoryPickerTitle=Izaberi folder
|
addvaultwizard.new.directoryPickerTitle=Izaberi folder
|
||||||
|
addvaultwizard.new.fileAlreadyExists=Upozorenje: Fajl ili mapa s tim nazivom već postoji
|
||||||
|
addvaultwizard.new.locationDoesNotExist=Direktorij u navedenoj putanji ne postoji ili mu se ne može pristupiti
|
||||||
|
addvaultwizard.new.locationIsNotWritable=Nije moguće izvršiti operaciju pisanja na navedenoj putanji
|
||||||
|
addvaultwizard.new.locationIsOk=Pogodno mjesto za vaš sef
|
||||||
addvaultwizard.new.invalidName=Naziv sefa neispravan. Molimo razmislite o drugom nazivu.
|
addvaultwizard.new.invalidName=Naziv sefa neispravan. Molimo razmislite o drugom nazivu.
|
||||||
### Password
|
### Password
|
||||||
addvaultwizard.new.createVaultBtn=Kreiraj novi sef
|
addvaultwizard.new.createVaultBtn=Kreiraj novi sef
|
||||||
@@ -91,7 +93,6 @@ forgetPassword.information=Ovo će izbrisati sačuvanu lozinku ovog sefa iz vaš
|
|||||||
forgetPassword.confirmBtn=Zaboravili ste šifru
|
forgetPassword.confirmBtn=Zaboravili ste šifru
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Otključaj sef
|
|
||||||
unlock.passwordPrompt=Unesite lozinku za "%s":
|
unlock.passwordPrompt=Unesite lozinku za "%s":
|
||||||
unlock.savePassword=Zapamti šifru
|
unlock.savePassword=Zapamti šifru
|
||||||
unlock.unlockBtn=Otključaj
|
unlock.unlockBtn=Otključaj
|
||||||
@@ -125,7 +126,7 @@ migration.start.confirm=Da, moj sef je u potpunosti sinhroniziran
|
|||||||
migration.run.enterPassword=Unesite lozinku za "%s"
|
migration.run.enterPassword=Unesite lozinku za "%s"
|
||||||
migration.run.startMigrationBtn=Nadogradi sef
|
migration.run.startMigrationBtn=Nadogradi sef
|
||||||
migration.run.progressHint=Ovo bi moglo potrajati…
|
migration.run.progressHint=Ovo bi moglo potrajati…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions="%s" je uspješno nadograđen.\nSada možete otključati svoj sef.
|
migration.success.nextStepsInstructions="%s" je uspješno nadograđen.\nSada možete otključati svoj sef.
|
||||||
migration.success.unlockNow=Otključaj sada
|
migration.success.unlockNow=Otključaj sada
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -141,8 +142,11 @@ migration.impossible.reason=Sef se ne može automatski migrirati jer njegovo mje
|
|||||||
migration.impossible.moreInfo=Sef se i dalje može otvoriti sa starijom verzijom. Za upute o ručnom migriranju sefa posjetite
|
migration.impossible.moreInfo=Sef se i dalje može otvoriti sa starijom verzijom. Za upute o ručnom migriranju sefa posjetite
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
## Start Failure
|
||||||
|
## Check Selection
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
## Fix Application
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Postavke
|
preferences.title=Postavke
|
||||||
@@ -160,10 +164,6 @@ preferences.general.debugLogging=Omogući evidenciju otklanjanja pogrešaka
|
|||||||
preferences.general.debugDirectory=Pokaži dnevnik podataka
|
preferences.general.debugDirectory=Pokaži dnevnik podataka
|
||||||
preferences.general.autoStart=Pokreni Cryptomator pri pokretanju sistema
|
preferences.general.autoStart=Pokreni Cryptomator pri pokretanju sistema
|
||||||
preferences.general.keychainBackend=Pohrani lozinku sa
|
preferences.general.keychainBackend=Pohrani lozinku sa
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gnome Keyring
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=KDE Wallet
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=macOS Keychain Access
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Windows Data Protection
|
|
||||||
preferences.general.interfaceOrientation=Orijentacija Interfejsa
|
preferences.general.interfaceOrientation=Orijentacija Interfejsa
|
||||||
preferences.general.interfaceOrientation.ltr=S lijeva ka desno
|
preferences.general.interfaceOrientation.ltr=S lijeva ka desno
|
||||||
preferences.general.interfaceOrientation.rtl=Sa desna ka lijevo
|
preferences.general.interfaceOrientation.rtl=Sa desna ka lijevo
|
||||||
@@ -280,6 +280,7 @@ vaultOptions.general.actionAfterUnlock=Nakon uspješnog otključavanja
|
|||||||
vaultOptions.general.actionAfterUnlock.ignore=Ne radi ništa
|
vaultOptions.general.actionAfterUnlock.ignore=Ne radi ništa
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Otkrij pogon
|
vaultOptions.general.actionAfterUnlock.reveal=Otkrij pogon
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Pitaj
|
vaultOptions.general.actionAfterUnlock.ask=Pitaj
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Povezivanje
|
vaultOptions.mount=Povezivanje
|
||||||
vaultOptions.mount.readonly=Samo čitanje
|
vaultOptions.mount.readonly=Samo čitanje
|
||||||
@@ -295,10 +296,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Izaberi praznu mapu
|
|||||||
vaultOptions.masterkey=Šifra
|
vaultOptions.masterkey=Šifra
|
||||||
vaultOptions.masterkey.changePasswordBtn=Promjeni lozinku
|
vaultOptions.masterkey.changePasswordBtn=Promjeni lozinku
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Zaborav spremljenu šifru
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Zaborav spremljenu šifru
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Ključ za oporavak je vaše jedino sredstvo za vraćanje pristupa sefu ako izgubite lozinku.
|
vaultOptions.masterkey.recoveryKeyExplanation=Ključ za oporavak je vaše jedino sredstvo za vraćanje pristupa sefu ako izgubite lozinku.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Pokaži ključ za oporavak
|
vaultOptions.masterkey.showRecoveryKeyBtn=Pokaži ključ za oporavak
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Povrati šifru
|
vaultOptions.masterkey.recoverPasswordBtn=Povrati šifru
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Ključ za oporavak
|
recoveryKey.title=Ključ za oporavak
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=Fet
|
|||||||
generic.button.next=Següent
|
generic.button.next=Següent
|
||||||
generic.button.print=Imprimeix
|
generic.button.print=Imprimeix
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=S'ha produït un error inesperat
|
|
||||||
generic.error.instruction=Això no hauria d'haver passat. Si us plau, informeu del text de l'error i inclogueu una descripció de quins passos han dut a aquest error.
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Caixa forta
|
defaults.vault.vaultName=Caixa forta
|
||||||
@@ -45,7 +43,9 @@ addvaultwizard.new.directoryPickerLabel=Ubicació personalitzada
|
|||||||
addvaultwizard.new.directoryPickerButton=Trieu…
|
addvaultwizard.new.directoryPickerButton=Trieu…
|
||||||
addvaultwizard.new.directoryPickerTitle=Seleccioneu el directori
|
addvaultwizard.new.directoryPickerTitle=Seleccioneu el directori
|
||||||
addvaultwizard.new.fileAlreadyExists=Ja existeix un fitxer o un directori amb el nom de la caixa forta
|
addvaultwizard.new.fileAlreadyExists=Ja existeix un fitxer o un directori amb el nom de la caixa forta
|
||||||
|
addvaultwizard.new.locationDoesNotExist=Un directori de la ruta especificada no existeix o no s'hi pot accedir
|
||||||
addvaultwizard.new.locationIsNotWritable=No teniu permís d'escriptura en la ruta especificada
|
addvaultwizard.new.locationIsNotWritable=No teniu permís d'escriptura en la ruta especificada
|
||||||
|
addvaultwizard.new.locationIsOk=Localització per a la vostra caixa forta
|
||||||
addvaultwizard.new.invalidName=El nom de la caixa forta no és vàlid. Si us plau, escribiu un mom de directori amb caràcters estàndard.
|
addvaultwizard.new.invalidName=El nom de la caixa forta no és vàlid. Si us plau, escribiu un mom de directori amb caràcters estàndard.
|
||||||
### Password
|
### Password
|
||||||
addvaultwizard.new.createVaultBtn=Crea la caixa forta
|
addvaultwizard.new.createVaultBtn=Crea la caixa forta
|
||||||
@@ -93,7 +93,7 @@ forgetPassword.information=Això eliminarà la contrasenya desada d'aquesta caix
|
|||||||
forgetPassword.confirmBtn=He oblidat la contrasenya
|
forgetPassword.confirmBtn=He oblidat la contrasenya
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Desbloquejar la caixa forta
|
unlock.title=Desbloca "%s"
|
||||||
unlock.passwordPrompt=Introduïu la contrasenya de "%s":
|
unlock.passwordPrompt=Introduïu la contrasenya de "%s":
|
||||||
unlock.savePassword=Recorda la contrasenya
|
unlock.savePassword=Recorda la contrasenya
|
||||||
unlock.unlockBtn=Desbloqueja
|
unlock.unlockBtn=Desbloqueja
|
||||||
@@ -128,7 +128,7 @@ migration.start.confirm=Sí, la meua caixa forta està completament sicronitzada
|
|||||||
migration.run.enterPassword=Introduïu la contrasenya per a "%s"
|
migration.run.enterPassword=Introduïu la contrasenya per a "%s"
|
||||||
migration.run.startMigrationBtn=Migrar la caixa forta
|
migration.run.startMigrationBtn=Migrar la caixa forta
|
||||||
migration.run.progressHint=Això pot trigar una mica...
|
migration.run.progressHint=Això pot trigar una mica...
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions="%s" s'ha migrat correctament.\nJa podeu desbloquejar la vostra caixa forta.
|
migration.success.nextStepsInstructions="%s" s'ha migrat correctament.\nJa podeu desbloquejar la vostra caixa forta.
|
||||||
migration.success.unlockNow=Desbloqueja ara
|
migration.success.unlockNow=Desbloqueja ara
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -144,19 +144,38 @@ migration.impossible.reason=La caixa forta no es pot migrar automàticament perq
|
|||||||
migration.impossible.moreInfo=La caixa forta es pot obrir amb una versió anterior. Per saber com poder fer la migració de manera manual, visiteu
|
migration.impossible.moreInfo=La caixa forta es pot obrir amb una versió anterior. Per saber com poder fer la migració de manera manual, visiteu
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Comprovació de la caixa forta
|
## Start
|
||||||
health.start.configInvalid=S'ha produït un problema en la lectura i anàlisi del fitxer de configuració de la caixa forta.
|
health.title=Comprovació de "%s"
|
||||||
health.checkList.selectAllBox=Selecciona-ho tot
|
health.intro.header=Comprovació d'estat
|
||||||
|
health.intro.text=La comprovació de salut és una col·lecció de comprovacions per a detectar la possibilitat de resoldre problemes en l'estructura interna de la vostra caixa forta. Tingueu en compte:
|
||||||
|
health.intro.remarkSync=Assegureu que tots els dispositius s'han sincronitzat completament, això resol la major part dels problemes.
|
||||||
|
health.intro.remarkFix=No s'han pogut resoldre tots els problemes.
|
||||||
|
health.intro.remarkBackup=Si les dades s'han corromput, solament una còpia de seguretat ho podrà resoldre.
|
||||||
|
health.intro.affirmation=He llegit i entès la informació anterior
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Error en desar la configuració de la caixa forta
|
||||||
|
health.fail.ioError=S'ha trobat un error mentre s'accedia al fitxer de configuració.
|
||||||
|
health.fail.parseError=S'ha trobat un error mentre es processava la configuració de la caixa forta.
|
||||||
|
health.fail.moreInfo=Més informació
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Selecciona les caselles en la llista de l'esquerra o feu servir els botons de la part inferior.
|
||||||
|
health.checkList.selectAllButton=Selecciona tots
|
||||||
|
health.checkList.deselectAllButton=Deselecciona tots
|
||||||
health.check.runBatchBtn=Executa les proves seleccionades
|
health.check.runBatchBtn=Executa les proves seleccionades
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.header=Resultats de %s
|
health.check.detail.noSelectedCheck=Per a obtenir-ne els resultats trieu una de les comprovacions finalitzades de la llista de l'esquerra.
|
||||||
health.check.detail.taskNotStarted=La prova no ha estat seleccionada per a executar-la.
|
health.check.detail.checkScheduled=La comprovació s'ha programat.
|
||||||
health.check.detail.taskRunning=La prova és en procés…
|
health.check.detail.checkRunning=La prova és en procés…
|
||||||
health.check.detail.taskSucceeded=La prova ha finalitzat amb èxit després de %d mil·lisegons.
|
health.check.detail.checkSkipped=La prova no ha estat seleccionada per a executar-la.
|
||||||
health.check.detail.taskCancelled=S'ha cancel·lat la prova.
|
health.check.detail.checkFinished=La prova ha finalitzat amb èxit.
|
||||||
health.check.detail.problemCount=S'hi han trobat %d problemes i %d errades irrecuperables.
|
health.check.detail.checkFinishedAndFound=La comprovació ha finalitzat. Si us plau, comproveu-ne es resultat.
|
||||||
|
health.check.detail.checkFailed=La comprovació ha acabat a causa d'un error.
|
||||||
|
health.check.detail.checkCancelled=S'ha cancel·lat la prova.
|
||||||
health.check.exportBtn=Exporta informe
|
health.check.exportBtn=Exporta informe
|
||||||
## Checks
|
## Fix Application
|
||||||
|
health.fix.fixBtn=Corregeix
|
||||||
|
health.fix.successTip=S'ha corregit amb èxit
|
||||||
|
health.fix.failTip=La correcció ha fallat, vegeu-ne els detalls al registre
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Preferències
|
preferences.title=Preferències
|
||||||
@@ -174,10 +193,6 @@ preferences.general.debugLogging=Habilita el registre de depuració
|
|||||||
preferences.general.debugDirectory=Mostra els fitxers de registres
|
preferences.general.debugDirectory=Mostra els fitxers de registres
|
||||||
preferences.general.autoStart=Executa Cryptomator en engegar el sistema
|
preferences.general.autoStart=Executa Cryptomator en engegar el sistema
|
||||||
preferences.general.keychainBackend=Desar contrasenyes amb
|
preferences.general.keychainBackend=Desar contrasenyes amb
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Anell de claus de Gnome
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=Cartera de KDE
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=Accés a clauers macOS
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Windows Data Protection
|
|
||||||
preferences.general.interfaceOrientation=Orientació de la interfície
|
preferences.general.interfaceOrientation=Orientació de la interfície
|
||||||
preferences.general.interfaceOrientation.ltr=Esquerra a dreta
|
preferences.general.interfaceOrientation.ltr=Esquerra a dreta
|
||||||
preferences.general.interfaceOrientation.rtl=Dreta a esquerra
|
preferences.general.interfaceOrientation.rtl=Dreta a esquerra
|
||||||
@@ -294,12 +309,15 @@ wrongFileAlert.link=Per rebre assistència, visiteu
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=General
|
vaultOptions.general=General
|
||||||
vaultOptions.general.vaultName=Nom de la caixa forta
|
vaultOptions.general.vaultName=Nom de la caixa forta
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Bloca després de
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=minuts
|
||||||
vaultOptions.general.unlockAfterStartup=Desbloqueja la caixa forta quan s'inicia Cryptomator
|
vaultOptions.general.unlockAfterStartup=Desbloqueja la caixa forta quan s'inicia Cryptomator
|
||||||
vaultOptions.general.actionAfterUnlock=Després d'un desbloqueig correcte
|
vaultOptions.general.actionAfterUnlock=Després d'un desbloqueig correcte
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=No facis res
|
vaultOptions.general.actionAfterUnlock.ignore=No facis res
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Mostra la unitat
|
vaultOptions.general.actionAfterUnlock.reveal=Mostra la unitat
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Pregunta
|
vaultOptions.general.actionAfterUnlock.ask=Pregunta
|
||||||
vaultOptions.general.healthBtn=Inicia la comprovació
|
vaultOptions.general.startHealthCheckBtn=Inicia la comprovació
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Muntatge
|
vaultOptions.mount=Muntatge
|
||||||
vaultOptions.mount.readonly=Només lectura
|
vaultOptions.mount.readonly=Només lectura
|
||||||
@@ -315,11 +333,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Esculliu un directori buit
|
|||||||
vaultOptions.masterkey=Contrasenya
|
vaultOptions.masterkey=Contrasenya
|
||||||
vaultOptions.masterkey.changePasswordBtn=Canvi de contrasenya
|
vaultOptions.masterkey.changePasswordBtn=Canvi de contrasenya
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Oblida la contrasenya desada
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Oblida la contrasenya desada
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=La clau de recuperació és l'unic mitjà de restaurar l'accès a la caixa forta en cas de perdre la contrasenya.
|
vaultOptions.masterkey.recoveryKeyExplanation=La clau de recuperació és l'unic mitjà de restaurar l'accès a la caixa forta en cas de perdre la contrasenya.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Mostra la clau de recuperació
|
vaultOptions.masterkey.showRecoveryKeyBtn=Mostra la clau de recuperació
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Recupera la contrasenya
|
vaultOptions.masterkey.recoverPasswordBtn=Recupera la contrasenya
|
||||||
## Auto Lock
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart2=minuts
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Clau de recuperació
|
recoveryKey.title=Clau de recuperació
|
||||||
|
|||||||
@@ -13,8 +13,11 @@ generic.button.done=Hotovo
|
|||||||
generic.button.next=Další
|
generic.button.next=Další
|
||||||
generic.button.print=Tisk
|
generic.button.print=Tisk
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Došlo k neočekávané chybě
|
generic.error.title=Chyba %s
|
||||||
generic.error.instruction=Tohle se nemělo stát. Prosím, nahlaste níže uvedený chybový text a popište, jaké kroky vedly k této chybě.
|
generic.error.instruction=Jejda! Tohle Cryptomator nečekal. Můžete najít již existující řešení pro tuto chybu. Nebo pokud ještě nebyla nahlášena, neváhejte tak učinit.
|
||||||
|
generic.error.hyperlink.lookup=Vyhledat tuto chybu
|
||||||
|
generic.error.hyperlink.report=Nahlásit tuto chybu
|
||||||
|
generic.error.technicalDetails=Podrobnosti:
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Trezor
|
defaults.vault.vaultName=Trezor
|
||||||
@@ -95,7 +98,7 @@ forgetPassword.information=Toto smaže uložené heslo pro tento trezor.
|
|||||||
forgetPassword.confirmBtn=Zapomenout heslo
|
forgetPassword.confirmBtn=Zapomenout heslo
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Odemknout trezor
|
unlock.title=Odemknout "%s"
|
||||||
unlock.passwordPrompt=Zadejte heslo pro "%s":
|
unlock.passwordPrompt=Zadejte heslo pro "%s":
|
||||||
unlock.savePassword=Zapamatovat heslo
|
unlock.savePassword=Zapamatovat heslo
|
||||||
unlock.unlockBtn=Odemknout
|
unlock.unlockBtn=Odemknout
|
||||||
@@ -130,7 +133,7 @@ migration.start.confirm=Ano, můj trezor je plně synchronizován.
|
|||||||
migration.run.enterPassword=Zadejte heslo pro "%s"
|
migration.run.enterPassword=Zadejte heslo pro "%s"
|
||||||
migration.run.startMigrationBtn=Migrovat trezor
|
migration.run.startMigrationBtn=Migrovat trezor
|
||||||
migration.run.progressHint=Může to chvíli trvat…
|
migration.run.progressHint=Může to chvíli trvat…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions=Migrace "%s" byla úspěšná.\nNyní můžete svůj trezor odemknout.
|
migration.success.nextStepsInstructions=Migrace "%s" byla úspěšná.\nNyní můžete svůj trezor odemknout.
|
||||||
migration.success.unlockNow=Odemknout nyní
|
migration.success.unlockNow=Odemknout nyní
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -146,27 +149,38 @@ migration.impossible.reason=Trezor nemůže být automaticky zmigrován, protož
|
|||||||
migration.impossible.moreInfo=Trezor může být stále otevřen starší verzí. Pro pokyny, jak ručně migrovat trezor, navštivte
|
migration.impossible.moreInfo=Trezor může být stále otevřen starší verzí. Pro pokyny, jak ručně migrovat trezor, navštivte
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Kontrola stavu trezoru
|
## Start
|
||||||
health.start.introduction=Kontrola stavu trezoru je soubor kontrol, jejichž cílem je odhalit a případně odstranit problémy ve vnitřní struktuře trezoru. Upozorňujeme, že ne všechny problémy lze opravit. K provedení kontrol potřebujete heslo k trezoru.
|
health.title=Kontrola stavu "%s"
|
||||||
health.start.configValid=Načtení a analýza konfiguračního souboru trezoru proběhly úspěšně. Pokračujte ve výběru kontrol.
|
health.intro.header=Kontrola stavu
|
||||||
health.start.configInvalid=Chyba při čtení a analýze konfiguračního souboru trezoru.
|
health.intro.text=Kontrola stavu je soubor kontrol, které odhalí a případně opraví problémy ve vnitřní struktuře vašeho trezoru. Mějte prosím na paměti, že:
|
||||||
health.checkList.header=Dostupné kontroly stavu
|
health.intro.remarkSync=Ujistěte se, že jsou všechna zařízení plně synchronizována, toto řeší většinu problémů.
|
||||||
health.checkList.selectAllBox=Vybrat vše
|
health.intro.remarkFix=Ne všechny problémy lze vyřešit.
|
||||||
|
health.intro.remarkBackup=Pokud jsou data poškozena, může pomoci pouze záloha.
|
||||||
|
health.intro.affirmation=Přečetl jsem si výše uvedené informace a rozumím jim
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Chyba při načítání konfigurace trezoru
|
||||||
|
health.fail.ioError=Došlo k chybě při přístupu a čtení konfiguračního souboru.
|
||||||
|
health.fail.parseError=Při analýze nastavení trezoru došlo k chybě.
|
||||||
|
health.fail.moreInfo=Více informací
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Vyberte kontroly z levého seznamu nebo použijte tlačítka níže.
|
||||||
|
health.checkList.selectAllButton=Vybrat všechny kontroly
|
||||||
|
health.checkList.deselectAllButton=Zrušit výběr všech kontrol
|
||||||
health.check.runBatchBtn=Spustit vybrané kontroly
|
health.check.runBatchBtn=Spustit vybrané kontroly
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.noSelectedCheck=Pro výsledky vyberte dokončenou kontrolu stavu v levém seznamu.
|
health.check.detail.noSelectedCheck=Pro výsledky vyberte dokončenou kontrolu stavu v levém seznamu.
|
||||||
health.check.detail.header=Výsledky pro %s
|
health.check.detail.checkScheduled=Kontrola je naplánována.
|
||||||
health.check.detail.taskNotStarted=Kontrola nebyla vybrána ke spuštění.
|
health.check.detail.checkRunning=Kontrola právě probíhá…
|
||||||
health.check.detail.taskScheduled=Kontrola je naplánována.
|
health.check.detail.checkSkipped=Kontrola nebyla vybrána ke spuštění.
|
||||||
health.check.detail.taskRunning=Kontrola právě probíhá…
|
health.check.detail.checkFinished=Kontrola byla úspěšně dokončena.
|
||||||
health.check.detail.taskSucceeded=Kontrola byla úspěšně dokončena po %d milisekundách.
|
health.check.detail.checkFinishedAndFound=Kontrola byla dokončena. Zkontrolujte prosím výsledky.
|
||||||
health.check.detail.taskFailed=Kontrola byla ukončena z důvodu chyby.
|
health.check.detail.checkFailed=Kontrola byla ukončena z důvodu chyby.
|
||||||
health.check.detail.taskCancelled=Kontrola byla zrušena.
|
health.check.detail.checkCancelled=Kontrola byla zrušena.
|
||||||
health.check.detail.problemCount=Nalezeno %d problémů a %d neopravitelných chyb.
|
|
||||||
health.check.exportBtn=Exportovat sestavu
|
health.check.exportBtn=Exportovat sestavu
|
||||||
health.check.fixBtn=Opravit
|
## Fix Application
|
||||||
## Checks
|
health.fix.fixBtn=Opravit
|
||||||
health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Kontrola adresáře
|
health.fix.successTip=Oprava byla úspěšná
|
||||||
|
health.fix.failTip=Oprava selhala, podrobnosti naleznete v logu
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Nastavení
|
preferences.title=Nastavení
|
||||||
@@ -184,10 +198,6 @@ preferences.general.debugLogging=Ladicí režim
|
|||||||
preferences.general.debugDirectory=Ukázat soubory se záznamy událostí (log)
|
preferences.general.debugDirectory=Ukázat soubory se záznamy událostí (log)
|
||||||
preferences.general.autoStart=Spustit Cryptomator při spuštění systému
|
preferences.general.autoStart=Spustit Cryptomator při spuštění systému
|
||||||
preferences.general.keychainBackend=Ukládat hesla pomocí
|
preferences.general.keychainBackend=Ukládat hesla pomocí
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gnome klíčenka
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=KDE KWallet
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=macOS Svazek klíčů
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Windows Data Protection klíčenka
|
|
||||||
preferences.general.interfaceOrientation=Orientace prostředí
|
preferences.general.interfaceOrientation=Orientace prostředí
|
||||||
preferences.general.interfaceOrientation.ltr=Zleva doprava
|
preferences.general.interfaceOrientation.ltr=Zleva doprava
|
||||||
preferences.general.interfaceOrientation.rtl=Zprava doleva
|
preferences.general.interfaceOrientation.rtl=Zprava doleva
|
||||||
@@ -304,12 +314,15 @@ wrongFileAlert.link=Pro další informace navštivte
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=Obecné
|
vaultOptions.general=Obecné
|
||||||
vaultOptions.general.vaultName=Název trezoru
|
vaultOptions.general.vaultName=Název trezoru
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Uzamknout při nečinnosti po
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=minut
|
||||||
vaultOptions.general.unlockAfterStartup=Odemknout trezor při spuštění Cryptomator
|
vaultOptions.general.unlockAfterStartup=Odemknout trezor při spuštění Cryptomator
|
||||||
vaultOptions.general.actionAfterUnlock=Po úspěšném odemčení
|
vaultOptions.general.actionAfterUnlock=Po úspěšném odemčení
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=Nedělat nic
|
vaultOptions.general.actionAfterUnlock.ignore=Nedělat nic
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Zobrazit jednotku
|
vaultOptions.general.actionAfterUnlock.reveal=Zobrazit jednotku
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Zeptat se
|
vaultOptions.general.actionAfterUnlock.ask=Zeptat se
|
||||||
vaultOptions.general.healthBtn=Spuštění kontroly stavu
|
vaultOptions.general.startHealthCheckBtn=Zahájit kontrolu stavu
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Připojení
|
vaultOptions.mount=Připojení
|
||||||
vaultOptions.mount.readonly=Pouze pro čtení
|
vaultOptions.mount.readonly=Pouze pro čtení
|
||||||
@@ -325,13 +338,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Vyberte prázdný adresář
|
|||||||
vaultOptions.masterkey=Heslo
|
vaultOptions.masterkey=Heslo
|
||||||
vaultOptions.masterkey.changePasswordBtn=Změnit heslo
|
vaultOptions.masterkey.changePasswordBtn=Změnit heslo
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Zapomenout uložené heslo
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Zapomenout uložené heslo
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Obnovovací klíč je váš jediný způsob, jak obnovit přístup k trezoru, pokud ztratíte své heslo.
|
vaultOptions.masterkey.recoveryKeyExplanation=Obnovovací klíč je váš jediný způsob, jak obnovit přístup k trezoru, pokud ztratíte své heslo.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Zobrazit klíč k obnově
|
vaultOptions.masterkey.showRecoveryKeyBtn=Zobrazit klíč k obnově
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Obnovit heslo
|
vaultOptions.masterkey.recoverPasswordBtn=Obnovit heslo
|
||||||
## Auto Lock
|
|
||||||
vaultOptions.autoLock=Automatické uzamčení
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart1=Uzamknout při nečinnosti po
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart2=minut
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Klíč k obnově
|
recoveryKey.title=Klíč k obnově
|
||||||
|
|||||||
@@ -13,8 +13,11 @@ generic.button.done=Fertig
|
|||||||
generic.button.next=Weiter
|
generic.button.next=Weiter
|
||||||
generic.button.print=Drucken
|
generic.button.print=Drucken
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Ein unerwarteter Fehler ist aufgetreten
|
generic.error.title=Fehler %s
|
||||||
generic.error.instruction=Das hätte nicht passieren dürfen. Bitte melde den folgenden Fehlertext und beschreibe kurz, durch welche Schritte der Fehler aufgetreten ist.
|
generic.error.instruction=Ups! Das hat sich Cryptomator anders vorgestellt. Du kannst Lösungen für diesen Fehler nachschlagen oder einen neuen Fehlerbericht einreichen.
|
||||||
|
generic.error.hyperlink.lookup=Diesen Fehler nachschlagen
|
||||||
|
generic.error.hyperlink.report=Diesen Fehler melden
|
||||||
|
generic.error.technicalDetails=Details:
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Tresor
|
defaults.vault.vaultName=Tresor
|
||||||
@@ -45,7 +48,7 @@ addvaultwizard.new.directoryPickerLabel=Eigener Ort
|
|||||||
addvaultwizard.new.directoryPickerButton=Durchsuchen …
|
addvaultwizard.new.directoryPickerButton=Durchsuchen …
|
||||||
addvaultwizard.new.directoryPickerTitle=Verzeichnis auswählen
|
addvaultwizard.new.directoryPickerTitle=Verzeichnis auswählen
|
||||||
addvaultwizard.new.fileAlreadyExists=Eine Datei oder ein Ordner mit diesem Namen ist bereits vorhanden
|
addvaultwizard.new.fileAlreadyExists=Eine Datei oder ein Ordner mit diesem Namen ist bereits vorhanden
|
||||||
addvaultwizard.new.locationDoesNotExist=Der Ordner im angegebenen Pfad existiert nicht oder kann nicht geöffnet werden
|
addvaultwizard.new.locationDoesNotExist=Ein Ordner im angegebenen Pfad existiert nicht oder kann nicht geöffnet werden
|
||||||
addvaultwizard.new.locationIsNotWritable=Kein Schreibzugriff auf den angegebenen Pfad
|
addvaultwizard.new.locationIsNotWritable=Kein Schreibzugriff auf den angegebenen Pfad
|
||||||
addvaultwizard.new.locationIsOk=Geeigneter Ort für deinen Tresor
|
addvaultwizard.new.locationIsOk=Geeigneter Ort für deinen Tresor
|
||||||
addvaultwizard.new.invalidName=Ungültiger Tresorname. Bitte wähle einen regulären Namen, mit dem auch Verzeichnisse erstellt werden können.
|
addvaultwizard.new.invalidName=Ungültiger Tresorname. Bitte wähle einen regulären Namen, mit dem auch Verzeichnisse erstellt werden können.
|
||||||
@@ -59,7 +62,7 @@ addvault.new.readme.storageLocation.fileName=WICHTIG.rtf
|
|||||||
addvault.new.readme.storageLocation.1=⚠️ TRESOR-DATEIEN ⚠️
|
addvault.new.readme.storageLocation.1=⚠️ TRESOR-DATEIEN ⚠️
|
||||||
addvault.new.readme.storageLocation.2=Dies ist der Speicherort deines Tresors.
|
addvault.new.readme.storageLocation.2=Dies ist der Speicherort deines Tresors.
|
||||||
addvault.new.readme.storageLocation.3=NICHT
|
addvault.new.readme.storageLocation.3=NICHT
|
||||||
addvault.new.readme.storageLocation.4=• in diesem Verzeichnis Dateien ändern oder
|
addvault.new.readme.storageLocation.4=• Dateien in diesem Verzeichnis ändern oder
|
||||||
addvault.new.readme.storageLocation.5=• zu verschlüsselnde Dateien in diesem Verzeichnis ablegen.
|
addvault.new.readme.storageLocation.5=• zu verschlüsselnde Dateien in diesem Verzeichnis ablegen.
|
||||||
addvault.new.readme.storageLocation.6=Falls du Dateien verschlüsseln und den Inhalt des Tresors anzeigen möchtest, befolge folgende Schritte:
|
addvault.new.readme.storageLocation.6=Falls du Dateien verschlüsseln und den Inhalt des Tresors anzeigen möchtest, befolge folgende Schritte:
|
||||||
addvault.new.readme.storageLocation.7=1. Füge diesen Tresor zu Cryptomator hinzu.
|
addvault.new.readme.storageLocation.7=1. Füge diesen Tresor zu Cryptomator hinzu.
|
||||||
@@ -95,7 +98,7 @@ forgetPassword.information=Dies löscht das gespeicherte Passwort dieses Tresors
|
|||||||
forgetPassword.confirmBtn=Passwort vergessen
|
forgetPassword.confirmBtn=Passwort vergessen
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Tresor entsperren
|
unlock.title=Entsperre "%s"
|
||||||
unlock.passwordPrompt=Gib das Passwort für „%s“ ein:
|
unlock.passwordPrompt=Gib das Passwort für „%s“ ein:
|
||||||
unlock.savePassword=Passwort merken
|
unlock.savePassword=Passwort merken
|
||||||
unlock.unlockBtn=Entsperren
|
unlock.unlockBtn=Entsperren
|
||||||
@@ -119,7 +122,7 @@ lock.forced.message=Aufgrund von Zugriffen laufender Prozesse oder geöffneter D
|
|||||||
lock.forced.confirmBtn=Sperren erzwingen
|
lock.forced.confirmBtn=Sperren erzwingen
|
||||||
## Failure
|
## Failure
|
||||||
lock.fail.heading=Tresor konnte nicht gesperrt werden.
|
lock.fail.heading=Tresor konnte nicht gesperrt werden.
|
||||||
lock.fail.message=Der Tresor „%s“ konnte nicht gesperrt werden. Stellen Sie sicher, dass Sie Ihre ungespeicherten Arbeit an anderer Stelle speichern und wichtige Lese-/Schreibvorgänge abgeschlossen sind. Um den Tresor zu schließen, beenden Sie den Cryptomator-Prozess.
|
lock.fail.message=Der Tresor „%s“ konnte nicht gesperrt werden. Stelle sicher, dass du deine ungespeicherte Arbeit an anderer Stelle speicherst und wichtige Lese-/Schreibvorgänge abgeschlossen sind. Um den Tresor zu schließen, beende den Cryptomator-Prozess.
|
||||||
|
|
||||||
# Migration
|
# Migration
|
||||||
migration.title=Tresor aktualisieren
|
migration.title=Tresor aktualisieren
|
||||||
@@ -130,7 +133,7 @@ migration.start.confirm=Ja, mein Tresor ist vollständig synchronisiert
|
|||||||
migration.run.enterPassword=Gib das Passwort für „%s“ ein
|
migration.run.enterPassword=Gib das Passwort für „%s“ ein
|
||||||
migration.run.startMigrationBtn=Tresor migrieren
|
migration.run.startMigrationBtn=Tresor migrieren
|
||||||
migration.run.progressHint=Dies kann einige Zeit dauern …
|
migration.run.progressHint=Dies kann einige Zeit dauern …
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions=„%s“ erfolgreich migriert.\nDu kannst deinen Tresor jetzt entsperren.
|
migration.success.nextStepsInstructions=„%s“ erfolgreich migriert.\nDu kannst deinen Tresor jetzt entsperren.
|
||||||
migration.success.unlockNow=Jetzt entsperren
|
migration.success.unlockNow=Jetzt entsperren
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -146,27 +149,38 @@ migration.impossible.reason=Der Tresor kann nicht automatisch migriert werden, d
|
|||||||
migration.impossible.moreInfo=Der Tresor kann auch jetzt noch mit einer älteren Version geöffnet werden. Eine Anleitung zum manuellen Migrieren eines Tresors findest du unter
|
migration.impossible.moreInfo=Der Tresor kann auch jetzt noch mit einer älteren Version geöffnet werden. Eine Anleitung zum manuellen Migrieren eines Tresors findest du unter
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Tresor-Integritätsprüfung
|
## Start
|
||||||
health.start.introduction=Die Tresor-Integritätsprüfung ist eine Sammlung von Prüfungen, um Probleme in der internen Struktur deines Tresors zu erkennen und zu beheben. Bitte beachte, dass nicht alle Probleme behoben werden können. Du benötigst das Tresor-Passwort, um die Prüfungen durchzuführen.
|
health.title=Integritätstest von "%s"
|
||||||
health.start.configValid=Das Lesen und Verarbeiten der Tresorkonfigurationsdatei war erfolgreich. Fahre fort, um Überprüfungen auszuwählen.
|
health.intro.header=Zustandsprüfung
|
||||||
health.start.configInvalid=Fehler beim Lesen und Verarbeiten der Tresorkonfigurationsdatei.
|
health.intro.text=Der Zustandscheck ist eine Sammlung von Tests, um Probleme mit der internen Struktur deines Tresores zu finden und möglicherweise zu reparieren. Bitte bedenke:
|
||||||
health.checkList.header=Verfügbare Integritätsprüfungen
|
health.intro.remarkSync=Stelle sicher, dass alle Geräte vollständig synchronisiert sind. Dies löst die meisten Probleme.
|
||||||
health.checkList.selectAllBox=Alles auswählen
|
health.intro.remarkFix=Nicht alle Probleme können gelöst werden.
|
||||||
|
health.intro.remarkBackup=Wenn Daten beschädigt sind, kann nur ein Backup helfen.
|
||||||
|
health.intro.affirmation=Ich habe die obenstehende Information gelesen und verstanden
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Fehler beim Laden der Tresorkonfiguration
|
||||||
|
health.fail.ioError=Beim Lesezugriff auf die Konfigurationsdatei ist ein Fehler aufgetreten.
|
||||||
|
health.fail.parseError=Beim Parsen der Tresor-Konfiguration ist ein Fehler aufgetreten.
|
||||||
|
health.fail.moreInfo=Weitere Informationen
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Markiere Prüfungen in der linken Liste oder benutze die Knöpfe darunter.
|
||||||
|
health.checkList.selectAllButton=Alle Prüfungen auswählen
|
||||||
|
health.checkList.deselectAllButton=Alle Prüfungen abwählen
|
||||||
health.check.runBatchBtn=Ausgewählte Prüfungen ausführen
|
health.check.runBatchBtn=Ausgewählte Prüfungen ausführen
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.noSelectedCheck=Wähle für die Ergebnisse eine abgeschlossene Intregritätsprüfung in der Liste links aus.
|
health.check.detail.noSelectedCheck=Wähle für die Ergebnisse eine abgeschlossene Integritätsprüfung in der Liste links aus.
|
||||||
health.check.detail.header=Ergebnisse für %s
|
health.check.detail.checkScheduled=Die Prüfung ist geplant.
|
||||||
health.check.detail.taskNotStarted=Die Prüfung wurde nicht zum Ausführen ausgewählt.
|
health.check.detail.checkRunning=Prüfung läuft…
|
||||||
health.check.detail.taskScheduled=Die Prüfung ist geplant.
|
health.check.detail.checkSkipped=Die Prüfung wurde nicht zur Ausführung ausgewählt.
|
||||||
health.check.detail.taskRunning=Die Prüfung läuft derzeit …
|
health.check.detail.checkFinished=Die Prüfung wurde erfolgreich abgeschlossen.
|
||||||
health.check.detail.taskSucceeded=Die Prüfung wurde nach %d Millisekunden erfolgreich beendet.
|
health.check.detail.checkFinishedAndFound=Die Überprüfung wurde beendet. Bitte sichte die Ergebnisse.
|
||||||
health.check.detail.taskFailed=Die Prüfung wurde wegen eines Fehlers beendet.
|
health.check.detail.checkFailed=Die Prüfung wurde wegen eines Fehlers beendet.
|
||||||
health.check.detail.taskCancelled=Die Prüfung wurde abgebrochen.
|
health.check.detail.checkCancelled=Die Prüfung wurde abgebrochen.
|
||||||
health.check.detail.problemCount=%d Probleme und %d unbehebbare Fehler gefunden.
|
|
||||||
health.check.exportBtn=Bericht exportieren
|
health.check.exportBtn=Bericht exportieren
|
||||||
health.check.fixBtn=Reparieren
|
## Fix Application
|
||||||
## Checks
|
health.fix.fixBtn=Beheben
|
||||||
health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Verzeichnisüberprüfung
|
health.fix.successTip=Fehlerbehebung erfolgreich
|
||||||
|
health.fix.failTip=Reparatur fehlgeschlagen, siehe Log für Details
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Einstellungen
|
preferences.title=Einstellungen
|
||||||
@@ -184,10 +198,6 @@ preferences.general.debugLogging=Diagnoseprotokoll aktivieren
|
|||||||
preferences.general.debugDirectory=Protokolldateien anzeigen
|
preferences.general.debugDirectory=Protokolldateien anzeigen
|
||||||
preferences.general.autoStart=Cryptomator beim Systemstart starten
|
preferences.general.autoStart=Cryptomator beim Systemstart starten
|
||||||
preferences.general.keychainBackend=Passwörter speichern mit
|
preferences.general.keychainBackend=Passwörter speichern mit
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gnome-Schlüsselbund
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=KDE Wallet
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=macOS-Schlüsselbund-Zugriff
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Windows-Datenschutz
|
|
||||||
preferences.general.interfaceOrientation=Oberflächenausrichtung
|
preferences.general.interfaceOrientation=Oberflächenausrichtung
|
||||||
preferences.general.interfaceOrientation.ltr=Von links nach rechts
|
preferences.general.interfaceOrientation.ltr=Von links nach rechts
|
||||||
preferences.general.interfaceOrientation.rtl=Von rechts nach links
|
preferences.general.interfaceOrientation.rtl=Von rechts nach links
|
||||||
@@ -251,7 +261,7 @@ main.debugModeEnabled.tooltip=Diagnosemodus ist aktiviert
|
|||||||
main.donationKeyMissing.tooltip=Zieh bitte eine Spende in Betracht
|
main.donationKeyMissing.tooltip=Zieh bitte eine Spende in Betracht
|
||||||
## Drag 'n' Drop
|
## Drag 'n' Drop
|
||||||
main.dropZone.dropVault=Diesen Tresor hinzufügen
|
main.dropZone.dropVault=Diesen Tresor hinzufügen
|
||||||
main.dropZone.unknownDragboardContent=Wenn Sie einen Tresor hinzufügen möchten, ziehen Sie ihn in dieses Fenster
|
main.dropZone.unknownDragboardContent=Falls du einen Tresor hinzufügen möchtest, zieh ihn in dieses Fenster
|
||||||
## Vault List
|
## Vault List
|
||||||
main.vaultlist.emptyList.onboardingInstruction=Klicke hier, um einen Tresor hinzuzufügen
|
main.vaultlist.emptyList.onboardingInstruction=Klicke hier, um einen Tresor hinzuzufügen
|
||||||
main.vaultlist.contextMenu.remove=Entfernen …
|
main.vaultlist.contextMenu.remove=Entfernen …
|
||||||
@@ -304,12 +314,15 @@ wrongFileAlert.link=Besuche für weitere Hilfe
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=Allgemein
|
vaultOptions.general=Allgemein
|
||||||
vaultOptions.general.vaultName=Tresorname
|
vaultOptions.general.vaultName=Tresorname
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Nach
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=Minuten Inaktivität sperren
|
||||||
vaultOptions.general.unlockAfterStartup=Tresor beim Start von Cryptomator entsperren
|
vaultOptions.general.unlockAfterStartup=Tresor beim Start von Cryptomator entsperren
|
||||||
vaultOptions.general.actionAfterUnlock=Nach erfolgreichem Entsperren
|
vaultOptions.general.actionAfterUnlock=Nach erfolgreichem Entsperren
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=Nichts tun
|
vaultOptions.general.actionAfterUnlock.ignore=Nichts tun
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Laufwerk anzeigen
|
vaultOptions.general.actionAfterUnlock.reveal=Laufwerk anzeigen
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Nachfragen
|
vaultOptions.general.actionAfterUnlock.ask=Nachfragen
|
||||||
vaultOptions.general.healthBtn=Integritätsprüfung starten
|
vaultOptions.general.startHealthCheckBtn=Integritätsprüfung starten
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Laufwerk
|
vaultOptions.mount=Laufwerk
|
||||||
vaultOptions.mount.readonly=Schreibgeschützt
|
vaultOptions.mount.readonly=Schreibgeschützt
|
||||||
@@ -325,13 +338,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Wähle ein leeres Verzeichnis
|
|||||||
vaultOptions.masterkey=Passwort
|
vaultOptions.masterkey=Passwort
|
||||||
vaultOptions.masterkey.changePasswordBtn=Passwort ändern
|
vaultOptions.masterkey.changePasswordBtn=Passwort ändern
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Gespeichertes Passwort vergessen
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Gespeichertes Passwort vergessen
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Dein Wiederherstellungsschlüssel gehört nur dir! Dieser wird benötigt, um deinen Tresor wiederherzustellen, für den Fall das du dein Passwort verloren hast.
|
vaultOptions.masterkey.recoveryKeyExplanation=Dein Wiederherstellungsschlüssel gehört nur dir! Dieser wird benötigt, um deinen Tresor wiederherzustellen, für den Fall das du dein Passwort verloren hast.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Wiederherstellungsschlüssel anzeigen
|
vaultOptions.masterkey.showRecoveryKeyBtn=Wiederherstellungsschlüssel anzeigen
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Passwort wiederherstellen
|
vaultOptions.masterkey.recoverPasswordBtn=Passwort wiederherstellen
|
||||||
## Auto Lock
|
|
||||||
vaultOptions.autoLock=Autom. Sperren
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart1=Nach
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart2=Minuten Inaktivität sperren
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Wiederherstellungsschlüssel
|
recoveryKey.title=Wiederherstellungsschlüssel
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=Κλείσιμο
|
|||||||
generic.button.next=Επόμενο
|
generic.button.next=Επόμενο
|
||||||
generic.button.print=Εκτύπωση
|
generic.button.print=Εκτύπωση
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Παρουσιάστηκε ένα απροσδόκητο σφάλμα
|
|
||||||
generic.error.instruction=Αυτό δεν έπρεπε να συμβεί. Παρακαλώ αντιγράψτε το κείμενο του σφάλματος και επισυνάψτε μια περιγραφή των βημάτων που οδήγησαν σε αυτό το σφάλμα.
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Vault
|
defaults.vault.vaultName=Vault
|
||||||
@@ -95,7 +93,7 @@ forgetPassword.information=Ο αποθηκευμένος κωδικός αυτο
|
|||||||
forgetPassword.confirmBtn=Ξέχασα τον κωδικό πρόσβασης
|
forgetPassword.confirmBtn=Ξέχασα τον κωδικό πρόσβασης
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Ξεκλείδωμα Vault
|
unlock.title=Ξεκλειδώστε "%s"
|
||||||
unlock.passwordPrompt=Εισάγετε τον κωδικό για "%s":
|
unlock.passwordPrompt=Εισάγετε τον κωδικό για "%s":
|
||||||
unlock.savePassword=Απομνημόνευση κωδικού πρόσβασης
|
unlock.savePassword=Απομνημόνευση κωδικού πρόσβασης
|
||||||
unlock.unlockBtn=Ξεκλείδωμα
|
unlock.unlockBtn=Ξεκλείδωμα
|
||||||
@@ -130,7 +128,7 @@ migration.start.confirm=Ναι, το vault μου είναι πλήρως συγ
|
|||||||
migration.run.enterPassword=Εισάγετε τον κωδικό για "%s"
|
migration.run.enterPassword=Εισάγετε τον κωδικό για "%s"
|
||||||
migration.run.startMigrationBtn=Ενσωμάτωση Vault
|
migration.run.startMigrationBtn=Ενσωμάτωση Vault
|
||||||
migration.run.progressHint=Αυτό θα πάρει αρκετό χρόνο…
|
migration.run.progressHint=Αυτό θα πάρει αρκετό χρόνο…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions="%s" συγχωνεύτηκε επιτυχώς.\nΜπορείτε να ξεκλειδώσετε το vault σας.
|
migration.success.nextStepsInstructions="%s" συγχωνεύτηκε επιτυχώς.\nΜπορείτε να ξεκλειδώσετε το vault σας.
|
||||||
migration.success.unlockNow=Ξεκλείδωμα τώρα
|
migration.success.unlockNow=Ξεκλείδωμα τώρα
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -146,27 +144,38 @@ migration.impossible.reason=Το vault δεν μπορεί να συγχωνευ
|
|||||||
migration.impossible.moreInfo=Το vault μπορεί να ανοιχθεί με παλαιότερη έκδοση. Για οδηγίες χειροκίνητης συγχώνευσης του vault, επισκεφτείτε
|
migration.impossible.moreInfo=Το vault μπορεί να ανοιχθεί με παλαιότερη έκδοση. Για οδηγίες χειροκίνητης συγχώνευσης του vault, επισκεφτείτε
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Έλεγχος Υγείας Vault
|
## Start
|
||||||
health.start.introduction=Ο Έλεγχος Υγείας του Vault είναι μια σειρά από ελέγχους για ανίχνευση και επιδιόρθωση των προβλημάτων στην εσωτερική δομή του Vault σας. Παρακαλώ σημειώστε, ότι δεν μπορούν να διορθωθούν όλα τα προβλήματα. Χρειάζεστε τον κωδικό πρόσβασης Vault για να εκτελέσετε τους ελέγχους.
|
health.title=Έλεγχος υγείας του "%s"
|
||||||
health.start.configValid=Η ανάγνωση και η ανάλυση του αρχείου ρυθμίσεων του Vault ήταν επιτυχής. Συνεχίστε για να επιλέξετε ελέγχους.
|
health.intro.header=Έλεγχος υγείας
|
||||||
health.start.configInvalid=Σφάλμα κατά την ανάγνωση και ανάλυση του αρχείου ρυθμίσεων του Vault.
|
health.intro.text=Ο Έλεγχος Υγείας είναι μια συλλογή ελέγχων για τον εντοπισμό και ενδεχομένως την επίλυση προβλημάτων στην εσωτερική δομή του vault σας. Παρακαλώ λάβετε υπόψη:
|
||||||
health.checkList.header=Διαθέσιμοι Έλεγχοι Υγείας
|
health.intro.remarkSync=Βεβαιωθείτε ότι όλες οι συσκευές είναι πλήρως συγχρονισμένες, αυτό επιλύει τα περισσότερα προβλήματα.
|
||||||
health.checkList.selectAllBox=Επιλογή όλων
|
health.intro.remarkFix=Δεν μπορούν να διορθωθούν όλα τα προβλήματα.
|
||||||
|
health.intro.remarkBackup=Εάν τα δεδομένα είναι κατεστραμμένα, μόνο ένα αντίγραφο ασφαλείας μπορεί να βοηθήσει.
|
||||||
|
health.intro.affirmation=Έχω διαβάσει και κατανοήσει τις παραπάνω πληροφορίες
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Σφάλμα κατά τη φόρτωση παραμέτρων του Vault
|
||||||
|
health.fail.ioError=Παρουσιάστηκε σφάλμα κατά την πρόσβαση και ανάγνωση του αρχείου ρυθμίσεων.
|
||||||
|
health.fail.parseError=Παρουσιάστηκε σφάλμα κατά την ανάλυση των ρυθμίσεων του vault.
|
||||||
|
health.fail.moreInfo=Περισσότερες Πληροφορίες
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Επιλέξτε τους ελέγχους στην αριστερή λίστα ή χρησιμοποιήστε τα παρακάτω κουμπιά.
|
||||||
|
health.checkList.selectAllButton=Επιλογή Όλων Των Ελέγχων
|
||||||
|
health.checkList.deselectAllButton=Αποεπιλογή Όλων Των Ελέγχων
|
||||||
health.check.runBatchBtn=Εκτέλεση επιλεγμένων ελέγχων
|
health.check.runBatchBtn=Εκτέλεση επιλεγμένων ελέγχων
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.noSelectedCheck=Για τα αποτελέσματα επιλέξτε έναν ολοκληρωμένο έλεγχο υγείας στην αριστερή λίστα.
|
health.check.detail.noSelectedCheck=Για τα αποτελέσματα επιλέξτε έναν ολοκληρωμένο έλεγχο υγείας στην αριστερή λίστα.
|
||||||
health.check.detail.header=Αποτελέσματα από %s
|
health.check.detail.checkScheduled=Ο έλεγχος έχει προγραμματιστεί.
|
||||||
health.check.detail.taskNotStarted=Ο έλεγχος δεν επιλέχθηκε για εκτέλεση.
|
health.check.detail.checkRunning=Ο έλεγχος εκτελείται αυτήν τη στιγμή…
|
||||||
health.check.detail.taskScheduled=Ο έλεγχος έχει προγραμματιστεί.
|
health.check.detail.checkSkipped=Ο έλεγχος δεν επιλέχθηκε για εκτέλεση.
|
||||||
health.check.detail.taskRunning=Ο έλεγχος εκτελείται αυτήν τη στιγμή…
|
health.check.detail.checkFinished=Ο έλεγχος ολοκληρώθηκε με επιτυχία.
|
||||||
health.check.detail.taskSucceeded=Ο έλεγχος ολοκληρώθηκε επιτυχώς μετά από %d χιλιοστά του δευτερολέπτου.
|
health.check.detail.checkFinishedAndFound=Ο έλεγχος σταμάτησε να εκτελείται. Παρακαλώ εξετάστε τα αποτελέσματα.
|
||||||
health.check.detail.taskFailed=Ο έλεγχος τερματίστηκε λόγω σφάλματος.
|
health.check.detail.checkFailed=Ο έλεγχος τερματίστηκε λόγω σφάλματος.
|
||||||
health.check.detail.taskCancelled=Ο έλεγχος ακυρώθηκε.
|
health.check.detail.checkCancelled=Ο έλεγχος ακυρώθηκε.
|
||||||
health.check.detail.problemCount=Βρέθηκαν %d προβλήματα και %d μη επιδιορθώσιμα σφάλματα.
|
|
||||||
health.check.exportBtn=Εξαγωγή Αναφοράς
|
health.check.exportBtn=Εξαγωγή Αναφοράς
|
||||||
health.check.fixBtn=Επιδιόρθωση
|
## Fix Application
|
||||||
## Checks
|
health.fix.fixBtn=Επιδιόρθωση
|
||||||
health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Έλεγχος Φακέλου
|
health.fix.successTip=Επιτυχής επιδιόρθωση
|
||||||
|
health.fix.failTip=Επιδιόρθωση απέτυχε, δείτε το αρχείο καταγραφής για λεπτομέρειες
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Προτιμήσεις
|
preferences.title=Προτιμήσεις
|
||||||
@@ -184,10 +193,6 @@ preferences.general.debugLogging=Ενεργοποίηση καταγραφής
|
|||||||
preferences.general.debugDirectory=Αποκάλυψη αρχείων καταγραφής
|
preferences.general.debugDirectory=Αποκάλυψη αρχείων καταγραφής
|
||||||
preferences.general.autoStart=Εκκίνηση Cryptomator στην εκκίνηση του συστήματος
|
preferences.general.autoStart=Εκκίνηση Cryptomator στην εκκίνηση του συστήματος
|
||||||
preferences.general.keychainBackend=Αποθήκευση κωδικού πρόσβασης με
|
preferences.general.keychainBackend=Αποθήκευση κωδικού πρόσβασης με
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gnome Keyring
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=KDE Wallet
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=macOS Keychain πρόσβαση
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Προστασία δεδομένων Windows
|
|
||||||
preferences.general.interfaceOrientation=Προσανατολισμός εφαρμογής
|
preferences.general.interfaceOrientation=Προσανατολισμός εφαρμογής
|
||||||
preferences.general.interfaceOrientation.ltr=Αριστερά προς δεξιά
|
preferences.general.interfaceOrientation.ltr=Αριστερά προς δεξιά
|
||||||
preferences.general.interfaceOrientation.rtl=Δεξιά προς αριστερά
|
preferences.general.interfaceOrientation.rtl=Δεξιά προς αριστερά
|
||||||
@@ -304,12 +309,15 @@ wrongFileAlert.link=Για παραπάνω βοήθεια, επισκεφτεί
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=Γενικά
|
vaultOptions.general=Γενικά
|
||||||
vaultOptions.general.vaultName=Όνομα Vault
|
vaultOptions.general.vaultName=Όνομα Vault
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Κλείδωμα όταν παραμένει σε αδράνεια για
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=λεπτά
|
||||||
vaultOptions.general.unlockAfterStartup=Ξεκλείδωμα vault όταν ξεκινά το Cryptomator
|
vaultOptions.general.unlockAfterStartup=Ξεκλείδωμα vault όταν ξεκινά το Cryptomator
|
||||||
vaultOptions.general.actionAfterUnlock=Μετά το επιτυχές ξεκλείδωμα
|
vaultOptions.general.actionAfterUnlock=Μετά το επιτυχές ξεκλείδωμα
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=Να μην γίνει τίποτα
|
vaultOptions.general.actionAfterUnlock.ignore=Να μην γίνει τίποτα
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Αποκάλυψη Εικονικού Δίσκου
|
vaultOptions.general.actionAfterUnlock.reveal=Αποκάλυψη Εικονικού Δίσκου
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Ρώτα
|
vaultOptions.general.actionAfterUnlock.ask=Ρώτα
|
||||||
vaultOptions.general.healthBtn=Έναρξη ελέγχου Υγείας Vault
|
vaultOptions.general.startHealthCheckBtn=Έναρξη ελέγχου Υγείας
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Προσάρτηση
|
vaultOptions.mount=Προσάρτηση
|
||||||
vaultOptions.mount.readonly=Μόνο για ανάγνωση
|
vaultOptions.mount.readonly=Μόνο για ανάγνωση
|
||||||
@@ -325,13 +333,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Επιλέξτε ένα άδ
|
|||||||
vaultOptions.masterkey=Κωδικός πρόσβασης
|
vaultOptions.masterkey=Κωδικός πρόσβασης
|
||||||
vaultOptions.masterkey.changePasswordBtn=Αλλαγή κωδικού πρόσβασης
|
vaultOptions.masterkey.changePasswordBtn=Αλλαγή κωδικού πρόσβασης
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Διαγραφή αποθηκευμένου κωδικού
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Διαγραφή αποθηκευμένου κωδικού
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Το κλειδί ασφαλείας είναι ο μόνος τρόπος ανάκτησης πρόσβασης στο vault αν χάσετε τον κωδικό σας.
|
vaultOptions.masterkey.recoveryKeyExplanation=Το κλειδί ασφαλείας είναι ο μόνος τρόπος ανάκτησης πρόσβασης σε ένα vault αν χάσετε τον κωδικό σας.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Προβολή κλειδιού ανάκτησης
|
vaultOptions.masterkey.showRecoveryKeyBtn=Προβολή κλειδιού ανάκτησης
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Ανάκτηση κωδικού
|
vaultOptions.masterkey.recoverPasswordBtn=Ανάκτηση κωδικού
|
||||||
## Auto Lock
|
|
||||||
vaultOptions.autoLock=Αυτόματο Κλείδωμα
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart1=Κλείδωμα όταν παραμένει σε αδράνεια για
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart2=λεπτά
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Κλειδί Ανάκτησης
|
recoveryKey.title=Κλειδί Ανάκτησης
|
||||||
|
|||||||
@@ -13,8 +13,11 @@ generic.button.done=Hecho
|
|||||||
generic.button.next=Continuar
|
generic.button.next=Continuar
|
||||||
generic.button.print=Imprimir
|
generic.button.print=Imprimir
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Ocurrió un error inesperado
|
generic.error.title=Error %s
|
||||||
generic.error.instruction=Esto no debió suceder. Notifique el error de abajo e incluya una descripción de los pasos que llevaron a este error.
|
generic.error.instruction=¡Ups! Cryptomator no esperaba que esto sucediera. Puede buscar soluciones existentes para este error. O si aún no se ha notiicado, siéntase libre de hacerlo.
|
||||||
|
generic.error.hyperlink.lookup=Buscar este error
|
||||||
|
generic.error.hyperlink.report=Notificar este error
|
||||||
|
generic.error.technicalDetails=Detalles:
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Bóveda
|
defaults.vault.vaultName=Bóveda
|
||||||
@@ -95,7 +98,7 @@ forgetPassword.information=Esto eliminará la contraseña guardada de esta bóve
|
|||||||
forgetPassword.confirmBtn=Olvidar contraseña
|
forgetPassword.confirmBtn=Olvidar contraseña
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Desbloquear bóveda
|
unlock.title=Desbloquear "%s"
|
||||||
unlock.passwordPrompt=Ingresar contraseña para "%s":
|
unlock.passwordPrompt=Ingresar contraseña para "%s":
|
||||||
unlock.savePassword=Recordar contraseña
|
unlock.savePassword=Recordar contraseña
|
||||||
unlock.unlockBtn=Desbloquear
|
unlock.unlockBtn=Desbloquear
|
||||||
@@ -130,7 +133,7 @@ migration.start.confirm=Sí, mi bóveda está sincronizada
|
|||||||
migration.run.enterPassword=Ingresar la contraseña para "%s"
|
migration.run.enterPassword=Ingresar la contraseña para "%s"
|
||||||
migration.run.startMigrationBtn=Migrar bóveda
|
migration.run.startMigrationBtn=Migrar bóveda
|
||||||
migration.run.progressHint=Esto puede tardar un poco…
|
migration.run.progressHint=Esto puede tardar un poco…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions="%s" se migró con éxito.\nYa se puede desbloquear la bóveda.
|
migration.success.nextStepsInstructions="%s" se migró con éxito.\nYa se puede desbloquear la bóveda.
|
||||||
migration.success.unlockNow=Desbloquear ahora
|
migration.success.unlockNow=Desbloquear ahora
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -146,27 +149,38 @@ migration.impossible.reason=La bóveda no puede migrarse automáticamente porque
|
|||||||
migration.impossible.moreInfo=La bóveda aún se puede abrir con una versión anterior. Para obtener instrucciones en cómo migrar manualmente una bóveda, visite
|
migration.impossible.moreInfo=La bóveda aún se puede abrir con una versión anterior. Para obtener instrucciones en cómo migrar manualmente una bóveda, visite
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Comprobación del Estado de la Bóveda
|
## Start
|
||||||
health.start.introduction=La comprobación del estado de la bóveda es un conjunto de pruebas para detectar y posiblemente solucionar los problemas de la estructura interna de la bóveda. Tenga en cuenta que no todos los problemas son corregibles. Necesita la contraseña de la bóveda para realizar las comprobaciones.
|
health.title=Comprobador de estado de "%s"
|
||||||
health.start.configValid=La lectura y análisis del archivo de configuración de la bóveda fueron correctos. Proceda a seleccionar las comprobaciones.
|
health.intro.header=Comprobador de estado
|
||||||
health.start.configInvalid=Error al leer y analizar el archivo de configuración de la bóveda.
|
health.intro.text=El comprobador de estado es una colección de comprobaciones para detectar y posiblemente corregir problemas en la estructura interna de su bóveda. Tome en cuenta:
|
||||||
health.checkList.header=Comprobaciones del estado disponibles
|
health.intro.remarkSync=Asegúrese de que todos los dispositivos están completamente sincronizados, esto resuelve la mayoría de los problemas.
|
||||||
health.checkList.selectAllBox=Seleccionar todo
|
health.intro.remarkFix=No todos los problemas se pueden solucionar.
|
||||||
|
health.intro.remarkBackup=Si los datos están dañados, solo una copia de seguridad puede ayudar.
|
||||||
|
health.intro.affirmation=He leído y entendido la información anterior
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Error al cargar la configuración de la bóveda
|
||||||
|
health.fail.ioError=Ocurrió un error al acceder y leer el archivo de configuración.
|
||||||
|
health.fail.parseError=Ocurrió un error mientras se analizaba la configuración de la bóveda.
|
||||||
|
health.fail.moreInfo=Más información
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Seleccione las comprobaciones en la lista de la izquierda o utilice los botones de abajo.
|
||||||
|
health.checkList.selectAllButton=Seleccionar todas las comprobaciones
|
||||||
|
health.checkList.deselectAllButton=Deseleccionar todas las comprobaciones
|
||||||
health.check.runBatchBtn=Ejecutar las comprobaciones seleccionadas
|
health.check.runBatchBtn=Ejecutar las comprobaciones seleccionadas
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.noSelectedCheck=Para los resultados seleccione una comprobación del estado en la lista de la izquierda
|
health.check.detail.noSelectedCheck=Para los resultados seleccione una comprobación del estado en la lista de la izquierda
|
||||||
health.check.detail.header=Resultados de %s
|
health.check.detail.checkScheduled=La comprobación está programada.
|
||||||
health.check.detail.taskNotStarted=No se ha seleccionado la comprobación para ejecutarse.
|
health.check.detail.checkRunning=La comprobación se está ejecutando…
|
||||||
health.check.detail.taskScheduled=La comprobación está programada.
|
health.check.detail.checkSkipped=No se ha seleccionado la comprobación para ejecutarse.
|
||||||
health.check.detail.taskRunning=La comprobación se está ejecutando…
|
health.check.detail.checkFinished=La comprobación terminó con éxito.
|
||||||
health.check.detail.taskSucceeded=La comprobación finalizó correctamente después de %d milisegundos.
|
health.check.detail.checkFinishedAndFound=La comprobación terminó de ejecutarse. Revise los resultados.
|
||||||
health.check.detail.taskFailed=La comprobación terminó debido a un error.
|
health.check.detail.checkFailed=La comprobación terminó debido a un error.
|
||||||
health.check.detail.taskCancelled=La comprobación se canceló.
|
health.check.detail.checkCancelled=La comprobación se canceló.
|
||||||
health.check.detail.problemCount=Se encontraron %d problemas y %d errores no corregibles.
|
|
||||||
health.check.exportBtn=Exportar informe
|
health.check.exportBtn=Exportar informe
|
||||||
health.check.fixBtn=Reparar
|
## Fix Application
|
||||||
## Checks
|
health.fix.fixBtn=Reparar
|
||||||
health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Comprobar directorio
|
health.fix.successTip=Reparación exitosa
|
||||||
|
health.fix.failTip=Reparación fallida, ver el registro para más detalles
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Preferencias
|
preferences.title=Preferencias
|
||||||
@@ -184,10 +198,6 @@ preferences.general.debugLogging=Habilitar registro de depuración
|
|||||||
preferences.general.debugDirectory=Revelar archivos de registro
|
preferences.general.debugDirectory=Revelar archivos de registro
|
||||||
preferences.general.autoStart=Cargar Cryptomator al iniciar el sistema
|
preferences.general.autoStart=Cargar Cryptomator al iniciar el sistema
|
||||||
preferences.general.keychainBackend=Guardar contraseñas con
|
preferences.general.keychainBackend=Guardar contraseñas con
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gnome Keyring
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=KDE Wallet
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=Acceso a llaveros macOS
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Protección de Datos de Windows
|
|
||||||
preferences.general.interfaceOrientation=Orientación de la interfaz
|
preferences.general.interfaceOrientation=Orientación de la interfaz
|
||||||
preferences.general.interfaceOrientation.ltr=Izquierda a derecha
|
preferences.general.interfaceOrientation.ltr=Izquierda a derecha
|
||||||
preferences.general.interfaceOrientation.rtl=Derecha a izquierda
|
preferences.general.interfaceOrientation.rtl=Derecha a izquierda
|
||||||
@@ -203,6 +213,11 @@ preferences.updates.autoUpdateCheck=Buscar actualizaciones automáticamente
|
|||||||
preferences.updates.checkNowBtn=Buscar ahora
|
preferences.updates.checkNowBtn=Buscar ahora
|
||||||
preferences.updates.updateAvailable=Actualización a la versión %s disponible.
|
preferences.updates.updateAvailable=Actualización a la versión %s disponible.
|
||||||
## Contribution
|
## Contribution
|
||||||
|
preferences.contribute=Apóyenos
|
||||||
|
preferences.contribute.registeredFor=Certificado de soporte registrado para %s
|
||||||
|
preferences.contribute.noCertificate=Apoye a Cryptomator y reciba un certificado de seguidor. Es como una clave de licencia, pero para gente asombrosa usando software libre. ;-)
|
||||||
|
preferences.contribute.getCertificate=¿Aún no tiene una? Aprenda cómo puede obtenerlo.
|
||||||
|
preferences.contribute.promptText=Pegue aquí el código de certificado de seguidor
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
## About
|
## About
|
||||||
@@ -299,12 +314,15 @@ wrongFileAlert.link=Para más ayuda, visite
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=General
|
vaultOptions.general=General
|
||||||
vaultOptions.general.vaultName=Nombre de la bóveda
|
vaultOptions.general.vaultName=Nombre de la bóveda
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Bloquear después de
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=minutos
|
||||||
vaultOptions.general.unlockAfterStartup=Desbloquear bóveda al iniciar Cryptomator
|
vaultOptions.general.unlockAfterStartup=Desbloquear bóveda al iniciar Cryptomator
|
||||||
vaultOptions.general.actionAfterUnlock=Después de desbloquear exitosamente
|
vaultOptions.general.actionAfterUnlock=Después de desbloquear exitosamente
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=No hacer nada
|
vaultOptions.general.actionAfterUnlock.ignore=No hacer nada
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Revelar unidad
|
vaultOptions.general.actionAfterUnlock.reveal=Revelar unidad
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Preguntar
|
vaultOptions.general.actionAfterUnlock.ask=Preguntar
|
||||||
vaultOptions.general.healthBtn=Iniciar comprobación del estado
|
vaultOptions.general.startHealthCheckBtn=Iniciar comprobación de estado
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Montaje
|
vaultOptions.mount=Montaje
|
||||||
vaultOptions.mount.readonly=Sólo lectura
|
vaultOptions.mount.readonly=Sólo lectura
|
||||||
@@ -320,13 +338,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Elegir un directorio vacío
|
|||||||
vaultOptions.masterkey=Contraseña
|
vaultOptions.masterkey=Contraseña
|
||||||
vaultOptions.masterkey.changePasswordBtn=Cambiar contraseña
|
vaultOptions.masterkey.changePasswordBtn=Cambiar contraseña
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Olvidar contraseña guardada
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Olvidar contraseña guardada
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Una clave de recuperación es el único medio para restaurar el acceso a una bóveda si pierde su contraseña.
|
vaultOptions.masterkey.recoveryKeyExplanation=Una clave de recuperación es el único medio para restaurar el acceso a una bóveda si pierde su contraseña.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Mostrar clave de recuperación
|
vaultOptions.masterkey.showRecoveryKeyBtn=Mostrar clave de recuperación
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Recuperar contraseña
|
vaultOptions.masterkey.recoverPasswordBtn=Recuperar contraseña
|
||||||
## Auto Lock
|
|
||||||
vaultOptions.autoLock=Autobloqueo
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart1=Bloquear después de
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart2=minutos
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Clave de recuperación
|
recoveryKey.title=Clave de recuperación
|
||||||
|
|||||||
@@ -13,8 +13,11 @@ generic.button.done=Terminé
|
|||||||
generic.button.next=Suivant
|
generic.button.next=Suivant
|
||||||
generic.button.print=Imprimer
|
generic.button.print=Imprimer
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Une erreur inattendue est survenue
|
generic.error.title=Erreur: %s
|
||||||
generic.error.instruction=Cela n'aurait pas dû se produire. Veuillez reporter le texte d'erreur ci-dessous et inclure une description des étapes qui ont conduit à cette erreur.
|
generic.error.instruction=Oups ! Cryptomator ne s'attendait pas à ce que cela se produise. Vous pouvez rechercher des solutions existantes pour cette erreur. Ou si elle n'a pas encore été signalée, n'hésitez pas à le faire.
|
||||||
|
generic.error.hyperlink.lookup=Rechercher cette erreur
|
||||||
|
generic.error.hyperlink.report=Signaler cette erreur
|
||||||
|
generic.error.technicalDetails=Détails:
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Coffre
|
defaults.vault.vaultName=Coffre
|
||||||
@@ -60,7 +63,7 @@ addvault.new.readme.storageLocation.1=Fichiers de coffre-fort
|
|||||||
addvault.new.readme.storageLocation.2=Ceci est le chemin de votre coffre-fort.
|
addvault.new.readme.storageLocation.2=Ceci est le chemin de votre coffre-fort.
|
||||||
addvault.new.readme.storageLocation.3=NE PAS
|
addvault.new.readme.storageLocation.3=NE PAS
|
||||||
addvault.new.readme.storageLocation.4=Modifier n'importe quel fichier dans ce répertoire ou
|
addvault.new.readme.storageLocation.4=Modifier n'importe quel fichier dans ce répertoire ou
|
||||||
addvault.new.readme.storageLocation.5=Collez n'importe quel fichier à crypter dans ce répertoire.
|
addvault.new.readme.storageLocation.5=Collez n'importe quel fichier à chiffrer dans ce répertoire.
|
||||||
addvault.new.readme.storageLocation.6=Si vous voulez chiffrer les fichiers et afficher le contenu du coffre, faites ce qui suit :
|
addvault.new.readme.storageLocation.6=Si vous voulez chiffrer les fichiers et afficher le contenu du coffre, faites ce qui suit :
|
||||||
addvault.new.readme.storageLocation.7=1. Ajouter ce coffre à Cryptomator.
|
addvault.new.readme.storageLocation.7=1. Ajouter ce coffre à Cryptomator.
|
||||||
addvault.new.readme.storageLocation.8=2. Déverrouillez le coffre-fort dans Cryptomator.
|
addvault.new.readme.storageLocation.8=2. Déverrouillez le coffre-fort dans Cryptomator.
|
||||||
@@ -69,7 +72,7 @@ addvault.new.readme.storageLocation.10=Si vous avez besoin d'aide, consultez la
|
|||||||
addvault.new.readme.accessLocation.fileName=BIENVENUE.rtf
|
addvault.new.readme.accessLocation.fileName=BIENVENUE.rtf
|
||||||
addvault.new.readme.accessLocation.1=🔐 VOLUME CHIFFRÉ 🔐
|
addvault.new.readme.accessLocation.1=🔐 VOLUME CHIFFRÉ 🔐
|
||||||
addvault.new.readme.accessLocation.2=Ceci est le chemin d'accès de votre coffre-fort.
|
addvault.new.readme.accessLocation.2=Ceci est le chemin d'accès de votre coffre-fort.
|
||||||
addvault.new.readme.accessLocation.3=Tous les fichiers ajoutés à ce volume seront cryptés par Cryptomator. Vous pouvez l'utiliser comme n'importe quel lecteur/répertoire. Ceci est seulement une vue déchiffrée de son contenu, vos fichiers restent chiffrés dans votre disque dur à tout le temps.
|
addvault.new.readme.accessLocation.3=Tous les fichiers ajoutés à ce volume seront chiffrés par Cryptomator. Vous pouvez l'utiliser comme n'importe quel lecteur/répertoire. Ceci est seulement une vue déchiffrée de son contenu, vos fichiers restent chiffrés dans votre disque dur à tout le temps.
|
||||||
addvault.new.readme.accessLocation.4=Vous pouvez supprimer ce fichier.
|
addvault.new.readme.accessLocation.4=Vous pouvez supprimer ce fichier.
|
||||||
## Existing
|
## Existing
|
||||||
addvaultwizard.existing.instruction=Sélectionner le fichier "masterkey.cryptomator" de votre coffre existant.
|
addvaultwizard.existing.instruction=Sélectionner le fichier "masterkey.cryptomator" de votre coffre existant.
|
||||||
@@ -90,12 +93,12 @@ changepassword.enterOldPassword=Entrez le mot de passe actuel pour "%s"
|
|||||||
changepassword.finalConfirmation=Je comprends que je ne pourrai pas récupérer mes données si j'oublie mon mot de passe
|
changepassword.finalConfirmation=Je comprends que je ne pourrai pas récupérer mes données si j'oublie mon mot de passe
|
||||||
|
|
||||||
# Forget Password
|
# Forget Password
|
||||||
forgetPassword.title=Mot de passe oublié
|
forgetPassword.title=Oublier le mot de passe
|
||||||
forgetPassword.information=Ceci supprimera le mot de passe enregistré pour ce coffre de votre chaîne de clés système.
|
forgetPassword.information=Ceci supprimera le mot de passe enregistré pour ce coffre de votre chaîne de clés système.
|
||||||
forgetPassword.confirmBtn=Oublier le mot de passe
|
forgetPassword.confirmBtn=Oublier le mot de passe
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Déverrouiller le coffre
|
unlock.title=Déverrouiller %s
|
||||||
unlock.passwordPrompt=Entrez le mot de passe pour “%s” :
|
unlock.passwordPrompt=Entrez le mot de passe pour “%s” :
|
||||||
unlock.savePassword=Mémoriser le mot de passe
|
unlock.savePassword=Mémoriser le mot de passe
|
||||||
unlock.unlockBtn=Déverrouiller
|
unlock.unlockBtn=Déverrouiller
|
||||||
@@ -130,7 +133,7 @@ migration.start.confirm=Oui, mon coffre est bien synchronisé
|
|||||||
migration.run.enterPassword=Entrez le mot de passe pour %s
|
migration.run.enterPassword=Entrez le mot de passe pour %s
|
||||||
migration.run.startMigrationBtn=Migrer le coffre
|
migration.run.startMigrationBtn=Migrer le coffre
|
||||||
migration.run.progressHint=Ceci peut prendre un certain temps…
|
migration.run.progressHint=Ceci peut prendre un certain temps…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions=“%s” migré.\nVous pouvez à présent déverrouiller ce coffre.
|
migration.success.nextStepsInstructions=“%s” migré.\nVous pouvez à présent déverrouiller ce coffre.
|
||||||
migration.success.unlockNow=Déverrouiller
|
migration.success.unlockNow=Déverrouiller
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -146,27 +149,38 @@ migration.impossible.reason=Le coffre-fort ne peut pas être migré automatiquem
|
|||||||
migration.impossible.moreInfo=Le coffre-fort peut encore être ouvert avec une version plus ancienne. Pour obtenir des instructions sur la façon de migrer manuellement un coffre-fort, visitez
|
migration.impossible.moreInfo=Le coffre-fort peut encore être ouvert avec une version plus ancienne. Pour obtenir des instructions sur la façon de migrer manuellement un coffre-fort, visitez
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Vérification de l'état de la chambre forte
|
## Start
|
||||||
health.start.introduction=La vérification d'état du coffre fort est une collection de vérifications pour détecter et possiblement corriger certains problèmes dans sa structure. Notez que tous les problèmes ne peuvent pas être réglés. Il vous faut le mot de passe de votre coffre fort pour effectuer ces vérifications.
|
health.title=Vérifier l'état de "%s"
|
||||||
health.start.configValid=La lecture et le parcours de la configuration se sont déroulés avec succès. Continuez avec la sélection des vérifications.
|
health.intro.header=Vérifier l'état
|
||||||
health.start.configInvalid=Erreur lors de la lecture et de l'analyse du fichier de configuration du coffre.
|
health.intro.text=Le bilan de santé est une série de vérifications pour détecter et corriger d'éventuels problèmes de structure interne au coffre. Rappelez-vous :
|
||||||
health.checkList.header=Tests de santé disponibles
|
health.intro.remarkSync=S'assurer que tous les appareils sont complètement synchronisés résout la plupart des problèmes.
|
||||||
health.checkList.selectAllBox=Tout sélectionner
|
health.intro.remarkFix=Certains problèmes ne peuvent pas être corrigés.
|
||||||
|
health.intro.remarkBackup=Si des données sont corrompues, la seule solution est une sauvegarde.
|
||||||
|
health.intro.affirmation=J'ai lu et compris les informations ci-dessus
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Erreur lors du chargement de la configuration du coffre
|
||||||
|
health.fail.ioError=Une erreur s'est produite lors de l'accès et de la lecture du fichier de configuration.
|
||||||
|
health.fail.parseError=Une erreur est survenue pendant la lecture de la configuration du coffre.
|
||||||
|
health.fail.moreInfo=Plus d'informations
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Sélectionnez les contrôles dans la liste de gauche ou utilisez les boutons ci-dessous.
|
||||||
|
health.checkList.selectAllButton=Sélectionner toutes les vérifications
|
||||||
|
health.checkList.deselectAllButton=Désélectionner toutes les vérifications
|
||||||
health.check.runBatchBtn=Exécuter les vérifications sélectionnées
|
health.check.runBatchBtn=Exécuter les vérifications sélectionnées
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.noSelectedCheck=Pour les résultats, sélectionnez un bilan de santé terminé dans la liste de gauche.
|
health.check.detail.noSelectedCheck=Pour les résultats, sélectionnez un bilan de santé terminé dans la liste de gauche.
|
||||||
health.check.detail.header=Résultats de %s
|
health.check.detail.checkScheduled=La vérification est programmée.
|
||||||
health.check.detail.taskNotStarted=La vérification n'a pas été sélectionnée pour être exécutée.
|
health.check.detail.checkRunning=Vérification en cours d'exécution…
|
||||||
health.check.detail.taskScheduled=La vérification est programmée.
|
health.check.detail.checkSkipped=La vérification n'a pas été sélectionnée pour être exécutée.
|
||||||
health.check.detail.taskRunning=Vérification en cours d'exécution…
|
health.check.detail.checkFinished=La vérification s'est terminée avec succès.
|
||||||
health.check.detail.taskSucceeded=La vérification s'est terminée avec succès après %d millisecondes.
|
health.check.detail.checkFinishedAndFound=La vérification s'est terminée. Veuillez vérifier les résultats.
|
||||||
health.check.detail.taskFailed=La vérification s'est arrêté en raison d'une erreur.
|
health.check.detail.checkFailed=La vérification s'est arrêtée en raison d'une erreur.
|
||||||
health.check.detail.taskCancelled=Vérification annulée.
|
health.check.detail.checkCancelled=Vérification annulée.
|
||||||
health.check.detail.problemCount=%d problèmes trouvés et %d erreurs non corrigeables.
|
|
||||||
health.check.exportBtn=Exporter le rapport
|
health.check.exportBtn=Exporter le rapport
|
||||||
health.check.fixBtn=Corriger
|
## Fix Application
|
||||||
## Checks
|
health.fix.fixBtn=Réparer
|
||||||
health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Vérification du répertoire
|
health.fix.successTip=Réparation réussie
|
||||||
|
health.fix.failTip=Correction échouée, voir le journal pour plus de détails
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Préférences
|
preferences.title=Préférences
|
||||||
@@ -184,10 +198,6 @@ preferences.general.debugLogging=Activer les logs debug
|
|||||||
preferences.general.debugDirectory=Afficher le journal
|
preferences.general.debugDirectory=Afficher le journal
|
||||||
preferences.general.autoStart=Lancer Cryptomator au démarrage du système
|
preferences.general.autoStart=Lancer Cryptomator au démarrage du système
|
||||||
preferences.general.keychainBackend=Stocker les mots de passe avec
|
preferences.general.keychainBackend=Stocker les mots de passe avec
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Trousseau Gnome
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=Portefeuille KDE
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=Accès au trousseau macOS
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Protection des données Windows
|
|
||||||
preferences.general.interfaceOrientation=Orientation de l'interface
|
preferences.general.interfaceOrientation=Orientation de l'interface
|
||||||
preferences.general.interfaceOrientation.ltr=De gauche à droite
|
preferences.general.interfaceOrientation.ltr=De gauche à droite
|
||||||
preferences.general.interfaceOrientation.rtl=De droite à gauche
|
preferences.general.interfaceOrientation.rtl=De droite à gauche
|
||||||
@@ -304,12 +314,15 @@ wrongFileAlert.link=Pour toute aide supplémentaire, visitez
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=Général
|
vaultOptions.general=Général
|
||||||
vaultOptions.general.vaultName=Nom de voûte
|
vaultOptions.general.vaultName=Nom de voûte
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Verrouiler en cas d'inactivité pendant
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=minutes
|
||||||
vaultOptions.general.unlockAfterStartup=Déverrouiller le coffre au démarrage
|
vaultOptions.general.unlockAfterStartup=Déverrouiller le coffre au démarrage
|
||||||
vaultOptions.general.actionAfterUnlock=Après un déverrouillage réussi
|
vaultOptions.general.actionAfterUnlock=Après un déverrouillage réussi
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=Ne rien faire
|
vaultOptions.general.actionAfterUnlock.ignore=Ne rien faire
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Afficher le disque
|
vaultOptions.general.actionAfterUnlock.reveal=Afficher le disque
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Demander
|
vaultOptions.general.actionAfterUnlock.ask=Demander
|
||||||
vaultOptions.general.healthBtn=Commencer le contrôle de santé
|
vaultOptions.general.startHealthCheckBtn=Commencer le contrôle de santé
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Montage
|
vaultOptions.mount=Montage
|
||||||
vaultOptions.mount.readonly=Lecture seule
|
vaultOptions.mount.readonly=Lecture seule
|
||||||
@@ -325,13 +338,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Choisir un répertoire vide
|
|||||||
vaultOptions.masterkey=Mot de passe
|
vaultOptions.masterkey=Mot de passe
|
||||||
vaultOptions.masterkey.changePasswordBtn=Modifier le mot de passe
|
vaultOptions.masterkey.changePasswordBtn=Modifier le mot de passe
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Oublier le mot de passe enregistré
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Oublier le mot de passe enregistré
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Une clé de récupération est votre seul moyen de rétablir l'accès à un coffre-fort, si vous perdez votre mot de passe.
|
vaultOptions.masterkey.recoveryKeyExplanation=Une clé de récupération est votre seul moyen de rétablir l'accès à un coffre-fort, si vous perdez votre mot de passe.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Afficher la clé de récupération
|
vaultOptions.masterkey.showRecoveryKeyBtn=Afficher la clé de récupération
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Récupération du mot de passe
|
vaultOptions.masterkey.recoverPasswordBtn=Récupération du mot de passe
|
||||||
## Auto Lock
|
|
||||||
vaultOptions.autoLock=Verrouillage automatique
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart1=Verrouiler en cas d'inactivité pendant
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart2=minutes
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Clé de récupération
|
recoveryKey.title=Clé de récupération
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=हो गया
|
|||||||
generic.button.next=अगला
|
generic.button.next=अगला
|
||||||
generic.button.print=प्रिंट करें
|
generic.button.print=प्रिंट करें
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=कोई अनपेक्षित त्रुटि हो गई है
|
|
||||||
generic.error.instruction=ऐसा नहीं होना चाहिए था। कृपया नीचे त्रुटि पाठ की रिपोर्ट करें और इस त्रुटि के लिए क्या कदम उठाए, इसका विवरण शामिल करें।
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=गुप्त तिजोरी
|
defaults.vault.vaultName=गुप्त तिजोरी
|
||||||
@@ -83,13 +81,16 @@ unlock.unlockBtn=अनलॉक करें
|
|||||||
migration.title=वाउल्ट को अपग्रेड करें
|
migration.title=वाउल्ट को अपग्रेड करें
|
||||||
## Start
|
## Start
|
||||||
## Run
|
## Run
|
||||||
## Sucess
|
## Success
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
## Impossible
|
## Impossible
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
## Start Failure
|
||||||
|
## Check Selection
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
## Fix Application
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=प्राथमिकताएं
|
preferences.title=प्राथमिकताएं
|
||||||
@@ -132,6 +133,7 @@ wrongFileAlert.link=और मदद के लिए, यह जाएं
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=सामान्य
|
vaultOptions.general=सामान्य
|
||||||
vaultOptions.general.vaultName=वॉल्ट का नाम
|
vaultOptions.general.vaultName=वॉल्ट का नाम
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=माउंट हो रहा है
|
vaultOptions.mount=माउंट हो रहा है
|
||||||
vaultOptions.mount.winDriveLetterOccupied=इसका इस्तेमाल किया जा रहा है
|
vaultOptions.mount.winDriveLetterOccupied=इसका इस्तेमाल किया जा रहा है
|
||||||
@@ -144,7 +146,7 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=कोई खाली जग
|
|||||||
## Master Key
|
## Master Key
|
||||||
vaultOptions.masterkey=पासवर्ड
|
vaultOptions.masterkey=पासवर्ड
|
||||||
vaultOptions.masterkey.changePasswordBtn=पासवर्ड बदलें
|
vaultOptions.masterkey.changePasswordBtn=पासवर्ड बदलें
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
|
|
||||||
|
|||||||
@@ -37,13 +37,16 @@
|
|||||||
# Migration
|
# Migration
|
||||||
## Start
|
## Start
|
||||||
## Run
|
## Run
|
||||||
## Sucess
|
## Success
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
## Impossible
|
## Impossible
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
## Start Failure
|
||||||
|
## Check Selection
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
## Fix Application
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
## General
|
## General
|
||||||
@@ -72,9 +75,10 @@
|
|||||||
|
|
||||||
# Vault Options
|
# Vault Options
|
||||||
## General
|
## General
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
## Master Key
|
## Master Key
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=Kész
|
|||||||
generic.button.next=Következő
|
generic.button.next=Következő
|
||||||
generic.button.print=Nyomtatás
|
generic.button.print=Nyomtatás
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Egy váratlan hiba történt
|
|
||||||
generic.error.instruction=Ennek nem lett volna szabad megtörténnie. Kérjük jelezze a hibát az alábbi szöveggel valamint a hiba reprodukálásához szükséges lépésekkel.
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Széf
|
defaults.vault.vaultName=Széf
|
||||||
@@ -90,7 +88,6 @@ forgetPassword.information=Eltávolítja a széf mentett jelszavát a rendszere
|
|||||||
forgetPassword.confirmBtn=Jelszó elfelejtése
|
forgetPassword.confirmBtn=Jelszó elfelejtése
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Széf feloldása
|
|
||||||
unlock.passwordPrompt=Írja be a jelszavát a következő széfhez "%s":
|
unlock.passwordPrompt=Írja be a jelszavát a következő széfhez "%s":
|
||||||
unlock.unlockBtn=Feloldás
|
unlock.unlockBtn=Feloldás
|
||||||
##
|
##
|
||||||
@@ -117,7 +114,7 @@ migration.start.confirm=Igen, a széfem teljes mértékben szinkronizálva van
|
|||||||
migration.run.enterPassword=Írja be a jelszót a következőhöz Enter the password for "%s"
|
migration.run.enterPassword=Írja be a jelszót a következőhöz Enter the password for "%s"
|
||||||
migration.run.startMigrationBtn=Széf frissítése
|
migration.run.startMigrationBtn=Széf frissítése
|
||||||
migration.run.progressHint=Ez eltarthat egy darabig…
|
migration.run.progressHint=Ez eltarthat egy darabig…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions=A "%s" sikeresen migrálva. \nMost már feloldhatja a széfet.
|
migration.success.nextStepsInstructions=A "%s" sikeresen migrálva. \nMost már feloldhatja a széfet.
|
||||||
migration.success.unlockNow=Azonnali feloldás
|
migration.success.unlockNow=Azonnali feloldás
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -133,8 +130,11 @@ migration.impossible.reason=A széfet nem lehet automatikusan frissíteni, mert
|
|||||||
migration.impossible.moreInfo=A széf továbbra is megnyitható marad egy régebbi verzióval. A széf kézi frissítésével kapcsolatos utasításokért keresse fel a következő címet:
|
migration.impossible.moreInfo=A széf továbbra is megnyitható marad egy régebbi verzióval. A széf kézi frissítésével kapcsolatos utasításokért keresse fel a következő címet:
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
## Start Failure
|
||||||
|
## Check Selection
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
## Fix Application
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Beállítások
|
preferences.title=Beállítások
|
||||||
@@ -259,6 +259,7 @@ vaultOptions.general.actionAfterUnlock=Sikeres feloldás után
|
|||||||
vaultOptions.general.actionAfterUnlock.ignore=Ne tegyen semmit
|
vaultOptions.general.actionAfterUnlock.ignore=Ne tegyen semmit
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Jelenítse meg a kötetet
|
vaultOptions.general.actionAfterUnlock.reveal=Jelenítse meg a kötetet
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Kérdez
|
vaultOptions.general.actionAfterUnlock.ask=Kérdez
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Felcsatolás
|
vaultOptions.mount=Felcsatolás
|
||||||
vaultOptions.mount.readonly=Csak-olvasható
|
vaultOptions.mount.readonly=Csak-olvasható
|
||||||
@@ -274,10 +275,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Válasszon egy üres könyvt
|
|||||||
vaultOptions.masterkey=Jelszó
|
vaultOptions.masterkey=Jelszó
|
||||||
vaultOptions.masterkey.changePasswordBtn=Jelszó megváltoztatása
|
vaultOptions.masterkey.changePasswordBtn=Jelszó megváltoztatása
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Mentett jelszó törlése
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Mentett jelszó törlése
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=A helyreállítási kulcs az egyetlen módja annak, hogy visszaállítsa a széfhez való hozzáférést, ha elveíti a jelszavát.
|
vaultOptions.masterkey.recoveryKeyExplanation=A helyreállítási kulcs az egyetlen módja annak, hogy visszaállítsa a széfhez való hozzáférést, ha elveíti a jelszavát.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Visszaállítási kulcs megjelenítése
|
vaultOptions.masterkey.showRecoveryKeyBtn=Visszaállítási kulcs megjelenítése
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Jelszó visszaállítása
|
vaultOptions.masterkey.recoverPasswordBtn=Jelszó visszaállítása
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Visszaállítási kulcs
|
recoveryKey.title=Visszaállítási kulcs
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=Selesai
|
|||||||
generic.button.next=Lanjut
|
generic.button.next=Lanjut
|
||||||
generic.button.print=Cetak
|
generic.button.print=Cetak
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Telah terjadi kesalahan tak terduga
|
|
||||||
generic.error.instruction=Ini harusnya tidak terjadi. Harap laporkan pesan kesalahan dibawah dan tulis deskripsi kenapa ini bisa terjadi.
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Brankas
|
defaults.vault.vaultName=Brankas
|
||||||
@@ -95,7 +93,6 @@ forgetPassword.information=Kata sandi vault yang tersimpan akan dihapus dari key
|
|||||||
forgetPassword.confirmBtn=Lupa Kata Sandi
|
forgetPassword.confirmBtn=Lupa Kata Sandi
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Buka Vault
|
|
||||||
unlock.passwordPrompt=Masukkan kata sandi untuk "%s":
|
unlock.passwordPrompt=Masukkan kata sandi untuk "%s":
|
||||||
unlock.savePassword=Simpan Kata Sandi
|
unlock.savePassword=Simpan Kata Sandi
|
||||||
unlock.unlockBtn=Buka Gembok
|
unlock.unlockBtn=Buka Gembok
|
||||||
@@ -130,7 +127,7 @@ migration.start.confirm=Ya, vault saya sepenuhnya tersinkronisasi
|
|||||||
migration.run.enterPassword=Masukkan kata sandi untuk "%s"
|
migration.run.enterPassword=Masukkan kata sandi untuk "%s"
|
||||||
migration.run.startMigrationBtn=Pindahkan Vault
|
migration.run.startMigrationBtn=Pindahkan Vault
|
||||||
migration.run.progressHint=Proses ini mungkin akan memakan waktu cukup lama…
|
migration.run.progressHint=Proses ini mungkin akan memakan waktu cukup lama…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions="%s" telah berhasil dipindahkan.\nAnda sekarang dapat membuka vault Anda.
|
migration.success.nextStepsInstructions="%s" telah berhasil dipindahkan.\nAnda sekarang dapat membuka vault Anda.
|
||||||
migration.success.unlockNow=Buka Kunci Sekarang
|
migration.success.unlockNow=Buka Kunci Sekarang
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -146,27 +143,14 @@ migration.impossible.reason=Vault tidak dapat dipindahkan secara otomatis karena
|
|||||||
migration.impossible.moreInfo=Vault dapat dibuka dengan program versi lebih lama. Apabila Anda ingin memindahkan vault secara manual, silahkan buka
|
migration.impossible.moreInfo=Vault dapat dibuka dengan program versi lebih lama. Apabila Anda ingin memindahkan vault secara manual, silahkan buka
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Pemeriksaan Kesehatan Vault
|
## Start
|
||||||
health.start.introduction=Pemeriksaan Kesehatan Vault adalah kumpulan pemeriksaan untuk mendeteksi dan mungkin memperbaiki masalah dalam struktur internal brankas Anda. Harap dicatat, bahwa tidak semua masalah dapat diperbaiki. Anda memerlukan kata sandi brankas untuk melakukan pemeriksaan.
|
## Start Failure
|
||||||
health.start.configValid=Membaca dan mengurai file konfigurasi vault berhasil. Lanjutkan untuk memilih pemeriksaan.
|
## Check Selection
|
||||||
health.start.configInvalid=Kesalahan saat membaca dan menguraikan file pengaturan vault.
|
|
||||||
health.checkList.header=Pemeriksaan Kesehatan yang Tersedia
|
|
||||||
health.checkList.selectAllBox=Pilih Semua
|
|
||||||
health.check.runBatchBtn=Cek Jalankan yang dipilih
|
health.check.runBatchBtn=Cek Jalankan yang dipilih
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.noSelectedCheck=Untuk hasil, pilih pemeriksaan kesehatan yang sudah selesai di sebelah kiri.
|
health.check.detail.noSelectedCheck=Untuk hasil, pilih pemeriksaan kesehatan yang sudah selesai di sebelah kiri.
|
||||||
health.check.detail.header=Hasil dari %s
|
|
||||||
health.check.detail.taskNotStarted=Cek tidak dipilih untuk dijalankan.
|
|
||||||
health.check.detail.taskScheduled=Pemeriksaan Terjadwal.
|
|
||||||
health.check.detail.taskRunning=Saat ini pemeriksaan sedang berjalan…
|
|
||||||
health.check.detail.taskSucceeded=Pemeriksaan berhasil diselesaikan setelah %d milidetik.
|
|
||||||
health.check.detail.taskFailed=Cek keluar karena kesalahan.
|
|
||||||
health.check.detail.taskCancelled=Cek dibatalkan.
|
|
||||||
health.check.detail.problemCount=Ditemukan %d masalah dan %d kesalahan yang tidak dapat diperbaiki.
|
|
||||||
health.check.exportBtn=Ekspor Laporan
|
health.check.exportBtn=Ekspor Laporan
|
||||||
health.check.fixBtn=Memperbaiki
|
## Fix Application
|
||||||
## Checks
|
|
||||||
health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Pemeriksaan Direktori
|
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Preferensi
|
preferences.title=Preferensi
|
||||||
@@ -184,10 +168,6 @@ preferences.general.debugLogging=Aktifkan pencatatan debug
|
|||||||
preferences.general.debugDirectory=Buka file log
|
preferences.general.debugDirectory=Buka file log
|
||||||
preferences.general.autoStart=Luncurkan Cryptomator pada awal sistem
|
preferences.general.autoStart=Luncurkan Cryptomator pada awal sistem
|
||||||
preferences.general.keychainBackend=Simpan kata sandi dengan
|
preferences.general.keychainBackend=Simpan kata sandi dengan
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gantungan Kunci Gnome
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=Dompet KDE
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=akses Kunci Rantai mac-OS
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Perlindungan Data Windows
|
|
||||||
preferences.general.interfaceOrientation=Orientasi Antarmuka
|
preferences.general.interfaceOrientation=Orientasi Antarmuka
|
||||||
preferences.general.interfaceOrientation.ltr=Kiri ke kanan
|
preferences.general.interfaceOrientation.ltr=Kiri ke kanan
|
||||||
preferences.general.interfaceOrientation.rtl=Kanan ke kiri
|
preferences.general.interfaceOrientation.rtl=Kanan ke kiri
|
||||||
@@ -242,11 +222,12 @@ main.vaultDetail.migrateButton=Tingkatkan Vault
|
|||||||
vaultOptions.general=Umum
|
vaultOptions.general=Umum
|
||||||
vaultOptions.general.vaultName=Nama Brankas
|
vaultOptions.general.vaultName=Nama Brankas
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Buka Drive
|
vaultOptions.general.actionAfterUnlock.reveal=Buka Drive
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Pilih…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Pilih…
|
||||||
## Master Key
|
## Master Key
|
||||||
vaultOptions.masterkey.changePasswordBtn=Ubah Kata Sandi
|
vaultOptions.masterkey.changePasswordBtn=Ubah Kata Sandi
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
|
|
||||||
|
|||||||
@@ -13,20 +13,23 @@ generic.button.done=Fatto
|
|||||||
generic.button.next=Avanti
|
generic.button.next=Avanti
|
||||||
generic.button.print=Stampa
|
generic.button.print=Stampa
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Si è verificato un errore inatteso
|
generic.error.title=Errore %s
|
||||||
generic.error.instruction=Questo non dovrebbe essere accaduto. Si prega di segnalare il testo dell'errore qui sotto e includere una descrizione delle fasi che hanno portato a questo errore.
|
generic.error.instruction=Ops! Cryptomator non si aspettava che ciò succedesse. Puoi cercare le soluzioni esistenti per questo errore. O se non è stato ancora segnalato, sentiti libero di farlo.
|
||||||
|
generic.error.hyperlink.lookup=Cerca questo errore
|
||||||
|
generic.error.hyperlink.report=Segnala questo errore
|
||||||
|
generic.error.technicalDetails=Dettagli:
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Cassaforte
|
defaults.vault.vaultName=Cassaforte
|
||||||
|
|
||||||
# Tray Menu
|
# Tray Menu
|
||||||
traymenu.showMainWindow=Visualizza
|
traymenu.showMainWindow=Mostra
|
||||||
traymenu.showPreferencesWindow=Impostazioni
|
traymenu.showPreferencesWindow=Preferenze
|
||||||
traymenu.lockAllVaults=Blocca Tutto
|
traymenu.lockAllVaults=Blocca Tutto
|
||||||
traymenu.quitApplication=Esci
|
traymenu.quitApplication=Esci
|
||||||
traymenu.vault.unlock=Sblocca
|
traymenu.vault.unlock=Sblocca
|
||||||
traymenu.vault.lock=Blocca
|
traymenu.vault.lock=Blocca
|
||||||
traymenu.vault.reveal=Mostra
|
traymenu.vault.reveal=Rivela
|
||||||
|
|
||||||
# Add Vault Wizard
|
# Add Vault Wizard
|
||||||
addvaultwizard.title=Aggiungi Cassaforte
|
addvaultwizard.title=Aggiungi Cassaforte
|
||||||
@@ -35,23 +38,23 @@ addvaultwizard.welcome.newButton=Crea Nuova Cassaforte
|
|||||||
addvaultwizard.welcome.existingButton=Apri Cassaforte Esistente
|
addvaultwizard.welcome.existingButton=Apri Cassaforte Esistente
|
||||||
## New
|
## New
|
||||||
### Name
|
### Name
|
||||||
addvaultwizard.new.nameInstruction=Scegli un nome per la tua cassaforte
|
addvaultwizard.new.nameInstruction=Scegli un nome per la cassaforte
|
||||||
addvaultwizard.new.namePrompt=Nome Cassaforte
|
addvaultwizard.new.namePrompt=Nome della Cassaforte
|
||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Dove dovrebbe memorizzare Cryptomator i file crittografati della tua cassaforte?
|
addvaultwizard.new.locationInstruction=Dove Cryptomator dovrebbe memorizzare i file crittografati della tua cassaforte?
|
||||||
addvaultwizard.new.locationLabel=Posizione archivio
|
addvaultwizard.new.locationLabel=Posizione d'archiviazione
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Posizione personalizzata
|
addvaultwizard.new.directoryPickerLabel=Posizione Personalizzata
|
||||||
addvaultwizard.new.directoryPickerButton=Scegli…
|
addvaultwizard.new.directoryPickerButton=Scegli…
|
||||||
addvaultwizard.new.directoryPickerTitle=Seleziona cartella
|
addvaultwizard.new.directoryPickerTitle=Seleziona la Cartella
|
||||||
addvaultwizard.new.fileAlreadyExists=Un file o una cartella con il nome del vault esiste già
|
addvaultwizard.new.fileAlreadyExists=Un file o una cartella con il nome della cassaforte esiste già
|
||||||
addvaultwizard.new.locationDoesNotExist=Una cartella nel percorso specificato non esiste o non è accessibile
|
addvaultwizard.new.locationDoesNotExist=Una cartella nel percorso specificato non esiste o non è accessibile
|
||||||
addvaultwizard.new.locationIsNotWritable=Non c'è accesso in scrittura nel percorso specificato
|
addvaultwizard.new.locationIsNotWritable=Nessun accesso di scrittura al percorso specificato
|
||||||
addvaultwizard.new.locationIsOk=Posizione adatta per il tuo vault
|
addvaultwizard.new.locationIsOk=Posizione idonea per la tua cassaforte
|
||||||
addvaultwizard.new.invalidName=Nome della cassaforte non valido. Si prega di considerare un nome di directory regolare.
|
addvaultwizard.new.invalidName=Nome della cassaforte non valido. Sei pregato di considerare un nome della cartella regolare.
|
||||||
### Password
|
### Password
|
||||||
addvaultwizard.new.createVaultBtn=Crea Cassaforte
|
addvaultwizard.new.createVaultBtn=Crea Cassaforte
|
||||||
addvaultwizard.new.generateRecoveryKeyChoice=Non sarai in grado di accedere ai tuoi dati senza password. Vuoi una chiave di recupero nel caso in cui perdi la password?
|
addvaultwizard.new.generateRecoveryKeyChoice=Non potrai accedere ai tuoi dati senza la tua password. Desideri una chiave di recupero nel caso dovessi perdere la password?
|
||||||
addvaultwizard.new.generateRecoveryKeyChoice.yes=Si, per favore, è meglio essere al sicuro
|
addvaultwizard.new.generateRecoveryKeyChoice.yes=Si, per favore, è meglio essere al sicuro
|
||||||
addvaultwizard.new.generateRecoveryKeyChoice.no=No grazie, non perderò la mia password
|
addvaultwizard.new.generateRecoveryKeyChoice.no=No grazie, non perderò la mia password
|
||||||
### Information
|
### Information
|
||||||
@@ -95,7 +98,7 @@ forgetPassword.information=Questo cancellerà la password salvata di questa cass
|
|||||||
forgetPassword.confirmBtn=Password dimenticata
|
forgetPassword.confirmBtn=Password dimenticata
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Sblocca Cassaforte
|
unlock.title=Sblocca "%s"
|
||||||
unlock.passwordPrompt=Inserisci la password per "%s":
|
unlock.passwordPrompt=Inserisci la password per "%s":
|
||||||
unlock.savePassword=Ricorda la Password
|
unlock.savePassword=Ricorda la Password
|
||||||
unlock.unlockBtn=Sblocca
|
unlock.unlockBtn=Sblocca
|
||||||
@@ -130,7 +133,7 @@ migration.start.confirm=Sì, la mia cassaforte è completamente sincronizzata
|
|||||||
migration.run.enterPassword=Immettere la password per "%s"
|
migration.run.enterPassword=Immettere la password per "%s"
|
||||||
migration.run.startMigrationBtn=Migra Cassaforte
|
migration.run.startMigrationBtn=Migra Cassaforte
|
||||||
migration.run.progressHint=Potrebbe richiedere un po' di tempo…
|
migration.run.progressHint=Potrebbe richiedere un po' di tempo…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions=Migrato "%s" con successo.\nOra puoi sbloccare la tua cassaforte.
|
migration.success.nextStepsInstructions=Migrato "%s" con successo.\nOra puoi sbloccare la tua cassaforte.
|
||||||
migration.success.unlockNow=Sblocca adesso
|
migration.success.unlockNow=Sblocca adesso
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -146,20 +149,38 @@ migration.impossible.reason=La cassaforte non può essere migrata automaticament
|
|||||||
migration.impossible.moreInfo=La cassaforte può ancora essere aperta con una versione precedente. Per istruzioni su come migrare manualmente una cassaforte, visita
|
migration.impossible.moreInfo=La cassaforte può ancora essere aperta con una versione precedente. Per istruzioni su come migrare manualmente una cassaforte, visita
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Controllo Salute Cassaforte
|
## Start
|
||||||
health.start.introduction=Il Controllo di Salute della Cassaforte è una raccolta di controlli per rilevare e possibilmente risolvere i problemi nella struttura interna della tua cassaforte. Sei pregato di notare che non tutti i problemi sono risolvibili. Ti serve la password della cassaforte per eseguire i controlli.
|
health.title=Controllo Salute di "%s"
|
||||||
health.start.configValid=La lettura e l'analisi del file di configurazione è riuscita. Procedi per selezionare i controlli.
|
health.intro.header=Controllo Salute
|
||||||
health.start.configInvalid=Errore leggendo e analizzando il file di configurazione della cassaforte.
|
health.intro.text=Il Controllo della Salute è una raccolta di controlli per rilevare e possibilmente risolvere i problemi nella struttura interna alla tua cassaforte. Sei pregato di tenere a mente:
|
||||||
health.checkList.header=Controlli di Salute Disponibili
|
health.intro.remarkSync=Assicurati che tutti i dispositivi siano completamente sincronizzati, questo risolve la maggior parte dei problemi.
|
||||||
health.checkList.selectAllBox=Seleziona Tutto
|
health.intro.remarkFix=Non tutti i problemi possono essere corretti.
|
||||||
|
health.intro.remarkBackup=Se i dati sono danneggiati, solo un backup può aiutare.
|
||||||
|
health.intro.affirmation=Ho letto e capito le informazioni sopra
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Errore nel caricare la configurazione della cassaforte
|
||||||
|
health.fail.ioError=Si è verificato un errore durante l'accesso e la lettura del file di configurazione.
|
||||||
|
health.fail.parseError=Si è verificato un errore durante l'analisi della configurazione della cassaforte.
|
||||||
|
health.fail.moreInfo=Ulteriori Informazioni
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Seleziona i controlli nell'elenco a sinistra o utilizza i pulsanti in basso.
|
||||||
|
health.checkList.selectAllButton=Seleziona Tutti I Controlli
|
||||||
|
health.checkList.deselectAllButton=Deseleziona Tutti I Controlli
|
||||||
health.check.runBatchBtn=Esegui i Controlli selezionati
|
health.check.runBatchBtn=Esegui i Controlli selezionati
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.noSelectedCheck=Per i risultati seleziona un controllo di salute concluso nell'elenco a sinistra.
|
health.check.detail.noSelectedCheck=Per i risultati seleziona un controllo di salute concluso nell'elenco a sinistra.
|
||||||
health.check.detail.header=Risultati di %s
|
health.check.detail.checkScheduled=Il controllo è pianificato.
|
||||||
health.check.detail.taskNotStarted=Il controllo non è stato selezionato per l'esecuzione.
|
health.check.detail.checkRunning=Il controllo è attualmente in esecuzione…
|
||||||
health.check.detail.taskScheduled=Il controllo è pianificato.
|
health.check.detail.checkSkipped=Il controllo non è stato selezionato per l'esecuzione.
|
||||||
health.check.detail.taskRunning=Il controllo è correntemente in esecuzione…
|
health.check.detail.checkFinished=Il controllo è terminato con successo.
|
||||||
## Checks
|
health.check.detail.checkFinishedAndFound=Il controllo ha terminato l'esecuzione. Si prega di rivedere i risultati.
|
||||||
|
health.check.detail.checkFailed=Il controllo è terminato a causa di un errore.
|
||||||
|
health.check.detail.checkCancelled=Il controllo è stato annullato.
|
||||||
|
health.check.exportBtn=Esporta Rapporto
|
||||||
|
## Fix Application
|
||||||
|
health.fix.fixBtn=Correggi
|
||||||
|
health.fix.successTip=Correzione riuscita
|
||||||
|
health.fix.failTip=Correzione fallita, vedi log per i dettagli
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Impostazioni
|
preferences.title=Impostazioni
|
||||||
@@ -177,10 +198,6 @@ preferences.general.debugLogging=Abilita i registri di debug
|
|||||||
preferences.general.debugDirectory=Mostra file log
|
preferences.general.debugDirectory=Mostra file log
|
||||||
preferences.general.autoStart=Avvia Cryptomator all'avvio del sistema
|
preferences.general.autoStart=Avvia Cryptomator all'avvio del sistema
|
||||||
preferences.general.keychainBackend=Memorizza password con
|
preferences.general.keychainBackend=Memorizza password con
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Portachiavi Gnome
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=Portafoglio KDE
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=accesso portachiavi macOS
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Protezione Dati Di Windows
|
|
||||||
preferences.general.interfaceOrientation=Orientamento Interfaccia
|
preferences.general.interfaceOrientation=Orientamento Interfaccia
|
||||||
preferences.general.interfaceOrientation.ltr=Da Sinistra a Destra
|
preferences.general.interfaceOrientation.ltr=Da Sinistra a Destra
|
||||||
preferences.general.interfaceOrientation.rtl=Da Destra a Sinistra
|
preferences.general.interfaceOrientation.rtl=Da Destra a Sinistra
|
||||||
@@ -208,6 +225,7 @@ preferences.about=Informazioni
|
|||||||
|
|
||||||
# Vault Statistics
|
# Vault Statistics
|
||||||
stats.title=Statistiche per %s
|
stats.title=Statistiche per %s
|
||||||
|
stats.cacheHitRate=Tasso di Colpo della Cache
|
||||||
## Read
|
## Read
|
||||||
stats.read.throughput.idle=Lettura: inattivo
|
stats.read.throughput.idle=Lettura: inattivo
|
||||||
stats.read.throughput.kibs=Lettura: %.2f kiB/s
|
stats.read.throughput.kibs=Lettura: %.2f kiB/s
|
||||||
@@ -296,11 +314,15 @@ wrongFileAlert.link=Per ulteriore assistenza, visita
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=Generali
|
vaultOptions.general=Generali
|
||||||
vaultOptions.general.vaultName=Nome Cassaforte
|
vaultOptions.general.vaultName=Nome Cassaforte
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Blocca quando inattivo per
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=minuti
|
||||||
vaultOptions.general.unlockAfterStartup=Sblocca vault all'avvio di Cryptomator
|
vaultOptions.general.unlockAfterStartup=Sblocca vault all'avvio di Cryptomator
|
||||||
vaultOptions.general.actionAfterUnlock=Dopo aver sbloccato con successo
|
vaultOptions.general.actionAfterUnlock=Dopo aver sbloccato con successo
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=Non fare nulla
|
vaultOptions.general.actionAfterUnlock.ignore=Non fare nulla
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Visualizza disco
|
vaultOptions.general.actionAfterUnlock.reveal=Visualizza disco
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Chiedi
|
vaultOptions.general.actionAfterUnlock.ask=Chiedi
|
||||||
|
vaultOptions.general.startHealthCheckBtn=Avvia il Controllo della Salute
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Montaggio
|
vaultOptions.mount=Montaggio
|
||||||
vaultOptions.mount.readonly=Sola lettura
|
vaultOptions.mount.readonly=Sola lettura
|
||||||
@@ -316,10 +338,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Scegli una directory vuota
|
|||||||
vaultOptions.masterkey=Password
|
vaultOptions.masterkey=Password
|
||||||
vaultOptions.masterkey.changePasswordBtn=Modifica password
|
vaultOptions.masterkey.changePasswordBtn=Modifica password
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Dimentica Password Salvata
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Dimentica Password Salvata
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Una chiave di recupero è il tuo unico mezzo per ripristinare l'accesso a una cassaforte se perdi la tua password.
|
vaultOptions.masterkey.recoveryKeyExplanation=Una chiave di recupero è il tuo unico mezzo per ripristinare l'accesso a una cassaforte se perdi la tua password.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Visualizza la chiave di recupero
|
vaultOptions.masterkey.showRecoveryKeyBtn=Visualizza la chiave di recupero
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Recupera password
|
vaultOptions.masterkey.recoverPasswordBtn=Recupera password
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Chiave di recupero
|
recoveryKey.title=Chiave di recupero
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=完了
|
|||||||
generic.button.next=次へ
|
generic.button.next=次へ
|
||||||
generic.button.print=印刷
|
generic.button.print=印刷
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=予期しないエラーが発生しました
|
|
||||||
generic.error.instruction=予期しないことが発生しました。下部のエラーテキストとエラーに至った経緯の説明を報告していただけると幸いです。
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=金庫
|
defaults.vault.vaultName=金庫
|
||||||
@@ -95,7 +93,7 @@ forgetPassword.information=システムから金庫の保存済みパスワー
|
|||||||
forgetPassword.confirmBtn=パスワードを削除
|
forgetPassword.confirmBtn=パスワードを削除
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=金庫を解錠
|
unlock.title="%s" を解錠
|
||||||
unlock.passwordPrompt="%s" のパスワードを入力してください:
|
unlock.passwordPrompt="%s" のパスワードを入力してください:
|
||||||
unlock.savePassword=パスワードを記憶させる
|
unlock.savePassword=パスワードを記憶させる
|
||||||
unlock.unlockBtn=解錠
|
unlock.unlockBtn=解錠
|
||||||
@@ -130,24 +128,54 @@ migration.start.confirm=はい。同期が完了しています
|
|||||||
migration.run.enterPassword="%s" のパスワードを入力してください
|
migration.run.enterPassword="%s" のパスワードを入力してください
|
||||||
migration.run.startMigrationBtn=金庫を移行
|
migration.run.startMigrationBtn=金庫を移行
|
||||||
migration.run.progressHint=時間がかかる場合があります...
|
migration.run.progressHint=時間がかかる場合があります...
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions="%s" の移行が成功しました。\n金庫を解錠できるようになりました。
|
migration.success.nextStepsInstructions="%s" の移行が成功しました。\n金庫を解錠できるようになりました。
|
||||||
migration.success.unlockNow=今すぐ解錠
|
migration.success.unlockNow=今すぐ解錠
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
migration.error.missingFileSystemCapabilities.title=サポートされないファイルタイプ
|
migration.error.missingFileSystemCapabilities.title=サポートされないファイル システム
|
||||||
migration.error.missingFileSystemCapabilities.description=金庫が不適切なファイルシステムにあるため、移行が開始されませんでした。
|
migration.error.missingFileSystemCapabilities.description=金庫が不適切なファイル システムにあるため、移行が開始されませんでした。
|
||||||
migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=ファイルシステムが長いファイル名をサポートしていません。
|
migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=ファイル システムが長いファイル名をサポートしていません。
|
||||||
migration.error.missingFileSystemCapabilities.reason.LONG_PATHS=ファイルシステムが長いパスをサポートしていません。
|
migration.error.missingFileSystemCapabilities.reason.LONG_PATHS=ファイル システムが長いパスをサポートしていません。
|
||||||
migration.error.missingFileSystemCapabilities.reason.READ_ACCESS=ファイルシステムによって読み込みが許可されていません。
|
migration.error.missingFileSystemCapabilities.reason.READ_ACCESS=ファイル システムによって読み込みが許可されていません。
|
||||||
migration.error.missingFileSystemCapabilities.reason.WRITE_ACCESS=ファイルシステムによって書き込みが許可されていません。
|
migration.error.missingFileSystemCapabilities.reason.WRITE_ACCESS=ファイル システムによって書き込みが許可されていません。
|
||||||
## Impossible
|
## Impossible
|
||||||
migration.impossible.heading=金庫の移行に失敗しました
|
migration.impossible.heading=金庫の移行に失敗しました
|
||||||
migration.impossible.reason=ストレージ場所またはアクセスポイントに互換性がないため、金庫を自動的に移行できません。
|
migration.impossible.reason=ストレージ場所またはアクセスポイントに互換性がないため、金庫を自動的に移行できません。
|
||||||
migration.impossible.moreInfo=金庫を古いバージョンで開くことは可能です。手動による金庫の移行方法については次をご覧ください:
|
migration.impossible.moreInfo=金庫を古いバージョンで開くことは可能です。手動による金庫の移行方法については次をご覧ください:
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
health.title="%s" の正常性チェック
|
||||||
|
health.intro.header=正常性チェック
|
||||||
|
health.intro.text=正常性チェックは、金庫内部で修復できる可能性のある問題を収集します。次の点に注意してください:
|
||||||
|
health.intro.remarkSync=すべてのデバイスが完全に同期されていることを確認してください。これによってほとんどの問題は解決します。
|
||||||
|
health.intro.remarkFix=すべての問題を修復できるわけではありません。
|
||||||
|
health.intro.remarkBackup=データが破損しているときは、バックアップからのみ可能です。
|
||||||
|
health.intro.affirmation=上記の情報を理解しました。
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=金庫の構成を読み込み中にエラーが発生しました
|
||||||
|
health.fail.ioError=設定ファイルへのアクセスと読み込み中にエラーが発生しました。
|
||||||
|
health.fail.parseError=金庫の構成を解析中にエラーが発生しました。
|
||||||
|
health.fail.moreInfo=詳細
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=左のリストを使用してチェックを選択するか、下のボタンで選択してください。
|
||||||
|
health.checkList.selectAllButton=すべてのチェックを選択
|
||||||
|
health.checkList.deselectAllButton=すべてのチェックを解除
|
||||||
|
health.check.runBatchBtn=選択したチェックを実行
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
health.check.detail.noSelectedCheck=左のリストを選択して終了した正常性チェックの結果を確認できます。
|
||||||
|
health.check.detail.checkScheduled=チェックが予定されています。
|
||||||
|
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.exportBtn=結果をエクスポート
|
||||||
|
## Fix Application
|
||||||
|
health.fix.fixBtn=修正
|
||||||
|
health.fix.successTip=正常に修正されました
|
||||||
|
health.fix.failTip=修正に失敗しました。詳細はログを参照してください。
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=設定
|
preferences.title=設定
|
||||||
@@ -165,10 +193,6 @@ preferences.general.debugLogging=ログを有効にする
|
|||||||
preferences.general.debugDirectory=ログ ファイルを表示
|
preferences.general.debugDirectory=ログ ファイルを表示
|
||||||
preferences.general.autoStart=システム開始時にCryptomatorを起動する
|
preferences.general.autoStart=システム開始時にCryptomatorを起動する
|
||||||
preferences.general.keychainBackend=次を利用してパスワードを保存する
|
preferences.general.keychainBackend=次を利用してパスワードを保存する
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gnome Keyring
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=KDE Wallet
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=macOS のキーチェーンアクセス
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Windows のデータ保護
|
|
||||||
preferences.general.interfaceOrientation=インターフェイスの向き
|
preferences.general.interfaceOrientation=インターフェイスの向き
|
||||||
preferences.general.interfaceOrientation.ltr=左から右
|
preferences.general.interfaceOrientation.ltr=左から右
|
||||||
preferences.general.interfaceOrientation.rtl=右から左
|
preferences.general.interfaceOrientation.rtl=右から左
|
||||||
@@ -187,7 +211,7 @@ preferences.updates.updateAvailable=利用可能なバージョン %s に更新
|
|||||||
preferences.contribute=サポートする
|
preferences.contribute=サポートする
|
||||||
preferences.contribute.registeredFor=サポーター証明書が %s に登録されました
|
preferences.contribute.registeredFor=サポーター証明書が %s に登録されました
|
||||||
preferences.contribute.noCertificate=Cryptomator を支援し、サポーター証明書を受け取りましょう。ライセンスキーに似ていますがフリーソフトを使う寄付者向けのキーです。 ;-)
|
preferences.contribute.noCertificate=Cryptomator を支援し、サポーター証明書を受け取りましょう。ライセンスキーに似ていますがフリーソフトを使う寄付者向けのキーです。 ;-)
|
||||||
preferences.contribute.getCertificate=まだ証明書を手に入れていませんか? 詳細を確認しましょう。
|
preferences.contribute.getCertificate=まだ証明書を手に入れていませんか? 詳細はこちらから確認できます。
|
||||||
preferences.contribute.promptText=サポーター証明書をここに張り付けてください
|
preferences.contribute.promptText=サポーター証明書をここに張り付けてください
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
@@ -261,7 +285,7 @@ main.vaultDetail.bytesPerSecondWritten=書き込み:
|
|||||||
main.vaultDetail.throughput.idle=アイドル
|
main.vaultDetail.throughput.idle=アイドル
|
||||||
main.vaultDetail.throughput.kbps=%.1f kiB/s
|
main.vaultDetail.throughput.kbps=%.1f kiB/s
|
||||||
main.vaultDetail.throughput.mbps=%.1f MiB/s
|
main.vaultDetail.throughput.mbps=%.1f MiB/s
|
||||||
main.vaultDetail.stats=保管庫の統計情報
|
main.vaultDetail.stats=金庫の統計情報
|
||||||
### Missing
|
### Missing
|
||||||
main.vaultDetail.missing.info=Cryptomator はこのパスの金庫を見つけることができませんでした。
|
main.vaultDetail.missing.info=Cryptomator はこのパスの金庫を見つけることができませんでした。
|
||||||
main.vaultDetail.missing.recheck=再確認
|
main.vaultDetail.missing.recheck=再確認
|
||||||
@@ -285,11 +309,15 @@ wrongFileAlert.link=より詳細な手順については、次のページをご
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=基本設定
|
vaultOptions.general=基本設定
|
||||||
vaultOptions.general.vaultName=金庫の名前
|
vaultOptions.general.vaultName=金庫の名前
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=アイドル時に施錠する
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=分
|
||||||
vaultOptions.general.unlockAfterStartup=Cryptomatorの起動時に金庫を解錠する
|
vaultOptions.general.unlockAfterStartup=Cryptomatorの起動時に金庫を解錠する
|
||||||
vaultOptions.general.actionAfterUnlock=解錠に成功したあと
|
vaultOptions.general.actionAfterUnlock=解錠に成功したあと
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=何もしない
|
vaultOptions.general.actionAfterUnlock.ignore=何もしない
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=ドライブを表示
|
vaultOptions.general.actionAfterUnlock.reveal=ドライブを表示
|
||||||
vaultOptions.general.actionAfterUnlock.ask=尋ねる
|
vaultOptions.general.actionAfterUnlock.ask=尋ねる
|
||||||
|
vaultOptions.general.startHealthCheckBtn=正常性チェックを開始
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=マウント
|
vaultOptions.mount=マウント
|
||||||
vaultOptions.mount.readonly=読み取り専用
|
vaultOptions.mount.readonly=読み取り専用
|
||||||
@@ -305,10 +333,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=空のディレクトリを
|
|||||||
vaultOptions.masterkey=パスワード
|
vaultOptions.masterkey=パスワード
|
||||||
vaultOptions.masterkey.changePasswordBtn=パスワードの変更
|
vaultOptions.masterkey.changePasswordBtn=パスワードの変更
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=保存したパスワードを削除する
|
vaultOptions.masterkey.forgetSavedPasswordBtn=保存したパスワードを削除する
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=回復キーはパスワードを忘れてしまった場合でも、金庫へのアクセスを回復する唯一の手段です。
|
vaultOptions.masterkey.recoveryKeyExplanation=回復キーはパスワードを忘れてしまった場合でも、金庫へのアクセスを回復する唯一の手段です。
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=回復キーを表示
|
vaultOptions.masterkey.showRecoveryKeyBtn=回復キーを表示
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=パスワードの回復
|
vaultOptions.masterkey.recoverPasswordBtn=パスワードの回復
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=回復キー
|
recoveryKey.title=回復キー
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=완료
|
|||||||
generic.button.next=다음
|
generic.button.next=다음
|
||||||
generic.button.print=인쇄
|
generic.button.print=인쇄
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=예기치 않은 오류가 발생되었습니다.
|
|
||||||
generic.error.instruction=이러한 일은 일어나지 말아야 합니다. 아래의 텍스트와 이 오류를 발생시킨 단계에 대한 설명을 포함하여 제출하여 주십시요.
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Vault
|
defaults.vault.vaultName=Vault
|
||||||
@@ -95,7 +93,7 @@ forgetPassword.information=시스템 키체인에서 이 Vault의 저장된 비
|
|||||||
forgetPassword.confirmBtn=비밀번호 분실
|
forgetPassword.confirmBtn=비밀번호 분실
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Vault 잠금해제
|
unlock.title="%s" 잠금 해제
|
||||||
unlock.passwordPrompt="%s"의 비밀번호를 입력하십시요.
|
unlock.passwordPrompt="%s"의 비밀번호를 입력하십시요.
|
||||||
unlock.savePassword=비밀번호 기억
|
unlock.savePassword=비밀번호 기억
|
||||||
unlock.unlockBtn=잠금해제
|
unlock.unlockBtn=잠금해제
|
||||||
@@ -130,7 +128,7 @@ migration.start.confirm=네, 이 Vault는 동기화가 완전히 된 상태입
|
|||||||
migration.run.enterPassword="%s"의 비밀번호를 입력하십시요.
|
migration.run.enterPassword="%s"의 비밀번호를 입력하십시요.
|
||||||
migration.run.startMigrationBtn=Vault 마이그레이션
|
migration.run.startMigrationBtn=Vault 마이그레이션
|
||||||
migration.run.progressHint=이 작업은 시간이 조금 소요됩니다.
|
migration.run.progressHint=이 작업은 시간이 조금 소요됩니다.
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions="%s" 의 마이그레이션이 성공적으로 완료되었습니다. 이제 Vault를 잠금해제할 수 있습니다.
|
migration.success.nextStepsInstructions="%s" 의 마이그레이션이 성공적으로 완료되었습니다. 이제 Vault를 잠금해제할 수 있습니다.
|
||||||
migration.success.unlockNow=지금 잠금해제
|
migration.success.unlockNow=지금 잠금해제
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -146,8 +144,27 @@ migration.impossible.reason=저장소 위치 또는 접근 지점이 호환되
|
|||||||
migration.impossible.moreInfo=Vault를 이전 버전으로 계속 열수 있습니다. Vault를 직접 마이그레이션 하는 설명을 보시려면, 다음을 방문하십시요.
|
migration.impossible.moreInfo=Vault를 이전 버전으로 계속 열수 있습니다. Vault를 직접 마이그레이션 하는 설명을 보시려면, 다음을 방문하십시요.
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
health.title="%s"의 상태 검사
|
||||||
|
health.intro.header=상태 검사
|
||||||
|
health.intro.text=상태 검사는 Vault의 내부 구조의 문제점을 점검하고 해결할 수 있는 기능입니다. 다음 사항을 유의하시기 바랍니다:
|
||||||
|
## Start Failure
|
||||||
|
health.fail.moreInfo=더 많은 정보
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.selectAllButton=모든 항목 선택
|
||||||
|
health.checkList.deselectAllButton=모든 항목 선택 해제
|
||||||
|
health.check.runBatchBtn=선택된 검사항목 실행
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
health.check.detail.noSelectedCheck=결과를 보려면 왼쪽 목록에서 완료된 상태 검사항목을 선택하십시오.
|
||||||
|
health.check.detail.checkScheduled=검사가 예약되었습니다.
|
||||||
|
health.check.detail.checkRunning=검사가 현재 실행중입니다...
|
||||||
|
health.check.detail.checkSkipped=선택된 검사항목이 없습니다.
|
||||||
|
health.check.detail.checkFinished=검사가 성공적으로 완료되었습니다.
|
||||||
|
health.check.exportBtn=보고서 내보내기
|
||||||
|
## Fix Application
|
||||||
|
health.fix.fixBtn=문제해결
|
||||||
|
health.fix.successTip=문제 해결이 성공적으로 완료되었습니다
|
||||||
|
health.fix.failTip=문제 해결 실패, 상세 정보는 로그를 참조하십시요.
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=환경설정
|
preferences.title=환경설정
|
||||||
@@ -165,10 +182,6 @@ preferences.general.debugLogging=디버그 로그기록을 사용하도록 설
|
|||||||
preferences.general.debugDirectory=Log 파일 표시
|
preferences.general.debugDirectory=Log 파일 표시
|
||||||
preferences.general.autoStart=시스템 시작 시 Cryptomator 실행
|
preferences.general.autoStart=시스템 시작 시 Cryptomator 실행
|
||||||
preferences.general.keychainBackend=다음 경로에 비밀번호 저장
|
preferences.general.keychainBackend=다음 경로에 비밀번호 저장
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gnome Keyring
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=KDE Wallet
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=macOS 키체인 엑세스
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=윈도우 데이터 보호
|
|
||||||
preferences.general.interfaceOrientation=인터페이스 방향
|
preferences.general.interfaceOrientation=인터페이스 방향
|
||||||
preferences.general.interfaceOrientation.ltr=왼쪽에서 오른쪽으로
|
preferences.general.interfaceOrientation.ltr=왼쪽에서 오른쪽으로
|
||||||
preferences.general.interfaceOrientation.rtl=오른쪽에서 왼쪽으로
|
preferences.general.interfaceOrientation.rtl=오른쪽에서 왼쪽으로
|
||||||
@@ -285,11 +298,15 @@ wrongFileAlert.link=추후 지원을 위해, 다음을 방문하십시요
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=일반
|
vaultOptions.general=일반
|
||||||
vaultOptions.general.vaultName=Vault 이름
|
vaultOptions.general.vaultName=Vault 이름
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=다음 시간동안 유휴상태 시 잠금 :
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=분
|
||||||
vaultOptions.general.unlockAfterStartup=Cryptomator를 시작할 때 Vault 잠금 해제
|
vaultOptions.general.unlockAfterStartup=Cryptomator를 시작할 때 Vault 잠금 해제
|
||||||
vaultOptions.general.actionAfterUnlock=성공적으로 잠금해제 후
|
vaultOptions.general.actionAfterUnlock=성공적으로 잠금해제 후
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=아무 것도 하지 않음
|
vaultOptions.general.actionAfterUnlock.ignore=아무 것도 하지 않음
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=드라이브 표시
|
vaultOptions.general.actionAfterUnlock.reveal=드라이브 표시
|
||||||
vaultOptions.general.actionAfterUnlock.ask=요청
|
vaultOptions.general.actionAfterUnlock.ask=요청
|
||||||
|
vaultOptions.general.startHealthCheckBtn=상태 검사 시작
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=드라이브 구성
|
vaultOptions.mount=드라이브 구성
|
||||||
vaultOptions.mount.readonly=읽기 전용
|
vaultOptions.mount.readonly=읽기 전용
|
||||||
@@ -305,10 +322,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=빈 디렉터리를 선택
|
|||||||
vaultOptions.masterkey=비밀번호
|
vaultOptions.masterkey=비밀번호
|
||||||
vaultOptions.masterkey.changePasswordBtn=비밀번호 변경
|
vaultOptions.masterkey.changePasswordBtn=비밀번호 변경
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=저장된 비밀번호 삭제
|
vaultOptions.masterkey.forgetSavedPasswordBtn=저장된 비밀번호 삭제
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=복구 키는 비밀번호를 잊어버렸을 때, Vault의 접근을 복원 할 수 있는 유일한 방법입니다.
|
vaultOptions.masterkey.recoveryKeyExplanation=복구 키는 비밀번호를 잊어버렸을 때, Vault의 접근을 복원 할 수 있는 유일한 방법입니다.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=복구 키 표시
|
vaultOptions.masterkey.showRecoveryKeyBtn=복구 키 표시
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=비밀번호 복구
|
vaultOptions.masterkey.recoverPasswordBtn=비밀번호 복구
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=복구 키
|
recoveryKey.title=복구 키
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=Darīts
|
|||||||
generic.button.next=Tālāk
|
generic.button.next=Tālāk
|
||||||
generic.button.print=Drukāt
|
generic.button.print=Drukāt
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Radās neparedzēta kļūda
|
|
||||||
generic.error.instruction=Šis vēl nav atgadījies. Lūdzu ziņo zemāk redzamo kļūdas tekstu un iekļauj aprakstu, kas noveda pie šīs kļūdas.
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
|
|
||||||
@@ -90,7 +88,6 @@ forgetPassword.information=Tas dzēsīs saglabāto glabātuves paroli no jūsu s
|
|||||||
forgetPassword.confirmBtn=Aizmirst paroli
|
forgetPassword.confirmBtn=Aizmirst paroli
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Atslēgt glabātuvi
|
|
||||||
unlock.passwordPrompt=Ievadiet "%s" paroli:
|
unlock.passwordPrompt=Ievadiet "%s" paroli:
|
||||||
unlock.unlockBtn=Atslēgt
|
unlock.unlockBtn=Atslēgt
|
||||||
##
|
##
|
||||||
@@ -112,7 +109,7 @@ migration.start.confirm=Jā, mana glabātuve ir pilnībā sinhronizēta
|
|||||||
## Run
|
## Run
|
||||||
migration.run.enterPassword=Ievadiet "%s" paroli
|
migration.run.enterPassword=Ievadiet "%s" paroli
|
||||||
migration.run.startMigrationBtn=Migrēt glabātuvi
|
migration.run.startMigrationBtn=Migrēt glabātuvi
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions="%s" sekmīgi migrēta.\nJūs tagad variet atslēgt jūsu glabātuvi.
|
migration.success.nextStepsInstructions="%s" sekmīgi migrēta.\nJūs tagad variet atslēgt jūsu glabātuvi.
|
||||||
migration.success.unlockNow=Atslēgt tagad
|
migration.success.unlockNow=Atslēgt tagad
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -125,8 +122,11 @@ migration.error.missingFileSystemCapabilities.reason.WRITE_ACCESS=Nav atļaujas
|
|||||||
## Impossible
|
## Impossible
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
## Start Failure
|
||||||
|
## Check Selection
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
## Fix Application
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Iestatījumi
|
preferences.title=Iestatījumi
|
||||||
@@ -215,6 +215,7 @@ vaultOptions.general=Vispārēji
|
|||||||
vaultOptions.general.vaultName=Glabātuves nosaukums
|
vaultOptions.general.vaultName=Glabātuves nosaukums
|
||||||
vaultOptions.general.unlockAfterStartup=Atslēgt glabātuvi startējot Cryptomator
|
vaultOptions.general.unlockAfterStartup=Atslēgt glabātuvi startējot Cryptomator
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Atklāt disku
|
vaultOptions.general.actionAfterUnlock.reveal=Atklāt disku
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Montē
|
vaultOptions.mount=Montē
|
||||||
vaultOptions.mount.readonly=Tikai lasīt
|
vaultOptions.mount.readonly=Tikai lasīt
|
||||||
@@ -229,10 +230,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Izvēlies tukšu mapi
|
|||||||
## Master Key
|
## Master Key
|
||||||
vaultOptions.masterkey=Parole
|
vaultOptions.masterkey=Parole
|
||||||
vaultOptions.masterkey.changePasswordBtn=Mainīt paroli
|
vaultOptions.masterkey.changePasswordBtn=Mainīt paroli
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Atkopšanas atslēga ir jūsu vienīgais līdzeklis, lai atjaunotu piekļuvi glabātuvei, ja pazaudējat paroli.
|
vaultOptions.masterkey.recoveryKeyExplanation=Atkopšanas atslēga ir jūsu vienīgais līdzeklis, lai atjaunotu piekļuvi glabātuvei, ja pazaudējat paroli.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Rādīt atkopšanas atslēgu
|
vaultOptions.masterkey.showRecoveryKeyBtn=Rādīt atkopšanas atslēgu
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Atjaunot paroli
|
vaultOptions.masterkey.recoverPasswordBtn=Atjaunot paroli
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Atjaunošanas atslēga
|
recoveryKey.title=Atjaunošanas atslēga
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=Ferdig
|
|||||||
generic.button.next=Neste
|
generic.button.next=Neste
|
||||||
generic.button.print=Skriv ut
|
generic.button.print=Skriv ut
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Det oppstod en uventet feil
|
|
||||||
generic.error.instruction=Dette skulle ikke ha skjedd. Rapporter feilteksten nedenfor og legg inn en beskrivelse av hvilke trinn som førte til denne feilen.
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Hvelv
|
defaults.vault.vaultName=Hvelv
|
||||||
@@ -44,6 +42,8 @@ addvaultwizard.new.locationPrompt=…
|
|||||||
addvaultwizard.new.directoryPickerLabel=Tilpasset lagringssted
|
addvaultwizard.new.directoryPickerLabel=Tilpasset lagringssted
|
||||||
addvaultwizard.new.directoryPickerButton=Velg…
|
addvaultwizard.new.directoryPickerButton=Velg…
|
||||||
addvaultwizard.new.directoryPickerTitle=Velg mappe
|
addvaultwizard.new.directoryPickerTitle=Velg mappe
|
||||||
|
addvaultwizard.new.fileAlreadyExists=En fil eller mappe med det hvelvnavnet finnes allerede
|
||||||
|
addvaultwizard.new.locationIsOk=Egnet sted for hvelvet ditt
|
||||||
addvaultwizard.new.invalidName=Ugyldig navn på hvelvet. Vennligst vurder et vanlig mappenavn.
|
addvaultwizard.new.invalidName=Ugyldig navn på hvelvet. Vennligst vurder et vanlig mappenavn.
|
||||||
### Password
|
### Password
|
||||||
addvaultwizard.new.createVaultBtn=Opprett hvelv
|
addvaultwizard.new.createVaultBtn=Opprett hvelv
|
||||||
@@ -91,7 +91,7 @@ forgetPassword.information=Dette vil slette det lagrede passordet til dette hvel
|
|||||||
forgetPassword.confirmBtn=Glem passord
|
forgetPassword.confirmBtn=Glem passord
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Lås opp hvelvet
|
unlock.title=Lås opp "%s"
|
||||||
unlock.passwordPrompt=Skriv inn passordet for "%s":
|
unlock.passwordPrompt=Skriv inn passordet for "%s":
|
||||||
unlock.savePassword=Husk passord
|
unlock.savePassword=Husk passord
|
||||||
unlock.unlockBtn=Lås opp
|
unlock.unlockBtn=Lås opp
|
||||||
@@ -124,7 +124,7 @@ migration.start.confirm=Ja, hvelvet mitt er fullstendig synkronisert
|
|||||||
migration.run.enterPassword=Skriv inn passordet for "%s"
|
migration.run.enterPassword=Skriv inn passordet for "%s"
|
||||||
migration.run.startMigrationBtn=Overfør hvelv
|
migration.run.startMigrationBtn=Overfør hvelv
|
||||||
migration.run.progressHint=Dette kan ta litt tid…
|
migration.run.progressHint=Dette kan ta litt tid…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions=Vellykket overføring av "%s".\nDu kan nå låse opp hvelvet ditt.
|
migration.success.nextStepsInstructions=Vellykket overføring av "%s".\nDu kan nå låse opp hvelvet ditt.
|
||||||
migration.success.unlockNow=Lås opp nå
|
migration.success.unlockNow=Lås opp nå
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -140,8 +140,16 @@ migration.impossible.reason=Hvelvet kan ikke overføres automatisk fordi lagring
|
|||||||
migration.impossible.moreInfo=Hvelvet kan fortsatt åpnes hvis du bruker en eldre versjon. For instruksjoner om hvordan man overfører et hvelv, besøk
|
migration.impossible.moreInfo=Hvelvet kan fortsatt åpnes hvis du bruker en eldre versjon. For instruksjoner om hvordan man overfører et hvelv, besøk
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
health.intro.remarkFix=Ikke alle problemer kan løses.
|
||||||
|
## Start Failure
|
||||||
|
health.fail.moreInfo=Mer informasjon
|
||||||
|
## Check Selection
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
## Fix Application
|
||||||
|
health.fix.fixBtn=Reparer
|
||||||
|
health.fix.successTip=Vellykket reparering
|
||||||
|
health.fix.failTip=Repareringen feilet. Se loggen for detaljer
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Innstillinger
|
preferences.title=Innstillinger
|
||||||
@@ -159,10 +167,6 @@ preferences.general.debugLogging=Aktiver loggføring av feilsøk
|
|||||||
preferences.general.debugDirectory=Vis loggfiler
|
preferences.general.debugDirectory=Vis loggfiler
|
||||||
preferences.general.autoStart=Start Cryptomator ved systemstart
|
preferences.general.autoStart=Start Cryptomator ved systemstart
|
||||||
preferences.general.keychainBackend=Lagre passord med
|
preferences.general.keychainBackend=Lagre passord med
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gnome Keyring
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=KDE Wallet
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=macOS nøkkelringtilgang
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Windows Data Protection
|
|
||||||
preferences.general.interfaceOrientation=Grensesnittorientering
|
preferences.general.interfaceOrientation=Grensesnittorientering
|
||||||
preferences.general.interfaceOrientation.ltr=Fra venstre til høyre
|
preferences.general.interfaceOrientation.ltr=Fra venstre til høyre
|
||||||
preferences.general.interfaceOrientation.rtl=Fra høyre til venstre
|
preferences.general.interfaceOrientation.rtl=Fra høyre til venstre
|
||||||
@@ -178,6 +182,7 @@ preferences.updates.autoUpdateCheck=Se etter oppdateringer automatisk
|
|||||||
preferences.updates.checkNowBtn=Sjekk nå
|
preferences.updates.checkNowBtn=Sjekk nå
|
||||||
preferences.updates.updateAvailable=Oppdatering til versjon %s er tilgjengelig.
|
preferences.updates.updateAvailable=Oppdatering til versjon %s er tilgjengelig.
|
||||||
## Contribution
|
## Contribution
|
||||||
|
preferences.contribute=Støtt oss
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
## About
|
## About
|
||||||
@@ -224,6 +229,7 @@ main.dropZone.dropVault=Legg til dette hvelvet
|
|||||||
main.dropZone.unknownDragboardContent=Hvis du vil legge til et hvelv, kan du dra det til dette vinduet
|
main.dropZone.unknownDragboardContent=Hvis du vil legge til et hvelv, kan du dra det til dette vinduet
|
||||||
## Vault List
|
## Vault List
|
||||||
main.vaultlist.emptyList.onboardingInstruction=Klikk her for å legge til et hvelv
|
main.vaultlist.emptyList.onboardingInstruction=Klikk her for å legge til et hvelv
|
||||||
|
main.vaultlist.contextMenu.remove=Fjern…
|
||||||
main.vaultlist.contextMenu.lock=Lås
|
main.vaultlist.contextMenu.lock=Lås
|
||||||
main.vaultlist.contextMenu.unlock=Lås opp…
|
main.vaultlist.contextMenu.unlock=Lås opp…
|
||||||
main.vaultlist.contextMenu.unlockNow=Lås opp nå
|
main.vaultlist.contextMenu.unlockNow=Lås opp nå
|
||||||
@@ -272,11 +278,13 @@ wrongFileAlert.link=For ytterligere hjelp, besøk
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=Generelt
|
vaultOptions.general=Generelt
|
||||||
vaultOptions.general.vaultName=Navn på hvelvet
|
vaultOptions.general.vaultName=Navn på hvelvet
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=minutter
|
||||||
vaultOptions.general.unlockAfterStartup=Lås opp hvelvet når du starter Cryptomator
|
vaultOptions.general.unlockAfterStartup=Lås opp hvelvet når du starter Cryptomator
|
||||||
vaultOptions.general.actionAfterUnlock=Etter vellykket opplåsing
|
vaultOptions.general.actionAfterUnlock=Etter vellykket opplåsing
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=Ikke gjør noe
|
vaultOptions.general.actionAfterUnlock.ignore=Ikke gjør noe
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Gjør enheten synlig
|
vaultOptions.general.actionAfterUnlock.reveal=Gjør enheten synlig
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Spør
|
vaultOptions.general.actionAfterUnlock.ask=Spør
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Montering
|
vaultOptions.mount=Montering
|
||||||
vaultOptions.mount.readonly=Skrivebeskyttet
|
vaultOptions.mount.readonly=Skrivebeskyttet
|
||||||
@@ -292,10 +300,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Velg en tom mappe
|
|||||||
vaultOptions.masterkey=Passord
|
vaultOptions.masterkey=Passord
|
||||||
vaultOptions.masterkey.changePasswordBtn=Endre passord
|
vaultOptions.masterkey.changePasswordBtn=Endre passord
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Glem passord
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Glem passord
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=En gjenopprettingsnøkkel er den eneste måten å gjenopprette tilgangen til et hvelv på hvis du mister passordet.
|
vaultOptions.masterkey.recoveryKeyExplanation=En gjenopprettingsnøkkel er den eneste måten å gjenopprette tilgangen til et hvelv på hvis du mister passordet.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Vis gjenopprettingsnøkkelen
|
vaultOptions.masterkey.showRecoveryKeyBtn=Vis gjenopprettingsnøkkelen
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Gjenopprett passord
|
vaultOptions.masterkey.recoverPasswordBtn=Gjenopprett passord
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Gjenopprettingsnøkkel
|
recoveryKey.title=Gjenopprettingsnøkkel
|
||||||
|
|||||||
@@ -13,8 +13,11 @@ generic.button.done=Klaar
|
|||||||
generic.button.next=Volgende
|
generic.button.next=Volgende
|
||||||
generic.button.print=Afdrukken
|
generic.button.print=Afdrukken
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Er is een onverwachte fout opgetreden
|
generic.error.title=Fout %s
|
||||||
generic.error.instruction=Dit had niet moeten gebeuren. Rapporteer de onderstaande fouttekst en voeg een beschrijving toe van de stappen die tot deze fout hebben geleid.
|
generic.error.instruction=Oeps! Cryptomator verwachtte niet dat dit zou gebeuren. U kunt bestaande oplossingen opzoeken voor deze fout, of indien er nog geen melding van deze fout is gemaakt mag u dit ook gerust doen.
|
||||||
|
generic.error.hyperlink.lookup=Deze fout opzoeken
|
||||||
|
generic.error.hyperlink.report=Deze fout melden
|
||||||
|
generic.error.technicalDetails=Details:
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Kluis
|
defaults.vault.vaultName=Kluis
|
||||||
@@ -95,7 +98,7 @@ forgetPassword.information=Dit zal het opgeslagen wachtwoord van deze kluis uit
|
|||||||
forgetPassword.confirmBtn=Wachtwoord vergeten
|
forgetPassword.confirmBtn=Wachtwoord vergeten
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Kluis ontgrendelen
|
unlock.title=Ontgrendel "%s"
|
||||||
unlock.passwordPrompt=Voer wachtwoord voor "%s" in:
|
unlock.passwordPrompt=Voer wachtwoord voor "%s" in:
|
||||||
unlock.savePassword=Wachtwoord Onthouden
|
unlock.savePassword=Wachtwoord Onthouden
|
||||||
unlock.unlockBtn=Ontgrendel
|
unlock.unlockBtn=Ontgrendel
|
||||||
@@ -130,7 +133,7 @@ migration.start.confirm=Ja, mijn kluis is volledig gesynchroniseerd
|
|||||||
migration.run.enterPassword=Voer wachtwoord voor "%s" in
|
migration.run.enterPassword=Voer wachtwoord voor "%s" in
|
||||||
migration.run.startMigrationBtn=Kluis migreren
|
migration.run.startMigrationBtn=Kluis migreren
|
||||||
migration.run.progressHint=Dit kan enige tijd duren…
|
migration.run.progressHint=Dit kan enige tijd duren…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions="%s" is succesvol gemigreerd.\nU kunt nu uw kluis ontgrendelen.
|
migration.success.nextStepsInstructions="%s" is succesvol gemigreerd.\nU kunt nu uw kluis ontgrendelen.
|
||||||
migration.success.unlockNow=Nu Ontgrendelen
|
migration.success.unlockNow=Nu Ontgrendelen
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -146,27 +149,38 @@ migration.impossible.reason=De kluis kan niet automatisch gemigreerd worden omda
|
|||||||
migration.impossible.moreInfo=De kluis is nog te openen met een oudere versie. Instructies voor het handmatig migreren van een kluis zijn te vinden op
|
migration.impossible.moreInfo=De kluis is nog te openen met een oudere versie. Instructies voor het handmatig migreren van een kluis zijn te vinden op
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Gezondheidcheck kluis
|
## Start
|
||||||
health.start.introduction=De gezondheidscheck van de kluis is een verzameling controles om problemen in de interne structuur van uw kluis op te sporen en op te lossen. Houd er rekening mee dat niet alle problemen opgelost zijn. Je hebt het kluiswachtwoord nodig om de controles uit te voeren.
|
health.title=Controle van "%s"
|
||||||
health.start.configValid=Het lezen en verwerken van het configuratiebestand van de kluis is gelukt. Ga door en selecteer controles.
|
health.intro.header=Controle
|
||||||
health.start.configInvalid=Fout bij het lezen en verwerken van het configuratiebestand van de kluis.
|
health.intro.text=Controles zijn er voor het detecteren en indien mogelijk oplossen van problemen met de interne structuur van uw kluis. Houd daarbij rekening met het volgende:
|
||||||
health.checkList.header=Beschikbare gezondheidscontroles
|
health.intro.remarkSync=Zorg er voor dat alle apparaten volledig gesynchroniseerd zijn. Dit lost de meeste problemen op.
|
||||||
health.checkList.selectAllBox=Alles selecteren
|
health.intro.remarkFix=Niet alle problemen kunnen opgelost worden.
|
||||||
|
health.intro.remarkBackup=Als data is beschadigd, kan alleen een back-up helpen.
|
||||||
|
health.intro.affirmation=Ik heb de informatie hierboven gelezen en begrepen
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Fout bij het laden van de kluisconfiguratie
|
||||||
|
health.fail.ioError=Er is een fout opgetreden tijdens het openen en lezen van het configuratiebestand.
|
||||||
|
health.fail.parseError=Er is een fout opgetreden bij het inladen van de kluisconfiguratie.
|
||||||
|
health.fail.moreInfo=Meer informatie
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Selecteer controles in de lijst aan de linkerkant, of gebruik de onderstaande knoppen.
|
||||||
|
health.checkList.selectAllButton=Selecteer alle controles
|
||||||
|
health.checkList.deselectAllButton=Deselecteer alle controles
|
||||||
health.check.runBatchBtn=Geselecteerde controles uitvoeren
|
health.check.runBatchBtn=Geselecteerde controles uitvoeren
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.noSelectedCheck=Voor resultaten selecteert u een voltooide gezondheidscontrole in de linker lijst.
|
health.check.detail.noSelectedCheck=Voor resultaten selecteert u een voltooide gezondheidscontrole in de linker lijst.
|
||||||
health.check.detail.header=Resultaten voor: %s
|
health.check.detail.checkScheduled=De controle is ingepland.
|
||||||
health.check.detail.taskNotStarted=De controle werd niet geselecteerd om uit te voeren.
|
health.check.detail.checkRunning=De controle wordt momenteel uitgevoerd…
|
||||||
health.check.detail.taskScheduled=De controle is ingepland.
|
health.check.detail.checkSkipped=De controle was niet geselecteerd om uit te voeren.
|
||||||
health.check.detail.taskRunning=De controle wordt momenteel uitgevoerd…
|
health.check.detail.checkFinished=De controle is succesvol beëindigd.
|
||||||
health.check.detail.taskSucceeded=De controle is succesvol uitgevoerd na %d milliseconden.
|
health.check.detail.checkFinishedAndFound=De controle is beëindigd. Bekijk alstublieft de resultaten.
|
||||||
health.check.detail.taskFailed=De controle is afgesloten door een fout.
|
health.check.detail.checkFailed=De controle is afgesloten door een fout.
|
||||||
health.check.detail.taskCancelled=De controle is geannuleerd.
|
health.check.detail.checkCancelled=De controle werd geannuleerd.
|
||||||
health.check.detail.problemCount=%d problemen gevonden en %d onoplosbare fouten.
|
|
||||||
health.check.exportBtn=Exporteer rapport
|
health.check.exportBtn=Exporteer rapport
|
||||||
health.check.fixBtn=Repareren
|
## Fix Application
|
||||||
## Checks
|
health.fix.fixBtn=Herstel
|
||||||
health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Map Controle
|
health.fix.successTip=Hersteld
|
||||||
|
health.fix.failTip=Herstellen mislukt, zie logboek voor details
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Voorkeuren
|
preferences.title=Voorkeuren
|
||||||
@@ -184,10 +198,6 @@ preferences.general.debugLogging=Debug logging aanzetten
|
|||||||
preferences.general.debugDirectory=Logboekbestanden bekijken
|
preferences.general.debugDirectory=Logboekbestanden bekijken
|
||||||
preferences.general.autoStart=Start Cryptomator als het systeem opstart
|
preferences.general.autoStart=Start Cryptomator als het systeem opstart
|
||||||
preferences.general.keychainBackend=Bewaar wachtwoorden met
|
preferences.general.keychainBackend=Bewaar wachtwoorden met
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gnome sleutelhanger
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=KDE Wallet
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=macOS-sleutelhangertoegang
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Windows-gegevensbescherming
|
|
||||||
preferences.general.interfaceOrientation=Interface oriëntatie
|
preferences.general.interfaceOrientation=Interface oriëntatie
|
||||||
preferences.general.interfaceOrientation.ltr=Links naar rechts
|
preferences.general.interfaceOrientation.ltr=Links naar rechts
|
||||||
preferences.general.interfaceOrientation.rtl=Rechts naar links
|
preferences.general.interfaceOrientation.rtl=Rechts naar links
|
||||||
@@ -304,12 +314,15 @@ wrongFileAlert.link=Voor verdere ondersteuning, bezoek
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=Algemeen
|
vaultOptions.general=Algemeen
|
||||||
vaultOptions.general.vaultName=Kluisnaam
|
vaultOptions.general.vaultName=Kluisnaam
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Vergrendel wanneer inactief voor
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=minuten
|
||||||
vaultOptions.general.unlockAfterStartup=Ontgrendel kluis bij het starten van Cryptomator
|
vaultOptions.general.unlockAfterStartup=Ontgrendel kluis bij het starten van Cryptomator
|
||||||
vaultOptions.general.actionAfterUnlock=Na een succesvolle ontgrendeling
|
vaultOptions.general.actionAfterUnlock=Na een succesvolle ontgrendeling
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=Niets doen
|
vaultOptions.general.actionAfterUnlock.ignore=Niets doen
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Toon Schijf
|
vaultOptions.general.actionAfterUnlock.reveal=Toon Schijf
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Vragen
|
vaultOptions.general.actionAfterUnlock.ask=Vragen
|
||||||
vaultOptions.general.healthBtn=Start gezondheidscontrole
|
vaultOptions.general.startHealthCheckBtn=Start controle
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Aankoppelen
|
vaultOptions.mount=Aankoppelen
|
||||||
vaultOptions.mount.readonly=Alleen-Lezen
|
vaultOptions.mount.readonly=Alleen-Lezen
|
||||||
@@ -325,10 +338,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Kies een lege map
|
|||||||
vaultOptions.masterkey=Wachtwoord
|
vaultOptions.masterkey=Wachtwoord
|
||||||
vaultOptions.masterkey.changePasswordBtn=Wijzig wachtwoord
|
vaultOptions.masterkey.changePasswordBtn=Wijzig wachtwoord
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Opgeslagen wachtwoord vergeten
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Opgeslagen wachtwoord vergeten
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Een herstelsleutel is je enige manier om de toegang tot een kluis te herstellen als je je wachtwoord kwijtraakt.
|
vaultOptions.masterkey.recoveryKeyExplanation=Een herstelsleutel is je enige manier om de toegang tot een kluis te herstellen als je je wachtwoord kwijtraakt.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Toon herstelsleutel
|
vaultOptions.masterkey.showRecoveryKeyBtn=Toon herstelsleutel
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Wachtwoord herstellen
|
vaultOptions.masterkey.recoverPasswordBtn=Wachtwoord herstellen
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Herstelsleutel
|
recoveryKey.title=Herstelsleutel
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=Ferdig
|
|||||||
generic.button.next=Neste
|
generic.button.next=Neste
|
||||||
generic.button.print=Skriv ut
|
generic.button.print=Skriv ut
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Eit uventa problem oppstod
|
|
||||||
generic.error.instruction=Dette skulle ikkje ha skjedd. Rapporter feilteksten nedanfor og legg inn ei skildring av kva trinn som førte til denne feilen.
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
|
|
||||||
@@ -90,7 +88,6 @@ forgetPassword.information=Dette vil sletta det lagra passordet til denne kvelve
|
|||||||
forgetPassword.confirmBtn=Gløym passord
|
forgetPassword.confirmBtn=Gløym passord
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Lås opp kvelven
|
|
||||||
unlock.passwordPrompt=Skriv inn passordet for "%s":
|
unlock.passwordPrompt=Skriv inn passordet for "%s":
|
||||||
unlock.unlockBtn=Låse opp
|
unlock.unlockBtn=Låse opp
|
||||||
##
|
##
|
||||||
@@ -114,7 +111,7 @@ migration.start.confirm=Ja, kvelven min er fullstendig synkronisert
|
|||||||
migration.run.enterPassword=Skriv inn passordet for "%s"
|
migration.run.enterPassword=Skriv inn passordet for "%s"
|
||||||
migration.run.startMigrationBtn=Migrer kvelv
|
migration.run.startMigrationBtn=Migrer kvelv
|
||||||
migration.run.progressHint=Dette kan ta litt tid…
|
migration.run.progressHint=Dette kan ta litt tid…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions=Vellykka migrering av "%s". Du kan no låsa opp kvelven din.
|
migration.success.nextStepsInstructions=Vellykka migrering av "%s". Du kan no låsa opp kvelven din.
|
||||||
migration.success.unlockNow=Lås opp no
|
migration.success.unlockNow=Lås opp no
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -130,8 +127,11 @@ migration.impossible.reason=Kvelven kan ikkje overførast automatisk fordi lagri
|
|||||||
migration.impossible.moreInfo=Kvelven kan framleis opnast viss du bruker ein eldre versjon. For instruksjonar om korleis ein overfører ein kvelv, besøk
|
migration.impossible.moreInfo=Kvelven kan framleis opnast viss du bruker ein eldre versjon. For instruksjonar om korleis ein overfører ein kvelv, besøk
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
## Start Failure
|
||||||
|
## Check Selection
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
## Fix Application
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Innstillingar
|
preferences.title=Innstillingar
|
||||||
@@ -228,6 +228,7 @@ vaultOptions.general.actionAfterUnlock=Etter vellykka opplåsing
|
|||||||
vaultOptions.general.actionAfterUnlock.ignore=Ikkje gjer noko
|
vaultOptions.general.actionAfterUnlock.ignore=Ikkje gjer noko
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Gjer eininga synleg
|
vaultOptions.general.actionAfterUnlock.reveal=Gjer eininga synleg
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Spør
|
vaultOptions.general.actionAfterUnlock.ask=Spør
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Montering
|
vaultOptions.mount=Montering
|
||||||
vaultOptions.mount.readonly=Skriveverna
|
vaultOptions.mount.readonly=Skriveverna
|
||||||
@@ -243,10 +244,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Vel ei tom mappe
|
|||||||
vaultOptions.masterkey=Passord
|
vaultOptions.masterkey=Passord
|
||||||
vaultOptions.masterkey.changePasswordBtn=Byt passord
|
vaultOptions.masterkey.changePasswordBtn=Byt passord
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Gløym passord
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Gløym passord
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Ein "retta opp igjen"-nøkkel er den einaste måten å retta opp igjen tilgangen til ein kvelv på viss du mistar passordet.
|
vaultOptions.masterkey.recoveryKeyExplanation=Ein "retta opp igjen"-nøkkel er den einaste måten å retta opp igjen tilgangen til ein kvelv på viss du mistar passordet.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Vis 'Retta opp igjen'-nøkkelen
|
vaultOptions.masterkey.showRecoveryKeyBtn=Vis 'Retta opp igjen'-nøkkelen
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Rett opp igjen passord
|
vaultOptions.masterkey.recoverPasswordBtn=Rett opp igjen passord
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title='Retta opp igjen'-nøkkel
|
recoveryKey.title='Retta opp igjen'-nøkkel
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=ਮੁਕੰਮਲ
|
|||||||
generic.button.next=ਅੱਗੇ
|
generic.button.next=ਅੱਗੇ
|
||||||
generic.button.print=ਪਰਿੰਟ ਕਰੋ
|
generic.button.print=ਪਰਿੰਟ ਕਰੋ
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=ਅਣਪਛਾਤੀ ਗਲਤੀ ਵਪਾਰੀ ਹੈ
|
|
||||||
generic.error.instruction=ਇਹ ਵਾਪਰਨਾ ਨਹੀਂ ਚਾਹੀਦਾ ਸੀ। ਹੇਠ ਦਿੱਤੀ ਗਲਤੀ ਲਿਖਤ ਬਾਰੇ ਰਿਪੋਰਟ ਕਰੋ ਅਤੇ ਇਹ ਗਲਤੀ ਹੋਣ ਦੌਰਾਨ ਜਿਹੜੇ ਵੀ ਕਦਮ ਚੁੱਕੇ ਹਨ, ਬਾਰੇ ਵੇਰਵਾ ਦਿਉ।
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=ਵਾਲਟ
|
defaults.vault.vaultName=ਵਾਲਟ
|
||||||
@@ -91,7 +89,6 @@ forgetPassword.information=ਇਹ ਤੁਹਾਡੇ ਸਿਸਟਮ ਦੇ ਕ
|
|||||||
forgetPassword.confirmBtn=ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ
|
forgetPassword.confirmBtn=ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=ਵਾਲਟ ਅਣ-ਲਾਕ ਕਰੋ
|
|
||||||
unlock.passwordPrompt="%s" ਲਈ ਪਾਸਵਰਡ ਦਿਓ:
|
unlock.passwordPrompt="%s" ਲਈ ਪਾਸਵਰਡ ਦਿਓ:
|
||||||
unlock.savePassword=ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ
|
unlock.savePassword=ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ
|
||||||
unlock.unlockBtn=ਅਣ-ਲਾਕ ਕਰੋ
|
unlock.unlockBtn=ਅਣ-ਲਾਕ ਕਰੋ
|
||||||
@@ -124,7 +121,7 @@ migration.start.confirm=ਹਾਂ, ਮੇਰਾ ਵਾਲਟ ਪੂਰੀ ਤਰ
|
|||||||
migration.run.enterPassword="%s" ਲਈ ਪਾਸਵਰਡ ਦਿਓ
|
migration.run.enterPassword="%s" ਲਈ ਪਾਸਵਰਡ ਦਿਓ
|
||||||
migration.run.startMigrationBtn=ਵਾਲਟ ਮਾਈਗਰੇਟ ਕਰੋ
|
migration.run.startMigrationBtn=ਵਾਲਟ ਮਾਈਗਰੇਟ ਕਰੋ
|
||||||
migration.run.progressHint=ਇਸ ਨੂੰ ਕੁਝ ਵੇਲਾ ਲੱਗ ਸਕਦਾ ਹੈ…
|
migration.run.progressHint=ਇਸ ਨੂੰ ਕੁਝ ਵੇਲਾ ਲੱਗ ਸਕਦਾ ਹੈ…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions="%s" ਕਾਮਯਾਬੀ ਨਾਲ ਮਾਈਗਰੇਟ ਕੀਤਾ\nਹੁਣ ਤੁਸੀਂ ਆਪਣੇ ਵਾਲਟ ਨੂੰ ਅਣ-ਲਾਕ ਕਰ ਸਕਦੇ ਹੋ।
|
migration.success.nextStepsInstructions="%s" ਕਾਮਯਾਬੀ ਨਾਲ ਮਾਈਗਰੇਟ ਕੀਤਾ\nਹੁਣ ਤੁਸੀਂ ਆਪਣੇ ਵਾਲਟ ਨੂੰ ਅਣ-ਲਾਕ ਕਰ ਸਕਦੇ ਹੋ।
|
||||||
migration.success.unlockNow=ਹੁਣੇ ਅਣ-ਲਾਕ ਕਰੋ
|
migration.success.unlockNow=ਹੁਣੇ ਅਣ-ਲਾਕ ਕਰੋ
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -140,8 +137,11 @@ migration.impossible.reason=ਵਾਲਟ ਨੂੰ ਆਪਣੇ-ਆਪ ਮਾਈ
|
|||||||
migration.impossible.moreInfo=ਵਾਲਟ ਨੂੰ ਅਜੇ ਵੀ ਪੁਰਾਣੇ ਵਰਜ਼ਨ ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਵਾਲਟ ਨੂੰ ਖੁਦ ਕਿਵੇਂ ਮਾਈਗਰੇਟ ਕਰੀਏ, ਇਸ ਬਾਰੇ ਹਦਾਇਤਾਂ ਲਈ ਵੇਖੋ
|
migration.impossible.moreInfo=ਵਾਲਟ ਨੂੰ ਅਜੇ ਵੀ ਪੁਰਾਣੇ ਵਰਜ਼ਨ ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਵਾਲਟ ਨੂੰ ਖੁਦ ਕਿਵੇਂ ਮਾਈਗਰੇਟ ਕਰੀਏ, ਇਸ ਬਾਰੇ ਹਦਾਇਤਾਂ ਲਈ ਵੇਖੋ
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
## Start Failure
|
||||||
|
## Check Selection
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
## Fix Application
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=ਮੇਰੀ ਪਸੰਦ
|
preferences.title=ਮੇਰੀ ਪਸੰਦ
|
||||||
@@ -159,10 +159,6 @@ preferences.general.debugLogging=ਡੀਬੱਗ ਲਾਗ ਸਮਰੱਥ ਕ
|
|||||||
preferences.general.debugDirectory=ਲਾਗ ਫਾਇਲਾਂ ਦਿਖਾਓ
|
preferences.general.debugDirectory=ਲਾਗ ਫਾਇਲਾਂ ਦਿਖਾਓ
|
||||||
preferences.general.autoStart=ਸਿਸਟਮ ਸ਼ੁਰੂ ਵੇਲੇ Cryptomator ਚਲਾਓ
|
preferences.general.autoStart=ਸਿਸਟਮ ਸ਼ੁਰੂ ਵੇਲੇ Cryptomator ਚਲਾਓ
|
||||||
preferences.general.keychainBackend=ਪਾਸਵਰਡ ਇਸ ਨਾਲ ਸੰਭਾਲੋ
|
preferences.general.keychainBackend=ਪਾਸਵਰਡ ਇਸ ਨਾਲ ਸੰਭਾਲੋ
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=ਗਨੋਮ ਕੀਰਿੰਗ
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=ਕੇਡੀਈ ਵਾਲਟ
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=macOS ਕੀਚੇਨ ਪਹੁੰਚ
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=ਵਿੰਡੋ ਡਾਟਾ ਪਰੋਟੈਕਸ਼ਨ
|
|
||||||
preferences.general.interfaceOrientation=ਇੰਟਰਟੇਸ ਸਥਿਤੀ
|
preferences.general.interfaceOrientation=ਇੰਟਰਟੇਸ ਸਥਿਤੀ
|
||||||
preferences.general.interfaceOrientation.ltr=ਖੱਬੇ ਤੋਂ ਸੱਜਾ
|
preferences.general.interfaceOrientation.ltr=ਖੱਬੇ ਤੋਂ ਸੱਜਾ
|
||||||
preferences.general.interfaceOrientation.rtl=ਸੱਜੇ ਤੋਂ ਖੱਬਾ
|
preferences.general.interfaceOrientation.rtl=ਸੱਜੇ ਤੋਂ ਖੱਬਾ
|
||||||
@@ -277,6 +273,7 @@ vaultOptions.general.actionAfterUnlock=ਕਾਮਯਾਬੀ ਨਾਲ ਅਣ-
|
|||||||
vaultOptions.general.actionAfterUnlock.ignore=ਕੁਝ ਨਾ ਕਰੋ
|
vaultOptions.general.actionAfterUnlock.ignore=ਕੁਝ ਨਾ ਕਰੋ
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=ਡਰਾਇਵ ਦਿਖਾਓ
|
vaultOptions.general.actionAfterUnlock.reveal=ਡਰਾਇਵ ਦਿਖਾਓ
|
||||||
vaultOptions.general.actionAfterUnlock.ask=ਪੁੱਛੋ
|
vaultOptions.general.actionAfterUnlock.ask=ਪੁੱਛੋ
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=ਮਾਊਂਟ ਕਰਨਾ
|
vaultOptions.mount=ਮਾਊਂਟ ਕਰਨਾ
|
||||||
vaultOptions.mount.readonly=ਕੇਵਲ ਪੜ੍ਹਨ ਲਈ
|
vaultOptions.mount.readonly=ਕੇਵਲ ਪੜ੍ਹਨ ਲਈ
|
||||||
@@ -292,10 +289,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=ਖਾਲੀ ਡਾਇਰੈ
|
|||||||
vaultOptions.masterkey=ਪਾਸਵਰਡ
|
vaultOptions.masterkey=ਪਾਸਵਰਡ
|
||||||
vaultOptions.masterkey.changePasswordBtn=ਪਾਸਵਰਡ ਬਦਲੋ
|
vaultOptions.masterkey.changePasswordBtn=ਪਾਸਵਰਡ ਬਦਲੋ
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=ਸੰਭਾਲਿਆ ਪਾਸਵਰਡ ਭੁੱਲੋ
|
vaultOptions.masterkey.forgetSavedPasswordBtn=ਸੰਭਾਲਿਆ ਪਾਸਵਰਡ ਭੁੱਲੋ
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=ਜੇ ਤੁਸੀਂ ਆਪਣਾ ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ ਹੋ ਤਾਂ ਤੁਹਾਡੇ ਵਾਲਟ ਲਈ ਪਹੁੰਚ ਬਹਾਲ ਕਰਨ ਵਾਸਤੇ ਸਿਰਫ਼ ਰਿਕਵਰੀ ਕੁੰਜੀ ਹੀ ਹੈ।
|
vaultOptions.masterkey.recoveryKeyExplanation=ਜੇ ਤੁਸੀਂ ਆਪਣਾ ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ ਹੋ ਤਾਂ ਤੁਹਾਡੇ ਵਾਲਟ ਲਈ ਪਹੁੰਚ ਬਹਾਲ ਕਰਨ ਵਾਸਤੇ ਸਿਰਫ਼ ਰਿਕਵਰੀ ਕੁੰਜੀ ਹੀ ਹੈ।
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=ਰਿਕਰਵੀ ਕੁੰਜੀ ਦਿਖਾਓ
|
vaultOptions.masterkey.showRecoveryKeyBtn=ਰਿਕਰਵੀ ਕੁੰਜੀ ਦਿਖਾਓ
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=ਪਾਸਵਰਡ ਰਿਕਵਰ ਕਰੋ
|
vaultOptions.masterkey.recoverPasswordBtn=ਪਾਸਵਰਡ ਰਿਕਵਰ ਕਰੋ
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=ਰਿਕਵਰੀ ਕੁੰਜੀ
|
recoveryKey.title=ਰਿਕਵਰੀ ਕੁੰਜੀ
|
||||||
|
|||||||
@@ -13,8 +13,11 @@ generic.button.done=Gotowe
|
|||||||
generic.button.next=Dalej
|
generic.button.next=Dalej
|
||||||
generic.button.print=Drukuj
|
generic.button.print=Drukuj
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Wystąpił nieoczekiwany błąd
|
generic.error.title=Błąd %s
|
||||||
generic.error.instruction=To nie powinno było się zdarzyć. Proszę zgłosić poniższy tekst z błędem i zamieścić opis kroków, które doprowadziły do tego błędu.
|
generic.error.instruction=Ups! Cryptomator nie spodziewał się czegoś takiego. Możesz wyszukać istniejące rozwiązania dla tego błędu. Lub, jeśli nie został on jeszcze zgłoszony, możesz sam to zrobić.
|
||||||
|
generic.error.hyperlink.lookup=Wyszukaj ten błąd
|
||||||
|
generic.error.hyperlink.report=Zgłoś ten błąd
|
||||||
|
generic.error.technicalDetails=Szczegóły:
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Sejf
|
defaults.vault.vaultName=Sejf
|
||||||
@@ -95,7 +98,7 @@ forgetPassword.information=To spowoduje usunięcie zapisanego hasła z systemowe
|
|||||||
forgetPassword.confirmBtn=Zapomnij hasło
|
forgetPassword.confirmBtn=Zapomnij hasło
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Odblokuj sejf
|
unlock.title=Odblokuj "%s"
|
||||||
unlock.passwordPrompt=Wprowadź hasło dla "%s":
|
unlock.passwordPrompt=Wprowadź hasło dla "%s":
|
||||||
unlock.savePassword=Zapamiętaj hasło
|
unlock.savePassword=Zapamiętaj hasło
|
||||||
unlock.unlockBtn=Odblokuj
|
unlock.unlockBtn=Odblokuj
|
||||||
@@ -130,7 +133,7 @@ migration.start.confirm=Tak, mój sejf jest w pełni zsynchronizowany
|
|||||||
migration.run.enterPassword=Wprowadź hasło dla "%s"
|
migration.run.enterPassword=Wprowadź hasło dla "%s"
|
||||||
migration.run.startMigrationBtn=Aktualizuj sejf
|
migration.run.startMigrationBtn=Aktualizuj sejf
|
||||||
migration.run.progressHint=To może chwilę potrwać…
|
migration.run.progressHint=To może chwilę potrwać…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions=Aktualizacja "%s" zakończona pomyślnie.\nMożesz już odblokować swój sejf.
|
migration.success.nextStepsInstructions=Aktualizacja "%s" zakończona pomyślnie.\nMożesz już odblokować swój sejf.
|
||||||
migration.success.unlockNow=Odblokuj teraz
|
migration.success.unlockNow=Odblokuj teraz
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -146,27 +149,38 @@ migration.impossible.reason=Sejf nie może być automatycznie zmigrowany, poniew
|
|||||||
migration.impossible.moreInfo=Sejf nadal może być otwarty starszą wersją. Aby uzyskać informacje dotyczące ręcznej migracji sejfu wejdź na
|
migration.impossible.moreInfo=Sejf nadal może być otwarty starszą wersją. Aby uzyskać informacje dotyczące ręcznej migracji sejfu wejdź na
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Ocena stanu sejfu
|
## Start
|
||||||
health.start.introduction=Ocena stanu sejfu to zbiór testów wykrywający i ewentualnie rozwiązujący problemy w wewnętrznej strukturze Twojego sejfu. Należy pamiętać, że nie wszystkie błędy da się rozwiązać. Do przeprowadzenia testów wymagane jest hasło sejfu.
|
health.title=Test spójności "%s"
|
||||||
health.start.configValid=Odczyt i przetwarzanie pliku konfiguracyjnego sejfu powiodły się. Przejdź dalej do wyboru testów.
|
health.intro.header=Test spójności
|
||||||
health.start.configInvalid=Błąd podczas odczytu i przetwarzania pliku konfiguracyjnego sejfu.
|
health.intro.text=Test spójności to zbiór testów do wykrywania i ewentualnego usunięcia problemów z wewnętrzną strukturą Twojego sejfu. Pamiętaj:
|
||||||
health.checkList.header=Dostępne testy
|
health.intro.remarkSync=Sprawdź czy wszystkie urządzenia są całkowicie zsynchronizowane, to rozwiązuje większość problemów.
|
||||||
health.checkList.selectAllBox=Zaznacz wszystko
|
health.intro.remarkFix=Nie wszystkie problemy da się naprawić.
|
||||||
|
health.intro.remarkBackup=Jeśli dane są uszkodzone, tylko kopia zapasowa może pomóc.
|
||||||
|
health.intro.affirmation=Przeczytałem i zrozumiałem powyższe informacje
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Błąd ładowania konfiguracji sejfu
|
||||||
|
health.fail.ioError=Błąd podczas dostępu oraz odczytu pliku konfiguracyjnego.
|
||||||
|
health.fail.parseError=Błąd przetwarzania konfiguracji sejfu.
|
||||||
|
health.fail.moreInfo=Więcej Informacji
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Wybierz testy z lewej listy lub użyj przycisków poniżej.
|
||||||
|
health.checkList.selectAllButton=Wybierz wszystkie testy
|
||||||
|
health.checkList.deselectAllButton=Odznacz wszystkie testy
|
||||||
health.check.runBatchBtn=Uruchom wybrane testy
|
health.check.runBatchBtn=Uruchom wybrane testy
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.noSelectedCheck=Aby sprawdzić wyniki, wybierz test z listy po lewej stronie.
|
health.check.detail.noSelectedCheck=Aby sprawdzić wyniki, wybierz test z listy po lewej stronie.
|
||||||
health.check.detail.header=Wyniki testu %s
|
health.check.detail.checkScheduled=Test będzie uruchomiony.
|
||||||
health.check.detail.taskNotStarted=Test nie był wybrany do uruchomienia.
|
health.check.detail.checkRunning=Test jest aktualnie uruchomiony…
|
||||||
health.check.detail.taskScheduled=Test będzie uruchomiony.
|
health.check.detail.checkSkipped=Test nie był wybrany do uruchomienia.
|
||||||
health.check.detail.taskRunning=Test jest aktualnie uruchomiony…
|
health.check.detail.checkFinished=Test zakończony pomyślnie.
|
||||||
health.check.detail.taskSucceeded=Test zakończony pomyślnie po %d milisekundach.
|
health.check.detail.checkFinishedAndFound=Test zakończony. Proszę sprawdzić wyniki.
|
||||||
health.check.detail.taskFailed=Test zakończony z powodu błędu.
|
health.check.detail.checkFailed=Wystąpił błąd, test zakończony.
|
||||||
health.check.detail.taskCancelled=Test został anulowany.
|
health.check.detail.checkCancelled=Test został anulowany.
|
||||||
health.check.detail.problemCount=Jest %d problemów oraz %d nienaprawialnych błędów.
|
|
||||||
health.check.exportBtn=Eksportuj raport
|
health.check.exportBtn=Eksportuj raport
|
||||||
health.check.fixBtn=Napraw
|
## Fix Application
|
||||||
## Checks
|
health.fix.fixBtn=Napraw
|
||||||
health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Sprawdź katalog
|
health.fix.successTip=Naprawa udana
|
||||||
|
health.fix.failTip=Błąd naprawy, szczegóły w logach
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Ustawienia
|
preferences.title=Ustawienia
|
||||||
@@ -184,10 +198,6 @@ preferences.general.debugLogging=Włącz logowanie w trybie debug
|
|||||||
preferences.general.debugDirectory=Pokaż pliki logowania
|
preferences.general.debugDirectory=Pokaż pliki logowania
|
||||||
preferences.general.autoStart=Uruchom Cryptomator po uruchomieniu systemu
|
preferences.general.autoStart=Uruchom Cryptomator po uruchomieniu systemu
|
||||||
preferences.general.keychainBackend=Przechowuj hasła za pomocą
|
preferences.general.keychainBackend=Przechowuj hasła za pomocą
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Brelok kluczy Gnome
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=Portfel KDE
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=Dostęp do pęku kluczy macOS
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Ochrona danych w systemie Windows
|
|
||||||
preferences.general.interfaceOrientation=Układ interfejsu
|
preferences.general.interfaceOrientation=Układ interfejsu
|
||||||
preferences.general.interfaceOrientation.ltr=Od lewej do prawej
|
preferences.general.interfaceOrientation.ltr=Od lewej do prawej
|
||||||
preferences.general.interfaceOrientation.rtl=Od prawej do lewej
|
preferences.general.interfaceOrientation.rtl=Od prawej do lewej
|
||||||
@@ -304,12 +314,15 @@ wrongFileAlert.link=Aby uzyskać pomoc, wejdź na
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=Ogólne
|
vaultOptions.general=Ogólne
|
||||||
vaultOptions.general.vaultName=Nazwa sejfu
|
vaultOptions.general.vaultName=Nazwa sejfu
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Zablokuj w stanie bezczynności po
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=minut
|
||||||
vaultOptions.general.unlockAfterStartup=Odblokuj sejf podczas uruchamiania programu Cryptomator
|
vaultOptions.general.unlockAfterStartup=Odblokuj sejf podczas uruchamiania programu Cryptomator
|
||||||
vaultOptions.general.actionAfterUnlock=Po udanym odblokowaniu
|
vaultOptions.general.actionAfterUnlock=Po udanym odblokowaniu
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=Nic nie rób
|
vaultOptions.general.actionAfterUnlock.ignore=Nic nie rób
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Otwórz lokalizację
|
vaultOptions.general.actionAfterUnlock.reveal=Otwórz lokalizację
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Zapytaj
|
vaultOptions.general.actionAfterUnlock.ask=Zapytaj
|
||||||
vaultOptions.general.healthBtn=Oceń stan sejfu
|
vaultOptions.general.startHealthCheckBtn=Rozpocznij Test Spójności
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Montowanie
|
vaultOptions.mount=Montowanie
|
||||||
vaultOptions.mount.readonly=Tylko do odczytu
|
vaultOptions.mount.readonly=Tylko do odczytu
|
||||||
@@ -325,13 +338,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Wybierz pusty katalog
|
|||||||
vaultOptions.masterkey=Hasło
|
vaultOptions.masterkey=Hasło
|
||||||
vaultOptions.masterkey.changePasswordBtn=Zmiana Hasła
|
vaultOptions.masterkey.changePasswordBtn=Zmiana Hasła
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Zapomnij zapamiętane hasło
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Zapomnij zapamiętane hasło
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Klucz odzyskiwania jest twoim jedynym sposobem przywrócenia dostępu do sejfu w przypadku utraty hasła.
|
vaultOptions.masterkey.recoveryKeyExplanation=Klucz odzyskiwania jest twoim jedynym sposobem przywrócenia dostępu do sejfu w przypadku utraty hasła.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Wyświetl klucz odzyskiwania
|
vaultOptions.masterkey.showRecoveryKeyBtn=Wyświetl klucz odzyskiwania
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Odzyskaj hasło
|
vaultOptions.masterkey.recoverPasswordBtn=Odzyskaj hasło
|
||||||
## Auto Lock
|
|
||||||
vaultOptions.autoLock=Auto-Lock
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart1=Zablokuj w stanie bezczynności po
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart2=minutach
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Klucz odzyskiwania
|
recoveryKey.title=Klucz odzyskiwania
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=Ok
|
|||||||
generic.button.next=Seguinte
|
generic.button.next=Seguinte
|
||||||
generic.button.print=Imprimir
|
generic.button.print=Imprimir
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Ocorreu um erro inesperado
|
|
||||||
generic.error.instruction=Isto não devia ter acontecido. Por favor reporte o texto do erro abaixo e descreva os passos que levaram a este problema.
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Cofre
|
defaults.vault.vaultName=Cofre
|
||||||
@@ -84,7 +82,6 @@ forgetPassword.title=Esqueci a Senha
|
|||||||
forgetPassword.confirmBtn=Esqueci a Senha
|
forgetPassword.confirmBtn=Esqueci a Senha
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Destrancar Cofre
|
|
||||||
unlock.passwordPrompt=Insira a senha para "%s":
|
unlock.passwordPrompt=Insira a senha para "%s":
|
||||||
unlock.unlockBtn=Destrancar
|
unlock.unlockBtn=Destrancar
|
||||||
##
|
##
|
||||||
@@ -105,14 +102,17 @@ migration.title=Atualizar Cofre
|
|||||||
## Run
|
## Run
|
||||||
migration.run.startMigrationBtn=Migrar Cofre
|
migration.run.startMigrationBtn=Migrar Cofre
|
||||||
migration.run.progressHint=Isso pode levar algum tempo…
|
migration.run.progressHint=Isso pode levar algum tempo…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.unlockNow=Destrancar agora
|
migration.success.unlockNow=Destrancar agora
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
## Impossible
|
## Impossible
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
## Start Failure
|
||||||
|
## Check Selection
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
## Fix Application
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Preferências
|
preferences.title=Preferências
|
||||||
@@ -175,6 +175,7 @@ vaultOptions.general.vaultName=Nome do Cofre
|
|||||||
vaultOptions.general.unlockAfterStartup=Destrancar o cofre ao iniciar o Cryptomator
|
vaultOptions.general.unlockAfterStartup=Destrancar o cofre ao iniciar o Cryptomator
|
||||||
vaultOptions.general.actionAfterUnlock=Após destrancar com sucesso
|
vaultOptions.general.actionAfterUnlock=Após destrancar com sucesso
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Perguntar
|
vaultOptions.general.actionAfterUnlock.ask=Perguntar
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount.readonly=Somente leitura
|
vaultOptions.mount.readonly=Somente leitura
|
||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Escolher…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Escolher…
|
||||||
@@ -182,10 +183,10 @@ vaultOptions.mount.mountPoint.directoryPickerButton=Escolher…
|
|||||||
vaultOptions.masterkey=Senha
|
vaultOptions.masterkey=Senha
|
||||||
vaultOptions.masterkey.changePasswordBtn=Alterar Senha
|
vaultOptions.masterkey.changePasswordBtn=Alterar Senha
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Esqueça a senha salva
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Esqueça a senha salva
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Uma chave de recuperação é a única forma de restaurar o acesso a um cofre se perder a senha.
|
vaultOptions.masterkey.recoveryKeyExplanation=Uma chave de recuperação é a única forma de restaurar o acesso a um cofre se perder a senha.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Exibir Chave de Recuperação
|
vaultOptions.masterkey.showRecoveryKeyBtn=Exibir Chave de Recuperação
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Recuperar Senha
|
vaultOptions.masterkey.recoverPasswordBtn=Recuperar Senha
|
||||||
## Auto Lock
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Chave de Recuperação
|
recoveryKey.title=Chave de Recuperação
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ generic.button.done=Concluído
|
|||||||
generic.button.next=Próximo
|
generic.button.next=Próximo
|
||||||
generic.button.print=Imprimir
|
generic.button.print=Imprimir
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Ocorreu um erro inesperado
|
|
||||||
generic.error.instruction=Isso não deveria ter ocorrido. Por favor, reporte o texto do erro abaixo e inclua uma descrição dos passos que levaram a este erro.
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Cofre
|
defaults.vault.vaultName=Cofre
|
||||||
@@ -95,7 +93,7 @@ forgetPassword.information=Isso removerá a senha salva deste cofre do chaveiro
|
|||||||
forgetPassword.confirmBtn=Esquecer Senha
|
forgetPassword.confirmBtn=Esquecer Senha
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Desbloquear Cofre
|
unlock.title=Desbloquear "%s"
|
||||||
unlock.passwordPrompt=Digite a senha para "%s":
|
unlock.passwordPrompt=Digite a senha para "%s":
|
||||||
unlock.savePassword=Lembrar Senha
|
unlock.savePassword=Lembrar Senha
|
||||||
unlock.unlockBtn=Desbloquear
|
unlock.unlockBtn=Desbloquear
|
||||||
@@ -130,7 +128,7 @@ migration.start.confirm=Sim, meu cofre está completamente sincronizado
|
|||||||
migration.run.enterPassword=Digite a senha para "%s"
|
migration.run.enterPassword=Digite a senha para "%s"
|
||||||
migration.run.startMigrationBtn=Migrar Cofre
|
migration.run.startMigrationBtn=Migrar Cofre
|
||||||
migration.run.progressHint=Isso pode levar algum tempo…
|
migration.run.progressHint=Isso pode levar algum tempo…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions="%s" migrado com sucesso.\nVocê agora pode desbloquear este cofre.
|
migration.success.nextStepsInstructions="%s" migrado com sucesso.\nVocê agora pode desbloquear este cofre.
|
||||||
migration.success.unlockNow=Desbloquear Agora
|
migration.success.unlockNow=Desbloquear Agora
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -146,27 +144,38 @@ migration.impossible.reason=O cofre não pode ser migrado automaticamente porque
|
|||||||
migration.impossible.moreInfo=O cofre ainda pode ser aberto com uma versão mais antiga. Para instruções sobre como migrar um cofre manualmente, visite
|
migration.impossible.moreInfo=O cofre ainda pode ser aberto com uma versão mais antiga. Para instruções sobre como migrar um cofre manualmente, visite
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Verificar Saúde do Cofre
|
## Start
|
||||||
health.start.introduction=A Verificação de Saúde do Cofre contempla um conjunto de validações para detectar e possivelmente corrigir problemas na estrutura interna do seu cofre. Atenção, pois nem todos os problemas podem ser corrigidos. Você precisa da senha do cofre para realizar as verificações.
|
health.title=Exame de saúde de "%s"
|
||||||
health.start.configValid=A leitura e a interpretação do arquivo de configuração do cofre foi realizada com sucesso. Prossiga com a seleção das verificações a realizar.
|
health.intro.header=Status de saúde
|
||||||
health.start.configInvalid=Foi encontrado um erro ao ler e interpretar o arquivo de configuração do cofre.
|
health.intro.text=O Health Check é uma coleção de verificações para detectar e possivelmente corrigir problemas na estrutura interna do seu cofre. Lembre-se de:
|
||||||
health.checkList.header=Verificações de Saúde Disponíveis
|
health.intro.remarkSync=Certifique-se de que todos os dispositivos estejam completamente sincronizados, isso resolve a maioria dos problemas.
|
||||||
health.checkList.selectAllBox=Selecionar Todas
|
health.intro.remarkFix=Nem todos os problemas podem ser corrigidos.
|
||||||
|
health.intro.remarkBackup=Se os dados estiverem corrompidos, apenas um backup poderá ajudar.
|
||||||
|
health.intro.affirmation=Eu li e entendi a informação acima
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Erro ao carregar configuração do Cofre
|
||||||
|
health.fail.ioError=Ocorreu um erro ao acessar e ler o arquivo de configuração.
|
||||||
|
health.fail.parseError=Ocorreu um erro ao analisar a configuração do cofre.
|
||||||
|
health.fail.moreInfo=Mais informações
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Selecione as verificações na lista esquerda ou use os botões abaixo.
|
||||||
|
health.checkList.selectAllButton=Selecionar Todas as Verificações
|
||||||
|
health.checkList.deselectAllButton=Desfazer seleção de todas as planilhas
|
||||||
health.check.runBatchBtn=Executar as Verificações Selecionadas
|
health.check.runBatchBtn=Executar as Verificações Selecionadas
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.noSelectedCheck=Para obter os resultados, selecione uma verificação de saúde completada na lista à esquerda.
|
health.check.detail.noSelectedCheck=Para obter os resultados, selecione uma verificação de saúde completada na lista à esquerda.
|
||||||
health.check.detail.header=Resultados de %s
|
health.check.detail.checkScheduled=A verificação está programada.
|
||||||
health.check.detail.taskNotStarted=A verificação de saúde não foi selecionada para ser realizada.
|
health.check.detail.checkRunning=A verificação está atualmente em execução…
|
||||||
health.check.detail.taskScheduled=A verificação de saúde do cofre está agendada.
|
health.check.detail.checkSkipped=A verificação não foi selecionada para ser executada.
|
||||||
health.check.detail.taskRunning=A verificação de saúde do cofre está em execução...
|
health.check.detail.checkFinished=A verificação foi concluída com sucesso.
|
||||||
health.check.detail.taskSucceeded=A verificação de saúde do cofre foi concluída com sucesso após %d milissegundos.
|
health.check.detail.checkFinishedAndFound=A verificação terminou em execução. Por favor, reveja os resultados.
|
||||||
health.check.detail.taskFailed=A verificação de saúde do cofre foi encerrada devido a um erro.
|
health.check.detail.checkFailed=A verificação foi encerrada devido a um erro.
|
||||||
health.check.detail.taskCancelled=A verificação de saúde do cofre foi cancelada.
|
health.check.detail.checkCancelled=A verificação foi cancelada.
|
||||||
health.check.detail.problemCount=Foram encontrados %d problemas e %d erros irreparáveis.
|
|
||||||
health.check.exportBtn=Exportar Relatório
|
health.check.exportBtn=Exportar Relatório
|
||||||
health.check.fixBtn=Corrigir
|
## Fix Application
|
||||||
## Checks
|
health.fix.fixBtn=Corrigir
|
||||||
health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Verificação de Diretório
|
health.fix.successTip=Consertado com sucesso
|
||||||
|
health.fix.failTip=Falha na correção, consulte o log para obter detalhes
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Preferências
|
preferences.title=Preferências
|
||||||
@@ -184,10 +193,6 @@ preferences.general.debugLogging=Ativar log de debug
|
|||||||
preferences.general.debugDirectory=Mostrar arquivos de log
|
preferences.general.debugDirectory=Mostrar arquivos de log
|
||||||
preferences.general.autoStart=Iniciar o Cryptomator durante inicialização do sistema
|
preferences.general.autoStart=Iniciar o Cryptomator durante inicialização do sistema
|
||||||
preferences.general.keychainBackend=Armazenar senhas no
|
preferences.general.keychainBackend=Armazenar senhas no
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Keyring do Gnome
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=Carteira KDE
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=Keychain Access do macOS
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Proteção de Dados do Windows
|
|
||||||
preferences.general.interfaceOrientation=Orientação da interface
|
preferences.general.interfaceOrientation=Orientação da interface
|
||||||
preferences.general.interfaceOrientation.ltr=Da esquerda para a direita
|
preferences.general.interfaceOrientation.ltr=Da esquerda para a direita
|
||||||
preferences.general.interfaceOrientation.rtl=Da direita para a esquerda
|
preferences.general.interfaceOrientation.rtl=Da direita para a esquerda
|
||||||
@@ -304,12 +309,15 @@ wrongFileAlert.link=Para obter assistência, visite
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=Geral
|
vaultOptions.general=Geral
|
||||||
vaultOptions.general.vaultName=Nome do Cofre
|
vaultOptions.general.vaultName=Nome do Cofre
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Bloquear quando inativo por
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=minutos
|
||||||
vaultOptions.general.unlockAfterStartup=Desbloqueie o cofre ao iniciar o Cryptomator
|
vaultOptions.general.unlockAfterStartup=Desbloqueie o cofre ao iniciar o Cryptomator
|
||||||
vaultOptions.general.actionAfterUnlock=Após desbloquear com sucesso
|
vaultOptions.general.actionAfterUnlock=Após desbloquear com sucesso
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=Não fazer nada
|
vaultOptions.general.actionAfterUnlock.ignore=Não fazer nada
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Revelar Volume
|
vaultOptions.general.actionAfterUnlock.reveal=Revelar Volume
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Perguntar
|
vaultOptions.general.actionAfterUnlock.ask=Perguntar
|
||||||
vaultOptions.general.healthBtn=Iniciar Verificação de Saúde do Cofre
|
vaultOptions.general.startHealthCheckBtn=Iniciar Exame de Saúde
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Montagem
|
vaultOptions.mount=Montagem
|
||||||
vaultOptions.mount.readonly=Somente Leitura
|
vaultOptions.mount.readonly=Somente Leitura
|
||||||
@@ -325,13 +333,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Escolha um diretório vazio
|
|||||||
vaultOptions.masterkey=Senha
|
vaultOptions.masterkey=Senha
|
||||||
vaultOptions.masterkey.changePasswordBtn=Alterar Senha
|
vaultOptions.masterkey.changePasswordBtn=Alterar Senha
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Esquecer a senha salva
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Esquecer a senha salva
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Se você perder a sua senha, a única forma de restaurar acesso a um cofre é através de uma chave de recuperação.
|
vaultOptions.masterkey.recoveryKeyExplanation=Se você perder a sua senha, a única forma de restaurar acesso a um cofre é através de uma chave de recuperação.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Exibir chave de recuperação
|
vaultOptions.masterkey.showRecoveryKeyBtn=Exibir chave de recuperação
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Recuperar Senha
|
vaultOptions.masterkey.recoverPasswordBtn=Recuperar Senha
|
||||||
## Auto Lock
|
|
||||||
vaultOptions.autoLock=Bloqueio automático
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart1=Bloquear quando inativo por
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart2=minutos
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Chave de recuperação
|
recoveryKey.title=Chave de recuperação
|
||||||
|
|||||||
@@ -2,82 +2,363 @@
|
|||||||
|
|
||||||
# Generics
|
# Generics
|
||||||
## Button
|
## Button
|
||||||
|
generic.button.apply=Aplică
|
||||||
|
generic.button.back=Înapoi
|
||||||
|
generic.button.cancel=Anulează
|
||||||
|
generic.button.change=Modifică
|
||||||
|
generic.button.close=Închide
|
||||||
|
generic.button.copy=Copiază
|
||||||
|
generic.button.copied=Copiat!
|
||||||
|
generic.button.done=Terminat
|
||||||
|
generic.button.next=Următorul
|
||||||
|
generic.button.print=Tipărește
|
||||||
## Error
|
## Error
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
|
defaults.vault.vaultName=Seif
|
||||||
|
|
||||||
# Tray Menu
|
# Tray Menu
|
||||||
|
traymenu.showMainWindow=Afișează
|
||||||
|
traymenu.showPreferencesWindow=Preferințe
|
||||||
|
traymenu.lockAllVaults=Blochează toate
|
||||||
|
traymenu.quitApplication=Ieșire
|
||||||
|
traymenu.vault.unlock=Deblocați
|
||||||
|
traymenu.vault.lock=Blocaţi
|
||||||
|
traymenu.vault.reveal=Afişare
|
||||||
|
|
||||||
# Add Vault Wizard
|
# Add Vault Wizard
|
||||||
|
addvaultwizard.title=Adaugă un seif
|
||||||
## Welcome
|
## Welcome
|
||||||
|
addvaultwizard.welcome.newButton=Creează seif nou
|
||||||
|
addvaultwizard.welcome.existingButton=Deschide un seif existent
|
||||||
## New
|
## New
|
||||||
### Name
|
### Name
|
||||||
|
addvaultwizard.new.nameInstruction=Alege un nume pentru seif
|
||||||
|
addvaultwizard.new.namePrompt=Nume seif
|
||||||
### Location
|
### Location
|
||||||
|
addvaultwizard.new.locationInstruction=Unde ar trebui ca Cryptomator să stocheze fișierele criptate din seiful dumneavoastră?
|
||||||
|
addvaultwizard.new.locationLabel=Locație stocare
|
||||||
|
addvaultwizard.new.locationPrompt=…
|
||||||
|
addvaultwizard.new.directoryPickerLabel=Locație personalizată
|
||||||
|
addvaultwizard.new.directoryPickerButton=Alege…
|
||||||
|
addvaultwizard.new.directoryPickerTitle=Alege Dosar
|
||||||
|
addvaultwizard.new.fileAlreadyExists=Există deja un fișier sau un dosar cu numele seifului
|
||||||
|
addvaultwizard.new.locationDoesNotExist=Dosarul în calea specificată nu există sau nu poate fi accesat
|
||||||
|
addvaultwizard.new.locationIsNotWritable=Nu există acces la scriere la calea specificată
|
||||||
|
addvaultwizard.new.locationIsOk=Locația potrivită pentru seiful dumneavoastră
|
||||||
|
addvaultwizard.new.invalidName=Nume seif invalid. Vă rugăm sa luați în considerare un nume de dosar obișnuit.
|
||||||
### Password
|
### Password
|
||||||
|
addvaultwizard.new.createVaultBtn=Crează seif
|
||||||
|
addvaultwizard.new.generateRecoveryKeyChoice=Nu veți putea accesa datele dvs. fără parolă. Doriți o cheie de recuperare pentru cazul în care vă pierdeți parola?
|
||||||
|
addvaultwizard.new.generateRecoveryKeyChoice.yes=Da, vă rog, mai bine sigur decât rău
|
||||||
|
addvaultwizard.new.generateRecoveryKeyChoice.no=Nu, mulțumesc, nu îmi voi pierde parola
|
||||||
### Information
|
### Information
|
||||||
|
addvault.new.readme.storageLocation.fileName=IMPORTANT.rtf
|
||||||
|
addvault.new.readme.storageLocation.1=⚠️ FIȘIERE SEIF ⚠️
|
||||||
|
addvault.new.readme.storageLocation.2=Aceasta este locația de stocare a seifului dvs.
|
||||||
|
addvault.new.readme.storageLocation.3=Să NU
|
||||||
|
addvault.new.readme.storageLocation.4=• modificați fișierele din acest dosar sau
|
||||||
|
addvault.new.readme.storageLocation.5=• inserați fișiere destinate criptării în acest director.
|
||||||
|
addvault.new.readme.storageLocation.6=Dacă doriți să criptați fișierele și să vizualizați conținutul seifului, faceți următoarele:
|
||||||
|
addvault.new.readme.storageLocation.7=1. Adăugați acest seif la Cryptomator.
|
||||||
|
addvault.new.readme.storageLocation.8=2. Deblocați seiful în Cryptomator.
|
||||||
|
addvault.new.readme.storageLocation.9=3. Deschideți locația de acces făcând clic pe butonul "Reveal".
|
||||||
|
addvault.new.readme.storageLocation.10=Dacă aveți nevoie de ajutor, vizitați documentația: %s
|
||||||
|
addvault.new.readme.accessLocation.fileName=BINEATIVENIT.rtf
|
||||||
|
addvault.new.readme.accessLocation.1=🔐️ UNITATE CRIPTATĂ 🔐️
|
||||||
|
addvault.new.readme.accessLocation.2=Aceasta este locația de acces a seifului dvs.
|
||||||
|
addvault.new.readme.accessLocation.3=Orice fișier adăugat la acest volum va fi criptat de către Cryptomator. Puteți lucra la el ca pe orice altă unitate/folder. Aceasta este doar o vizualizare decriptată a conținutului său, fișierele sunt criptate tot timpul pe hard disk-ul tău.
|
||||||
|
addvault.new.readme.accessLocation.4=Puteți să ștergeți acest fișier.
|
||||||
## Existing
|
## Existing
|
||||||
|
addvaultwizard.existing.instruction=Alegeți fișierul "masterkey.cryptomator" din seiful dvs. existent.
|
||||||
|
addvaultwizard.existing.chooseBtn=Alege…
|
||||||
|
addvaultwizard.existing.filePickerTitle=Selectaţi fişierul Masterkey
|
||||||
## Success
|
## Success
|
||||||
|
addvaultwizard.success.nextStepsInstructions=Seiful "%s" a fost adăugat.\nTrebuie să deblocați acest seif pentru a accesa sau adăuga conținut. Alternativ, îl puteți debloca în orice moment ulterior.
|
||||||
|
addvaultwizard.success.unlockNow=Deblochează acum
|
||||||
|
|
||||||
# Remove Vault
|
# Remove Vault
|
||||||
|
removeVault.title=Eliminați seiful
|
||||||
|
removeVault.information=Acest lucru va face Cryptomator să uite de acest seif. Îl puteţi adăuga din nou mai târziu. Nici un fişier criptat nu va fi şters din hard disk-ul dvs.
|
||||||
|
removeVault.confirmBtn=Eliminați seiful
|
||||||
|
|
||||||
# Change Password
|
# Change Password
|
||||||
|
changepassword.title=Schimbați parola
|
||||||
|
changepassword.enterOldPassword=Introduceți parola curentă pentru "%s"
|
||||||
|
changepassword.finalConfirmation=Înțeleg că nu voi putea accesa datele mele dacă îmi uit parola
|
||||||
|
|
||||||
# Forget Password
|
# Forget Password
|
||||||
|
forgetPassword.title=Parolă uitată
|
||||||
|
forgetPassword.information=Această acțiune va șterge parola salvată a acestui seif din keychain-ul sistemului de operare.
|
||||||
|
forgetPassword.confirmBtn=Parolă uitată
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
|
unlock.title=Deblocare "%s"
|
||||||
|
unlock.passwordPrompt=Introduceți parola pentru "%s":
|
||||||
|
unlock.savePassword=Memorează parola
|
||||||
|
unlock.unlockBtn=Deblocați
|
||||||
##
|
##
|
||||||
|
unlock.chooseMasterkey.prompt=Nu s-a putut găsi fișierul masterkey pentru acest seif la locația așteptată. Vă rugăm să alegeți manual fișierul cheie.
|
||||||
|
unlock.chooseMasterkey.filePickerTitle=Selectaţi fişierul Masterkey
|
||||||
## Success
|
## Success
|
||||||
|
unlock.success.message=Deblocat "%s" cu succes! Seiful dvs. este acum accesibil prin unitatea sa virtuală.
|
||||||
|
unlock.success.rememberChoice=Ține minte alegerea, nu mai arăta asta din nou
|
||||||
|
unlock.success.revealBtn=Dezvăluie unitatea
|
||||||
## Failure
|
## Failure
|
||||||
|
unlock.error.heading=Imposibil de deblocat seiful
|
||||||
### Invalid Mount Point
|
### Invalid Mount Point
|
||||||
|
unlock.error.invalidMountPoint.notExisting=Punctul de montare "%s" nu este un dosar, nu este gol sau nu există.
|
||||||
|
unlock.error.invalidMountPoint.existing=Punctul de montare "%s" există deja sau dosarul părinte lipsește.
|
||||||
|
|
||||||
# Lock
|
# Lock
|
||||||
## Force
|
## Force
|
||||||
|
lock.forced.heading=Blocarea elegantă a eșuat
|
||||||
|
lock.forced.message=Blocarea "%s" a fost blocată de operațiile în așteptare sau de fișierele deschise. Puteți forța blocarea acestui seif, dar întreruperea I/O poate duce la pierderea datelor nesalvate.
|
||||||
|
lock.forced.confirmBtn=Forțați blocarea
|
||||||
## Failure
|
## Failure
|
||||||
|
lock.fail.heading=Blocarea seifului a eșuat.
|
||||||
|
lock.fail.message=Seiful "%s" nu a putut fi blocat. Asigurați-vă că lucrările nesalvate sunt salvate altundeva și că operațiunile importante de citire/scriere sunt terminate. Pentru a închide seiful omoară procesul Cryptomator.
|
||||||
|
|
||||||
# Migration
|
# Migration
|
||||||
|
migration.title=Îmbunătățește seiful
|
||||||
## Start
|
## Start
|
||||||
|
migration.start.prompt=Seiful dvs. "%s" trebuie să fie actualizat la un format mai nou. Înainte de a continua, asigurați-vă că nu există sincronizare în așteptare care să afecteze acest seif.
|
||||||
|
migration.start.confirm=Da, seiful meu este complet sincronizat
|
||||||
## Run
|
## Run
|
||||||
## Sucess
|
migration.run.enterPassword=Introduceți parola pentru "%s"
|
||||||
|
migration.run.startMigrationBtn=Migrează seiful
|
||||||
|
migration.run.progressHint=Acest lucru poate dura ceva timp…
|
||||||
|
## Success
|
||||||
|
migration.success.nextStepsInstructions=Seiful "%s" a fost migrat cu succes.\nAcum puteți debloca seiful dvs.
|
||||||
|
migration.success.unlockNow=Deblochează acum
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
|
migration.error.missingFileSystemCapabilities.title=Tip de fișier nesuportat
|
||||||
|
migration.error.missingFileSystemCapabilities.description=Migrarea nu a fost pornită, deoarece seiful dvs. este localizat pe un sistem de fișiere necorespunzător.
|
||||||
|
migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=Sistemul de fişiere nu acceptă nume de fişiere lungi.
|
||||||
|
migration.error.missingFileSystemCapabilities.reason.LONG_PATHS=Sistemul de fișiere nu suportă căi lungi.
|
||||||
|
migration.error.missingFileSystemCapabilities.reason.READ_ACCESS=Sistemul de fișiere nu permite citirea.
|
||||||
|
migration.error.missingFileSystemCapabilities.reason.WRITE_ACCESS=Sistemul de fişiere nu permite scrierea.
|
||||||
## Impossible
|
## Impossible
|
||||||
|
migration.impossible.heading=Imposibil de migrat seiful
|
||||||
|
migration.impossible.reason=Seiful nu poate fi migrat automat deoarece locația sa de stocare sau punctul de acces nu este compatibilă.
|
||||||
|
migration.impossible.moreInfo=Seiful poate fi deschis în continuare cu o versiune mai veche. Pentru instrucţiuni despre cum să migraţi manual un seif, vizitaţi
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
|
## Start
|
||||||
|
health.title=Verificarea de sănătate a "%s"
|
||||||
|
health.intro.header=Verificarea stării de sănătate
|
||||||
|
health.intro.text=Verificarea stării de sănătate este o colecție de verificări pentru a detecta și eventual a remedia problemele din structura internă a seifului. Vă rugăm să țineți cont de:
|
||||||
|
health.intro.remarkSync=Asigură că toate dispozitivele sunt complet sincronizate, acest lucru rezolvă majoritatea problemelor.
|
||||||
|
health.intro.remarkFix=Nu toate problemele pot fi rezolvate.
|
||||||
|
health.intro.remarkBackup=În cazul în care datele sunt corupte, numai o copie de rezervă poate ajuta.
|
||||||
|
health.intro.affirmation=Am citit și am înțeles informațiile de mai sus
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Eroare la încărcarea configurației seifului
|
||||||
|
health.fail.ioError=A apărut o eroare la accesarea și citirea fișierului de configurare.
|
||||||
|
health.fail.parseError=S-a produs o eroare la analizarea configurației seifului.
|
||||||
|
health.fail.moreInfo=Mai multe informații
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Selectați verificări în lista din stânga sau folosiți butoanele de mai jos.
|
||||||
|
health.checkList.selectAllButton=Selectați toate verificările
|
||||||
|
health.checkList.deselectAllButton=Deselectați toate verificările
|
||||||
|
health.check.runBatchBtn=Execută verificările selectate
|
||||||
## Detail view
|
## Detail view
|
||||||
## Checks
|
health.check.detail.noSelectedCheck=Pentru rezultate, selectaţi o verificare de sănătate finalizată în lista din stânga.
|
||||||
|
health.check.detail.checkScheduled=Verificarea este programată.
|
||||||
|
health.check.detail.checkRunning=Verificarea se execută la moment…
|
||||||
|
health.check.detail.checkSkipped=Verificarea nu a fost selectată pentru a rula.
|
||||||
|
health.check.detail.checkFinished=Verificarea s-a terminat cu succes.
|
||||||
|
health.check.detail.checkFinishedAndFound=Verificarea s-a terminat. Vă rugăm să examinați rezultatele.
|
||||||
|
health.check.detail.checkFailed=Verificarea a ieșit din cauza unei erori.
|
||||||
|
health.check.detail.checkCancelled=Verificarea a fost anulată.
|
||||||
|
health.check.exportBtn=Exportare raport
|
||||||
|
## Fix Application
|
||||||
|
health.fix.fixBtn=Repară
|
||||||
|
health.fix.successTip=Remediere reușită
|
||||||
|
health.fix.failTip=Remediere eșuată, vezi jurnalul pentru detalii
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
|
preferences.title=Preferințe
|
||||||
## General
|
## General
|
||||||
|
preferences.general=Setări Generale
|
||||||
|
preferences.general.theme=Aspect
|
||||||
|
preferences.general.theme.automatic=Automat
|
||||||
|
preferences.general.theme.light=Luminos
|
||||||
|
preferences.general.theme.dark=Întunecat
|
||||||
|
preferences.general.unlockThemes=Deblochează modul întunecat
|
||||||
|
preferences.general.showMinimizeButton=Afișează butonul de minimizare
|
||||||
|
preferences.general.showTrayIcon=Arată tray icon (necesită repornire)
|
||||||
|
preferences.general.startHidden=Ascunde fereastra la pornirea Cryptomator
|
||||||
|
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.interfaceOrientation=Orientarea interfeței
|
||||||
|
preferences.general.interfaceOrientation.ltr=De la stânga la dreapta
|
||||||
|
preferences.general.interfaceOrientation.rtl=De la dreapta la stânga
|
||||||
## Volume
|
## Volume
|
||||||
|
preferences.volume=Unitate virtuală
|
||||||
|
preferences.volume.type=Tip volum
|
||||||
|
preferences.volume.webdav.port=Port WebDAV
|
||||||
|
preferences.volume.webdav.scheme=Schema WebDAV
|
||||||
## Updates
|
## Updates
|
||||||
|
preferences.updates=Actualizări
|
||||||
|
preferences.updates.currentVersion=Versiunea actuală: %s
|
||||||
|
preferences.updates.autoUpdateCheck=Verificare automată actualizări
|
||||||
|
preferences.updates.checkNowBtn=Verifică acum
|
||||||
|
preferences.updates.updateAvailable=Actualizare la versiunea %s disponibilă.
|
||||||
## Contribution
|
## Contribution
|
||||||
|
preferences.contribute=Susțineți-ne
|
||||||
|
preferences.contribute.registeredFor=Certificat de suporter înregistrat pentru %s
|
||||||
|
preferences.contribute.noCertificate=Susțineți Cryptomator și primiți un certificat de suport. E ca o cheie de licență dar pentru persoanele minunate care folosesc software gratuit. ;-)
|
||||||
|
preferences.contribute.getCertificate=Nu aveți deja unul? Aflați cum îl puteți obține.
|
||||||
|
preferences.contribute.promptText=Lipiți codul certificatului de suporter aici
|
||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
## About
|
## About
|
||||||
|
preferences.about=Despre
|
||||||
|
|
||||||
# Vault Statistics
|
# Vault Statistics
|
||||||
|
stats.title=Statistici pentru %s
|
||||||
|
stats.cacheHitRate=Rata de control cache
|
||||||
## Read
|
## Read
|
||||||
|
stats.read.throughput.idle=Citire: inactiv
|
||||||
|
stats.read.throughput.kibs=Citire: %.2f kiB/s
|
||||||
|
stats.read.throughput.mibs=Citire: %.2f MiB/s
|
||||||
|
stats.read.total.data.none=Date citite: -
|
||||||
|
stats.read.total.data.kib=Date citite: %.1f kiB
|
||||||
|
stats.read.total.data.mib=Date citite: %.1f MiB
|
||||||
|
stats.read.total.data.gib=Date citite: %.1f GiB
|
||||||
|
stats.decr.total.data.none=Date decriptate: -
|
||||||
|
stats.decr.total.data.kib=Date decriptate: %.1f kiB
|
||||||
|
stats.decr.total.data.mib=Date decriptate: %.1f MiB
|
||||||
|
stats.decr.total.data.gib=Date decriptate: %.1f GiB
|
||||||
|
stats.read.accessCount=Total citit: %d
|
||||||
## Write
|
## Write
|
||||||
|
stats.write.throughput.idle=Scriere: inactiv
|
||||||
|
stats.write.throughput.kibs=Scrie: %.2f kiB/s
|
||||||
|
stats.write.throughput.mibs=Scrie: %.2f MiB/s
|
||||||
|
stats.write.total.data.none=Date scrise: -
|
||||||
|
stats.write.total.data.kib=Date scrise: %.1f kiB
|
||||||
|
stats.write.total.data.mib=Date scrise: %.1f MiB
|
||||||
|
stats.write.total.data.gib=Date scrise: %.1f GiB
|
||||||
|
stats.encr.total.data.none=Date criptate: -
|
||||||
|
stats.encr.total.data.kib=Date criptate: %.1f kiB
|
||||||
|
stats.encr.total.data.mib=Date criptate: %.1f MiB
|
||||||
|
stats.encr.total.data.gib=Date criptate: %.1f GiB
|
||||||
|
stats.write.accessCount=Total scrieri: %d
|
||||||
|
|
||||||
# Main Window
|
# Main Window
|
||||||
|
main.closeBtn.tooltip=Închide
|
||||||
|
main.minimizeBtn.tooltip=Minimizează
|
||||||
|
main.preferencesBtn.tooltip=Preferințe
|
||||||
|
main.debugModeEnabled.tooltip=Modul de depanare este activat
|
||||||
|
main.donationKeyMissing.tooltip=Vă rugăm să luați în considerare o donație
|
||||||
## Drag 'n' Drop
|
## Drag 'n' Drop
|
||||||
|
main.dropZone.dropVault=Adaugă acest seif
|
||||||
|
main.dropZone.unknownDragboardContent=Dacă doriţi să adăugaţi un seif, trageţi-l în această fereastră
|
||||||
## Vault List
|
## Vault List
|
||||||
|
main.vaultlist.emptyList.onboardingInstruction=Faceți clic aici pentru a adăuga un seif
|
||||||
|
main.vaultlist.contextMenu.remove=Elimină…
|
||||||
|
main.vaultlist.contextMenu.lock=Blocaţi
|
||||||
|
main.vaultlist.contextMenu.unlock=Deblochează…
|
||||||
|
main.vaultlist.contextMenu.unlockNow=Deblochează acum
|
||||||
|
main.vaultlist.contextMenu.vaultoptions=Arată opțiunile seifului
|
||||||
|
main.vaultlist.contextMenu.reveal=Dezvăluie unitatea
|
||||||
|
main.vaultlist.addVaultBtn=Adaugă un seif
|
||||||
## Vault Detail
|
## Vault Detail
|
||||||
### Welcome
|
### Welcome
|
||||||
|
main.vaultDetail.welcomeOnboarding=Vă mulțumim că ați ales Cryptomator pentru a vă proteja fișierele. Dacă aveți nevoie de asistență, verificați ghidurile noastre de pornire:
|
||||||
### Locked
|
### Locked
|
||||||
|
main.vaultDetail.lockedStatus=BLOCAT
|
||||||
|
main.vaultDetail.unlockBtn=Deblochează…
|
||||||
|
main.vaultDetail.unlockNowBtn=Deblochează acum
|
||||||
|
main.vaultDetail.optionsBtn=Opțiuni seif
|
||||||
|
main.vaultDetail.passwordSavedInKeychain=Parola a fost salvată
|
||||||
### Unlocked
|
### Unlocked
|
||||||
|
main.vaultDetail.unlockedStatus=DEBLOCAT
|
||||||
|
main.vaultDetail.accessLocation=Conținutul seifului tău este accesibil aici:
|
||||||
|
main.vaultDetail.revealBtn=Dezvăluie unitatea
|
||||||
|
main.vaultDetail.lockBtn=Blocaţi
|
||||||
|
main.vaultDetail.bytesPerSecondRead=Citire:
|
||||||
|
main.vaultDetail.bytesPerSecondWritten=Scriere:
|
||||||
|
main.vaultDetail.throughput.idle=inactiv
|
||||||
|
main.vaultDetail.throughput.kbps=%.1f kiB/s
|
||||||
|
main.vaultDetail.throughput.mbps=%.1f MiB/s
|
||||||
|
main.vaultDetail.stats=Statistici de seif
|
||||||
### Missing
|
### Missing
|
||||||
|
main.vaultDetail.missing.info=Cryptomator nu a putut găsi un seif pe această cale.
|
||||||
|
main.vaultDetail.missing.recheck=Verifică din nou
|
||||||
|
main.vaultDetail.missing.remove=Eliminați din lista de seifuri…
|
||||||
|
main.vaultDetail.missing.changeLocation=Schimbați locația seifului…
|
||||||
### Needs Migration
|
### Needs Migration
|
||||||
|
main.vaultDetail.migrateButton=Îmbunătățește seiful
|
||||||
|
main.vaultDetail.migratePrompt=Înainte de a-l putea accesa, seiful dumneavoastră trebuie actualizat la format nou
|
||||||
|
|
||||||
# Wrong File Alert
|
# Wrong File Alert
|
||||||
|
wrongFileAlert.title=Cum să criptați fișierele
|
||||||
|
wrongFileAlert.header.title=Ați încercat să criptați aceste fișiere?
|
||||||
|
wrongFileAlert.header.lead=În acest scop, Cryptomator oferă un volum în managerul de fișiere al sistemului dumneavoastră.
|
||||||
|
wrongFileAlert.instruction.0=Pentru a cripta fișierele, urmați acești pași:
|
||||||
|
wrongFileAlert.instruction.1=1. Deblocați seiful dvs.
|
||||||
|
wrongFileAlert.instruction.2=2. Apăsați pe butonul "Afişare" pentru a deschide volumul în managerul de fișiere.
|
||||||
|
wrongFileAlert.instruction.3=3. Adăugați fişierele la acest volum.
|
||||||
|
wrongFileAlert.link=Pentru asistență suplimentară, vizitați
|
||||||
|
|
||||||
# Vault Options
|
# Vault Options
|
||||||
## General
|
## General
|
||||||
|
vaultOptions.general=Setări Generale
|
||||||
|
vaultOptions.general.vaultName=Nume seif
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Blocare când inactiv pentru
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=minute
|
||||||
|
vaultOptions.general.unlockAfterStartup=Deblochează seiful la pornirea Cryptomator
|
||||||
|
vaultOptions.general.actionAfterUnlock=După deblocarea cu succes
|
||||||
|
vaultOptions.general.actionAfterUnlock.ignore=Nu fă nimic
|
||||||
|
vaultOptions.general.actionAfterUnlock.reveal=Dezvăluie unitatea
|
||||||
|
vaultOptions.general.actionAfterUnlock.ask=Întreabă
|
||||||
|
vaultOptions.general.startHealthCheckBtn=Începe verificarea de sănătate
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
|
vaultOptions.mount=Montare
|
||||||
|
vaultOptions.mount.readonly=Doar citire
|
||||||
|
vaultOptions.mount.customMountFlags=Atribute de montare personalizate
|
||||||
|
vaultOptions.mount.winDriveLetterOccupied=ocupat
|
||||||
|
vaultOptions.mount.mountPoint=Punct de montare
|
||||||
|
vaultOptions.mount.mountPoint.auto=Alegeţi automat o locaţie potrivită
|
||||||
|
vaultOptions.mount.mountPoint.driveLetter=Utilizați litera de unitate atribuită
|
||||||
|
vaultOptions.mount.mountPoint.custom=Cale personalizată
|
||||||
|
vaultOptions.mount.mountPoint.directoryPickerButton=Alege…
|
||||||
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Alegeți un dosar gol
|
||||||
## Master Key
|
## Master Key
|
||||||
## Auto Lock
|
vaultOptions.masterkey=Parolă
|
||||||
|
vaultOptions.masterkey.changePasswordBtn=Schimbați parola
|
||||||
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Parolă salvată uitată
|
||||||
|
vaultOptions.masterkey.recoveryKeyExplanation=O cheie de recuperare este singurul mijloc de a restabili accesul la un seif în caz că vă pierdeți parola.
|
||||||
|
vaultOptions.masterkey.showRecoveryKeyBtn=Afișează cheia de recuperare
|
||||||
|
vaultOptions.masterkey.recoverPasswordBtn=Recuperează parola
|
||||||
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
|
recoveryKey.title=Cheia de recuperare
|
||||||
|
recoveryKey.enterPassword.prompt=Introduceți parola pentru a afișa cheia de recuperare pentru "%s:
|
||||||
|
recoveryKey.display.message=Următoarea cheie de recuperare poate fi folosită pentru a restabili accesul la "%s":
|
||||||
|
recoveryKey.display.StorageHints=Păstrați cheia de recuperare undeva foarte sigur, de ex.\n • Păstrați-o folosind un manager de parole\n • Salvați-o pe un flash USB stick\n • Imprimați-o pe hârtie
|
||||||
|
recoveryKey.recover.prompt=Introduceți cheia de recuperare pentru "%s:
|
||||||
|
recoveryKey.recover.validKey=Aceasta este o cheie de recuperare validă
|
||||||
|
recoveryKey.printout.heading=Cheia de recuperare Cryptomator\n"%s"\n
|
||||||
|
|
||||||
# New Password
|
# New Password
|
||||||
|
newPassword.promptText=Introduceți o parolă nouă
|
||||||
|
newPassword.reenterPassword=Confirmaţi noua parolă
|
||||||
|
newPassword.passwordsMatch=Parolele corespund!
|
||||||
|
newPassword.passwordsDoNotMatch=Parolele nu corespund
|
||||||
|
passwordStrength.messageLabel.tooShort=Folosiți cel puțin %d caractere
|
||||||
|
passwordStrength.messageLabel.0=Foarte slabă
|
||||||
|
passwordStrength.messageLabel.1=Slabă
|
||||||
|
passwordStrength.messageLabel.2=Acceptabilă
|
||||||
|
passwordStrength.messageLabel.3=Puternică
|
||||||
|
passwordStrength.messageLabel.4=Foarte puternică
|
||||||
|
|
||||||
# Quit
|
# Quit
|
||||||
|
quit.prompt=Părăsiți aplicația? Există seifuri deblocate.
|
||||||
|
quit.lockAndQuit=Blocați și ieșiți
|
||||||
|
|||||||
@@ -13,8 +13,11 @@ generic.button.done=Готово
|
|||||||
generic.button.next=Далее
|
generic.button.next=Далее
|
||||||
generic.button.print=Печать
|
generic.button.print=Печать
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Неизвестная ошибка
|
generic.error.title=Ошибка: %s
|
||||||
generic.error.instruction=Этого не должно было произойти. Создайте отчёт об ошибке ниже и опишите, какие шаги к ней привели.
|
generic.error.instruction=Произошла непредвиденная ситуация. Попробуйте найти уже имеющиеся решения этой ошибки. Если об этой ошибке ещё не сообщали, то сделайте это.
|
||||||
|
generic.error.hyperlink.lookup=Найти ошибку
|
||||||
|
generic.error.hyperlink.report=Сообщить об ошибке
|
||||||
|
generic.error.technicalDetails=Подробности:
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Хранилище
|
defaults.vault.vaultName=Хранилище
|
||||||
@@ -41,7 +44,7 @@ addvaultwizard.new.namePrompt=Имя хранилища
|
|||||||
addvaultwizard.new.locationInstruction=Где Cryptomator должен хранить зашифрованные файлы хранилища?
|
addvaultwizard.new.locationInstruction=Где Cryptomator должен хранить зашифрованные файлы хранилища?
|
||||||
addvaultwizard.new.locationLabel=Место хранения
|
addvaultwizard.new.locationLabel=Место хранения
|
||||||
addvaultwizard.new.locationPrompt=…
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Своё место
|
addvaultwizard.new.directoryPickerLabel=Другое место
|
||||||
addvaultwizard.new.directoryPickerButton=Выбрать…
|
addvaultwizard.new.directoryPickerButton=Выбрать…
|
||||||
addvaultwizard.new.directoryPickerTitle=Выберите папку
|
addvaultwizard.new.directoryPickerTitle=Выберите папку
|
||||||
addvaultwizard.new.fileAlreadyExists=Файл или папка с именем хранилища уже существует
|
addvaultwizard.new.fileAlreadyExists=Файл или папка с именем хранилища уже существует
|
||||||
@@ -51,7 +54,7 @@ addvaultwizard.new.locationIsOk=Подходящее расположение д
|
|||||||
addvaultwizard.new.invalidName=Неверное имя хранилища. Укажите корректное имя папки.
|
addvaultwizard.new.invalidName=Неверное имя хранилища. Укажите корректное имя папки.
|
||||||
### Password
|
### Password
|
||||||
addvaultwizard.new.createVaultBtn=Создать хранилище
|
addvaultwizard.new.createVaultBtn=Создать хранилище
|
||||||
addvaultwizard.new.generateRecoveryKeyChoice=Вы не сможете получить доступ к своим данным без пароля. Хотите создать ключ для восстановления на случай потери пароля?
|
addvaultwizard.new.generateRecoveryKeyChoice=Вы не сможете получить доступ к своим данным без пароля. Хотите создать ключ для восстановления на случай утери пароля?
|
||||||
addvaultwizard.new.generateRecoveryKeyChoice.yes=Да, лучше предостеречься, чем потом жалеть
|
addvaultwizard.new.generateRecoveryKeyChoice.yes=Да, лучше предостеречься, чем потом жалеть
|
||||||
addvaultwizard.new.generateRecoveryKeyChoice.no=Нет, спасибо, я не потеряю пароль
|
addvaultwizard.new.generateRecoveryKeyChoice.no=Нет, спасибо, я не потеряю пароль
|
||||||
### Information
|
### Information
|
||||||
@@ -69,7 +72,7 @@ addvault.new.readme.storageLocation.10=Если вам нужна помощь,
|
|||||||
addvault.new.readme.accessLocation.fileName=ПРИВЕТСТВИЕ.rtf
|
addvault.new.readme.accessLocation.fileName=ПРИВЕТСТВИЕ.rtf
|
||||||
addvault.new.readme.accessLocation.1=🔐️ ЗАШИФРОВАННЫЙ ТОМ 🔐️
|
addvault.new.readme.accessLocation.1=🔐️ ЗАШИФРОВАННЫЙ ТОМ 🔐️
|
||||||
addvault.new.readme.accessLocation.2=Это место доступа к вашему хранилищу.
|
addvault.new.readme.accessLocation.2=Это место доступа к вашему хранилищу.
|
||||||
addvault.new.readme.accessLocation.3=Любые файлы, добавленные в этот том, будут зашифрованы Cryptomator. Вы можете работать с ним как с любым другим диском/папкой. Здесь отображается только расшифрованное содержимое тома, ваши файлы остаются зашифрованными на жёстком диске постоянно.
|
addvault.new.readme.accessLocation.3=Любые файлы, добавленные в этот том, будут зашифрованы Cryptomator. Вы можете работать с ним как с любым другим диском или папкой. Здесь отображается только расшифрованное содержимое тома, ваши файлы остаются зашифрованными на жёстком диске постоянно.
|
||||||
addvault.new.readme.accessLocation.4=Этот файл можно удалить.
|
addvault.new.readme.accessLocation.4=Этот файл можно удалить.
|
||||||
## Existing
|
## Existing
|
||||||
addvaultwizard.existing.instruction=Выберите файл "masterkey.cryptomator" от имеющегося хранилища.
|
addvaultwizard.existing.instruction=Выберите файл "masterkey.cryptomator" от имеющегося хранилища.
|
||||||
@@ -87,7 +90,7 @@ removeVault.confirmBtn=Удалить хранилище
|
|||||||
# Change Password
|
# Change Password
|
||||||
changepassword.title=Изменить пароль
|
changepassword.title=Изменить пароль
|
||||||
changepassword.enterOldPassword=Введите текущий пароль для "%s"
|
changepassword.enterOldPassword=Введите текущий пароль для "%s"
|
||||||
changepassword.finalConfirmation=Я понимаю, что не смогу получить доступ к своим данным, если забуду пароль
|
changepassword.finalConfirmation=Я понимаю, что не смогу получить доступ к данным, если забуду пароль
|
||||||
|
|
||||||
# Forget Password
|
# Forget Password
|
||||||
forgetPassword.title=Не помню пароль
|
forgetPassword.title=Не помню пароль
|
||||||
@@ -95,12 +98,12 @@ forgetPassword.information=Сохранённый пароль от этого
|
|||||||
forgetPassword.confirmBtn=Не помню пароль
|
forgetPassword.confirmBtn=Не помню пароль
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Разблокировать хранилище
|
unlock.title=Разблокировать "%s"
|
||||||
unlock.passwordPrompt=Введите пароль для "%s"
|
unlock.passwordPrompt=Введите пароль для "%s"
|
||||||
unlock.savePassword=Запомнить пароль
|
unlock.savePassword=Запомнить пароль
|
||||||
unlock.unlockBtn=Разблокировать
|
unlock.unlockBtn=Разблокировать
|
||||||
##
|
##
|
||||||
unlock.chooseMasterkey.prompt=Не удалось найти файл masterkey для этого хранилища в ожидаемом месте. Выберите ключевой файл вручную.
|
unlock.chooseMasterkey.prompt=Не удалось найти файл MasterKey для этого хранилища в ожидаемом месте. Выберите ключевой файл вручную.
|
||||||
unlock.chooseMasterkey.filePickerTitle=Выберите файл MasterKey
|
unlock.chooseMasterkey.filePickerTitle=Выберите файл MasterKey
|
||||||
## Success
|
## Success
|
||||||
unlock.success.message=Разблокировка "%s" успешно выполнена! Доступ в хранилище открыт через его виртуальный диск.
|
unlock.success.message=Разблокировка "%s" успешно выполнена! Доступ в хранилище открыт через его виртуальный диск.
|
||||||
@@ -114,7 +117,7 @@ unlock.error.invalidMountPoint.existing=Точка монтирования %s
|
|||||||
|
|
||||||
# Lock
|
# Lock
|
||||||
## Force
|
## Force
|
||||||
lock.forced.heading=Не удалось выполнить мягкую блокировку
|
lock.forced.heading=Ошибка мягкой блокировки
|
||||||
lock.forced.message=Блокировка "%s" невозможна из-за незавершённых операций или открытых файлов. Вы можете заблокировать это хранилище принудительно, однако прерывание ввода-вывода может привести к потере несохранённых данных.
|
lock.forced.message=Блокировка "%s" невозможна из-за незавершённых операций или открытых файлов. Вы можете заблокировать это хранилище принудительно, однако прерывание ввода-вывода может привести к потере несохранённых данных.
|
||||||
lock.forced.confirmBtn=Принудительная блокировка
|
lock.forced.confirmBtn=Принудительная блокировка
|
||||||
## Failure
|
## Failure
|
||||||
@@ -124,13 +127,13 @@ lock.fail.message=Хранилище "%s" не удалось заблокиро
|
|||||||
# Migration
|
# Migration
|
||||||
migration.title=Обновить хранилище
|
migration.title=Обновить хранилище
|
||||||
## Start
|
## Start
|
||||||
migration.start.prompt=Хранилище "%s" нужно преобразовать в более новый формат. Прежде чем продолжить, убедитесь, что нет отложенной синхронизации, которая может повлиять на хранилище.
|
migration.start.prompt=Хранилище "%s" нужно преобразовать в новый формат. Прежде чем продолжить, убедитесь, что нет отложенной синхронизации, которая может повлиять на хранилище.
|
||||||
migration.start.confirm=Да, моё хранилище полностью синхронизировано
|
migration.start.confirm=Да, моё хранилище полностью синхронизировано
|
||||||
## Run
|
## Run
|
||||||
migration.run.enterPassword=Введите пароль для "%s"
|
migration.run.enterPassword=Введите пароль для "%s"
|
||||||
migration.run.startMigrationBtn=Перенести хранилище
|
migration.run.startMigrationBtn=Перенести хранилище
|
||||||
migration.run.progressHint=Это может занять некоторое время…
|
migration.run.progressHint=Это может занять некоторое время…
|
||||||
## Sucess
|
## Success
|
||||||
migration.success.nextStepsInstructions=Перенос "%s" успешно выполнен.\nТеперь можно разблокировать хранилище.
|
migration.success.nextStepsInstructions=Перенос "%s" успешно выполнен.\nТеперь можно разблокировать хранилище.
|
||||||
migration.success.unlockNow=Разблокировать
|
migration.success.unlockNow=Разблокировать
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
@@ -146,27 +149,38 @@ migration.impossible.reason=Хранилище не может быть пере
|
|||||||
migration.impossible.moreInfo=Хранилище по-прежнему можно открыть в более старой версии. Чтобы узнать, как вручную перенести хранилище, посетите
|
migration.impossible.moreInfo=Хранилище по-прежнему можно открыть в более старой версии. Чтобы узнать, как вручную перенести хранилище, посетите
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Проверка состояния хранилища
|
## Start
|
||||||
health.start.introduction=Проверка состояния хранилища это набор проверок для обнаружения и устранения проблем во внутренней структуре хранилища. Обратите внимание, что не все проблемы исправимы. Для проверки необходим пароль хранилища.
|
health.title=Проверка состояния "%s"
|
||||||
health.start.configValid=Файл конфигурации хранилища успешно прочитан и обработан. Переход к выбору проверок.
|
health.intro.header=Проверка состояния
|
||||||
health.start.configInvalid=Ошибка при чтении и разборе файла конфигурации хранилища.
|
health.intro.text=Проверка состояния это набор тестов для обнаружения и, возможно, исправления проблем во внутренней структуре хранилища. Помните:
|
||||||
health.checkList.header=Доступные проверки состояния
|
health.intro.remarkSync=Убедитесь, что все устройства полностью синхронизированы, это решает большинство проблем.
|
||||||
health.checkList.selectAllBox=Выбрать все
|
health.intro.remarkFix=Не все проблемы могут быть исправлены.
|
||||||
|
health.intro.remarkBackup=Если данные повреждены, помочь может только резервная копия.
|
||||||
|
health.intro.affirmation=Информация выше мною прочитана и понятна
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Ошибка при загрузке конфигурации хранилища
|
||||||
|
health.fail.ioError=Ошибка при доступе и чтении конфигурационного файла.
|
||||||
|
health.fail.parseError=Ошибка при разборе конфигурации хранилища.
|
||||||
|
health.fail.moreInfo=Подробнее
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Выберите проверки в списке слева или используйте кнопки ниже.
|
||||||
|
health.checkList.selectAllButton=Выбрать все проверки
|
||||||
|
health.checkList.deselectAllButton=Отменить выбор всех проверок
|
||||||
health.check.runBatchBtn=Выполнить выбранные проверки
|
health.check.runBatchBtn=Выполнить выбранные проверки
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.noSelectedCheck=Для результатов выберите завершённую проверку состояния в списке слева.
|
health.check.detail.noSelectedCheck=Для результатов выберите завершённую проверку состояния в списке слева.
|
||||||
health.check.detail.header=Результаты: %s
|
health.check.detail.checkScheduled=Проверка запланирована.
|
||||||
health.check.detail.taskNotStarted=Проверка не была выбрана для запуска.
|
health.check.detail.checkRunning=Проверка выполняется…
|
||||||
health.check.detail.taskScheduled=Проверка запланирована.
|
health.check.detail.checkSkipped=Проверка не была выбрана для запуска.
|
||||||
health.check.detail.taskRunning=Проверка выполняется…
|
health.check.detail.checkFinished=Проверка успешно завершена.
|
||||||
health.check.detail.taskSucceeded=Проверка успешно завершена через %d мс.
|
health.check.detail.checkFinishedAndFound=Проверка завершена. Ознакомьтесь с результатами.
|
||||||
health.check.detail.taskFailed=Проверка завершилась из-за ошибки.
|
health.check.detail.checkFailed=Проверка прервана из-за ошибки.
|
||||||
health.check.detail.taskCancelled=Проверка была отменена.
|
health.check.detail.checkCancelled=Проверка была отменена.
|
||||||
health.check.detail.problemCount=Проблем: %d. Неисправимых ошибок: %d.
|
|
||||||
health.check.exportBtn=Экспорт отчёта
|
health.check.exportBtn=Экспорт отчёта
|
||||||
health.check.fixBtn=Исправить
|
## Fix Application
|
||||||
## Checks
|
health.fix.fixBtn=Исправить
|
||||||
health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Проверка папок
|
health.fix.successTip=Исправлено
|
||||||
|
health.fix.failTip=Не исправлено, подробности в журнале
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Настройки
|
preferences.title=Настройки
|
||||||
@@ -177,17 +191,13 @@ preferences.general.theme.automatic=Автоматически
|
|||||||
preferences.general.theme.light=Светлая
|
preferences.general.theme.light=Светлая
|
||||||
preferences.general.theme.dark=Тёмная
|
preferences.general.theme.dark=Тёмная
|
||||||
preferences.general.unlockThemes=Разблокировать тёмный режим
|
preferences.general.unlockThemes=Разблокировать тёмный режим
|
||||||
preferences.general.showMinimizeButton=Показать кнопку сворачивания
|
preferences.general.showMinimizeButton=Показывать кнопку сворачивания
|
||||||
preferences.general.showTrayIcon=Показать значок в панели задач (требуется перезапуск)
|
preferences.general.showTrayIcon=Показывать значок в панели задач (требуется перезапуск)
|
||||||
preferences.general.startHidden=Скрывать окно при запуске Cryptomator
|
preferences.general.startHidden=Скрывать окно при запуске Cryptomator
|
||||||
preferences.general.debugLogging=Вести журнал отладки
|
preferences.general.debugLogging=Вести журнал отладки
|
||||||
preferences.general.debugDirectory=Показать файлы журнала
|
preferences.general.debugDirectory=Показать файлы журнала
|
||||||
preferences.general.autoStart=Запускать Cryptomator при старте системы
|
preferences.general.autoStart=Запускать Cryptomator при старте системы
|
||||||
preferences.general.keychainBackend=Хранение паролей
|
preferences.general.keychainBackend=Хранение паролей
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Связка ключей Gnome
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=Хранилище ключей KDE
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=Доступ к связке ключей macOS
|
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Защита данных Windows
|
|
||||||
preferences.general.interfaceOrientation=Интерфейс
|
preferences.general.interfaceOrientation=Интерфейс
|
||||||
preferences.general.interfaceOrientation.ltr=Слева направо
|
preferences.general.interfaceOrientation.ltr=Слева направо
|
||||||
preferences.general.interfaceOrientation.rtl=Справа налево
|
preferences.general.interfaceOrientation.rtl=Справа налево
|
||||||
@@ -214,10 +224,10 @@ preferences.contribute.promptText=Вставьте сюда код сертиф
|
|||||||
preferences.about=О программе
|
preferences.about=О программе
|
||||||
|
|
||||||
# Vault Statistics
|
# Vault Statistics
|
||||||
stats.title=Статистика по %s
|
stats.title=Статистика: %s
|
||||||
stats.cacheHitRate=Частота попаданий кэша
|
stats.cacheHitRate=Частота попаданий кэша
|
||||||
## Read
|
## Read
|
||||||
stats.read.throughput.idle=Чтение: бездействие
|
stats.read.throughput.idle=Чтение: -
|
||||||
stats.read.throughput.kibs=Чтение: %.2f КиБ/с
|
stats.read.throughput.kibs=Чтение: %.2f КиБ/с
|
||||||
stats.read.throughput.mibs=Чтение: %.2f МиБ/с
|
stats.read.throughput.mibs=Чтение: %.2f МиБ/с
|
||||||
stats.read.total.data.none=Прочитано: -
|
stats.read.total.data.none=Прочитано: -
|
||||||
@@ -228,12 +238,12 @@ stats.decr.total.data.none=Расшифровано: -
|
|||||||
stats.decr.total.data.kib=Расшифровано: %.1f КиБ
|
stats.decr.total.data.kib=Расшифровано: %.1f КиБ
|
||||||
stats.decr.total.data.mib=Расшифровано: %.1f МиБ
|
stats.decr.total.data.mib=Расшифровано: %.1f МиБ
|
||||||
stats.decr.total.data.gib=Расшифровано: %.1f ГиБ
|
stats.decr.total.data.gib=Расшифровано: %.1f ГиБ
|
||||||
stats.read.accessCount=Всего операций чтения: %d
|
stats.read.accessCount=Всего чтений: %d
|
||||||
## Write
|
## Write
|
||||||
stats.write.throughput.idle=Запись: бездействие
|
stats.write.throughput.idle=Запись: -
|
||||||
stats.write.throughput.kibs=Запись: %.2f КиБ/с
|
stats.write.throughput.kibs=Запись: %.2f КиБ/с
|
||||||
stats.write.throughput.mibs=Запись: %.2f МиБ/с
|
stats.write.throughput.mibs=Запись: %.2f МиБ/с
|
||||||
stats.write.total.data.none=Записано данных: -
|
stats.write.total.data.none=Записано: -
|
||||||
stats.write.total.data.kib=Записано: %.1f КиБ
|
stats.write.total.data.kib=Записано: %.1f КиБ
|
||||||
stats.write.total.data.mib=Записано: %.1f МиБ
|
stats.write.total.data.mib=Записано: %.1f МиБ
|
||||||
stats.write.total.data.gib=Записано: %.1f ГиБ
|
stats.write.total.data.gib=Записано: %.1f ГиБ
|
||||||
@@ -241,7 +251,7 @@ stats.encr.total.data.none=Зашифровано: -
|
|||||||
stats.encr.total.data.kib=Зашифровано: %.1f КиБ
|
stats.encr.total.data.kib=Зашифровано: %.1f КиБ
|
||||||
stats.encr.total.data.mib=Зашифровано: %.1f МиБ
|
stats.encr.total.data.mib=Зашифровано: %.1f МиБ
|
||||||
stats.encr.total.data.gib=Зашифровано: %.1f ГиБ
|
stats.encr.total.data.gib=Зашифровано: %.1f ГиБ
|
||||||
stats.write.accessCount=Всего операций записи: %d
|
stats.write.accessCount=Всего записей: %d
|
||||||
|
|
||||||
# Main Window
|
# Main Window
|
||||||
main.closeBtn.tooltip=Закрыть
|
main.closeBtn.tooltip=Закрыть
|
||||||
@@ -304,19 +314,22 @@ wrongFileAlert.link=Если нужна помощь, посетите
|
|||||||
## General
|
## General
|
||||||
vaultOptions.general=Общие
|
vaultOptions.general=Общие
|
||||||
vaultOptions.general.vaultName=Имя хранилища
|
vaultOptions.general.vaultName=Имя хранилища
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Блокировать при бездействии
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=мин
|
||||||
vaultOptions.general.unlockAfterStartup=Разблокировать хранилище при запуске Cryptomator
|
vaultOptions.general.unlockAfterStartup=Разблокировать хранилище при запуске Cryptomator
|
||||||
vaultOptions.general.actionAfterUnlock=После успешной разблокировки
|
vaultOptions.general.actionAfterUnlock=После успешной разблокировки
|
||||||
vaultOptions.general.actionAfterUnlock.ignore=Ничего не делать
|
vaultOptions.general.actionAfterUnlock.ignore=Ничего не делать
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Показать диск
|
vaultOptions.general.actionAfterUnlock.reveal=Показать диск
|
||||||
vaultOptions.general.actionAfterUnlock.ask=Спрашивать
|
vaultOptions.general.actionAfterUnlock.ask=Спрашивать
|
||||||
vaultOptions.general.healthBtn=Начать проверку состояния
|
vaultOptions.general.startHealthCheckBtn=Начать проверку состояния
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount=Монтирование
|
vaultOptions.mount=Монтирование
|
||||||
vaultOptions.mount.readonly=Только чтение
|
vaultOptions.mount.readonly=Только чтение
|
||||||
vaultOptions.mount.customMountFlags=Свои флаги монтирования
|
vaultOptions.mount.customMountFlags=Другие флаги монтирования
|
||||||
vaultOptions.mount.winDriveLetterOccupied=занято
|
vaultOptions.mount.winDriveLetterOccupied=занято
|
||||||
vaultOptions.mount.mountPoint=Точка монтирования
|
vaultOptions.mount.mountPoint=Точка монтирования
|
||||||
vaultOptions.mount.mountPoint.auto=Автоматически выбирать подходящее расположение
|
vaultOptions.mount.mountPoint.auto=Автовыбор подходящего расположения
|
||||||
vaultOptions.mount.mountPoint.driveLetter=Использовать назначенную букву диска
|
vaultOptions.mount.mountPoint.driveLetter=Использовать назначенную букву диска
|
||||||
vaultOptions.mount.mountPoint.custom=Свой путь
|
vaultOptions.mount.mountPoint.custom=Свой путь
|
||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Выбрать…
|
vaultOptions.mount.mountPoint.directoryPickerButton=Выбрать…
|
||||||
@@ -325,13 +338,10 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=Выберите пустую
|
|||||||
vaultOptions.masterkey=Пароль
|
vaultOptions.masterkey=Пароль
|
||||||
vaultOptions.masterkey.changePasswordBtn=Изменить пароль
|
vaultOptions.masterkey.changePasswordBtn=Изменить пароль
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Забыть сохранённый пароль
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Забыть сохранённый пароль
|
||||||
vaultOptions.masterkey.recoveryKeyExpanation=Ключ восстановления - это единственный способ восстановить доступ к хранилищу при утере пароля.
|
vaultOptions.masterkey.recoveryKeyExplanation=При утере пароля восстановить доступ к хранилищу можно только с помощью ключа восстановления.
|
||||||
vaultOptions.masterkey.showRecoveryKeyBtn=Показать ключ восстановления
|
vaultOptions.masterkey.showRecoveryKeyBtn=Показать ключ восстановления
|
||||||
vaultOptions.masterkey.recoverPasswordBtn=Восстановить пароль
|
vaultOptions.masterkey.recoverPasswordBtn=Восстановить пароль
|
||||||
## Auto Lock
|
|
||||||
vaultOptions.autoLock=Автоблок
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart1=Блокировать при бездействии
|
|
||||||
vaultOptions.autoLock.lockAfterTimePart2=мин
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
recoveryKey.title=Ключ восстановления
|
recoveryKey.title=Ключ восстановления
|
||||||
|
|||||||
@@ -13,8 +13,11 @@ generic.button.done=Hotovo
|
|||||||
generic.button.next=Ďalej
|
generic.button.next=Ďalej
|
||||||
generic.button.print=Tlač
|
generic.button.print=Tlač
|
||||||
## Error
|
## Error
|
||||||
generic.error.title=Vyskytla sa neočakávaná chyba
|
generic.error.title=Chyba %s
|
||||||
generic.error.instruction=Toto sa nemalo stať. Nahláste text chyby uvedený nižšie a uveďte popis krokov, ktoré viedli k tejto chybe.
|
generic.error.instruction=Ejha! Cryptomator toto neočakával. Môžte nahliadnuť do existujúcich riešení tejto chyby. Alebo v prípade že zatiaľ nebola nahlásená, môžte to slobodne urobiť.
|
||||||
|
generic.error.hyperlink.lookup=Vyhľadať túto chybu
|
||||||
|
generic.error.hyperlink.report=Nahlásiť túto chybu
|
||||||
|
generic.error.technicalDetails=Podrobnosti:
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
defaults.vault.vaultName=Trezor
|
defaults.vault.vaultName=Trezor
|
||||||
@@ -40,9 +43,14 @@ addvaultwizard.new.namePrompt=Názov trezoru
|
|||||||
### Location
|
### Location
|
||||||
addvaultwizard.new.locationInstruction=Kde by mal Cryptomator uchovávať šifrované súbory vášho trezoru?
|
addvaultwizard.new.locationInstruction=Kde by mal Cryptomator uchovávať šifrované súbory vášho trezoru?
|
||||||
addvaultwizard.new.locationLabel=Umiestnenie úložiska
|
addvaultwizard.new.locationLabel=Umiestnenie úložiska
|
||||||
|
addvaultwizard.new.locationPrompt=…
|
||||||
addvaultwizard.new.directoryPickerLabel=Vlastné umiestnenie
|
addvaultwizard.new.directoryPickerLabel=Vlastné umiestnenie
|
||||||
addvaultwizard.new.directoryPickerButton=Vybrať…
|
addvaultwizard.new.directoryPickerButton=Vybrať…
|
||||||
addvaultwizard.new.directoryPickerTitle=Vybrať adresár
|
addvaultwizard.new.directoryPickerTitle=Vybrať adresár
|
||||||
|
addvaultwizard.new.fileAlreadyExists=Súbor alebo adresár s menom trezoru už existuje
|
||||||
|
addvaultwizard.new.locationDoesNotExist=Adresár na danej ceste neexistuje alebo nie je dostupný
|
||||||
|
addvaultwizard.new.locationIsNotWritable=Nie je umožnený zápis na danej ceste
|
||||||
|
addvaultwizard.new.locationIsOk=Vhodné umiestnenie pre Váš trezor
|
||||||
addvaultwizard.new.invalidName=Neplatný názov trezoru. Zvážte bežný názov adresára.
|
addvaultwizard.new.invalidName=Neplatný názov trezoru. Zvážte bežný názov adresára.
|
||||||
### Password
|
### Password
|
||||||
addvaultwizard.new.createVaultBtn=Vytvoriť trezor
|
addvaultwizard.new.createVaultBtn=Vytvoriť trezor
|
||||||
@@ -90,18 +98,19 @@ forgetPassword.information=Týmto vymažete uložené heslo tohto trezoru z vá
|
|||||||
forgetPassword.confirmBtn=Zabudnuté heslo
|
forgetPassword.confirmBtn=Zabudnuté heslo
|
||||||
|
|
||||||
# Unlock
|
# Unlock
|
||||||
unlock.title=Odomknúť trezor
|
unlock.title=Odomknúť "%s"
|
||||||
unlock.passwordPrompt=Zadajte heslo pre "%s":
|
unlock.passwordPrompt=Zadajte heslo pre "%s":
|
||||||
unlock.savePassword=Odomknúť.uložiťHeslo
|
unlock.savePassword=Odomknúť.uložiťHeslo
|
||||||
unlock.unlockBtn=Odomknúť
|
unlock.unlockBtn=Odomknúť
|
||||||
##
|
##
|
||||||
unlock.chooseMasterkey.prompt=Nemožno nájsť hlavný kľúčový súbor pre túto peňaženku na jej očakávanom mieste. Prosím zvoľte kľúčový súbor manuálne.
|
unlock.chooseMasterkey.prompt=Nemožno nájsť hlavný kľúčový súbor pre tento trezor na jeho očakávanom mieste. Prosím zvoľte kľúčový súbor manuálne.
|
||||||
unlock.chooseMasterkey.filePickerTitle=Zvoľte hlavný kľúčový súbor
|
unlock.chooseMasterkey.filePickerTitle=Zvoľte hlavný kľúčový súbor
|
||||||
## Success
|
## Success
|
||||||
unlock.success.message=Odomknutie "%s" úspešné! Vaša peňaženka je už prístupná cez jej virtuálny disk.
|
unlock.success.message=Odomknutie "%s" úspešné! Váš trezor je už prístupný cez jeho virtuálny disk.
|
||||||
unlock.success.revealBtn=Odkry disk
|
unlock.success.rememberChoice=Zapamätať voľbu, už viac nezobrazovať
|
||||||
|
unlock.success.revealBtn=Odkryť disk
|
||||||
## Failure
|
## Failure
|
||||||
unlock.error.heading=Nie je možné odomknúť účet
|
unlock.error.heading=Nie je možné odomknúť trezor
|
||||||
### Invalid Mount Point
|
### Invalid Mount Point
|
||||||
unlock.error.invalidMountPoint.notExisting=Bod pripojenia "%s" nie je adresár, nie je prázdny alebo neexistuje.
|
unlock.error.invalidMountPoint.notExisting=Bod pripojenia "%s" nie je adresár, nie je prázdny alebo neexistuje.
|
||||||
unlock.error.invalidMountPoint.existing=Bod pripojenia "%s" už existuje alebo chýba nadradený adresár.
|
unlock.error.invalidMountPoint.existing=Bod pripojenia "%s" už existuje alebo chýba nadradený adresár.
|
||||||
@@ -109,55 +118,100 @@ unlock.error.invalidMountPoint.existing=Bod pripojenia "%s" už existuje alebo c
|
|||||||
# Lock
|
# Lock
|
||||||
## Force
|
## Force
|
||||||
lock.forced.heading=Bežné uzamknutie zlyhalo
|
lock.forced.heading=Bežné uzamknutie zlyhalo
|
||||||
lock.forced.message=Zamknutie "%s" bolo zablokované prebiehajúcimi operáciami alebo otvorenými súbormi. Smiete vynútiť uzamknutie tejto peňaženky, ale prerušením I/O môže viesť k strate alebo neuloženiu dát.
|
lock.forced.message=Zamknutie "%s" bolo zablokované prebiehajúcimi operáciami alebo otvorenými súbormi. Smiete vynútiť uzamknutie tohto trezoru, ale prerušením I/O môže viesť k strate alebo neuloženiu dát.
|
||||||
lock.forced.confirmBtn=Vynútené uzamknutie
|
lock.forced.confirmBtn=Vynútené uzamknutie
|
||||||
## Failure
|
## Failure
|
||||||
lock.fail.heading=Uzatváranie peňaženky zlyhalo.
|
lock.fail.heading=Uzatváranie trezoru zlyhalo.
|
||||||
lock.fail.message=Peňaženku "%s" nie je možné uzamknúť. Uistite sa že neuložená páca je uložená inde a dôležité Read/Write operácie sú ukončené. Ináč uzavretím peňaženky, ukončíte proces Cryptomator-a.
|
lock.fail.message=Trezor "%s" nie je možné uzamknúť. Uistite sa že neuložená páca je uložená inde a dôležité Read/Write operácie sú ukončené. Ináč uzavretím trezoru, ukončíte proces Cryptomator-a.
|
||||||
|
|
||||||
# Migration
|
# Migration
|
||||||
|
migration.title=Aktualizácia trezora
|
||||||
## Start
|
## Start
|
||||||
|
migration.start.prompt=Váš trezor "%s" vyžaduje aktualizáciu na novší formát. Pred pokračovaním sa uistite že neprebieha synchronizácia ovplyvňujúca tento trezor.
|
||||||
|
migration.start.confirm=Áno, môj trezor je plne synchronizovaný
|
||||||
## Run
|
## Run
|
||||||
## Sucess
|
migration.run.enterPassword=Zadajte heslo pre "%s"
|
||||||
|
migration.run.startMigrationBtn=Migrovať trezor
|
||||||
|
migration.run.progressHint=Toto môže trvať nejaký čas…
|
||||||
|
## Success
|
||||||
|
migration.success.nextStepsInstructions=Migrované "%s" úspešne.\nTeraz môžte odomknúť Váš trezor.
|
||||||
migration.success.unlockNow=Odomknúť teraz
|
migration.success.unlockNow=Odomknúť teraz
|
||||||
## Missing file system capabilities
|
## Missing file system capabilities
|
||||||
|
migration.error.missingFileSystemCapabilities.title=Nepodporovaný súborový systém
|
||||||
|
migration.error.missingFileSystemCapabilities.description=Migrácia nezačala, pretože Váš trezor je umiestnený na neadekvátnom súborovom systéme.
|
||||||
|
migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=Súborový systém nepodporuje dlhé názvy súborov.
|
||||||
|
migration.error.missingFileSystemCapabilities.reason.LONG_PATHS=Súborový systém nepodporuje dlhé cesty.
|
||||||
|
migration.error.missingFileSystemCapabilities.reason.READ_ACCESS=Súborový systém neumožňuje čítanie.
|
||||||
|
migration.error.missingFileSystemCapabilities.reason.WRITE_ACCESS=Súborový systém neumožňuje zápis.
|
||||||
## Impossible
|
## Impossible
|
||||||
|
migration.impossible.heading=Nie je možná migrácia trezora
|
||||||
|
migration.impossible.reason=Trezor nie je možné automaticky migrovať pretože jeho umiestnenie alebo prístupový bod nie je kompatibilný.
|
||||||
|
migration.impossible.moreInfo=Trezor je naďalej možné otvátať so staršou verziou. Pre inštrukcie ako manuálne migrovať trezor navštívte
|
||||||
|
|
||||||
# Health Check
|
# Health Check
|
||||||
health.title=Kontrola zdravia peňaženky
|
## Start
|
||||||
health.start.introduction=Kontrola zdravia peňaženky je súhrn kontrol na detekciu a prípadnú opravu problémov vo vnútornej štruktúre Vášhej peňaženky. Prosím majte na pamäti že nie všetky problémy sú opravitelné. Potrebujete heslo peňaženky k vykonaniu kontrol.
|
health.title=Kontrola zdravia "%s"
|
||||||
health.start.configValid=Čítanie a analýza konfigurácie súboru peňaženky bola úspešná. Pokračovať k výberu kontrol.
|
health.intro.header=Kontrola zdravia
|
||||||
health.start.configInvalid=Chyba počas čítania a analýzy konfiguračného súboru peňaženky.
|
health.intro.text=Kontrola zdravia je súbor kontrol pre detekciu a možné opravy problémov v internej štrukúre Vášho trezora. Prosím majte na pamäti:
|
||||||
health.checkList.header=Dostupné kontroly zdravia
|
health.intro.remarkSync=Uistite sa že všetky zariadenia sú úplne synchronizované, toto rieši väčšinu problémov.
|
||||||
health.checkList.selectAllBox=Označiť všetko
|
health.intro.remarkFix=Nie všetky problémy sa dajú opraviť.
|
||||||
|
health.intro.remarkBackup=Ak sú dáta poškodené, môže pomôcť iba záloha.
|
||||||
|
health.intro.affirmation=Čítal som a rozumiem informáciam uvedeným vyššie
|
||||||
|
## Start Failure
|
||||||
|
health.fail.header=Chyba pri načítaní konfigurácie trezora
|
||||||
|
health.fail.ioError=Vyskytla sa chyba počas prístupu a čítania konfiguračného súboru.
|
||||||
|
health.fail.parseError=Vyskytla sa chyba počas analýzy konfigurácie trezora.
|
||||||
|
health.fail.moreInfo=Viac informácií
|
||||||
|
## Check Selection
|
||||||
|
health.checkList.description=Vyberte kontroly zo zoznamu vľavo alebo použite tlačítka nižšie.
|
||||||
|
health.checkList.selectAllButton=Vybrať všetky kontroly
|
||||||
|
health.checkList.deselectAllButton=Zrušiť výber všetkých kontrol
|
||||||
health.check.runBatchBtn=Spustiť vybrané kontroly
|
health.check.runBatchBtn=Spustiť vybrané kontroly
|
||||||
## Detail view
|
## Detail view
|
||||||
health.check.detail.noSelectedCheck=Pre výsledky označte ukončenú kontrolu zdravia v zozname na ľavo.
|
health.check.detail.noSelectedCheck=Pre výsledky označte ukončenú kontrolu zdravia v zozname na ľavo.
|
||||||
health.check.detail.header=Výsledky %s
|
health.check.detail.checkScheduled=Kontrola je naplánovaná.
|
||||||
health.check.detail.taskNotStarted=Nebola zvolená žiadna kontrola k vykonaniu.
|
health.check.detail.checkRunning=Kontrola aktuálne prebieha…
|
||||||
health.check.detail.taskScheduled=Kontrola bola naplánovaná.
|
health.check.detail.checkSkipped=Nebola vybraná žiadna kontrola.
|
||||||
health.check.detail.taskRunning=Kontrola práve prebieha…
|
health.check.detail.checkFinished=Kontrola skončila úspešne.
|
||||||
health.check.detail.taskSucceeded=Kontrola úspešne ukončená po %d milisekundách.
|
health.check.detail.checkFinishedAndFound=Kontrola skončila. Prosím pozrite si jej výsledky.
|
||||||
health.check.detail.taskFailed=Kontrola ukončená z dôvodu chyby.
|
health.check.detail.checkFailed=Kontrola skončila kôli chybe.
|
||||||
health.check.detail.taskCancelled=Kontrola bola zrušená.
|
health.check.detail.checkCancelled=Kontrola bola zrušená.
|
||||||
health.check.detail.problemCount=Nájdených %d problémov a %d neopravených chýb.
|
|
||||||
health.check.exportBtn=Exportovať správu
|
health.check.exportBtn=Exportovať správu
|
||||||
health.check.fixBtn=Opraviť
|
## Fix Application
|
||||||
## Checks
|
health.fix.fixBtn=Opraviť
|
||||||
health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Kontrola katalógu
|
health.fix.successTip=Oprava úspešná
|
||||||
|
health.fix.failTip=Oprava zlyhala, pre detaily pozrite log-y
|
||||||
|
|
||||||
# Preferences
|
# Preferences
|
||||||
preferences.title=Predvoľby
|
preferences.title=Predvoľby
|
||||||
## General
|
## General
|
||||||
|
preferences.general=Hlavné
|
||||||
|
preferences.general.theme=Vzhĺad a pocit
|
||||||
preferences.general.theme.automatic=Automaticky
|
preferences.general.theme.automatic=Automaticky
|
||||||
preferences.general.showMinimizeButton=Predvoľba.hlavná.ukážMinimalizujTlačítko
|
preferences.general.theme.light=Svetlý
|
||||||
preferences.general.showTrayIcon=Predvoľba.hlavná.ukážIkonaSytémovejlišty
|
preferences.general.theme.dark=Tmavý
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gnome klúčenka
|
preferences.general.unlockThemes=Odomknúť tmavý mód
|
||||||
preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=KDE účet
|
preferences.general.showMinimizeButton=Ukáž minimalizačné tlačidlo
|
||||||
preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=maccOS reťazový prístup
|
preferences.general.showTrayIcon=Ukáž ikonu sytémovej lišty (vyžaduje reštart)
|
||||||
preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Windows ochrana dát
|
preferences.general.startHidden=Skryť okno počas štartu Cryptomator-a
|
||||||
|
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.interfaceOrientation=Orientácia rozhrania
|
||||||
|
preferences.general.interfaceOrientation.ltr=Zľava do prava
|
||||||
|
preferences.general.interfaceOrientation.rtl=Zprava do ľava
|
||||||
## Volume
|
## Volume
|
||||||
|
preferences.volume=Virtuálny disk
|
||||||
|
preferences.volume.type=Typ obsahu
|
||||||
|
preferences.volume.webdav.port=WebDAV port
|
||||||
|
preferences.volume.webdav.scheme=WebDAV schéma
|
||||||
## Updates
|
## Updates
|
||||||
|
preferences.updates=Aktualizácie
|
||||||
|
preferences.updates.currentVersion=Aktuálna verzia: %s
|
||||||
|
preferences.updates.autoUpdateCheck=Automatická kontrola aktualizácii
|
||||||
|
preferences.updates.checkNowBtn=Skontroluj teraz
|
||||||
|
preferences.updates.updateAvailable=Možnosť aktualizácie na verziu %s.
|
||||||
## Contribution
|
## Contribution
|
||||||
preferences.contribute=Podporte nás
|
preferences.contribute=Podporte nás
|
||||||
preferences.contribute.registeredFor=Certifikát podporovateľa registrovaný na %s
|
preferences.contribute.registeredFor=Certifikát podporovateľa registrovaný na %s
|
||||||
@@ -167,6 +221,7 @@ preferences.contribute.promptText=Vlož sem kód certifikátu podporovateľa
|
|||||||
#<-- Add entries for donations and code/translation/documentation contribution -->
|
#<-- Add entries for donations and code/translation/documentation contribution -->
|
||||||
|
|
||||||
## About
|
## About
|
||||||
|
preferences.about=O programe
|
||||||
|
|
||||||
# Vault Statistics
|
# Vault Statistics
|
||||||
stats.title=Štatistiky pre %s
|
stats.title=Štatistiky pre %s
|
||||||
@@ -200,53 +255,115 @@ stats.write.accessCount=Suma zápisov: %d
|
|||||||
|
|
||||||
# Main Window
|
# Main Window
|
||||||
main.closeBtn.tooltip=Zavrieť
|
main.closeBtn.tooltip=Zavrieť
|
||||||
|
main.minimizeBtn.tooltip=Minimalizovať
|
||||||
main.preferencesBtn.tooltip=Predvoľby
|
main.preferencesBtn.tooltip=Predvoľby
|
||||||
main.debugModeEnabled.tooltip=Debagovací mód je aktivovaný
|
main.debugModeEnabled.tooltip=Debagovací mód je aktivovaný
|
||||||
|
main.donationKeyMissing.tooltip=Prosím zvážte obdarovanie
|
||||||
## Drag 'n' Drop
|
## Drag 'n' Drop
|
||||||
|
main.dropZone.dropVault=Pridať tento trezor
|
||||||
|
main.dropZone.unknownDragboardContent=Ak chcete pridať tento trezor, potiahnite ho do tohto okna
|
||||||
## Vault List
|
## Vault List
|
||||||
main.vaultlist.contextMenu.remove=Odstráň…
|
main.vaultlist.emptyList.onboardingInstruction=Kliknite sem pre pridanie trezora
|
||||||
|
main.vaultlist.contextMenu.remove=Odstrániť…
|
||||||
main.vaultlist.contextMenu.lock=Uzamknúť
|
main.vaultlist.contextMenu.lock=Uzamknúť
|
||||||
main.vaultlist.contextMenu.unlock=Odomknúť…
|
main.vaultlist.contextMenu.unlock=Odomknúť…
|
||||||
main.vaultlist.contextMenu.unlockNow=Odomknúť teraz
|
main.vaultlist.contextMenu.unlockNow=Odomknúť teraz
|
||||||
main.vaultlist.contextMenu.vaultoptions=Ukáž možnosti peňaženky
|
main.vaultlist.contextMenu.vaultoptions=Ukáž možnosti trezora
|
||||||
main.vaultlist.contextMenu.reveal=Odkry disk
|
main.vaultlist.contextMenu.reveal=Odkry disk
|
||||||
main.vaultlist.addVaultBtn=Pridať trezor
|
main.vaultlist.addVaultBtn=Pridať trezor
|
||||||
## Vault Detail
|
## Vault Detail
|
||||||
### Welcome
|
### Welcome
|
||||||
|
main.vaultDetail.welcomeOnboarding=Ďakujeme Vám že ste si zvolili Cryptomator pre ochranu Vaších súborov. Ak potrebujete akúkoľvek pomoc, pozrite si našu príručku ako začať:
|
||||||
### Locked
|
### Locked
|
||||||
|
main.vaultDetail.lockedStatus=Uzamknutý
|
||||||
main.vaultDetail.unlockBtn=Odomknúť…
|
main.vaultDetail.unlockBtn=Odomknúť…
|
||||||
main.vaultDetail.unlockNowBtn=Odomknúť teraz
|
main.vaultDetail.unlockNowBtn=Odomknúť teraz
|
||||||
|
main.vaultDetail.optionsBtn=Nastavenia trezora
|
||||||
main.vaultDetail.passwordSavedInKeychain=Heslo uložené
|
main.vaultDetail.passwordSavedInKeychain=Heslo uložené
|
||||||
### Unlocked
|
### Unlocked
|
||||||
|
main.vaultDetail.unlockedStatus=Odomknutý
|
||||||
|
main.vaultDetail.accessLocation=Obsah Vášho trezora je dostupný tu:
|
||||||
main.vaultDetail.revealBtn=Odkry disk
|
main.vaultDetail.revealBtn=Odkry disk
|
||||||
main.vaultDetail.lockBtn=Uzamknúť
|
main.vaultDetail.lockBtn=Uzamknúť
|
||||||
main.vaultDetail.bytesPerSecondRead=Čítanie:
|
main.vaultDetail.bytesPerSecondRead=Čítanie:
|
||||||
main.vaultDetail.bytesPerSecondWritten=Zápis:
|
main.vaultDetail.bytesPerSecondWritten=Zápis:
|
||||||
main.vaultDetail.stats=Štatistiky účtu
|
main.vaultDetail.throughput.idle=nečinný
|
||||||
|
main.vaultDetail.throughput.kbps=%.1f kiB/s
|
||||||
|
main.vaultDetail.throughput.mbps=%.1f MiB/s
|
||||||
|
main.vaultDetail.stats=Štatistiky trezora
|
||||||
### Missing
|
### Missing
|
||||||
|
main.vaultDetail.missing.info=Cryptomator nevie nájsť trezor na tejto ceste.
|
||||||
main.vaultDetail.missing.recheck=Prekontrolovať
|
main.vaultDetail.missing.recheck=Prekontrolovať
|
||||||
main.vaultDetail.missing.remove=Odstrániť zo zoznamu peňaženky…
|
main.vaultDetail.missing.remove=Odstrániť zo zoznamu trezora…
|
||||||
|
main.vaultDetail.missing.changeLocation=Zmeniť umiestnenie trezora…
|
||||||
### Needs Migration
|
### Needs Migration
|
||||||
|
main.vaultDetail.migrateButton=Aktualizácia trezora
|
||||||
|
main.vaultDetail.migratePrompt=Váš trezor vyžaduje aktualizáciu na nový formát predtým ako ho použijete
|
||||||
|
|
||||||
# Wrong File Alert
|
# Wrong File Alert
|
||||||
|
wrongFileAlert.title=Ako zašifrovať súbory
|
||||||
|
wrongFileAlert.header.title=Pokúšate sa dešifrovať tieto súbory?
|
||||||
|
wrongFileAlert.header.lead=Pre tento účel Cryptomator poskytuje zväzok vo Vašom súborovom menežérovi.
|
||||||
|
wrongFileAlert.instruction.0=Pre zašifrovanie súborov - postupujte týmito krokmi:
|
||||||
|
wrongFileAlert.instruction.1=1. Odomknúť Váš trezor.
|
||||||
|
wrongFileAlert.instruction.2=2. Kliknúť na "Odkryť" pre otvorenie zväzku v súborovom menežérovi.
|
||||||
|
wrongFileAlert.instruction.3=3. Pridať Vaše súbory do tohto zväzku.
|
||||||
|
wrongFileAlert.link=Pre ďalšiu asistenciu, navštívte
|
||||||
|
|
||||||
# Vault Options
|
# Vault Options
|
||||||
## General
|
## General
|
||||||
|
vaultOptions.general=Hlavné
|
||||||
vaultOptions.general.vaultName=Názov trezoru
|
vaultOptions.general.vaultName=Názov trezoru
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart1=Uzamknutie po uplynutí nečinnosti
|
||||||
|
vaultOptions.general.autoLock.lockAfterTimePart2=minút
|
||||||
|
vaultOptions.general.unlockAfterStartup=Odomknúť trezor pri spustení Cryptomator-a
|
||||||
|
vaultOptions.general.actionAfterUnlock=Po úspešnom odomknutí
|
||||||
|
vaultOptions.general.actionAfterUnlock.ignore=Nič nerob
|
||||||
vaultOptions.general.actionAfterUnlock.reveal=Odkry disk
|
vaultOptions.general.actionAfterUnlock.reveal=Odkry disk
|
||||||
vaultOptions.general.healthBtn=Spustiť kontrolu zdravia
|
vaultOptions.general.actionAfterUnlock.ask=Opýtať sa
|
||||||
|
vaultOptions.general.startHealthCheckBtn=Spustiť kontrolu zdravia
|
||||||
|
|
||||||
## Mount
|
## Mount
|
||||||
vaultOptions.mount.mountPoint.directoryPickerButton=Vybrať…
|
vaultOptions.mount=Mapovanie
|
||||||
|
vaultOptions.mount.readonly=Len-čítanie
|
||||||
|
vaultOptions.mount.customMountFlags=Vlastné parametre mapovania
|
||||||
|
vaultOptions.mount.winDriveLetterOccupied=obsadený
|
||||||
|
vaultOptions.mount.mountPoint=Bod mapovania
|
||||||
|
vaultOptions.mount.mountPoint.auto=Automaticky zvoľ vhodné umiestnenie
|
||||||
|
vaultOptions.mount.mountPoint.driveLetter=Použiť pridelené písmeno disku
|
||||||
|
vaultOptions.mount.mountPoint.custom=Voliteľná cesta
|
||||||
|
vaultOptions.mount.mountPoint.directoryPickerButton=Zvoliť…
|
||||||
|
vaultOptions.mount.mountPoint.directoryPickerTitle=Zvoliť prázdny adresár
|
||||||
## Master Key
|
## Master Key
|
||||||
|
vaultOptions.masterkey=Heslo
|
||||||
vaultOptions.masterkey.changePasswordBtn=Zmeniť heslo
|
vaultOptions.masterkey.changePasswordBtn=Zmeniť heslo
|
||||||
vaultOptions.masterkey.forgetSavedPasswordBtn=Zabudnúť uložené heslo
|
vaultOptions.masterkey.forgetSavedPasswordBtn=Zabudnúť uložené heslo
|
||||||
## Auto Lock
|
vaultOptions.masterkey.recoveryKeyExplanation=Kľúč pre obnovu je Vašou jedinou cestou k obnove prístupu do trezoru v prípade straty hesla.
|
||||||
vaultOptions.autoLock=Automatické-uzamknutie
|
vaultOptions.masterkey.showRecoveryKeyBtn=Ukázať klúč obnovy
|
||||||
vaultOptions.autoLock.lockAfterTimePart1=Uzamknutie po uplynutí
|
vaultOptions.masterkey.recoverPasswordBtn=Odkryť heslo
|
||||||
vaultOptions.autoLock.lockAfterTimePart2=minút
|
|
||||||
|
|
||||||
# Recovery Key
|
# Recovery Key
|
||||||
|
recoveryKey.title=Kľúč obnovy
|
||||||
|
recoveryKey.enterPassword.prompt=Zadajte Vaše heslo pre zobrazenie kľúča obnovy k "%s":
|
||||||
|
recoveryKey.display.message=Nasledujúci kľúč obnovy slúži k prístupu k "%s":
|
||||||
|
recoveryKey.display.StorageHints=Uchovávajte ho na bezpečnom mieste, ako napr.:\n- v menežérovi hesiel\n- uložené na USB kľúči\n- vytlačené na papiery
|
||||||
|
recoveryKey.recover.prompt=Zadajte Váš kľúč obnovy pre "%s":
|
||||||
|
recoveryKey.recover.validKey=Toto je platný kľúč obnovy
|
||||||
|
recoveryKey.printout.heading=Kľúč obnovy Cryptomator-a\n "%s"\n
|
||||||
|
|
||||||
# New Password
|
# New Password
|
||||||
|
newPassword.promptText=Zadajte nové heslo
|
||||||
|
newPassword.reenterPassword=Porvrďte nové heslo
|
||||||
|
newPassword.passwordsMatch=Heslá sa zhodujú!
|
||||||
|
newPassword.passwordsDoNotMatch=Heslá sa nezhodujú
|
||||||
|
passwordStrength.messageLabel.tooShort=Použite minimálne %d znakov
|
||||||
|
passwordStrength.messageLabel.0=Veľmi slabé
|
||||||
|
passwordStrength.messageLabel.1=Slabé
|
||||||
|
passwordStrength.messageLabel.2=Dostačujúce
|
||||||
|
passwordStrength.messageLabel.3=Silné
|
||||||
|
passwordStrength.messageLabel.4=Veľmi silné
|
||||||
|
|
||||||
# Quit
|
# Quit
|
||||||
|
quit.prompt=Ukončiť aplikáciu? Sú tu odomknuté trezory.
|
||||||
|
quit.lockAndQuit=Zamknúť a Skončiť
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user